skills/code-review/SKILL.md
Generator-evaluator separation and review methodology — loaded by review agents to enforce fresh-context review discipline, Conventional Comments format, and gate verdicts
npx skillsauth add bostonaholic/team code-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Reviews must be performed by agents with fresh context. The generator (the agent that wrote the code) must never evaluate its own output. This separation prevents self-evaluation bias — the tendency to see what you intended to write rather than what you actually wrote.
The cardinal rule: Don't let the same model grade its own exam.
This separation is enforced structurally by dispatching review agents as independent subagents with no access to the orchestrator's conversation.
All review comments use the Conventional Comments format
(https://conventionalcomments.org). Every comment MUST include a specific
file:line reference.
Critique the code, not the coder. Assume competence. The same finding can read as collaborative or hostile depending on phrasing:
| Avoid (person-directed) | Prefer (code-directed) | |-------------------------|------------------------| | "Your approach is adding unnecessary complexity." | "The complexity this adds isn't worth the result." | | "You're not handling the null case." | "The null case isn't handled here." | | "This doesn't make any sense." | "I can't follow what this branch is doing — clarify?" |
issue: for findings that materially affect correctness,
security, or maintainability. Use suggestion: or nitpick: for
preferences.Every comment body MUST begin with the label and decoration wrapped in
**...** so GitHub renders it bold. Copy the format in the examples below
literally — including the asterisks — into the comment body you emit.
issue (blocking): Identifies a defect that must be fixed before approval.
**issue (blocking):** This query interpolates user input without parameterization.
file: src/api/users.ts:42
suggestion (non-blocking): Proposes an improvement. The author may accept or decline.
**suggestion (non-blocking):** Consider extracting this validation into a shared utility.
file: src/handlers/create.ts:18
nitpick (non-blocking): Minor style or naming observation. Never blocks approval.
**nitpick (non-blocking):** "data" is too vague — consider "userProfile" to match the domain.
file: src/models/types.ts:7
| Reviewer | Gate Type | Blocks Ship? |
|----------|-----------|--------------|
| security-reviewer | HARD | Yes — critical or high findings are non-negotiable |
| verifier | HARD | Yes — tests must pass, build must succeed |
| code-reviewer | HARD | Yes — blocking issues must be resolved |
| ux-reviewer | AUTO-FIX | REQUEST CHANGES is auto-applied in the loop (a major); only COMMENT notes may reach you |
| technical-writer | ADVISORY | No — findings recorded, pipeline proceeds |
Test-quality flags. Test files are part of the diff. Walk every changed
*test* / *spec* / __tests__/* file against the rules in
skills/test-first-development/SKILL.md ("Test Style Rules"). The
following anti-patterns are suggestion: individually and issue: when
they appear across multiple tests:
sleep() for synchronizationif, loops, string-building) that can carry the same
bug as the codetestProcessOrder_2) rather than behaviors
(refundsCardOnPartialFailure)There is no single "blocker/critical/major/minor" scale — reviewers raise
findings in three different vocabularies (Conventional Comments
issue/suggestion/nitpick, security CRITICAL/HIGH/MEDIUM/LOW, and the
APPROVE/REQUEST CHANGES/COMMENT verdict). This table is the authoritative map
from any of those onto the action the orchestrator takes. Every finding lands
in exactly one tier.
| Tier | Findings in this tier | Action |
|------|-----------------------|--------|
| Blocking | issue (blocking), code-reviewer REQUEST CHANGES, security CRITICAL/HIGH, any verifier failure | Auto-fixed in the loop. Never surfaced to the user. |
| Major | suggestion (non-blocking), security MEDIUM, ux-reviewer REQUEST CHANGES | Auto-fixed in the loop. Never surfaced to the user. |
| Minor and below | nitpick (non-blocking), security LOW, technical-writer GAPS, any COMMENT-level note | Surfaced to the user for a decision — but only after Blocking and Major are clean. |
The consult guard (non-negotiable). While any Blocking or Major finding remains unresolved, the orchestrator MUST NOT present findings to the user or ask which ones to address. It loops the implementer automatically. The user is consulted exclusively for the remaining Minor-and-below findings, and only once the loop has driven Blocking and Major to zero. A consult prompt that lists a blocking or major finding is a defect.
When multiple reviewers produce verdicts, aggregate them into a single pipeline gate decision:
The loop continues until Blocking and Major are zero, capped at 5 rounds; at the cap, escalate with the full unresolved-findings summary.
Blocking and Major failures are never aggregated away and never surfaced for triage. A single CRITICAL security finding blocks shipping regardless of how many other reviewers approved.
data-ai
Todo-first progress convention for multi-step procedures — loaded by every multi-step agent to track its own steps without drift
testing
Adversarially review a technical design document with fresh context before the human gate. Dispatches the built-in `general-purpose` subagent (clean context, no shared history with the design-author) against `docs/plans/<id>/design.md` and presents its verdict — APPROVE, REQUEST CHANGES, or COMMENT. Optional, not part of the QRSPI pipeline. Trigger on "review the design doc", "audit design.md", "is this design ready", or `/eng-design-doc-review`.
data-ai
Prepare one or more isolated git worktrees — one per repository the topic touches. Router action — no agent. Trigger on "set up the worktree", "isolate this work", or "/team-worktree".
development
Break the approved design into vertical slices with verification checkpoints. The structure document is the human's last review point before code is written. Trigger on "slice this up", "break the design into steps", or "/team-structure".