| name | code-quality-auditor |
| description | 审查 git 变更、Review Gate、merge ready、发布前审计以及代码、文档、配置、脚本质量门禁时使用。输出结构化 Pass 或 Reject 结论、问题分级、最低验证矩阵、证据链和复查基线;当用户提到 review、code review、审计、review gate、merge ready、blocker、evidence、pass、reject 时触发。 |
| metadata | {"internal":true} |
Code Quality Auditor
铁律
- 先给 Review Gate 结论、阻塞原因和复查基线,再给摘要。
- 没有最低验证证据,不得给
Pass。
Pass / Reject 是 Gate 结论,suggest / warning / blocker 是问题分级,二者不能混用。
- 文档、规划、配置、脚本与测试代码同样属于正式审查对象,不能因为“不是业务代码”而跳过。
必读依据
工作流
1. 建立审查上下文
- 读取 git diff、变更文件清单、Todo 验收点和已有验证结果。
- 没有 diff 时,明确指出“当前没有可审查改动”,并要求用户指定 staged changes、提交范围或文件范围。
- 先识别关键入口与高风险区域,例如鉴权、数据写入、外部调用、构建配置、规范文档、治理脚本和 agent / skill 定义。
- diff 规模核验(必查项):统计变更文件数与新增行数(
git diff --stat 或新增文件清单)。超过 开发规范 §2.8 提交规模约束 阈值(10 文件或 800 行新增)时,要求调用方说明批次拆分依据;未拆分且无正当理由 → Reject(退回拆分后分批提交)。并发分区审计时按各分区规模之和合并判定。
2. 判定改动类型与最低验证要求
- 使用 验证矩阵 先确定最低验证层级,再决定需要补哪些命令。
- 代码改动默认至少包含
pnpm lint 和 pnpm typecheck;样式改动补 pnpm lint:css;Markdown / 文档改动补 pnpm lint:md。
- 测试不是所有场景都一刀切全量执行,必须按风险选择定向测试、全量测试、coverage、E2E 或性能验证。
- 若实际证据低于最低层级,直接判定为
Reject,而不是“暂时通过”。
2.5 按 audit-depth 分配审查深度(控制用时)
审查投入与改动风险匹配,不应对所有改动一视同仁长时间分析。audit-depth 分级(quick / standard / deep)、适用改动与时间盒以 AI 协作规范 §2 A (Audit) 分级审计执行协议 为唯一权威;调用方未声明时按 deep 防御执行。
执行规则:
- 证据优先采信:任务方提供的已查证事实(实验证据、测试结果、源码行号引用)直接采用,翻源码仅限需要最终实锤且无外部参考的场景。
- 收敛策略(不依赖时间感知):审计方无真实时间感知,不检查时间、不因时间收敛——审查输出固定为“audit-depth 审查范围内可交付的结论 + 未覆盖边界”,宁可给
Reject(附待补证据清单)也不无限深挖;是否超时由调用方事后实测判定,不回溯要求补动作。
- 复审只审修复点:第 2+ 轮 review 只复查上轮问题编号对应的修复点 diff 与受影响断言,不得重读全量 diff;输出中声明“本轮仅复审基线:问题编号列表”。
- 并发分区:当调用方按模块分区发起多个 review 任务时,各分区独立出结论;主审汇总时合并去重、取最严结论。
- 用时反馈(调用方事后实测):审计方不自报时长、审计过程中不检查时间;“实际用时 / 是否超时间盒”由调用方按 AI 协作规范 §2 A (Audit) 分级审计执行协议 用宿主系统时钟事后实测回填,实测超时仅作分级校准数据,不回溯要求补动作。
3. 收集并延续审查证据
- 默认把临时审查记录写入 git ignore 的
artifacts/review-gate/,文件名建议使用 <date>-<scope>.md。
- 首轮证据优先由
scripts/review-gate/generate-evidence.mjs 生成,发布前收口则优先复用 scripts/release/pre-release-check.mjs 的输出作为最低验证证据。
- 多轮 review 复用同一份记录,按
Round 1、Round 2 追加,保留未关闭问题编号与复查结论。
- 证据记录至少包含:变更范围、已执行验证、结果摘要、问题分级、Gate 结论、未覆盖边界、后续补跑计划。
4. 执行结构化审查
- 用 审查清单 逐项覆盖正确性、安全、职责边界、可删除残留、测试充分性与文档漂移。
- 治理定义必查(含
quick):改动涉及 docs/standards/*.md、.github/skills/*/SKILL.md、.github/agents/*.agent.md 时,按 文档规范 §6.2 收敛规则 检查:规范单点声明(不得与权威文档重复抄写完整条款/阈值/教训,应一行链接引用)与规范执行分层(新增严格约束须声明并挂接 review 检查点;宽松指引留在执行层)。治理定义改动多为 deep 全量执行,quick 仅限措辞级改动,至少完成新增 diff 文本与权威文档的比对目检。
- 供应链信任边界必查:改动引入新依赖、MCP server、外部 skill/agent,或依赖 AI 推荐的包时,按 安全规范 §5.2 供应链信任边界 检查来源验证、钉版本锁文件与先验来源。
- 开发流程编号标记检查(必查项):按 开发规范 §2.2.1 注释规范 的"禁止流程编号残留"条款检查 diff 中新增/修改的注释与测试名,是否残留规划/任务/审计编号(如
T405、P1-1、RG-B01、Phase 66、候选 #14 等形态,含中文冒号形式与 it('C1: xxx') 测试名),例外与清理要求以该条款为准。
- 优先寻找会阻塞放行的问题,而不是按文件顺序复述 diff。
- 重点检查是否存在遗漏 mock、异常吞掉、权限边界缺失、证据链不闭环、超出当前 Todo 范围的静默扩写。
5. 判定问题分级
blocker: 明显 correctness bug、安全漏洞、关键验证缺失、与 Todo / 规范冲突、会阻塞提交的问题。
warning: 存在较高回归风险、测试覆盖不足、结构边界模糊或证据不完整,但不一定立刻造成故障。
suggest: 非阻塞的可维护性、可读性、删除计划或后续优化建议。
6. 给出 Review Gate 结论
- 只有在所有
blocker 关闭且最低验证矩阵满足时,才允许给 Pass。
Reject 必须明确写出失败原因、缺失证据、待修问题和复查基线。
- 对多轮 review,必须说明“本轮新增问题”“本轮已关闭问题”“仍待复查问题”,避免每轮都重新洗牌。
输出要求
## Review Gate
- 结论: Pass | Reject
- 改动类型:
- 最低验证要求:
- 审查轮次:
- audit-depth: quick | standard | deep(调用方声明 + 本轮实际执行档位)
- 实际用时 / 是否超时间盒:(按 [审计调用协议](../../../docs/standards/ai-collaboration.md) 回填,audit-depth 未声明时按 `deep` 计)
- 失败原因或通过条件:
- 复查基线:
## Findings
### blocker
1. [path/to/file.ext] 标题
- 风险
- 修复方向
### warning
### suggest
## 验证证据
- 已执行验证:
- 结果摘要:
- 未覆盖边界:
- 后续补跑计划:
技能文件专项审查
当改动涉及技能 / agent 体系时,额外检查:
description 是否真的能触发技能,而不是抽象介绍。
- 正文是否具备铁律、工作流、确认门、反模式和交付前检查。
references/ 是否职责清晰,是否存在跨目录重复定义。
- 若技能刚经历模板化重构,是否通过 git diff 或提交历史保留了旧版中的项目特化规则。
- skill / agent 改动是否保持唯一事实源,并补了
pnpm ai:check(镜像漂移检查)。
反模式
- 只写“已审查通过”而不说明依据。
- 只跑
lint / typecheck 就给所有改动 Pass。
- 把问题分级当成最终 Gate 结论,或者把
warning 写成“已通过”。
- 审查文档、脚本、配置、技能文件时不补充对应的最小验证。
- 没有复查基线,导致多轮 review 无法对账。
- 超限 diff 未核对拆分依据就放行。
- 治理定义改动重复抄写权威文档条款,而不是引用。
审查前检查
- 是否已经读取相关规范与当前 Todo 验收点。
- 是否已经识别改动类型并映射到最低验证矩阵。
- 是否已经为发布前收口或 Review Gate 准备好
scripts/release/pre-release-check.mjs / scripts/review-gate/generate-evidence.mjs 的证据落点。
- 是否已经记录证据落点和本轮审查范围。
- 是否已经把阻塞项和残余风险区分清楚。