Rules

The 95 rules Project Doctor runs. For each: how much evidence there is, whether it runs in a browser, and whether it is on by default.

What unverified means

A rule is unverified when it has only ever fired on its own example file, on the planted example app or on this tool's own source, and never on a real project or an outside sample. 44 rules are in that state, and all of them are marked below.

Verified does not mean flawless. It says the rule has worked on at least one real project.

In a browser

93 rules are on by default. 4 of them cannot run without a .git folder; the rest all run in a browser. 2 rules are off by default: one needs the network, and one was switched off because it caught nothing when measured. The 7 experimental scale rules are not on this site.

95 rules
RuleGroupEvidenceIn a browserDefault
ai-risk/assistant-config-trackedAI-assisted development riskVerifiedOnly with a .git folderOn
ai-risk/comment-code-imbalanceAI-assisted development riskUnverifiedRunsOn
ai-risk/competing-patternsAI-assisted development riskUnverifiedRunsOn
ai-risk/inconsistent-error-shapeAI-assisted development riskUnverifiedRunsOn
ai-risk/orphaned-fileAI-assisted development riskVerifiedRunsOn
ai-risk/placeholder-in-production-pathAI-assisted development riskUnverifiedRunsOn
ai-risk/redundant-implementationAI-assisted development riskVerifiedRunsOn
ai-risk/unfinished-work-accumulationAI-assisted development riskUnverifiedRunsOn
architecture/circular-dependencyArchitectureUnverifiedRunsOn
architecture/db-in-client-layerArchitectureUnverifiedRunsOn
architecture/god-moduleArchitectureVerifiedRunsOn
architecture/hub-moduleArchitectureUnverifiedRunsOn
dependencies/floating-versionDependenciesUnverifiedRunsOn
dependencies/known-vulnerabilityDependenciesUnverifiedRunsOff (--online)
dependencies/missing-lockfileDependenciesVerifiedRunsOn
dependencies/unusedDependenciesVerifiedRunsOn
devops/docker-runs-as-rootDeployment and configVerifiedRunsOn
devops/docker-unpinned-base-imageDeployment and configUnverifiedRunsOn
devops/error-details-leakedDeployment and configVerifiedRunsOn
devops/production-source-mapsDeployment and configUnverifiedRunsOn
documentation/incomplete-readmeDocumentationVerifiedRunsOn
documentation/missing-readmeDocumentationVerifiedRunsOn
missing/authorization-checkMissing safeguardsVerifiedRunsOn
missing/ci-pipelineMissing safeguardsVerifiedOnly with a .git folderOn
missing/ci-security-scanMissing safeguardsVerifiedRunsOn
missing/database-indexMissing safeguardsVerifiedRunsOn
missing/env-exampleMissing safeguardsVerifiedRunsOn
missing/error-handlingMissing safeguardsVerifiedRunsOn
missing/input-validationMissing safeguardsVerifiedRunsOn
missing/network-timeoutMissing safeguardsVerifiedRunsOn
missing/rate-limitingMissing safeguardsVerifiedRunsOn
missing/security-headersMissing safeguardsVerifiedRunsOn
performance/async-foreachPerformanceUnverifiedRunsOn
performance/blocking-sync-ioPerformanceVerifiedRunsOn
performance/n-plus-one-queryPerformanceUnverifiedRunsOn
performance/sequential-awaitsPerformanceUnverifiedRunsOn
performance/unawaited-mapPerformanceUnverifiedRunsOn
performance/unbounded-cachePerformanceVerifiedRunsOn
performance/unbounded-queryPerformanceVerifiedRunsOn
quality/duplicated-blockCode qualityVerifiedRunsOn
quality/hardcoded-fallback-connectionCode qualityUnverifiedRunsOn
quality/hardcoded-user-pathCode qualityUnverifiedRunsOn
quality/high-cognitive-complexityCode qualityVerifiedRunsOn
quality/large-fileCode qualityVerifiedRunsOn
quality/long-functionCode qualityVerifiedRunsOn
quality/tangled-functionCode qualityVerifiedRunsOn
quality/too-many-parametersCode qualityVerifiedRunsOn
secrets/anthropic-keySecretsUnverifiedRunsOn
secrets/aws-access-keySecretsVerifiedRunsOn
secrets/aws-secret-keySecretsVerifiedRunsOn
secrets/database-urlSecretsUnverifiedRunsOn
secrets/env-fallback-literalSecretsVerifiedRunsOn
secrets/env-file-committedSecretsUnverifiedOnly with a .git folderOn
secrets/env-not-ignoredSecretsUnverifiedOnly with a .git folderOn
secrets/github-tokenSecretsVerifiedRunsOn
secrets/google-api-keySecretsUnverifiedRunsOn
secrets/hardcoded-credentialSecretsVerifiedRunsOn
secrets/npm-tokenSecretsUnverifiedRunsOn
secrets/openai-keySecretsUnverifiedRunsOn
secrets/private-keySecretsUnverifiedRunsOn
secrets/public-env-prefix-on-secretSecretsUnverifiedRunsOn
secrets/sendgrid-keySecretsUnverifiedRunsOn
secrets/server-secret-in-client-fileSecretsUnverifiedRunsOn
secrets/slack-tokenSecretsUnverifiedRunsOn
secrets/slack-webhookSecretsUnverifiedRunsOn
secrets/stripe-restricted-keySecretsUnverifiedRunsOn
secrets/stripe-secret-keySecretsVerifiedRunsOn
secrets/supabase-service-roleSecretsUnverifiedRunsOn
secrets/twilio-keySecretsUnverifiedRunsOn
secrets/vercel-tokenSecretsUnverifiedRunsOn
security/command-injectionSecurityVerifiedRunsOn
security/cors-credentials-wildcardSecurityVerifiedRunsOn
security/csrf-missingSecurityUnverifiedRunsOn
security/dangerous-evalSecurityVerifiedRunsOn
security/debug-enabledSecurityUnverifiedRunsOn
security/file-uploadSecurityVerifiedRunsOn
security/idor-unscoped-querySecurityUnverifiedRunsOff (--experimental-idor)
security/insecure-cookieSecurityVerifiedRunsOn
security/insecure-randomnessSecurityVerifiedRunsOn
security/insecure-transportSecurityUnverifiedRunsOn
security/jwt-decode-without-verifySecurityUnverifiedRunsOn
security/path-traversalSecurityVerifiedRunsOn
security/sensitive-loggingSecurityVerifiedRunsOn
security/sql-injectionSecurityVerifiedRunsOn
security/ssrfSecurityVerifiedRunsOn
security/supabase-rlsSecurityUnverifiedRunsOn
security/unsafe-deserializationSecurityUnverifiedRunsOn
security/verify-disabledSecurityUnverifiedRunsOn
security/weak-hashSecurityVerifiedRunsOn
security/xss-dangerous-htmlSecurityVerifiedRunsOn
security/xss-inner-htmlSecurityVerifiedRunsOn
security/xss-reflectedSecurityVerifiedRunsOn
testing/critical-path-untestedTestingVerifiedRunsOn
testing/no-testsTestingVerifiedRunsOn
testing/weak-assertionsTestingUnverifiedRunsOn