Peer review
Start the Review phase of the SPARK loop: the Reviewer audits the diff produced by /increment — plan conformance, correctness, edge cases, security, test quality — and writes the review report. Use after /increment reports done, or to re-review after fixes.From its SKILL.md
npx -y skills add a-lottes/aSPARK --skill peer-reviewAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 24 stars24 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.9 KB, as published. Nobody here has run it
/peer-review — Review (Reviewer)
You are running the code review ceremony. A second pair of eyes goes
over everything /increment built, before any human-visible testing starts.
Input
Optional argument: the feature name. Resolve as usual.
Steps
- Check the gate. The plan at
.spark/<feature-name>/plan.mdmust show all tasksdone. If the working tree doesn't build or the test suite is red, STOP — that goes back to/incrementwithout a review. Read only what the gate asks: theStatuscolumn of the task table and the build/test result. You do not read the spec, the plan or the diff here — therevieweragent reads all three in full, in its own context. That separation is the entire point of delegating this phase; pre-loading the same material into this conversation gives the benefit straight back.- Only after the gate has passed, resolve optional tool availability,
once: if the session exposes MCP tools whose names end in
stalenessandimpact(they are normally namespaced, e.g.mcp__aspark-graph__staleness), treat that as the available surface and run no command; otherwise probe once, read-only, withcommand -v aspark-graph >/dev/null 2>&1 && echo runner=yes || echo runner=no; test -f .aspark-graph/graph.json && echo graph=yes || echo graph=no— it reports both facts and always exits 0, so the absent case never looks like a failed command. Resolve both facts — is there a surface, and does.aspark-graph/graph.jsonexist — and act on the four states in${CLAUDE_PLUGIN_ROOT}/tools/aspark-graph.md: pass the tool file in step 2 only when both hold; say its one-sentence hint, at most once, in either mixed state; and when neither holds, say nothing at all and continue exactly as you would otherwise. Never probe in a run that already stopped, and never let the outcome change a gate.
- Only after the gate has passed, resolve optional tool availability,
once: if the session exposes MCP tools whose names end in
- Delegate to the Reviewer. Invoke the
revieweragent with the feature paths, the report template from${CLAUDE_PLUGIN_ROOT}/templates/review-report.md, how to determine the diff (commit range or changed files since the increment started), and the paths of any active lenses with review-phase checks (from the constitution's profile —${CLAUDE_PLUGIN_ROOT}/lenses/<name>.mdfor any ofseo,api,cli,library,security,data,i18nthat are active). If a tool resolved as available in step 1, pass${CLAUDE_PLUGIN_ROOT}/tools/aspark-graph.mdthe same way — one more path alongside the lens paths, nothing else. For a re-review, point it at the previous report so it verifies the fixes instead of starting from zero. - Present the report. Findings grouped by severity with locations; what the reviewer already fixed itself; plan deviations; and the verdict — quoted, not paraphrased into something softer.
- Route the findings with the user:
- open Blockers/Majors →
/increment(fix-mode), then re-run/peer-review; - the user may waive a Major — record the waiver and reason in the report; Blockers cannot be waived;
- Minors/Nits → user decides: fix now or accept.
- open Blockers/Majors →
- Close the gate. When the REVIEW GATE checklist is genuinely
satisfied, set the report status to
passed.
Rules
- Never soften the verdict when presenting it.
- The reviewer's own fixes must be visible to the user — list them, they are part of the diff now.
- Don't skip re-review after fixes: fixed code is new code.
Handoff
- Review
passed→/demo-day(QA in the real browser) - Findings to fix →
/increment