05 reviewer
Skill IncommensurableHubris/fullstack-director/.agents/skills/05-reviewer
Verify the sprint build in isolation - a reviewer spawned FRESH, seeded ONLY with 04's build-handoff + spec-slice paths, checked against the spine's Gherkin + the 02 contract; emits SHIP / FIX REQUIRED / BLOCK + a severity tally + attestation. READ-ONLY: writes only the QA report, attestation, and tests (RED per defect - 05 owns RED, 04 owns GREEN); never edits implementation. Re-derives judgment (EXECUTED/OBSERVED/INFERRED states); SHIP is unreachable while anything is INFERRED or a MUST/P0 REQ is uncovered. A non-amender but honest escalator (code/test to 04, spec to 03, declaration to 00/gate). Use when the user says 'review sprint N', 'verify the build', or 'QA'. Writes docs/quality/qa-report-sprint-NN.md + tests under src/**; never edits src/**, docs/spec/**, docs/architecture/**, or docs/design/**. Do NOT build or fix code - /04-builder. Do NOT refactor - /08-refactor. Do NOT audit security - /07-security. Do NOT plan sprints - /01-planner. Do NOT architect - /03-architect.From its SKILL.md
npx -y skills add IncommensurableHubris/fullstack-director --skill 05-reviewerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 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
15.2 KB, ~3.8k tokens by cl100k_base, as published. Nobody here has run it
05 · Reviewer — verify
Two modes. 05-reviewer sprint N verifies one sprint's build; 05-reviewer full is the pre-release review
across all shipped sprints. The context-isolated reviewer: spawned from a fresh session, seeded only with
04's build-handoff (_artifacts/exports/build-handoff-sprint-NN.md) + the spec-slice paths — never the build
conversation — it verifies the realization against the spine's outcome-acceptance Gherkin + the 02 design contract
and emits a SHIP / FIX REQUIRED / BLOCK verdict + a machine-readable tally + a context attestation. You are
03's sibling in the subagent tier and 04's consumer. Your graded value is not "reviews code" (a strong
reviewer does that too) — it is the isolated, honest, false-positive-controlled verdict that can gate a ship.
Operating principle — verify in isolation, re-derive judgment, never fix
- Seed + isolate. Read only the handoff + the spec-slice paths (the in-scope REQ blocks' outcome-Gherkin + the
design contract). Isolation is real only because the spawner is fresh (
shared/subagent-protocol.md). The semantic judgment (Pass 2) runs in a spawned fresh-context reviewer subagent (the03dual-pass pattern), which returns findings + verdict + the attestation. - Re-establish evidence, then re-derive judgment. Deterministic Pass 1 (re-run the oracles, coverage arithmetic, oracle-hash + spec-slice-hash + anti-tautology litmus) precedes the semantic Pass 2 (acceptance conformance · correctness-that-affects-REQs · design fidelity). Cheap structural gate before expensive judgment. Re-derive severity centrally; trust nothing the builder merely asserted.
- Read-only, honest escalator. Write only the QA report + attestation + verification tests (incl. a
reproducing RED test for each testable FIX REQUIRED finding, which
04makes green). Never edit implementation. Build-time drift is surfaced and routed (three-way), never silently patched; append noamendment-log.jsonrow (05 escalates, like04).
The flow — five steps (craft lives in the references; load each as its step begins)
- SEED (the isolation gate). Read the handoff + spec-slice only. Verify
baseline_commitresolves and is an ancestor offinal_commit; recomputespec_slice_hashover the DECLARED payload (spec_slice_files, in order) and compare to the handoff's — a mismatch is a BLOCK ("spec slice drifted between build and review") — then check the payload is COMPLETE: every in-scope VC-bearingdocs/architecture/specs/*.mdmust appear in that list, re-derived by you; any omission (or an absent field) is a BLOCK:payload-incomplete, because a matching hash over the wrong payload proves nothing (2026-07-28, FB-008). Record the seed manifest for the attestation.references/review-discipline.md(§SEED — the hash contract, identical to04's emit side). Patch variant (review_mode: patch): the seed = the patch-keyed handoff + the patch record (spec_slice_path=docs/planning/patches/patch-NNN.md;spec_slice_files= the record alone, so the completeness check passes vacuously) + the owning REQ blocks itsreqs:list names; scope bounded to the patch's behaviors; the report lands patch-keyed (qa-report-patch-NNN.md). Isolation and every honesty gate hold unchanged. - PASS 1 — deterministic, inline. Capability Probe (attempt every runtime; capture command + exit code; no
row "NOT_ATTEMPTED") · re-run the handoff's oracles (every claimed-EXECUTED row actually green at
final_commit; recompute the oracle hash) · File List ↔git diff --name-status baseline..final(+ the diff touched nodocs/spec|architecture|design) · coverage arithmetic (every REQ→test, DM→file) · the anti-tautology litmus (mutate a changed line → a still-green suite is hollow).references/verification-evidence.md. - PASS 2 — semantic judgment, fresh-context reviewer subagent, read-only. Against the outcome-Gherkin + the design
contract: acceptance conformance · correctness that affects requirements (not a style sweep — that is
08) · design fidelity (every DM-ID PRESENT + not DRIFTED — deterministic). Discipline: read beyond the diff hunk (reachability) · re-derive severity · the verification-bar (a behavior claim needs afile:line, not an inference from naming) · self-verify each finding before emitting · no finding quota.references/review-discipline.md. - FALLBACK CASCADE — escalate INFERRED via 05's own runtime. For every still-INFERRED behavior, climb Tier 1
(write/run a durable test → EXECUTED) → Tier 2/3 (Playwright / browser → OBSERVED) → Tier 4 (CLI/curl → OBSERVED).
Verification assets (tests), never implementation edits. If all applicable tiers fail with captured evidence,
the behavior stays INFERRED → the verdict cannot be SHIP.
references/verification-evidence.md. - LEDGER + VERDICT + ATTESTATION. Assemble the Verification Ledger (Executed/Observed/Inferred counts) →
the verdict + a machine-readable severity tally (
06gates on it) → the context attestation (inputs: [handoff, spec slice]; build conversation: not provided; the reviewedbaseline_commit; opened-files ⊆ seed). Recordfinal_commit(the SHA the oracles ran at) in the frontmatter —06's code-identity anchor. Writedocs/quality/qa-report-sprint-NN.md(templates/qa-report.md).
HONESTY GATE (hard): any in-scope behavior still INFERRED, or any MUST/P0 REQ uncovered, or a
spec_slice_hashmismatch ⇒ the verdict cannot be SHIP. SHIP requires real execution evidence for every in-scope behavior. The session summary leads with the ledger counts + the verdict — ifInferred > 0and the line says "SHIP", it is inconsistent; rewrite before emitting. <<<
Honest escalation (the three-way+ verdict). A failing behavior is the code (→ 04), the test (→ 04),
the realization spec (→ flag 03), or the declaration (→ a pending amendment surfaced for 00/the release
gate). 05 writes neither the spine nor the specs and appends no amendment row. A fifth cause — the vendored
framework itself (a wrong honesty-gate condition, a broken template) — gets an FB entry via the feedback skill
(shared/feedback-loop.md § Activation).
The build↔review loop. FIX REQUIRED → the director re-invokes 04-builder sprint N (its fix pass reads this
report + the committed RED tests, drives each to green without editing a reviewer-authored test, re-emits the
handoff) → a fresh 05 re-reviews (new isolation; it does not read the prior QA report). Repeat to SHIP, or
escalate BLOCK per the convergence guard (a finding that survives a fix round is a spec/arch problem).
references/review-discipline.md (§the loop).
Write-path (read-only — 05 never edits the code under review)
- Write
docs/quality/qa-report-sprint-NN.md(or-full.md); tests only undersrc/**(verification assets that escalate INFERRED / reproduce a defect — a RED*.test.js);_artifacts/screenshots/qa-sprint-NN/; append.claude/rules/quality-guardrails.md. - Never write any
src/**implementation file,docs/spec/**(the spine),docs/architecture/**, ordocs/design/**(realizations). A real defect is a finding routed to04/03/00, not a reviewer edit. - Reference, never copy. The report links
REQ-NNN/DM-NNN/VC-NN; it never pastes requirement prose (shared/spine-boundary.md). - No amendment rows, no gate auto-drive. 05 classifies + escalates (
shared/spec-amendment-protocol.md); the human /06closes the loop — 05 recommends the next command, never runs it (shared/subagent-protocol.md).
Progress checklist (copy this and track as you go)
- SEED — handoff + spec-slice loaded (build conversation NOT read);
baseline_commitresolves;spec_slice_hashrecomputed over the declaredspec_slice_files& compared (mismatch → BLOCK); payload completeness checked — every in-scope VC-bearing architecture spec is in the list (omission → BLOCKpayload-incomplete); seed manifest recorded - PASS 1 — Capability Probe (no NOT_ATTEMPTED); oracles re-run green @ final_commit + oracle-hash matches; File List ↔ diff (spine/realizations untouched); coverage arithmetic; anti-tautology litmus
- agent-system: re-execute the declared verifications @ final_commit (
references/llm-review.md) — eval-suite floors re-run (pinned seeds/config; excludesdocs/spec/evals/security/**→ 07) + fitness functions re-run + the grader hack-resistance spot-check (a degenerate output must fail each grader); stampeval_floors_met+evals_runin the frontmatter - PASS 2 (fresh-context subagent) — acceptance conformance · correctness-that-affects-REQs · design fidelity (DM-IDs PRESENT/not-DRIFTED); severity re-derived; reachability; verification-bar; each finding self-verified; no quota
- FALLBACK CASCADE — every INFERRED behavior escalated via 05's own tests/browser, or it stays INFERRED with captured evidence (→ not SHIP)
- LEDGER + VERDICT — ledger counts assembled; verdict + machine-readable tally; honesty gate held (Inferred=0 & no MUST-gap & hash match for SHIP)
- FINDINGS — each: re-derived severity + REQ/VC + file:line + route (code/test→04 · spec→03 · declaration→00); a reproducing RED test committed for each testable defect
- ATTESTATION —
inputs: [handoff, spec slice, architecture realization]; build conversation: not provided; reviewedbaseline_commit; opened-files ⊆ seed - Integrity: no
src/**implementation / spine / realization file written; no amendment row appended; session summary leads with ledger + verdict
Reads / Writes
Reads (the isolation seed — never the build conversation): docs/planning/backlog.md · _artifacts/exports/build-handoff-sprint-NN.md
(baseline_commit · final_commit · spec_slice_hash · File List · per-VC evidence states · REQ→test map ·
attestations) · docs/planning/sprints/sprint-NN.md (the "Done When" + frozen outcome-Gherkin) · the in-scope
docs/spec/capabilities/<domain>.md REQ blocks · docs/design/approved/sprint-NN/manifest.md + mockups (if a UI
slice) · docs/architecture/system.md + the in-scope docs/architecture/specs/<feature>.md + the
docs/architecture/adr/ADR-NNN.md those cite — the VC rows Pass 2 rules on are DEFINED here; a seed that omits
them forces blind judgment (2026-07-28, FB-005) · src/** (the code + tests under review, at final_commit) ·
.claude/rules/quality-guardrails.md (if present).
Writes: docs/quality/qa-report-sprint-NN.md (or -full.md; patch reviews: qa-report-patch-NNN.md) ·
src/** tests only · _artifacts/screenshots/qa-sprint-NN/ · docs/planning/backlog.md — status column of
in-scope REQ/patch rows only: in-progress → verified on a SHIP verdict (2026-07-28, FB-003) · appends
.claude/rules/quality-guardrails.md.
Never writes docs/spec/**, docs/architecture/**, docs/design/**, or any src/** implementation file.
References (load when the step needs them)
references/review-discipline.md— the judgment method: the isolation seed + thespec_slice_hashcontract + the two-pass + read-only + re-derived severity / reachability / verification-bar / no-quota / FP self-check + the three-way escalation + the build↔review loop (generator↔evaluator, the hybrid RED-test findings interface, the convergence guard).references/verification-evidence.md— the honesty layer: the EXECUTED/OBSERVED/INFERRED ladder + the Capability Probe + the anti-tautology litmus + the fallback cascade + browser verification + design-fidelity determinism + the hard honesty gate.references/llm-review.md— the Husain error-analysis module + the re-execution of declared verifications atfinal_commit(eval floors + fitness functions + the grader hack-resistance bite; theeval_floors_met/evals_runtally). Gating is profile-dependent (shared/agentic-profile.md): MANDATORY underagent-system; underwebappgated onsystem.mdnaming LLM / RAG / agent components (skip otherwise).templates/qa-report.md— the machine-first verdict report (frontmatter tally + ledger + traceability + findings + Capability Probe + attestation).shared/subagent-protocol.md— the build → reviewer (05) I/O contract: seeded only with the handoff + spec slice; returns the verdict + attestation; the human at the verdict gate; repo-root-relative.shared/spec-amendment-protocol.md— the tiers you classify against when escalating (you append no row); repo-root-relative.shared/spine-boundary.md— declaration vs realization (the keystone); repo-root-relative.shared/live-source-verification.md— verify-live usage not backed by a current record grades like INFERRED (SHIP unreachable); flagged from the seed as-is; repo-root-relative.
Next skill
- SHIP →
/06-release sprint N(optionally/07-security sprint Nfirst). - FIX REQUIRED →
/04-builder sprint N(the fix pass: make the committed RED tests green, re-emit the handoff), then a fresh/05-reviewer sprint Nre-review. Write the fresh report by deleting the prior one first — never open it (invariant 2; git keeps every round), opening the new one withsupersedes: round N-1. - Convergence overrides the above for the REQs it names (2026-07-28, FB-010): any REQ in
convergence_firedroutes to/03-architect(or/00-discoveryfor a declaration defect), even in a FIX REQUIRED report whose other findings go to/04. A finding that survived ≥2 fix rounds is not a code bug. - BLOCK → the routed skill: a wrong realization →
/03-architect; a wrong declaration or aspec_slice_hashmismatch →/00-discovery/ the release gate. - State that gates or routes changed this run (verdict, amendment rows, release, audit, backlog status)? →
/statusbefore the next seat — it regenerates the projection your write invalidated (2026-07-28, FB-013).
What ships with it: 33 files
169.7 KB alongside SKILL.md, 10 of them executable
evals/
- build_fixture.pyruns8.0 KB
- check_review.pyruns29.4 KB
- evals.json18.7 KB
- fixtures/base/docs/architecture/adr/ADR-001.md1.4 KB
- fixtures/base/docs/architecture/adr/README.md334 B
- fixtures/base/docs/architecture/specs/digest-assembly.md2.6 KB
- fixtures/base/docs/architecture/system.md4.0 KB
- fixtures/base/docs/planning/sprints/sprint-01.md2.1 KB
- fixtures/base/docs/spec/capabilities/digest.md2.1 KB
- fixtures/base/docs/spec/capabilities/standups.md2.2 KB
- fixtures/base/docs/spec/specification.md2.9 KB
- fixtures/clean/handoff.tmpl.md2.6 KB
- fixtures/clean/src/digest.jsruns1.0 KB
- fixtures/clean/test/digest.test.jsruns1.8 KB
- fixtures/convergence/CASE.md1.2 KB
- fixtures/convergence/handoff.tmpl.md2.9 KB
- fixtures/defective/handoff.tmpl.md2.9 KB
- fixtures/defective/src/digest.jsruns1.4 KB
- fixtures/defective/test/digest.test.jsruns1.5 KB
- fixtures/patch/docs/planning/backlog.md1.7 KB
- fixtures/patch/docs/planning/patches/patch-001.md1.7 KB
- fixtures/patch/handoff.tmpl.md3.0 KB
- fixtures/patch/post/src/digest.jsruns1.2 KB
- fixtures/patch/post/test/patch-001-lock-boundary.test.jsruns791 B
- fixtures/patch/pre/src/digest.jsruns1.2 KB
- fixtures/patch/pre/test/digest.test.jsruns1.8 KB
- fixtures/payload-drift/CASE.md1.1 KB
- fixtures/payload-drift/handoff.tmpl.md2.6 KB
- README.md17.6 KB
references/
- llm-review.md7.2 KB
- review-discipline.md19.3 KB
- verification-evidence.md11.9 KB
templates/
- qa-report.md9.6 KB