What We Check
87 checks across 15 categories
9 core checks are free and open source. Activate a license to unlock all 87 checks including determinism, async safety, type validation, and more.
Free
Always included (9 checks)
๐ก
Security
6 checksSEC001Hardcoded passwords, API keys, and secretsSEC002SQL queries built with string concatenationSEC004Non-cryptographic random for security tokens
and 3 more checks
๐
Schema Validation
2 checksSCHEMA001Pydantic field nullability mismatches(Python)SCHEMA002Pydantic/SQLAlchemy field type misalignment(Python)
๐
Session Safety
1 checkSESS002Thread-unsafe database session sharing
Pro
Unlock with a license (78 checks)
๐
Extended Security
5 checksSEC007OAuth callback missing state validation(Py, JS/TS)SEC009User input in email headers enables injection(Py, JS/TS)SEC011HTML stored without sanitization(Py, JS/TS)
and 2 more checks
๐ฏ
Determinism
8 checksDET001Dictionary iteration without sorting causes flaky behaviorDET004list(set()) scrambles element order silentlyDET005Random without seed causes non-reproducible results(Py, JS/TS)
and 5 more checks
โก
Async & Concurrency
6 checksASYNC001Async function called without await(Py, JS/TS)ASYNC002Blocking calls inside async functions(Py, JS/TS)CONC001Check-then-act race conditions(Py, JS/TS)SESS001Database session passed to background task
and 2 more checks
โจ
Code Quality
13 checksQUAL004Mutable default arguments shared between callsQUAL001Silently swallowed exceptions hide real bugs(Py, JS/TS)QUAL011Functions with excessive cyclomatic complexity
and 10 more checks
๐ท
Type Safety
10 checksTYPE008Explicit 'any' type usage defeats TypeScript's purpose(TS)TYPE009process.env.VAR! non-null assertion can crash at runtime(TS)TYPE010JSON.parse without validation is unsafe(Py, TS)
and 7 more checks
๐
API Design
5 checksAPI001API calls without error handling(Py, JS/TS)API005Frontend/backend type definitions drift apart
and 3 more checks
๐งช
Testing
7 checksTEST001Tests marked as skipped accumulate silently(Py, JS/TS)TEST007Critical user flows missing E2E test coverage
and 5 more checks
๐
Project Structure
14 checksSTRUCT004Direct sys.path manipulation breaks packagingSTRUCT010No clear frontend/backend separation(JS/TS)PROJ001No CLAUDE.md file for AI assistant context
and 11 more checks
๐ฅ
Frontend
3 checksFRONT002window/document access without SSR guard(JS/TS)FRONT001Tab state not synced with URL routing(JS/TS)
and 1 more check
โธ
Infrastructure
5 checksKUBE001Local filesystem used for application data(Py, JS/TS)DATE002Datetime without timezone causes silent bugsRATE001API endpoint without rate limiting(Py, JS/TS)
and 2 more checks
๐
Performance
1 checkPERF001Database calls inside loops (N+1 queries)(Py, JS/TS)
โฟ
Accessibility
1 checkA11Y001Button text may be invisible on background color
Try it now
Free tier runs instantly with no signup. Upgrade anytime to unlock all 87 checks.
pip install stablestack