← all repositories
millionco/react-doctor

A linter that teaches your AI to stop writing bad React

React Doctor scans codebases for React-specific bugs, then installs the findings as a "skill" so your coding agent doesn't repeat them.

12.3k stars TypeScript Coding AssistantsLLMOps · Eval
react-doctor
Velocity · 7d
+107
★ / day
Trend
steady
star history

What it does

React Doctor is a deterministic scanner that audits React codebases for issues across state & effects, performance, architecture, security, and accessibility. It runs via npx, outputs findings, and can be wired into CI through a GitHub Action that leaves inline annotations on pull requests. It supports Next.js, Vite, TanStack, React Native, Expo — essentially anything React-shaped.

The interesting bit

The “install for agents” flow is the unusual part. After an audit, you run npx react-doctor@latest install to generate a “skill” that feeds the findings back to Claude Code, Cursor, Codex, or OpenCode. The idea is the agent learns your codebase’s specific failure patterns and stops generating them. Whether that actually improves output quality over time is left as an exercise to the user.

Key highlights

  • Deterministic static analysis; no LLM involved in the scanning itself
  • Configurable via doctor.config.ts (or .js, .json, .jsonc) with typed schema support
  • GitHub Action with PR annotations and inline comments
  • Telemetry to Sentry is opt-out (--no-telemetry), and the docs explicitly state what is collected: no file contents, no specific findings, just rule names and counts
  • MIT licensed

Caveats

  • The README is light on what specific rules exist or how the “skill” format works under the hood
  • The GitHub Action example uses @main in one place and @v1 in another; pinning to a commit SHA is recommended for hardened CI, but the mixed messaging is a bit sloppy

Verdict

Worth a look if you’re running AI-assisted development and tired of catching the same React anti-patterns in review. Probably overkill if you already have a strict ESLint setup and no agents in your workflow.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.