关于 review-local-changes
一项用于系统审查本地未提交代码变更的技能,可协调专门审查 Agent,并支持指定关注领域、按影响级别筛选,以及输出 Markdown 或 JSON。
主要功能
- 01审查已暂存和未暂存变更
- 02并行调用专门审查 Agent
- 03关注领域与影响级别筛选
- 04Markdown 或 JSON 输出
- 05问题置信度与影响评分
适用场景
- 01提交前审查代码变更
- 02重点检查安全或性能
- 03按影响级别筛选审查结果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ neolabhq/ context-engineering-kit --skill review-local-changes安装后在 Claude Code 中输入/review-local-changes确认已加载。
详细介绍
本地更改审查说明
你是一名专业代码审查员,负责全面评估本地未提交的更改。审查必须条理清晰、系统全面,并提供可执行的反馈和改进建议。
用户输入:
$ARGUMENTS
重要:除非特别要求,否则跳过对 spec/ 和 reports/ 文件夹中更改的审查。
命令参数
从 $ARGUMENTS 中解析以下参数:
参数定义
| 参数 | 格式 | 默认值 | 说明 |
|---|---|---|---|
review-aspects | 自由文本 | 无 | 可选的审查方面或重点领域(例如,“安全性、性能”) |
--min-impact | --min-impact <level> | high | 要报告的问题的最低影响级别。可选值:critical、high、medium、medium-low、low |
--json | 标记 | false | 以 JSON 格式而非 Markdown 格式输出结果 |
标记交互
同时使用 --min-impact 和 --json 时,--min-impact 会筛选 JSON 输出中的问题。例如,--min-impact medium --json 只会输出影响分数为 41 或以上的问题,并以 JSON 格式呈现。--json 标记仅控制输出格式,不影响筛选。--min-impact 标记仅控制筛选,无论输出格式如何,均以相同方式生效。
使用示例
# Review all local changes with default settings (min-impact: high, markdown output)
/review-local-changes
# Focus on security and performance, lower the threshold to medium
/review-local-changes security, performance --min-impact medium
# Critical-only issues in JSON for programmatic consumption
/review-local-changes --min-impact critical --json
影响级别映射
| 级别 | 影响分数范围 |
|---|---|
critical | 81-100 |
high | 61-80 |
medium | 41-60 |
medium-low | 21-40 |
low | 0-20 |
配置解析
解析 $ARGUMENTS 并按以下方式确定配置:
# Extract review aspects (free text, everything that is not a flag)
REVIEW_ASPECTS = all non-flag text from $ARGUMENTS
# Parse flags
MIN_IMPACT = --min-impact || "high"
JSON_OUTPUT = --json flag present (true/false)
# Resolve minimum impact score from level name
MIN_IMPACT_SCORE = lookup MIN_IMPACT in Impact Level Mapping:
"critical" -> 81
"high" -> 61
"medium" -> 41
"medium-low" -> 21
"low" -> 0
审查工作流
使用多个专门 Agent 对本地未提交的更改进行全面代码审查,每个 Agent 负责关注代码质量的不同方面。请严格遵循以下步骤:
阶段 1:准备
按顺序运行以下命令:
-
确定审查范围
- 检查以下命令以了解更改情况;仅使用能返回更改行数而不返回文件内容的命令:
git status --shortgit diff --stat(未暂存的更改)git diff --cached --stat(已暂存的更改)git diff --name-onlygit diff --cached --name-only
- 已暂存与未暂存:区分已暂存(
git diff --cached)和未暂存(git diff)的更改。默认审查两者。报告问题时,注明受影响的更改是已暂存还是未暂存,以便用户了解哪些更改已准备好提交,哪些仍在进行中。 - 按照上文“命令参数”部分的说明解析
$ARGUMENTS,以确定REVIEW_ASPECTS、MIN_IMPACT、MIN_IMPACT_SCORE和JSON_OUTPUT - 如果没有更改,请告知用户并退出
- 检查以下命令以了解更改情况;仅使用能返回更改行数而不返回文件内容的命令:
-
最多并行启动 6 个 Haiku Agent,执行以下任务:
-
一个 Agent 负责搜索并列出相关 Agent 指令文件的路径(如果存在),但不读取文件内容:
CLAUDE.md、AGENTS.md、**/constitution.md、根目录下的 README.md,以及修改文件所在目录中的任何 README.md -
根据更改行数将文件分配给其他 1 到 5 个 Agent,并要求它们执行以下任务:
目标:分析以下文件中的本地未提交更改并提供摘要 请执行以下步骤: - 运行 `git diff -- [list of files]` 和 `git diff --cached -- [list of files]`,查看未暂存和已暂存的更改 - 分析以下文件:[list of files] 请详细总结每个文件的更改,包括更改类型、复杂程度、受影响的类/函数/变量等,以及整体变更说明。对于每个文件,请注明更改是已暂存、未暂存还是两者都有。
-
阶段 2:查找问题和改进之处
确定适用的审查,然后最多启动 6 个并行运行的(Sonnet 或 Opus)Agent,独立审查所有本地更改。这些 Agent 应执行以下操作,然后返回问题列表,并说明标记每个问题的原因(例如:是否符合 CLAUDE.md 或 constitution.md 的要求、Bug、Git 历史上下文等)。
注意:code-quality-reviewer Agent 还应提供代码改进和简化建议,并给出具体示例和理由。
可用的审查 Agent:
- security-auditor - 分析代码中的安全漏洞
- bug-hunter - 扫描 Bug 和问题,包括静默失败
- code-quality-reviewer - 根据项目规范审查代码的整体质量、可维护性和品质,并通过简化代码提升清晰度和可维护性
- contracts-reviewer - 分析代码契约,包括:类型设计和不变量(如果新增类型)、API 变更、数据建模等
- test-coverage-reviewer - 审查测试覆盖率的质量和完整性
- historical-context-reviewer - 审查代码的历史上下文,包括修改代码的 git blame 和历史,以及涉及这些文件的先前提交。
注意:默认选项是运行所有适用的审查 Agent。
确定适用的审查
根据阶段 1 的更改摘要及其复杂度,确定适用的审查 Agent:
- 如果有代码或配置更改,但不包括纯外观更改:bug-hunter、security-auditor
- 如果有代码更改,包括业务或基础设施逻辑、格式等:code-quality-reviewer(整体质量)
- 如果更改了代码或测试文件:test-coverage-reviewer
- 如果更改了类型、API、数据建模:contracts-reviewer
- 如果更改较复杂或需要历史上下文:historical-context-reviewer
启动审查 Agent
并行方式:
- 同时启动所有 Agent
- 向它们提供完整的已修改文件列表和更改摘要作为上下文,明确指出正在审查哪些本地更改;同时提供项目规范和标准文件列表,包括 README.md、CLAUDE.md 和 constitution.md(如果存在)。
- 所有结果应一起返回
关键:仅使用前台 Agent:不要使用后台 Agent。尽可能并行启动 Agent。后台 Agent 经常遇到权限问题和其他错误。
阶段 3:置信度和影响评分
此阶段使用命令参数上方的 Configuration Resolution 区块中解析出的 MIN_IMPACT_SCORE(默认值:high 对应 61)。
-
对阶段 2 发现的每个问题,启动一个并行运行的 Haiku Agent,并向其提供更改内容、问题描述以及 CLAUDE.md 文件列表(来自步骤 2),由其返回两个分数:
置信度分数(0-100) - 对问题确实存在且并非误报的信心程度: a. 0:完全不自信。这是一个经不起简单推敲的误报,或是一个已有问题。 b. 25:有些把握。这可能是真实问题,但也可能是误报。Agent 无法验证这是否是真实问题。如果问题属于风格问题,则相关的 CLAUDE.md 中并未明确指出这一点。 c. 50:比较有把握。Agent 能够验证这是一个真实问题,但它可能只是吹毛求疵,或在实际使用中不常发生。相对于其他更改,这并不重要。 d. 75:非常有把握。Agent 再次检查了该问题,并确认它极有可能是真实问题,且在实际使用中会遇到。更改中现有的方法并不足以解决问题。该问题非常重要,会直接影响代码功能;或者相关的 CLAUDE.md 中直接提到了该问题。 e. 100:完全确定。Agent 再次检查了该问题,并确认它确实是真实问题,而且在实际使用中会频繁发生。证据直接证实了这一点。
影响分数(0-100) - 如果问题未修复,其严重程度和后果:
a. 0-20(低):轻微的代码异味或风格不一致。对功能或可维护性的影响不显著。 b. 21-40(中低):代码质量问题,可能损害可维护性或可读性,但不会影响功能。 c. 41-60(中):会在边缘情况下导致错误、降低性能,或增加未来更改的难度。 d. 61-80(高):会破坏核心功能、在正常使用中损坏数据,或造成显著的技术债务。 e. 81-100(严重):会导致运行时错误、数据丢失、系统崩溃、安全漏洞或功能完全失效。
对于因 CLAUDE.md 指示而标记的问题,Agent 应再次确认 CLAUDE.md 是否确实明确指出了该问题。
-
使用下方的渐进式阈值表筛选问题 - 影响越大的问题,达到门槛所需的把握程度越低:
影响分数 所需的最低置信度 原因 81-100(严重) 50 即使把握程度中等,严重问题也值得调查 61-80(高) 65 高影响问题需要较高把握程度,以避免误报 41-60(中) 75 中等影响的问题需要较高把握程度,才值得处理 21-40(中低) 85 低至中等影响的问题需要非常高的把握程度 0-20(低) 95 只有几乎可以确定的问题才会纳入 剔除任何未达到其影响级别最低置信度门槛的问题。 如果没有符合此标准的问题,则不要继续。
重要:不要报告:
- 低于已配置
MIN_IMPACT级别的问题 - 任何影响分数低于MIN_IMPACT_SCORE的问题(根据--min-impact参数解析,默认值:high/ 61)都必须排除。 - 低置信度问题 - 任何低于其影响级别最低置信度门槛的问题都应完全排除。
筛选应用顺序:依次应用这两种筛选条件。问题必须同时满足这两个条件才能纳入:
- 最低影响分数筛选(先应用):排除任何影响分数低于
MIN_IMPACT_SCORE的问题(该值根据上文“命令参数”部分中的--min-impact参数解析,默认值:high/ 61)。 - 渐进式置信度阈值(后应用):对于剩余问题,排除任何置信度分数低于其影响级别最低要求的问题(见上方渐进式阈值表)。
具体示例:使用
--min-impact medium(MIN_IMPACT_SCORE = 41)时,假设某个问题的影响分数为 45(中等),置信度为 70。步骤 1 通过:45 >= 41。步骤 2 未通过:中等影响的问题要求置信度 >= 75,但该问题的置信度只有 70。结果:排除。相反,若某个问题的影响分数为 30(中低),置信度为 95,则会在步骤 1 被排除,因为 30 < 41,无论其置信度多高。
将审查报告重点放在通过这两项筛选的问题上。
- 低于已配置
-
编写并输出审查报告,包含:
- 第 2 阶段中通过筛选的所有已确认问题
- code-quality-reviewer Agent 提出的代码改进建议
- 根据影响和与项目指南的一致性确定改进优先级
第 3 阶段的误报示例
- 未修改代码中原有的问题
- 看似是 Bug、实际并非 Bug 的情况
- 资深工程师不会指出的吹毛求疵
- linter、typechecker 或 compiler 能发现的问题(例如,缺失或错误的导入、类型错误、测试失败、格式问题、换行等吹毛求疵的风格问题)。无需自行运行这些构建步骤;可以放心假设它们会作为 CI 的一部分单独运行。
- 一般代码质量问题(例如,测试覆盖率不足、一般性安全问题、文档质量差),除非 CLAUDE.md 明确要求
- CLAUDE.md 中指出、但已在代码中明确忽略的问题(例如,由于 lint ignore 注释)
- 可能是有意为之或与更广泛的改动直接相关的功能变更
备注:
- 如果可以使用构建、lint 和测试命令,请使用它们。这些命令有助于发现代码改动中不明显的潜在问题。
- 首先列出待办事项
- 每个 Bug/问题/建议都必须注明文件路径和行号
审查报告输出
如果 JSON_OUTPUT 为 true,请使用下方的 JSON 模板输出报告。否则,请使用 Markdown 模板。
Markdown 模板
如果发现了问题或改进项
# Local Changes Review Report
**Quality Gate**: PASS / FAIL
**Issues**: X critical, X high, X medium, X medium-low, X low
**Min Impact Filter**: [configured level]
---
## Issues
[For each issue, use this format:]
🔴/🟠/🟡/🟢 [Critical/High/Medium/Low]: [Brief description]
**File**: `path/to/file:lines`
[Evidence: What code pattern/behavior was observed and the consequence if left unfixed]
```language
[Suggestion: Optional fix or code suggestion]
改进项
[code-quality-reviewer 提出的代码改进建议(如有):]
- [描述] -
file:location- [理由和益处]
##### If you found no issues
```markdown
# Local Changes Review Report
**Quality Gate**: PASS
No issues found above the configured threshold.
**Checked**: bugs, security, code quality, test coverage, guidelines compliance
JSON 模板
设置 --json 标志时,请按以下 JSON 结构输出结果:
{
"quality_gate": "PASS", // "PASS" or "FAIL" - FAIL when any critical or high issue exists
"summary": {
"total_issues": 0, // count of issues after both filters applied
"critical": 0, // count at impact 81-100
"high": 0, // count at impact 61-80
"medium": 0, // count at impact 41-60
"medium_low": 0, // count at impact 21-40
"low": 0 // count at impact 0-20
},
"issues": [
{
"severity": "critical", // severity label derived from impact_score range
"file": "src/auth/session.ts",
"lines": "42-48", // affected line range in the diff
"description": "Session token not invalidated on password change",
"evidence": "Old sessions remain active after credential reset, allowing unauthorized access",
"impact_score": 90, // 0-100, maps to severity level (see Impact Level Mapping)
"confidence_score": 80, // 0-100, likelihood issue is real (see Confidence Score rubric)
"suggestion": "Call invalidateAllSessions(userId) before issuing new token" // optional fix
},
{
"severity": "medium",
"file": "src/api/handlers.ts",
"lines": "115-120",
"description": "Missing error handling for database timeout",
"evidence": "Database query has no timeout or retry logic, will hang indefinitely under load",
"impact_score": 55,
"confidence_score": 78,
"suggestion": "Add timeout option to query call and wrap in try/catch with retry"
}
],
"improvements": [ // from code-quality-reviewer agent; may be empty array
{
"description": "Improvement description",
"file": "path/to/file",
"location": "function/method/class", // target symbol or code region
"reasoning": "Why this improvement matters",
"effort": "low" // "low", "medium", or "high"
}
]
}
如果存在任何严重或高危问题,quality_gate 为 "FAIL";否则为 "PASS"。问题中的 suggestion 字段为可选字段,可以省略。
评估指南
- 提交前的机会:此审查针对尚未提交的本地改动,在代码进入版本历史前运行。请将其视为最后一道防线:趁修复成本最低时,发现 Bug、安全漏洞和契约违规。此处发现的问题不会到达团队成员或 CI。
- 安全优先:任何高危或严重的安全问题都会自动导致代码不适合提交
- 量化一切:使用数字,而不要使用“某些”“许多”“少量”之类的词
- 务实:关注真实问题和高影响改进
- 大型改动(>500 行)中跳过琐碎问题:
- 关注架构和安全问题
- 除非 CLAUDE.md 明确要求,否则忽略次要命名规范
- Bug 优先于风格问题
- 改进建议应可执行:每条建议都应包含具体代码示例
- 考虑投入与影响:优先选择影响大且所需投入合理的改进
- 遵循项目标准:提出改进建议时参考 CLAUDE.md 和项目指南
- 终端可读性:报告将在终端/控制台中查看。请采用适合等宽字体的格式:行文简短、使用清晰的分隔符(
---),并保持表格简洁。避免多层嵌套的项目列表或过长、在窄终端中难以阅读的段落。
请记住
目标是发现错误和安全问题,在保持开发速度的同时提升代码质量,而不是追求完美。审查要全面,但也要务实,重点关注代码安全性、可维护性和持续改进。
本次审查发生在提交之前,因此是尽早发现问题并主动提升代码质量的好机会。不过,不要因轻微的风格问题而阻止合理的改动——这些问题可以在后续迭代中处理。