关于 code-reviewer
Code Reviewer 是用于审查拉取请求和代码变更的技能,涵盖正确性、安全性、性能和可维护性。它提供分阶段审查流程、检查清单、语言专属指南和检查清单脚本。
主要功能
- 01检查正确性和边界情况
- 02审查安全性与性能
- 03评估代码质量和可维护性
- 04核查测试与文档
- 05参考语言专属审查指南
适用场景
- 01批准前审查拉取请求
- 02检查变更中的安全问题
- 03评估新功能的测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ zhaono1/ agent-playbook --skill code-reviewer安装后在 Claude Code 中输入/code-reviewer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/checklist.mdpatterns.mdsecurity.mdscripts/review_checklist.py详细介绍
代码审查
一项全面的代码审查技能,可分析拉取请求和代码变更的质量、安全性、可维护性和最佳实践。
此技能的触发条件
在以下情况下,此技能会触发:
- 请求代码审查
- 请求审查 PR
- 提及审查变更
- 说“审查这个”或“检查这段代码”
审查流程
阶段 1:收集上下文
-
获取变更的文件
git diff main...HEAD --name-only git log main...HEAD --oneline -
获取差异
git diff main...HEAD -
了解项目上下文
- 阅读相关文档
- 检查类似文件中已有的模式
- 确定项目特有的约定
阶段 2:分析类别
1. 正确性
- 逻辑合理且符合要求
- 已处理边界情况
- 错误处理恰当
- 没有明显的错误或拼写错误
2. 安全性
- 没有硬编码的密钥或凭据
- 输入验证和清理
- 防止 SQL 注入
- 防止 XSS(针对前端)
- 身份验证/授权检查
- 安全处理用户数据
3. 性能
- 没有 N+1 查询
- 缓存使用恰当
- 算法高效
- 没有不必要的计算
- 内存使用高效
4. 代码质量
- 遵循 DRY 原则
- 遵循 KISS 原则
- 抽象恰当
- 命名规范清晰
- 类型定义正确(如果使用 TypeScript)
- 没有注释掉的代码
5. 测试
- 测试覆盖了新功能
- 测试覆盖了边界情况
- 测试断言有意义
- 没有脆弱的测试
6. 文档
- 复杂逻辑有说明
- 公共 API 有文档
- 函数有 JSDoc/TSDoc
- 必要时更新 README
7. 可维护性
- 代码易于阅读
- 风格一致
- 设计模块化
- 职责分离
阶段 3:输出格式
使用以下结构化格式提供审查反馈:
# Code Review
## Summary
Brief overview of the changes (2-3 sentences).
## Issues by Severity
### Critical
Must fix before merge.
- [ ] **Issue Title**: Description with file:line reference
### High
Should fix before merge unless there's a good reason.
- [ ] **Issue Title**: Description with file:line reference
### Medium
Consider fixing, can be done in follow-up.
- [ ] **Issue Title**: Description with file:line reference
### Low
Nice to have improvements.
- [ ] **Issue Title**: Description with file:line reference
## Positive Highlights
What was done well in this PR.
## Suggestions
Optional improvements that don't require immediate action.
## Approval Status
- [ ] Approved
- [ ] Approved with suggestions
- [ ] Request changes
常见问题检查项
安全问题
| 问题 | 模式 | 建议 |
|---|---|---|
| 硬编码密钥 | const API_KEY = "sk-" | 使用环境变量 |
| SQL 注入 | \"SELECT * FROM...\" + user_input | 使用参数化查询 |
| XSS 漏洞 | innerHTML = user_input | 清理输入或使用 textContent |
| 缺少身份验证检查 | 新端点没有 @RequireAuth | 添加身份验证中间件 |
性能问题
| 问题 | 模式 | 建议 |
|---|---|---|
| N+1 查询 | 循环中调用数据库 | 使用预加载或批量查询 |
| 不必要的重新渲染 | useEffect 中缺少依赖项 | 修正依赖项数组 |
| 内存泄漏 | 未移除事件监听器 | 在 useEffect 返回函数中添加清理逻辑 |
| 低效循环 | 嵌套循环 O(n²) | 考虑使用哈希表或其他算法 |
代码质量问题
| 问题 | 模式 | 建议 |
|---|---|---|
| 重复代码 | 重复出现的相似代码块 | 提取为函数 |
| 魔法数字 | if (status === 5) | 使用具名常量 |
| 函数过长 | 函数超过 50 行 | 拆分为更小的函数 |
| 条件复杂 | `a && b |
测试问题
| 问题 | 模式 | 建议 |
|---|---|---|
| 没有测试 | 新功能没有测试文件 | 添加单元测试 |
| 边界情况未测试 | 测试只覆盖正常情况 | 添加边界情况测试 |
| 脆弱的测试 | 测试依赖实现细节 | 测试行为,而非实现 |
| 缺少断言 | 测试没有断言任何内容 | 添加恰当的断言 |
特定语言指南
TypeScript
- 对未类型化的值使用
unknown,而非any - 公共 API 优先使用
interface,联合类型使用type - 使用严格模式设置
- 尽可能避免使用
as断言
React
- 遵循 Hooks 规则
- 适当使用
useCallback/useMemo(不要过早使用) - 优先使用函数组件
- 在列表中使用恰当的 key 属性
- 使用 Context 避免逐层传递 props
Python
- 遵循 PEP 8 风格指南
- 使用类型提示
- 使用 f-strings 进行格式化
- 优先使用列表推导式,而非 map/filter
- 使用上下文管理器管理资源
Go
- 明确处理错误
- 使用命名返回值以提高清晰度
- 保持 goroutine 简洁
- 使用通道进行通信
- 避免包级状态
批准前
确认以下事项:
- 所有关键问题都已解决
- 测试在本地通过
- 没有合并冲突
- 提交消息清晰
- 文档已更新
- 已记录重大变更
脚本
运行审查清单脚本:
python3 scripts/review_checklist.py --base main --output review-checklist.md
参考资料
references/checklist.md- 完整的审查清单references/security.md- 安全审查指南references/patterns.md- 常见模式和反模式
评论
支持 Markdown