Loop/loopMaintenancehigh riskadvancedsafety C · 55Forward Futurepre-dates current gate · under review

Get the React health scan to 100/100

Inventory every production React app, fix findings without suppressions, and prove a real 100/100 with full project checks.

prompt
→ Claude Code
Bring every production React app in [repository] to a freshly verified React Doctor score of 100/100. Inventory app roots, record a full `npx react-doctor@latest --verbose` baseline, fix one root cause at a time, and rerun the full scan plus relevant typecheck, lint, tests, and builds. Never hide findings with exclusions, ignores, suppressions, deleted behavior, or relaxed rules. Stop at 100/100 for every app, blocked, approval-required, or no measurable progress; preserve unrelated work and report exact proof.
claude-code · codex

Use this when

Use this for an authorized repository-wide React health pass when every production React app can be identified and a complete scan plus project checks can run locally.

How it runs

  1. Inventory the repository, production React app roots, current worktree state, and available validation commands.
  2. Run and record a full React Doctor baseline for every production app.
  3. Group findings by root cause and repair one coherent cause without weakening rules or changing unrelated behavior.
  4. Rerun the full scan and relevant typecheck, lint, tests, and builds, keeping only verified improvements.
  5. Escalate from symptom patches to ownership or data-flow analysis when a finding survives repeated repairs.
  6. Stop only at the success, blocked, approval-required, or no-progress state and return exact evidence.

Done when

✓ Every production React app has a genuine fresh 100/100 result. Record the React Doctor version, app roots, full final scan, and repository validation results; distinguish pre-existing failures and blockers from regressions caused by the repair work.

Why it works

A complete app inventory and fresh full scans prevent local or diff-only checks from masquerading as repository-wide health. Root-cause repair and anti-suppression rules make the final score evidence of better code rather than a configured-away problem.

Implementation note

Do not reset or overwrite unrelated work, disable findings, exclude files, relax severity, add unsafe casts or ignore directives, or delete meaningful behavior. Ask before breaking dependency upgrades or architectural changes outside the stated scope.

Source: Forward Future ↗graded C · 55/100 — how grades work →

More maintenance loops

Upgrade to current Node LTS

Loop/goallooprepoB

Move the project to the current Node LTS across .nvmrc, CI config, Dockerfiles, and engines, fixing deprecations until everything is green on the new runtime.

prompt
→ Claude Code
/goal the project runs on the current Node LTS — update .nvmrc, the engines field, CI workflow files, and any Dockerfile base images to the LTS version, then run install, build, lint, and the full test suite on it, fixing deprecation warnings and breakages one at a time; stop when all are green or after 15 turns

Upgrade dependencies one at a time

Loop/goallooprepoB

Walk through outdated dependencies one package per turn, upgrading, running the full check suite, and pinning back anything that breaks.

prompt
→ Claude Code
/goal `npm outdated` lists no minor or patch updates — upgrade exactly one package per turn, run tests, lint, and build after each, commit if green, and pin the previous version with a note in UPGRADE-BLOCKERS.md if it fails; stop after 20 turns

Triage untriaged issues to zero

Loop/looplooprepoA

Pick the oldest untriaged issue, validate it against the current build, then label it, close if obsolete, or document repro steps—one per turn until the queue empties or 12 iterations pass.

prompt
→ Claude Code
/loop pick the single oldest untriaged issue in the tracker; reproduce or validate it against the current build, then either label it (area, priority, effort), close it with a polite explanation if it is obsolete, or write the missing repro steps. One issue per iteration, never close anything that still reproduces, and propose bulk closes for maintainer review instead of executing them. Continue until the untriaged queue hits zero — stop after 12 turns and report the triaged/closed/escalated counts.
maintenancelow risk