Agent skill / millionco
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.
Core file
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:
Package manager
npx skills install 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:
Restart Cursor to activate improve-react. Access via /improve-reactin your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
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
Copy the command for your terminal
Package manager
npx skills install millionco/react-doctor/skills/improve-reactWorks with
| 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.
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
Prerequisites
Time Estimate
15-30 minutes to install and see first useful output
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