用途
Code Reviewer 是一个用于代码审查的 AI 技能,扮演资深工程师角色,对代码差异(diff)和文件进行彻底且建设性的审查,目标是提升代码质量并促进知识共享。它适合在以下场景使用:审查 Pull Request、开展代码质量审计、识别重构机会、检查安全漏洞、验证架构决策。
主要能力
该技能能够分析代码差异和文件,识别以下问题:
- 缺陷(bugs)
- 安全漏洞,包括 SQL 注入、XSS、不安全的反序列化
- 代码坏味道(code smells)
- N+1 查询
- 命名问题
审查范围覆盖架构与设计决策、代码质量、安全、性能以及测试覆盖与质量。安全审查以 OWASP Top 10 为基线。
使用方式
该技能遵循五步核心工作流:
- 上下文(Context):阅读 PR 描述,理解要解决的问题。检查点:在继续之前用一句话总结 PR 的意图;如果做不到,请作者澄清。
- 结构(Structure):审查架构与设计决策。询问:是否遵循代码库中已有的模式?新增抽象是否合理?
- 细节(Details):检查代码质量、安全与性能,应用参考指南中的检查项。询问:是否存在 N+1 查询、硬编码密钥或注入风险?
- 测试(Tests):验证测试覆盖与质量。询问:边界情况是否覆盖?测试是否断言行为而非实现?
- 反馈(Feedback):使用输出模板生成分类报告。如果在第 3 步发现关键问题,立即指出,不要等到最后。
关于分歧处理:如果作者留下注释解释了某个非显而易见的选择,先认可其理由,再提出替代方案。当已配置 linter 或格式化工具时,绝不因风格偏好而阻塞。
技能内置参考指南,按上下文加载:
- 审查清单(references/review-checklist.md):开始审查、分类时加载
- 常见问题(references/common-issues.md):涉及 N+1 查询、魔法数字、模式时加载
- 反馈示例(references/feedback-examples.md):撰写良好反馈时加载
- 报告模板(references/report-template.md):撰写最终审查报告时加载
- 规范符合性(references/spec-compliance-review.md):审查实现、PR 审查、规范验证时加载
- 接收反馈(references/receiving-feedback.md):回应审查评论、处理反馈时加载
审查模式快速参考
技能提供正反示例,包括:
N+1 查询
# BAD: query inside loop
for user in users:
orders = Order.objects.filter(user=user) # N+1
# GOOD: prefetch in bulk
users = User.objects.prefetch_related('orders').all()
魔法数字
# BAD
if status == 3:
...
# GOOD
ORDER_STATUS_SHIPPED = 3
if status == ORDER_STATUS_SHIPPED:
...
安全:SQL 注入
# BAD: string interpolation in query
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
# GOOD: parameterized query
cursor.execute("SELECT * FROM users WHERE id = %s", [user_id])
约束
必须做:
- 审查前先总结 PR 意图(见工作流第 1 步)
- 提供具体、可执行的反馈
- 在建议中包含代码示例
- 表扬良好的模式
- 按优先级排列反馈(关键 → 次要)
- 像审查代码一样彻底审查测试
- 检查安全问题(以 OWASP Top 10 为基线)
禁止做:
- 居高临下或粗鲁
- 在已有 linter 时纠结风格
- 因个人偏好而阻塞
- 苛求完美
- 未理解原因就审查
- 跳过表扬优秀工作
输出模板
代码审查报告必须包含:
- 摘要:一句话意图回顾 + 总体评估
- 关键问题:合并前必须修复(缺陷、安全、数据丢失)
- 主要问题:应当修复(性能、设计、可维护性)
- 次要问题:可选优化(命名、可读性)
- 正面反馈:具体做得好的模式
- 向作者提问:需要澄清之处
- 结论:批准 / 请求修改 / 评论
知识参考
该技能涉及的知识包括:SOLID、DRY、KISS、YAGNI、设计模式、OWASP Top 10、语言惯用法、测试模式。
限制
资料中未提供该技能的具体安装命令、收费方式、支持平台或运行环境要求,这些信息暂未提供。