名称: 代码审查 描述: 代码审查实践,强调技术严谨性和验证关口。用于接收反馈、请求代码审查者子代理审查或防止拉取请求中的虚假完成声明。
代码审查
指导正确的代码审查实践,强调技术严谨性、基于证据的声明和验证胜过表演性回应。
概述
代码审查需要三种不同的实践:
- 接收反馈 - 技术评估胜过表演性同意
- 请求审查 - 通过代码审查者子代理进行系统审查
- 验证关口 - 在任何完成声明之前的证据
每种实践都有特定的触发器和协议,详见参考文件。
核心原则
技术正确性胜过社交舒适度。 在实施前验证。在假设前询问。在声明前提供证据。
何时使用此技能
接收反馈
触发当:
- 从任何来源接收代码审查评论
- 反馈似乎不清晰或技术上可疑
- 多个审查项目需要优先级排序
- 外部审查者缺乏完整上下文
- 建议与现有决策冲突
参考: references/code-review-reception.md
请求审查
触发当:
- 在子代理驱动开发中完成任务后(每个任务后)
- 完成主要功能或重构后
- 在合并到主分支之前
- 卡住并需要新视角
- 修复复杂错误后
参考: references/requesting-code-review.md
验证关口
触发当:
- 即将声明测试通过、构建成功或工作完成
- 在提交、推送或创建拉取请求之前
- 移动到下一个任务
- 任何暗示成功/完成的陈述
- 表达对工作的满意
参考: references/verification-before-completion.md
快速决策树
情况?
│
├─ 接收反馈
│ ├─ 不清晰项目? → 停止,首先要求澄清
│ ├─ 来自人类伙伴? → 理解,然后实施
│ └─ 来自外部审查者? → 在实施前进行技术验证
│
├─ 完成工作
│ ├─ 主要功能/任务? → 请求代码审查者子代理审查
│ └─ 在合并前? → 请求代码审查者子代理审查
│
└─ 即将声明状态
├─ 有新鲜验证? → 提供证据声明
└─ 没有新鲜验证? → 首先运行验证命令
接收反馈协议
响应模式
阅读 → 理解 → 验证 → 评估 → 响应 → 实施
关键规则
- ❌ 无表演性同意:“你完全正确!”、“好观点!”、“感谢[任何内容]”
- ❌ 在验证前无实施
- ✅ 重申需求,提问,用技术推理推回,或直接开始工作
- ✅ 如果不清晰:停止,并首先澄清所有不清晰项目
- ✅ YAGNI检查:在实施建议的"适当"功能前,使用grep检查使用情况
来源处理
- 人类伙伴: 可信 - 在理解后实施,无表演性同意
- 外部审查者: 验证技术上正确,检查是否破坏,如果错误则推回
完整协议: references/code-review-reception.md
请求审查协议
何时请求
- 在子代理驱动开发中的每个任务后
- 在主要功能完成后
- 在合并到主分支之前
过程
- 获取git SHAs:
BASE_SHA=$(git rev-parse HEAD~1)和HEAD_SHA=$(git rev-parse HEAD) - 通过任务工具调度代码审查者子代理,附带:WHAT_WAS_IMPLEMENTED, PLAN_OR_REQUIREMENTS, BASE_SHA, HEAD_SHA, DESCRIPTION
- 根据反馈行动:立即修复关键问题,在继续进行前修复重要问题,注意次要问题后续处理
完整协议: references/requesting-code-review.md
验证关口协议
铁律
没有新鲜验证证据就没有完成声明
关口功能
识别命令 → 运行完整命令 → 读取输出 → 验证确认声明 → 然后声明
跳过任何步骤 = 撒谎,而非验证
要求
- 测试通过:测试输出显示0失败
- 构建成功:构建命令退出码0
- 错误修复:原始症状测试通过
- 需求满足:逐行检查清单验证
验证命令
# 测试(首选bun)
bun test # 或:npm test
# 构建
bun run build # 或:npm run build
# 代码检查
bun run lint # 或:npm run lint
# 类型检查
bun run typecheck # 或:bunx tsc --noEmit
危险信号 - 停止
使用"应该"/“可能”/“似乎”,在验证前表达满意,在验证前提交,信任代理报告,任何暗示成功而没有运行验证的措辞
完整协议: references/verification-before-completion.md
与工作流集成
- 子代理驱动: 每个任务后审查,在移动到下一个任务前验证
- 拉取请求: 验证测试通过,在合并前请求代码审查者审查
- 通用: 在任何状态声明前应用验证关口,对无效反馈推回
底线
- 技术严谨性胜过社交表现 - 无表演性同意
- 系统审查过程 - 使用代码审查者子代理
- 证据先于声明 - 总是验证关口
验证。质疑。然后实施。证据。然后声明。