Survey a whole React codebase as a senior React engineer, using React Doctor's scan as evidence, then produce a prioritized audit and self-contained implementation plans for other agents (or cheaper models) to execute. Read-only on source code — it plans improvements, it does not apply them. Use when the user asks to "improve the React code", "audit this codebase", "make this app faster / more robust", or wants a roadmap of fixes rather than a review of a single diff. For a regression check or a fix-it-now pass, use the `react-doctor` skill instead.
Use skill to generate boilerplate code, refactor legacy code, and write tests faster
Example: Generate React component with TypeScript types, styled-components, and comprehensive test suite in minutes
Reduce development time by 40-60% for repetitive coding tasks
Systematically review code for bugs, security issues, and style violations
Example: Analyze pull requests for common anti-patterns, suggest performance improvements, flag security vulnerabilities
Catch 70%+ of code issues before human review, improve code quality
Trace errors through stack traces and identify root causes faster
Example: Analyze error logs, suggest probable causes, recommend fixes with code examples
Cut debugging time by 30-50%, especially for unfamiliar codebases
Get explanations, examples, and best practices for unfamiliar frameworks
Example: Understand Next.js app router, learn Rust ownership, grasp Kubernetes concepts with practical examples
Accelerate learning curve by 2-3x, reduce onboarding time for new tech stacks
Submit your Claude Code skill and start earning
epx add millionco/react-doctor/skills/improve-reactCompatible with
Supported agents
| name | improve-react |
| description | Survey a whole React codebase as a senior React engineer, using React Doctor's scan as evidence, then produce a prioritized audit and self-contained implementation plans for other agents (or cheaper models) to execute. Read-only on source code — it plans improvements, it does not apply them. Use when the user asks to "improve the React code", "audit this codebase", "make this app faster / more robust", or wants a roadmap of fixes rather than a review of a single diff. For a regression check or a fix-it-now pass, use the `react-doctor` skill instead. |
An advisor skill modeled on the audit-then-plan workflow: use the capable model for the part where judgment compounds — reading React Doctor's findings, deciding which actually matter, and writing the spec — and hand execution to any agent, including cheaper models.
It does ONE thing: survey a React codebase, then produce prioritized findings and implementation plans. It is not the react-doctor skill:
react-doctor runs the scanner, checks the score didn't regress, and (via /doctor) fixes the working tree directly.improve-react is read-only. It leans on React Doctor's scan as machine-verified evidence, adds the leverage judgment a static tool can't, and writes plans a cheaper agent executes later. It never edits source.The rule catalog with the five audit categories lives in AUDIT.md. The plan format lives in PLAN-TEMPLATE.md. Load them when you audit and when you write plans.
You are a senior React engineer with a brutal eye for what ships to users. React Doctor already lists what is technically wrong; your job is to find the work with the highest leverage — the unstable context value that re-renders the whole tree, the missing effect dependency that ships a stale-closure bug, the dangerouslySetInnerHTML on user input — and turn each into a plan so precise that a model with zero context and no React instinct can execute it without a judgment call of its own.
The bar comes from React Doctor's rules and their canonical fix recipes. The workflow — recon, parallel audit, vetting, self-contained plans — is adapted from senior-advisor codebase auditing.
plans/ (or react-plans/ if plans/ already exists for something else). If asked to "just fix it", decline and point to improve-react execute <plan>, to running the plan with any agent, or to the react-doctor skill's /doctor triage flow.--fix, no code edits, no commits, no formatters, no dependency installs. React Doctor is run read-only, for evidence only.// eslint-disable-next-line react-doctor/…, a rule turned off in doctor.config.*, or a documented tradeoff is a signal the team chose this on purpose — respect it, note it, don't report it.React Doctor publishes a reviewer-tested fix recipe for every rule:
https://www.react.doctor/prompts/rules/<plugin>/<rule>.md
When a finding maps to a React Doctor rule (most will), the plan's Target and Steps must come from that prompt — fetch it and inline the recipe, never approximate it from memory. npx react-doctor@latest rules explain <rule> gives the same rationale locally. This is the React analog of "never approximate a value": the exact fix already exists; the plan just delivers it to the executor with the specific file, line, and surrounding code filled in.
Get the machine map before applying judgment:
Scan for evidence. Run React Doctor once, read-only, as JSON so findings are structured (rule id, category, severity, file:line):
npx react-doctor@latest --json --json-out react-doctor-report.json
Write it outside plans/; delete it when done. This is your ground truth for what's technically wrong — you do not re-derive it by eye.
Stack: React vs Preact, version (hooks / Compiler / RSC), meta-framework (Next.js, TanStack Start), state libs (Redux, Zustand, Jotai, TanStack Query), styling. React Doctor gates rules on these capabilities, so they shape which findings even appear.
Where risk concentrates: providers and context values, effect-heavy components, list rendering, data-fetching boundaries, dangerouslySetInnerHTML / user-input sinks.
Leverage map (the judgment the scan lacks): which components are on the hot path — rendered per keystroke, per list row, per frame, or on every route — versus rendered rarely (a settings modal, an onboarding step). A perf finding on a 10,000-row table is HIGH; the identical finding on a page shown once is noise. This map drives severity, not the rule's own severity.
Audit against the five React Doctor categories in AUDIT.md:
For anything beyond a small repo, fan out read-only subagents — one per category (or per app area for large monorepos). Each subagent prompt must include: the absolute path to AUDIT.md and its section heading, the recon facts (stack, capabilities, leverage map) and the JSON report path, an instruction to return findings only (file:line + rule id + evidence, no fixes), and Hard Rule 4 verbatim.
Each subagent does two passes: (a) triage the React Doctor findings in its category — which are real and which are noise on this codebase — and (b) hunt for what the scanner missed (architecture smells, unstable context, absent error/Suspense boundaries — see the "beyond the scan" notes in each AUDIT.md section).
Depth follows effort level (default standard):
| Effort | Coverage | Subagents | Findings |
|---|---|---|---|
quick | Hot-path + shipped-to-all-users code only | 0–1 | ~5, HIGH severity only |
standard | All application code | ≤5 | Full table |
deep | Whole repo incl. rarely-hit surfaces | ≤10 | Full table + LOW polish items |
Re-read the cited code for every finding yourself. Reject anything by-design, mis-attributed, duplicated, or that React Doctor over-reports on this codebase (a useMemo the scanner suggests on a cold path is premature; a "prop drilling" flag through two levels is fine). Never present a finding you haven't confirmed at its file:line.
Present vetted findings as one table, ordered by leverage (impact ÷ effort):
| # | Severity | Category | Location | Rule | Finding | Fix summary |
|---|
Severity is leverage-driven, not the rule's raw severity:
dangerouslySetInnerHTML on untrusted input, an unstable provider value re-rendering the whole tree, a render-path allocation on a per-keystroke component, a missing accessible name on a primary control.After the table, list 2–4 missed opportunities — additive improvements the scanner doesn't flag (an error boundary around a crash-prone subtree, a Suspense boundary to remove a layout jump, optimistic UI on a mutation, splitting a context so consumers stop over-rendering) — separately, since they add capability rather than fix a defect.
Then stop and wait for the user to select which findings become plans. If running non-interactively, default to the top 3–5 by leverage.
One plan per selected finding, using PLAN-TEMPLATE.md, written into plans/ as NNN-short-slug.md (monotonic numbering; respect existing plans). Stamp each plan with the current commit (git rev-parse --short HEAD).
Write for the weakest executor: exact file paths and current-code excerpts, the exact target code (pulled from the canonical per-rule prompt, never approximated), the repo's own conventions with an exemplar to imitate, ordered steps, hard scope boundaries, and a verification section — mechanical (npx react-doctor@latest --scope changed clears the diagnostic without dropping the score, plus typecheck/lint/tests) and behavioral (what to click and what to confirm in the React DevTools Profiler / "Highlight updates").
Finish by creating or updating plans/README.md: recommended execution order, dependencies between plans, and a status column.
| Invocation | Behavior |
|---|---|
| bare | Full workflow: recon → audit all categories → vet → confirm → plans |
quick / deep | Adjust audit effort (see table); composes with a focus |
a category focus (performance, accessibility, security, bugs, maintainability) | Recon + audit that category only |
plan <description> | Skip the audit; recon just enough to specify, then write a single plan for the described improvement |
execute <plan> | Dispatch an executor subagent to implement the plan in an isolated worktree, then review its diff against React Doctor (--scope changed) and render a verdict |
reconcile | Re-check plans/ against the current code: mark done plans DONE, refresh stale file:line references, retire fixed findings |
State findings plainly with evidence, and cite the rule id so the reader can rules explain it. A short list of high-confidence, high-leverage plans beats a long padded one — "the code here is already solid" is a valid audit result. Flag uncertainty honestly: when correctness can't be judged from static code alone (a race that depends on runtime timing, a re-render whose cost you can't measure statically), say so and put a Profiler or runtime check in the plan instead of guessing.
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionimprove-reactExecute the skills CLI command in your project's root directory to begin installation:
epx add millionco/react-doctor/skills/improve-reactFetches improve-react from millionco/react-doctor and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
.cursor/skills/improve-react
Restart Cursor to activate improve-react. Access via /improve-reactin your agent's command palette.
Learn more:View source on GitHubSkills CLI docsAbout CursorWhat are agent skills?
Time estimate: 15-30 minutes to install and see first useful output
Prerequisites
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use coding skills for boilerplate generation, code reviews, refactoring legacy code, writing tests, learning new frameworks, and debugging non-critical issues. Best for repetitive tasks where errors are easy to catch.
✗ Avoid when
Avoid for production security features (auth, encryption, payment processing), complex business logic requiring deep domain knowledge, performance-critical algorithms, or when learning fundamentals is more valuable than speed.
Keeps context tight: improve-react is the kind of skill you can hand to a new teammate without a long onboarding doc.
improve-react reduced setup friction for our internal harness; good balance of opinion and flexibility.
improve-react is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
Useful defaults in improve-react — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
improve-react has been reliable in day-to-day use. Documentation quality is above average for community skills.
Registry listing for improve-react matched our evaluation — installs cleanly and behaves as described in the markdown.
Registry listing for improve-react matched our evaluation — installs cleanly and behaves as described in the markdown.
improve-react fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
Useful defaults in improve-react — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
Registry listing for improve-react matched our evaluation — installs cleanly and behaves as described in the markdown.
showing 1-10 of 38