用途
code-reviewer 是一个供 AI(尤其是 Claude)在执行期间阅读的代码审查参考技能,用于对代码变更进行基于证据的审查与审计。它强调技术事实优先于主观意见,风格问题交由项目风格指南与 linter 决定,不重复其结论。
运行时机
该技能在以下场景运行:TDD 第 4 阶段(审查者 ≠ 第 3 阶段的构建者)、/check review [path|PR]、/run review <target>,或按需触发。
审查标准
通过标准:当变更确实改善代码健康度时即批准,即使并不完美。
流程
- 范围:使用 git diff --name-only <base>...HEAD(或给定路径/PR)。阅读 diff 片段及直接调用方/被调用方,而非整个文件。
- 规模检查:变更超过 400 行时,按文件分组审查并说明覆盖了哪些组,绝不声称未完成的完整覆盖。
- 阅读每一行变更。运行 8 个维度,优先处理 CRITICAL 优先级维度。
- 验证每个候选发现(见下文),丢弃无法证明的,然后报告。
8 个审查维度
- Security(CRITICAL):OWASP Top 10:2025、CWE Top 25、密钥、不可信输入进入查询/shell/HTML/路径、每个受保护操作上的授权。
- Correctness(CRITICAL):是否实现任务意图;差一错误、null/空/边界输入、错误运算符/条件、竞态与共享状态、时区、部分失败留下坏状态。
- Compatibility(CRITICAL):无破坏性变更——公共 API/CLI/配置/schema/文件格式/默认值/输出形状保持不变,除非已版本化;他人依赖的可观察行为(Hyrum 定律);迁移或弃用路径。
- Architecture(HIGH):正确的层、单一职责、耦合、符合现有模式;复用优于新建辅助函数。
- Error Handling(HIGH):被吞掉的错误、空 catch、异常时 fail-open(OWASP A10)、缺少清理、泄露密钥/内部信息的错误。
- Test Gaps(HIGH):行为变更无测试;缺少边界/失败路径测试;无法失败的测试。
- Type Safety(MEDIUM):any/未检查的强制转换、未处理的 null、未验证的外部数据。
- Simplicity(MEDIUM):过度工程、推测性代码、死代码、不必要的注释。
大部分精力应投入三个 CRITICAL 优先级维度。优先级指示查看位置,严重程度由影响决定。
安全——OWASP Top 10:2025
A01 访问控制失效 · A02 安全配置错误 · A03 软件供应链失效 · A04 加密失效 · A05 注入 · A06 不安全设计 · A07 认证失效 · A08 软件或数据完整性失效 · A09 安全日志与告警失效 · A10 异常条件处理不当。
AI 生成的代码经常无法通过安全检查(Veracode 测试中约 45%),应将其视为不可信,绝不略读。
兼容性——何为破坏性变更
移除/重命名导出的符号、标志、环境变量、配置键、路由或字段;更改签名、默认值、返回/输出格式、用户解析的错误类型/消息、顺序,或文件/存储位置而无迁移;收紧接受的输入。若破坏是有意为之:SemVer MAJOR + 迁移说明,或保持旧路径可用并弃用。
简洁性——KISS,零过度工程
标记(Google 定义):代码比所需更通用,或当前不需要的功能。信号:单次使用的抽象/接口/工厂、无变化的配置或参数、"为以后"的推测性钩子、仅转发的包装器、为几行代码引入新依赖、深层嵌套(嵌套提高认知复杂度)、死代码或注释掉的代码。
注释解释为什么,绝不解释是什么。标记复述代码、叙述变更("added X"、"fixed bug")或过时的注释;绝不要求为自解释代码添加注释。规则:rules/workflow/smart-commenting.md。
报告前验证
LLM 审查者会产生许多看似合理但错误的发现。每个发现必须通过:
- 证据——你阅读的确切 file:line。
- 失败场景——具体输入/状态 → 错误输出、崩溃、泄露或调用方损坏。无场景 → 丢弃或降级为问题。
- 反驳通过——尝试反驳它(是否在别处有防护?调用方从不传该值?测试覆盖了?)。存活 → 报告。
事实性声明("测试通过"、"0 critical"、"覆盖率 N%")遵循 CoVe:skills/chain-of-verification/SKILL.md。
报告格式
[blocking|non-blocking|nit] [ASPECT] file:line — 缺陷 Scenario: <输入/状态 → 错误结果> Fix: <最小改动>
严重程度:
- blocking:合并前必须修复——场景显示安全漏洞、调用方损坏、错误结果或数据丢失。
- non-blocking:应修复;允许合并。
- nit:可选润色,绝不阻塞——前缀 Nit:。
按严重程度排序。仅在具体时才提及做得好的地方。无填充内容,不复述 diff。
决策
- APPROVED——0 个 blocking,变更改善代码健康度。
- CHANGES REQUESTED——任何 blocking 发现(始终包括:密钥、注入、缺少授权、未版本化的破坏性变更、数据丢失)。
逐维度评分(9-10 就绪 · 7-8 次要 · 5-6 需改进 · <5 请求变更)——防止 LGTM 漂移。在第 4 阶段写入 CODE_REVIEW.md(templates/code-review.md)。
相关规则
- rules/core/simplicity-over-complexity.md——YAGNI/DRY/KISS
- rules/workflow/smart-commenting.md——WHY 而非 WHAT
- rules/core/code-quality.md——覆盖率、类型、错误处理基线
- rules/core/verification.md——批准前验证
- rules/core/context-economy.md——diff 片段 + 调用方,而非整个文件
- rules/agent/sast-security-scanning.md——安全模式
- rules/agent/error-handling-standard.md——错误处理审查
- rules/workflow/cross-review-workflow.md——构建者 ≠ 审查者
- rules/workflow/chain-of-verification.md——审查输出中事实性声明强制要求
- rules/workflow/dual-llm-review.md——破坏性操作/安全关键发现的第二意见
限制
该技能为 AI 消费的参考文档,具体执行依赖宿主环境与相关规则文件。资料未提供安装命令、收费信息或平台支持细节。