skills/react-change-review/SKILL.md
Review recent React, Next.js, or TypeScript UI code changes for hardening before merge or commit. Use when asked to review recent React code changes, audit a React diff, harden a feature, check a PR or branch for React issues, or produce a stack-ranked list of nonredundant findings and a recommended fix plan using react-doctor, Vercel React best practices, Vercel composition patterns, and React useEffect guidance.
npx skillsauth add petekp/claude-skills react-change-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Review the most relevant recent React code changes, consolidate all signal from the React specialist skills, and return a stack-ranked hardening plan. Treat every valid finding as something that should be fixed; do not frame fixes as optional cleanup unless the evidence shows a real tradeoff.
Before reviewing, load and apply these skills:
$react-doctor: run or interpret diff-based React diagnostics.$vercel-react-best-practices: performance, data fetching, rendering, bundle, and server/client boundary review.$vercel-composition-patterns: component API and composition review.$react-useeffect: Effect, derived state, event logic, dependency, and cleanup review.In this skill repository, the supporting skills normally exist as sibling folders:
../react-doctor/SKILL.md../vercel-react-best-practices/SKILL.md../vercel-composition-patterns/SKILL.md../react-useeffect/SKILL.mdIf a support skill is missing, continue with the available guidance and state the gap in the final review.
Determine the review scope intelligently from context. Prefer explicit user scope, then local git evidence.
Use this precedence:
Useful commands:
git status --short
git diff --name-only --diff-filter=ACMR
git diff --cached --name-only --diff-filter=ACMR
git merge-base HEAD origin/main || git merge-base HEAD main || git merge-base HEAD origin/master || git merge-base HEAD master
git diff --name-only --diff-filter=ACMR "$base"...HEAD
git log --oneline --decorate -n 10
Include files that can affect React behavior:
.tsx, .jsx, React-facing .ts/.jsExclude generated files, snapshots, lockfile-only churn, and unrelated backend-only files unless they feed the changed UI behavior.
State the chosen scope briefly in the final answer so the reader can see what was reviewed.
npm run doctor:changed when the repo defines it (a lockfile-pinned react-doctor; preferred in managed sandboxes), otherwise npx -y react-doctor@latest . --verbose --diff. If it cannot run, capture the reason and continue manually.Prioritize user-impacting correctness and performance over style.
Check for:
Produce a clean list, not a raw dump.
react-doctor and manual review disagree, explain the evidence and rank the finding by actual risk.Lead with findings. Stack-rank by severity and likely user impact.
Use this shape:
**Findings**
1. `[Severity] Short title`
- Location: `path:line` or `path` when line is unavailable
- Evidence: exact code behavior, command output, or failing check
- Why it matters: user-visible risk or engineering invariant
- Source: support skill or rule family, if applicable
- Recommended fix: smallest credible fix
- Verification: targeted check after the fix
Severity scale:
Critical: breaks build, data integrity, auth/security, or a primary user path.High: likely runtime bug, stale UI, hydration issue, major performance regression, or brittle API that blocks safe extension.Medium: meaningful maintainability, render, bundle, accessibility, or test coverage risk in touched React code.Low: small hardening item worth fixing after higher-severity work.Include confidence only when uncertainty matters:
Confirmed: demonstrated by code, failing check, or reproducible path.Likely: strong static evidence, not reproduced.Needs follow-up: incomplete evidence; include the exact next check.After findings, provide one consolidated fix plan.
The plan must:
react-doctor, or manual verification needed after each batch.If there are no findings, say that directly and include:
development
Draft short, plainspoken notes in the author's voice that help reviewers understand non-obvious choices, boundaries, and preserved behavior in the author's own pull request or local diff. Use when the user asks to self-review, annotate, or add reviewer context to their PR or changes. Draft locally when no PR exists, and post approved notes as one GitHub review when a PR does exist. Do not use for reviewing someone else's PR, writing code comments, explaining code generally, or drafting a PR description. Never post without explicit approval.
tools
Design and build pure-CSS (zero-JavaScript) Tailwind CSS v4 plugins of unusual depth and craft. Use when the user wants to create, architect, or refine a Tailwind utility plugin or CSS effect — e.g. "make a tailwind plugin", "build a tw-* plugin", "a CSS-only shimmer/fade/glow/grain/noise utility", "tailwind v4 @utility", "package this effect as a plugin", or wants an effect with surprising visual depth (gradients, masks, filters, SVG filter tricks, scroll-driven animation). Pairs deep CSS/SVG technique research with a bespoke tuning workbench for dialing the effect in. Inspired by tw-fade and tw-shimmer.
content-media
Create clear, polished before-and-after screenshots for a GitHub pull request. Use when a UI change needs visual proof: capture matching states, crop to the relevant UI, stitch and caption one comparison image, attach it natively to the PR, and keep the image out of the repository.
testing
--- name: latent-potential description: First-principles, team-of-experts assessment of a software project that surfaces latent potential; underexploited assets, a sharper north star, missing high-leverage capabilities, better framing and messaging. Produces a prioritized, evidence-grounded report with cheap probes, a reframe candidate, a stop-doing list, and an honest skeptic's case. Use whenever the user wants fresh eyes on a project they have built: "what am I sitting on", "what could this be