研发协作
需要反复审查并修复 Claude Code…
当你要让一个 Claude Code 技能通过 plugin-dev:skill-reviewer 的零 critical/major 审查,并能跨轮记录、在中断或不收敛后继续时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
需要反复审查并修复 Claude Cod特定
解决思路
- 解析目标技能路径:用户传入 `$ARGUMENTS`;若为空则从对话中取目标技能。
- 若输入以 `/SKILL.md` 结尾且该文件存在,使用其所在目录。
- 若输入是包含 `SKILL.md` 的目录,使用该路径。
- 否则执行 `Glob(pattern="**/SKILL.md")`,按技能名或路径子串过滤;多个匹配时让用户选择;无匹配时报告可用技能;仅一个匹配时继续。
- 解析循环脚本:循环是插件中的动态工作流 `workflows/improve.js`;用绝对路径传给 `scriptPath`,因为 Workflow 工具的 `name` 解析内置/项目工作流,marketplace 安装的版本可能不响应 `code-improver:improve`。
- 按顺序查找循环脚本,首个命中即用:1) `Bash: ls -d -- "${CLAUDE_PLUGIN_ROOT}/workflows/improve.js"`;2) 若设置了该变量,`Bash: ls -d -- "${CODEX_PLUGIN_ROOT}/workflows/improve.js"`;3) `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"}`;若仍不可用,停止并说明无法定位循环。不要手工拼路径,也不要自创循环。
- 用 Workflow 工具调用:`{scriptPath: "<第 2 步路径>", args: {...}}`;args 中 `target` 为解析出的绝对路径,`reviewer` 为 `{kind: "agent", name: "plugin-dev:skill-reviewer", notes: "The target is a Claude Code skill directory; review it as a skill (frontmatter, triggering description, progressive disclosure, referenced files)."}`,`pluginRoot` 为第 2 步插件目录,`maxRounds` 默认 5。
- 仅在用户要求不同上限时用 `--max-rounds N` 覆盖 `maxRounds`。`pluginRoot` 用于让运行找到其 metrics collector;仅当第 2 步回退到工作流名称时才省略该键,此时工作流会自行搜索。
- 仅在用户限制或扩大循环可触碰范围时传 `scope`(repo-relative globs);默认工作流限定到该技能所在插件目录。
- 仅在继续运行(escalation 后)时传 `decision`。
- 工作流在后台运行,无需照看:它审查、修复、再审查,每一轮修复后检查 scope,且只有审查干净时才可完成;它从不提交,所有改动留在工作树。
- 若 Workflow 工具不可用或被拒绝,停止并说明。不要用直接编辑在内联临时模仿循环:ledger、scope guard 和 escalation 保证都在工作流里,内联替代品没有这些保证(已观察到的失败:内联 fallback 通过削弱文档化保证来“修复”发现项,而这正是循环要防止的)。
- 若结果 `halted: "reviewer-unavailable"`,转述并停止;说明此技能指定的 reviewer 未安装,让用户从 `claude-plugins-official` marketplace 安装 `plugin-dev` 插件后重跑。不要自己审查该技能。
- 循环运行期间不要结束回合。Workflow 工具立即返回 task id,结果稍后才到;交互式会话中完成通知会重新调用你,要等待它。非交互式运行(脚本、CI、eval)没有后续回合:停止会中途放弃循环,所以启动后用 TaskOutput 带返回的 task id 轮询,或 sleep-and-recheck,直到完成再转述结果。回答“循环在跑,我稍后报告”的会话已经丢失该次运行。
- 转述结果时诚实报告:`converged: true` 表示最后动作是零 critical/major 发现的审查;报告使用轮数、剩余 minor 发现(`open_minor_count`)和产物路径(`ledger_path`、`metrics`)。
- `capped: true` 表示修复预算耗尽而 FINAL 审查仍有阻塞问题;明确说 **capped,不是 converged**,并列出 `open_blocking`,不要当成成功。
- `escalation` 表示循环检测到不收敛(重复发现、数量不降、修复把问题挪到别处);转述 escalation 消息和 finding ids,这需要设计决策,不是更多轮次。
- `halted` 表示某个 guard 触发(scope 违规、未登记的新文件、reviewer 死亡/不可用,或 finalize pass 的自身编辑未通过其后续检查);转述 `violations`/`new_untracked_files` 中的路径、`finalize_regressions` 中的位置和 notes。
- `notes` 始终随结果返回,必须展示;其中包含响亮警告,例如 "a git repository was initialized"。
- escalation 后继续:循环按设计停止。用户做出决定后(例如“保留 blocklist 并记录限制”),用相同 `target` 加 `{ "decision": "<用户裁决原文>" }` 启动新运行。新运行会重新加载磁盘上的 ledger,因此每个 finding、rejection 和 verdict 都会延续;轮次重新开始,推导不会重做。
- 停止正在运行的循环:停止工作流任务(TaskStop);磁盘上的 ledger 是最新一轮的当前状态,重跑会从它继续。
- 让循环自动强制以下保证:下一次审查验证每个修复;对可执行行为的修复带有 pins,会在修复前代码上失败。
- 让循环自动强制 scope:每轮修复后和 finalize pass 后做机械 git-diff 检查,任何越界改动都会 halt;git 不跟踪的越界文件用内容哈希守护,因为 diff 看不到它们;完成还要求 scope 内没有未登记的新文件。
- 让循环自动强制报告全部:reviewers 按严重级别报告所有发现;过滤只在 ledger verdict 时发生一次,没有新证据不重新争论已拒绝项。
- 让循环自动执行 finalize:完成前去掉叙述性注释,把版本 churn 折叠成恰好一次 bump(在 `plugin.json` 和重复它的 marketplace 条目中),并运行 docs-match-code pass;这些编辑发生在最后一次审查之后,因此会有检查读取它们:过度删除叙述性注释或文档声明不实都会以 `finalize-regression` halt,而不是当作完成通过。
适用边界 · 注意事项
- 一次性审查:直接 dispatch `plugin-dev:skill-reviewer` agent。
- 快速单点修复:直接编辑文件。
- 非技能目标或探索性草稿:非技能目标用 `code-improver` skill 配合合适 reviewer,或对分支用 `pr-improver`;探索性草稿用手动迭代更可控。