用途
review 技能用于对代码变更进行结构化审查。审查对象是用户提供的固定点(commit SHA、branch name、tag、main、HEAD~5 等)与 HEAD 之间的 diff,审查方式为双轴并行:Standards 轴检查代码是否符合本仓库记录的编码规范,Spec 轴检查代码是否忠实实现来源 issue、PRD 或 spec。两个轴线由并行 sub-agents 运行,避免互相污染 context,最后聚合 findings。
主要能力
- 固定审查基准点:用户指定的任何内容(commit SHA、branch name、tag、main、HEAD~5 等)都作为 fixed point,原样传入。若未指定则询问:“Review against what — a branch, a commit, or main?” 在拿到 fixed point 前不继续。
- 捕获 diff:使用 git diff <fixed-point>...HEAD(three-dot,比较对象为 merge-base),并用 git log <fixed-point>..HEAD --oneline 记录 commits 列表。
- 识别 spec 来源:按顺序查找 commit messages 中的 issue references(#123、Closes #45、GitLab !67 等)、用户传入的 path、docs/、specs/ 或 .scratch/ 下与 branch name 或 feature 匹配的 PRD/spec 文件。若找不到则询问用户 spec 位置;若用户说没有 spec,Spec sub-agent 跳过并报告 “no spec available”。
- 识别 standards 来源:查找仓库中记录代码规范的内容,常见位置包括 CLAUDE.md、AGENTS.md、CONTRIBUTING.md、CONTEXT.md、CONTEXT-MAP.md、per-context CONTEXT.md files、docs/adr/、.editorconfig、eslint.config.、biome.json、prettier.config.、tsconfig.json,以及仓库根目录或 docs/ 下的 STYLE.md、STANDARDS.md、STYLEGUIDE.md 或类似文件。收集文件列表,交由 Standards sub-agent 读取。
- 并行运行两个 sub-agents:单条消息中发起两个 Agent tool calls,均使用 general-purpose subagent。Standards sub-agent 读取 standards docs 和 diff,报告 diff 违反记录规范之处,引用标准(文件 + 规则),区分硬性违规与判断性判断,跳过工具已强制检查的内容,报告不超过 400 字。Spec sub-agent 读取 spec 和 diff,报告:(a) spec 要求但缺失或部分实现的需求;(b) diff 中未被要求的行为(范围蔓延);(c) 看起来已实现但实现有问题的需求;每条发现引用 spec 原文,报告不超过 400 字。若缺少 spec,跳过 Spec sub-agent 并在最终报告中说明。
- 聚合结果:在 ## Standards 和 ## Spec 标题下展示两个报告,可原样或轻微清理,不合并或重新排序 findings,保持两轴分离。最后用一行总结:每个轴线的 findings 总数,以及被标记的最严重单个问题(如有)。
使用方式
技能由用户触发,需要提供固定点。若缺少 docs/agents/issue-tracker.md,运行 /setup-matt-pocock-skills。审查流程按以下步骤执行:Pin the fixed point、Identify the spec source、Identify the standards sources、Spawn both sub-agents in parallel、Aggregate。
适用场景
适用于需要对代码变更进行双轴审查的场景。一个变更可能通过其中一个轴线但失败在另一个轴线:代码符合所有 standard 但实现了错误的东西,则 Standards pass, Spec fail;代码完全符合 issue 要求但破坏了项目约定,则 Spec pass, Standards fail。分开报告能避免一个轴线掩盖另一个。
限制
spec 来源可能缺失,此时 Spec sub-agent 跳过并报告 “no spec available”。standards 来源也可能不存在,需收集可用文件列表。两个 sub-agents 的报告均限制在 400 字以内。聚合结果不合并或重新排序 findings。若用户未提供固定点,必须询问后再继续。