52 production readiness checks. Zero false-positive tolerance.

Every check flags a real production issue — not a style nit. Built for the patterns commonly found in code from tools like Claude Code, Cursor, v0, Bolt, and Copilot.

🔒

Security

27 rules

Secrets, auth, injection, and access control

secretsHardcoded API keys (Stripe, AWS, Supabase, OpenAI, GitHub)criticalauth-checksAPI routes without authentication (middleware-aware)criticalenv-exposureServer env vars in client components, .env not in .gitignorecriticalinput-validationRequest body used without validationcriticalcors-configAccess-Control-Allow-Origin: *, cors() with no config, wildcard + credentials escalated to criticalwarningunsafe-htmldangerouslySetInnerHTML, direct innerHTML assignmentcriticalsql-injectionSQL queries built with template literals or string concat (ORM-aware)criticalopen-redirectUser input passed directly to redirect()warningrate-limitingAPI routes with no rate limiterwarningphantom-dependencyPackages in node_modules but missing from package.jsonwarninginsecure-cookieSession cookies missing httpOnly, secure, or sameSitecriticalleaked-env-in-logsprocess.env.* leaked inside console.log() callswarninginsecure-randomMath.random() used for tokens, secrets, or session IDscriticalnext-server-action-validationServer actions using formData without Zod/schema validationcriticalenv-fallback-secretSecret env vars with hardcoded fallback valuescriticalverbose-error-responseError stack traces leaked in API responseswarningmissing-webhook-verificationWebhook routes without signature verificationcriticalserver-action-authServer actions with mutations but no auth checkcriticaleval-injectioneval(), new Function(), dynamic code executioncriticalnext-public-sensitiveNEXT_PUBLIC_ prefix on secret env varscriticalssrf-riskUser-controlled URLs passed to fetch in server codecriticalpath-traversalFile system operations with unsanitized user inputcriticalunsafe-file-uploadFile uploads without type or size validationwarningsupabase-missing-rlsCREATE TABLE in migrations without enabling RLScriticaldeprecated-oauth-flowOAuth Implicit Grant (response_type=token)warningjwt-no-expiryJWT tokens signed without an expirationwarningclient-side-auth-onlyPassword comparisons or auth logic in client componentscritical

Reliability

11 rules

Error handling, promises, and data consistency

🚀

Performance

6 rules

Blocking I/O, N+1 queries, and unbounded data

AI Quality

8 rules

Hallucinations, placeholders, and code smells