关于 code-improver
code-improver 是一个代码改进技能,通过命名的审查者与修复 Agent 反复审查和修正指定目录,直到没有严重或主要问题。它要求明确目标、审查者和可修改范围,并依赖工作流中的范围保护与记录机制。
主要功能
- 01循环执行审查与修复
- 02要求指定审查者
- 03限定可修改的文件范围
- 04记录审查与修复过程
- 05报告收敛、阻断或升级结果
适用场景
- 01迭代改进指定目录中的代码
- 02在明确范围内处理审查发现
- 03追踪未解决问题和循环结果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ trailofbits/ skills --skill code-improver安装后在 Claude Code 中输入/code-improver确认已加载。
详细介绍
代码改进器
运行 /code-improver:improve,即可改进任意代码目标——这是一个动态工作流,会循环调用指定的审查者和修复子 Agent,直到审查结果中没有严重或主要问题,然后清理自身残留。循环、问题记录和防护机制都位于工作流中;此技能会收集通用入口所需的三项输入,并反馈执行结果。
启动循环
用户提供了:$ARGUMENTS(如果为空,则从对话中获取详细信息)。
1. 收集三项必需输入——不要猜测
- 目标:待改进目录的绝对路径。相对路径需基于工作目录解析;确认目录存在。
- 审查者:执行每次审查的已安装技能或 Agent。用户必须指定——没有默认选项,也没有捆绑的审查者。确定其类型:
- 命名空间 Agent(例如
plugin-dev:skill-reviewer)→"kind": "agent" - 已安装技能(例如
pr-review-toolkit:review-pr)→"kind": "skill"如果名称可能对应两者,请查看会话的技能列表;如果仍有歧义,请询问用户。如果用户没有指定审查者,请询问——不要自行选择。
- 命名空间 Agent(例如
- 范围:循环可以修改的、相对于仓库的 glob。通用入口要求必须明确提供范围;如果用户没有提供,请提出目标目录(
<repo-relative-target>/**)并在启动前确认。
2. 确定循环脚本
循环是此插件中的动态工作流 workflows/improve.js。按路径启动:scriptPath 接受解析后的绝对路径,而 Workflow 工具的 name 会解析内置和项目工作流,因此从市场安装的工作流可能无法通过 code-improver:improve 调用。按顺序尝试,命中第一个即止——主目录优先于 .,因此已安装的副本优先于此市场项目的检出副本:
Bash: ls -d -- "${CLAUDE_PLUGIN_ROOT}/workflows/improve.js"Bash: ls -d -- "${CODEX_PLUGIN_ROOT}/workflows/improve.js"(如果设置了该变量)Bash: find ~/.claude ~/.codex . -maxdepth 7 -path '*/code-improver/workflows/improve.js' -print -quit 2>/dev/null
使用输出的确切路径。其插件目录(即移除 /workflows/improve.js 后的路径)就是 pluginRoot。如果三项都没有结果,请尝试一次 {name: "code-improver:improve"};如果仍然不可用,请停止并说明无法找到该循环。不要手动拼接路径,也不要自行编造循环。
3. 调用工作流
使用 Workflow 工具运行,参数为 {scriptPath: "<the path from step 2>", args: {...}}:
{
"target": "<absolute target path>",
"reviewer": { "kind": "agent|skill", "name": "<namespaced-name>", "notes": "<what the reviewer should know about the target>" },
"scope": ["<repo-relative-glob>/**"],
"pluginRoot": "<the plugin directory from step 2>",
"maxRounds": 5
}
- 仅当用户要求使用不同的上限时,才设置
maxRounds。 pluginRoot用于让运行过程找到其指标收集器;只有当第 2 步回退到工作流名称时,才省略此键——此时工作流会自行查找。- 仅当要覆盖默认值时,才设置
finalize({"version_bump": bool, "narration_strip": bool, "docs_pass": bool}):当目标位于插件内时进行版本号递增;始终进行叙述清理和文档检查。 - 仅在继续运行时设置
decision(见下文)。
工作流会在后台运行,无需看管:它会审查、修复、再次审查、每轮修复后检查范围,并且只有审查通过后才能完成。 它不会提交;所有更改都会保留在工作树中。
如果 Workflow 工具不可用或访问被拒绝,请停止并说明情况。 不要自行在行内循环并直接编辑——记录、范围保护和升级保障都由工作流提供,行内模拟并不具备这些保障。
如果结果为 halted: "reviewer-unavailable",请转达结果并停止。 此会话未安装指定的审查器;告知用户由哪个插件提供该审查器,并在安装后重新运行。不要自行审查目标。
工作流仍在运行时,不要结束当前回合。 Workflow 工具会立即返回任务 ID,稍后才会返回结果。在交互式会话中,完成通知会再次调用你——请等待。在非交互式运行中(脚本、CI、评测),后续不会再有回合:停止会导致循环中途放弃,因此启动后请轮询任务(使用返回的任务 ID 调用 TaskOutput,或等待后重新检查),直到任务完成,再转达结果。如果回复“循环正在运行,我之后再报告”,就等于放弃了这次运行。
转达结果
工作流会返回结构化结果。请如实报告——这些区别很重要:
converged: true— 最后一步是审查,且没有严重或主要问题。报告已用轮数、剩余次要问题数量(open_minor_count)以及产物路径(ledger_path、metrics)。capped: true— 修复预算已用尽,最终审查仍发现阻塞问题。请明确说明:已达上限,未收敛,并列出open_blocking。不要将其描述为成功。escalation— 循环检测到未能收敛(问题反复出现、数量未减少,或修复将问题转移到了其他位置)。请将升级消息和问题 ID 转达给用户:这需要设计决策,而不是继续增加轮数。halted— 某项保护机制触发(范围违规、新文件未登记、审查器已失效或不可用,或最终处理步骤产生的更改未通过后续检查)。请转达violations/new_untracked_files中的路径、finalize_regressions中的位置,以及备注。notes始终随结果一同返回——请一并说明;其中可能包含“已初始化 git 仓库”等重要警告。
升级后继续运行
循环会按设计在升级时停止。用户作出决定后,请使用相同的 target 和 reviewer,并启动一次新的运行:
{ "decision": "<the user's ruling, verbatim>" }
新运行会重新加载磁盘上的记录,因此所有问题、驳回和结论都会保留——轮数会重新开始,但推导过程不会重来。
若要停止正在运行的循环,请停止工作流任务(TaskStop);磁盘上的记录会更新到最后一轮,重新运行时会从那里继续。
不适用场景
- Claude Code 技能:使用
skill-improver条目——它会接入合适的审查器 - 分支 / 拉取请求:使用
pr-improver条目——它会根据差异推导范围 - 一次性审查:直接调用审查器;循环的价值在于迭代
- 快速单项修复:直接编辑文件