Review Campaign
Run a stateful whole-repository review in small, resumable sessions. The skill is stateless and repo-agnostic; all campaign state lives in reviews/ at the target repository root, on the campaign branch named in the repo profile. If it is not in the ledger, it did not happen—never rely on session memory.
Vocabulary
- Area: a matrix row—a directory cluster or cross-cutting seam sized for one session.
- Pass: a matrix column—
structureor one detail dimension. - Cell: area × pass, the normal unit of work for one session.
- Finding: one numbered, actionable item in an area file.
- Tier:
auto(fix without discussion) ortriage(needs the user).
Choose One Mode
Invoke as $review-campaign <mode>; no argument means continue.
Bootstrap guard: when reviews/REVIEW.md does not exist, treat an omitted mode or explicit continue as plan. Only plan bootstraps the ledger; continue must not create reviews/REVIEW.md.
Read and follow exactly the selected mode file:
- plan — bootstrap or replan: modes/plan.md
- sync — absorb base-branch drift without reviewing code: modes/sync.md
- continue — complete the next review cell: modes/continue.md
- status — report progress and drift without writing: modes/status.md
- fix — apply only eligible
auto + openfindings: modes/fix.md - triage — decide
triage + openfindings with the user: modes/triage.md
Before plan, sync, continue, fix, or triage, read formats/ledger.md for the exact ledger schema, finding state transitions, and auto-tier rules. status may read the existing ledger directly; load the format only if the ledger is incomplete or ambiguous.
Route the Selected Pass
In continue mode, read exactly the rubric for the selected pass. For a configured small area that batches passes, load rubrics one at a time as each pass runs; do not preload them all.
structure→ rubrics/structure.mdsecurity→ rubrics/security.mdtests→ rubrics/tests.mderrors→ rubrics/errors.mdlogging→ rubrics/logging.mdeffect→ rubrics/effect.mdnaming→ rubrics/naming.mddiet→ rubrics/diet.mddocs→ rubrics/docs.md
Use this phase order:
structurefor every area, by priority. Complete it before detail passes so later reviews see the post-refactor shape.securityfor trust-boundary areas only.- Detail passes per area:
tests → errors → logging → effect → naming → diet → docs.
Campaign Invariants
- Follow the repo profile for branch/merge policy, accepted-finding export, verification, stack notes, agent instructions, and recorded architectural anchors.
- Apply user choices already supplied for the selected mode; ask only for unresolved campaign or triage decisions. Reverify recorded findings at the current code before an authorized fix.
- Verify every finding against code, history, or usage before recording it. A clean pass is valid; never manufacture findings.
- Keep one finding in the pass where its fix belongs. Cross-reference it elsewhere in at most one line.
- Surface blocker findings immediately. Security findings are never auto-tier.
- Keep campaign review-note commits limited to
reviews/. Findings reach code only throughfixor the repository's normal development flow after triage export;syncmay integrate base drift but must not fix reviewed code.
Long-Running Use
Goal prompt: Run $review-campaign repeatedly until it reports the matrix complete or a blocker finding. Every few sessions run $review-campaign status; run $review-campaign sync when it reports base drift. Stop and surface blockers immediately.
Review sessions may run unattended. Merge the campaign branch at milestones—a completed phase or triage batch—so exported work items and auto-fixes travel with the ledger.