05 reviewer
Skill IncommensurableHubris/fullstack-director/.agents/skills/05-reviewer
Spec-first, cross-harness SDLC skills framework — one director, AI agents, a living spec spine
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.
2 things to look at
- 16 days oldThe repository was created 16 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 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.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
15.2 KB, 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).