审查技能
代码审查和质量检查负责的技能群。
包含的小技能
| 技能 | 用途 |
|---|---|
| review-changes | 审查变更内容 |
| review-quality | 代码质量检查 |
| review-security | 安全性审查 |
| review-performance | 性能审查 |
| review-accessibility | 可访问性检查 |
路由
根据用户的意图选择合适的小技能:
- 一般性审查:review-changes/doc.md
- 重视质量:review-quality/doc.md
- 重视安全性:review-security/doc.md
- 重视性能:review-performance/doc.md
- 重视可访问性:review-accessibility/doc.md
执行步骤
- 质量判定门(步骤 0)
- 对用户请求进行分类
- (当启用Claude-mem时)搜索过去的审查指出
- 并行执行的判断(如下参考)
- 阅读适当的小技能doc.md或启动并行子代理
- 整合结果完成审查
步骤 0:质量判定门(确定审查重点领域)
在审查开始前分析变更内容,确定重点领域:
变更文件分析
↓
┌─────────────────────────────────────────┐
│ 质量判定门 │
├─────────────────────────────────────────┤
│ 判定项目: │
│ ├── 覆盖率不足?(无测试) │
│ ├── 安全性注意?(auth/api/) │
│ ├── a11y 注意?(UI 组件) │
│ └── 性能注意?(DB/循环) │
└─────────────────────────────────────────┘
↓
确定重点审查领域
覆盖率判定
| 情况 | 指出内容 |
|---|---|
| 新增文件无测试 | 「测试不足」 |
| 变更文件的测试过时 | 「请考虑更新测试」 |
| 覆盖率 < 60% | 「推荐提高覆盖率」 |
安全性重点审查
| 路径 | 额外检查项目 |
|---|---|
| auth/, api/ | OWASP Top 10 检查列表 |
| 输入处理 | 消毒、验证 |
| DB 查询 | 参数化确认 |
a11y 重点审查
| 路径 | 检查项目 |
|---|---|
| src/components/ | alt, aria, 键盘操作 |
| src/pages/ | 标题结构, 焦点管理 |
性能重点审查
| 模式 | 警告内容 |
|---|---|
| 循环内 DB 查询 | N+1 查询的可能性 |
| 大规模数据处理 | 考虑分页 |
| useEffect 滥用 | 渲染优化 |
重点审查整合输出
📊 质量判定结果 → 重点审查领域
| 判定 | 适用 | 目标文件 |
|------|------|-------------|
| 安全性 | ⚠️ | src/api/auth.ts |
| 覆盖率 | ⚠️ | src/utils/helpers.ts (无测试) |
| a11y | ✅ | - |
| 性能 | ✅ | - |
→ 重点审查安全性和覆盖率
步骤 2:过去的审查指出搜索(增强记忆)
当启用Claude-mem时,在审查开始前搜索过去的类似指出:
# 使用mem-search搜索过去的审查指出
mem-search: type:review "{变更文件的模式}"
mem-search: concepts:security "{与安全性相关的关键词}"
mem-search: concepts:gotcha "{与变更地点相关的关键词}"
显示示例:
📚 过去的审查指出(相关)
| 日期 | 指出内容 | 文件 |
|------|---------|---------|
| 2024-01-15 | XSS 漏洞:禁止使用 innerHTML | src/components/*.tsx |
| 2024-01-20 | N+1查询:必须预取 | src/api/*.ts |
💡 在本次审查中重点检查上述模式
注:如果未设置Claude-mem,则跳过此步骤。
并行子代理启动(推荐)
当两个条件都满足时,使用Task tool并行启动code-reviewer:
- 审查观点 >= 2(例如:安全性 + 性能)
- 变更文件 >= 5
启动模式(在单个响应内同时调用多个Task tool):
Task tool 并行调用:
#1: subagent_type="code-reviewer"
prompt="从安全性角度审查:{files}"
#2: subagent_type="code-reviewer"
prompt="从性能角度审查:{files}"
#3: subagent_type="code-reviewer"
prompt="从代码质量角度审查:{files}"
小规模情况(不满足条件):
- 依次读取子技能(doc.md)并顺序执行
🔧 LSP 功能的活用
在审查中活用LSP(Language Server Protocol)以提高精度。
将LSP集成到审查中
| 审查观点 | LSP活用方法 |
|---|---|
| 质量 | Diagnostics 自动检测类型错误和未使用变量 |
| 安全性 | Find-references 追踪敏感数据流动 |
| 性能 | Go-to-definition 确认重处理的实现 |
LSP Diagnostics 输出示例
📊 LSP 诊断结果
| 文件 | 错误 | 警告 |
|---------|--------|------|
| src/components/Form.tsx | 0 | 2 |
| src/utils/api.ts | 1 | 0 |
⚠️ 发现1个错误
→ 在审查中添加指出事项
Find-references 影响分析
🔍 变更影响分析
变更:validateInput()
引用地点:
├── src/pages/signup.tsx:34
├── src/pages/settings.tsx:56
└── tests/validate.test.ts:12
→ 已在测试中覆盖 ✅
VibeCoder 面向
📝 请求代码检查时的措辞
1. **「检查一下」**
- 请全面检查是否有问题
2. **「安全吗?」**
- 检查是否能抵御恶意攻击
3. **「不慢吧?」**
- 检查速度是否有问题
4. **「谁都能用吗?」**
- 检查残疾人也能使用
💡 提示:说「全部检查一下」,
4个观点将自动进行检查