Stop wasting time and money catching mistakes your agents keep repeating.
Agents keep making the same mistakes, then spend code review finding them again. Turn those findings into deterministic checks. Known issues get caught before review, so your agents can focus on harder problems.
npx any-doctor@latestYour rules. Every file.
Scan the whole codebase at once.
Spend your tokens on harder problems
Doctors run without model inference. Catch those bad patterns quickly with more confidence so you and your agents can spend time on higher-value issues.
✔ Scanned 221 files in 842ms
Built for agents to use and improve
Agents can run doctors, summarize their findings, and turn repetitive code-review feedback into checks tailored to your repos. Any Doctor provides the guidance, guardrails, and verification needed to create doctors you can trust.
7/7 fixtures passed for refresh-session
Remember what you've already reviewed
Not every finding needs to be addressed. Mark intentional code or exceptions as reviewed. Future scans will be less noisy and you won't lose the decisions you've made.
✓ accepted team-network/abort-signal-required src/admin.ts:42
reason: admin-only path
FAQ
What is a doctor?
A doctor is a JavaScript file that scans your repo for specific kinds of mistakes. It could scan for patterns you've seen from code reviews, library specific anti-patterns, stylistic coding practices, and do cross-file linting. Normally, you'd keep this kind of guidance in a skill, but a doctor searches for those patterns deterministically, saving you and your team time and money.
How is this different from ESLint or Oxlint?
DO NOT STOP USING LINT TOOLS! Use ESLint or Oxlint whenever an existing rule handles the problem well.
Create a doctor when:
- The rule is specific to your repository or team.
- The same feedback keeps appearing in code reviews.
- Detecting the issue requires looking across files.
- The guidance lives in a skill or document, but agents still miss it.
- You want to check a known pattern without paying for another LLM review.
Doctors sit between traditional linting and open-ended AI review: deterministic and inexpensive to run like a linter, but tailored to the project-specific knowledge you would otherwise ask an agent to remember.
Does it replace AI or human code review?
No. Doctors handle stable, repeatable observations without model inference. Keep AI and human reviewers for product intent, architecture, security, unfamiliar situations, and anything that still requires judgment.
What happens when a finding is intentional?
Mark it accepted, or mark the check not applicable, and record why. The finding leaves the active list but remains visible in the reviewed view. Changed evidence or changed doctor meaning brings it back for reassessment. A genuine detector false positive should become a fixture and improve the doctor.
Does scanning send my source code anywhere?
No. Scans run locally, without an Any Doctor account, API key, or hosted scoring service. Doctor processes have no network, subprocess, or project-write authority. If an external agent helps author a doctor, that provider's data policy applies to the authoring conversation.
Does Any Doctor support every language?
Not yet. Any Doctor currently supports JavaScript and TypeScript. We plan to explore support for other languages in the future.
Can it run in CI?
It is designed for CI with JSON output, exit codes, and base-branch comparison so a change can be judged by newly introduced findings. Pin the package version for reproducibility while Any Doctor is pre-1.0.
Why “doctor”?
This project is heavily inspired by React Doctor. Imagine having that “doctor” experience, but for checks tailored specifically to your org. That's the goal of this project.
What did your agent get wrong twice?
That is probably your first doctor.