Perform a two-axis review of the diff between HEAD and the fixed point provided by the user:
Two-axis review of the diff between
HEADand a fixed point the user supplies:
- Standards — does the code follow the coding conventions documented in this repository?
Standards — does the code conform to this repo's documented coding standards?
- Spec — does the code faithfully implement the original issue / PRD / spec?
Spec — does the code faithfully implement the originating issue / PRD / spec?
The two axes run asparallel sub-agents , so they do not pollute each other's context, and then this skill aggregates their findings.
Both axes run as parallel sub-agents so they don't pollute each other's context, then this skill aggregates their findings.
The issue tracker should already have been provided to you — if docs/agents/issue-tracker.md is missing, run /setup-matt-pocock-skills。
The issue tracker should have been provided to you — run
/setup-matt-pocock-skillsifdocs/agents/issue-tracker.mdis missing.
Process
1. Pin down the fixed point
Whatever the user says as the fixed point — commit SHA, branch name, tag,main、HEAD~5 , etc. Do not have opinions; just pass it through. If the user did not specify, ask: "Review against what baseline — a branch, a commit, or main?" Do not continue until you get it.
Whatever the user said is the fixed point — a commit SHA, branch name, tag,
main,HEAD~5, etc. Don't be opinionated; pass it through. If they didn't specify one, ask: "Review against what — a branch, a commit, ormain?" Don't proceed until you have it.
Capture the diff command once:git diff <fixed-point>...HEAD(three dots, so the comparison is against the merge-base). Also record the commit list via git log <fixed-point>..HEAD --oneline .
Capture the diff command once:
git diff <fixed-point>...HEAD(three-dot, so the comparison is against the merge-base). Also note the list of commits viagit log <fixed-point>..HEAD --oneline.
2. Determine the spec source
Look for the original spec in the following order:
Look for the originating spec, in this order:
- Issue references in commit messages (
#123、Closes #45、GitLab!67, etc.) — fetch via the workflow indocs/agents/issue-tracker.md.Issue references in the commit messages (
#123,Closes #45, GitLab!67, etc.) — fetch via the workflow indocs/agents/issue-tracker.md. - A path passed by the user as an argument.
A path the user passed as an argument.
docs/、specs/or.scratch/under a PRD/spec file matching the branch name or feature.A PRD/spec file under
docs/,specs/, or.scratch/matching the branch name or feature.- If nothing is found, ask the user where the spec is. If the user says there is none, thespecsub-agent will skip and report "no spec available".
If nothing is found, ask the user where the spec is. If they say there isn't one, the Spec sub-agent will skip and report "no spec available".
3. Determine the standards source
Anything in the repository that documents how code is written. Common locations:
Anything in the repo that documents how code should be written. Common locations:
CLAUDE.md、AGENTS.mdCONTRIBUTING.mdCONTEXT.md、CONTEXT-MAP.md, theCONTEXT.mdfile for each contextdocs/adr/(architecture decisions are also standards)docs/adr/(architectural decisions are standards).editorconfig、eslint.config.*、biome.json、prettier.config.*、tsconfig.json(machine-enforced standards — record them but do not re-check what the tools already check).editorconfig,eslint.config.*,biome.json,prettier.config.*,tsconfig.json(machine-enforced standards — note them but don't re-check what tooling already checks)- Any
docs/at the repository root or underSTYLE.md、STANDARDS.md、STYLEGUIDE.mdor similar filesAny
STYLE.md,STANDARDS.md,STYLEGUIDE.md, or similar at the repo root or underdocs/
Collect the file list.StandardsThe sub-agent will read them.
Collect the list of files. The Standards sub-agent will read them.
4. Launch two sub-agents in parallel
Send one message containing two Agent tool calls. Use the general-purpose sub-agent for both.
Send a single message with two
Agenttool calls. Use thegeneral-purposesubagent for both.
Standards sub-agent prompt — include:
Standards sub-agent prompt — include:
- The full diff command and commit list.
The full diff command and commit list.
- The list of standards source files found in step 3.
The list of standards-source files you found in step 3.
- Instruction: "Read the standards documents. Then read the diff. Report — organized by file/hunk — every place where the diff violates the documented standards. Cite the standard (file + rule). Distinguish hard violations from judgment-call skips. Skip what the tools enforce. Within 400 words."
The brief: "Read the standards docs. Then read the diff. Report — per file/hunk where relevant — every place the diff violates a documented standard. Cite the standard (file + the rule). Distinguish hard violations from judgement calls. Skip anything tooling enforces. Under 400 words."
Spec sub-agent prompt — include:
Spec sub-agent prompt — include:
- diff command and commit list.
The diff command and commit list.
- The path of the specification or the retrieved content.
The path or fetched contents of the spec.
- Instruction: "Read the specification. Then read the diff. Report: (a) requirements required by the specification but missing or partially implemented; (b) behavior in the diff that was not required (scope creep); (c) requirements that appear to be implemented but whose implementation appears problematic. For each finding, cite the specification line. Within 400 words."
The brief: "Read the spec. Then read the diff. Report: (a) requirements the spec asked for that are missing or partial; (b) behaviour in the diff that wasn't asked for (scope creep); (c) requirements that look implemented but where the implementation looks wrong. Quote the spec line for each finding. Under 400 words."
If the specification is missing, skip the specification sub-agent and note this in the final report.
If the spec is missing, skip the Spec sub-agent and note this in the final report.
5. Aggregation
Under the ## Standards and ## Spec headings, present the two reports verbatim or lightly cleaned up.Do notmerge or reorder the findings — the two axes are deliberately kept separate so that the user can view them independently.
Present the two reports under
## Standardsand## Specheadings, verbatim or lightly cleaned. Do not merge or rerank findings — the two axes are deliberately separate so the user can see them independently.
End with a one-line summary: the total number of findings for each axis, and the most severe single issue flagged (if any).
End with a one-line summary: total findings per axis, and the worst single issue (if any) flagged.
Why two axes
A change may pass one axis but not the other:
A change can pass one axis and fail the other:
- The code follows every standard but implements the wrong thing → standards pass, specification fails.
Code that follows every standard but implements the wrong thing → Standards pass, Spec fail.
- The code implements exactly what the issue requires but violates the project conventions → specification passes, standards fail.
Code that does exactly what the issue asked but breaks the project's conventions → Spec pass, Standards fail.
Reporting them separately prevents one axis from masking the other.
Reporting them separately stops one axis from masking the other.