关于 skill-evolution
skill-evolution 是面向 Claude 技能库的工作流,将开发过程信号整理为由人工审核的改进建议。它记录运行产物并提出最小补丁,不会自动修改技能。
主要功能
- 01记录运行上下文与失败
- 02生成演进候选项
- 03配置失败信号过滤规则
- 04提出最小补丁建议
- 05修改前由人工审核
适用场景
- 01大型任务后审视技能改进
- 02跟踪反复出现的开发失败
- 03过滤嘈杂的工具错误
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ heyvhuang/ ship-faster --skill skill-evolution安装后在 Claude Code 中输入/skill-evolution确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
hooks/post-bash.shpost-tool.shpre-tool.shsession-end.shsettings.example.jsonsettings.json详细介绍
Evolution
此技能可根据实际开发信号推动技能库演进,但不会自动编辑技能。默认情况下,只会输出补丁建议。
存在的原因(解决“过于被动”的问题)
默认钩子只能“记录事件”,无法自动将经验整合到技能中。
此技能的目标是将复盘变成固定的收尾操作:
- 每项“大任务”结束时,花 60 秒进行问答确认:是否优化技能,以及优先优化哪些方面
- 用户选择“是,进行优化”时,使用
skill-improver根据真实运行产物生成最小补丁建议(仍不会自动编辑技能库)
默认策略
- 将上下文和失败记录到运行产物中
- 生成演进候选项
- 使用
skill-improver提出最小补丁 - 由人工审查并应用补丁
全局钩子(推荐)
钩子位于:~/.claude/skills/skill-evolution/hooks/
将钩子添加到全局设置(或项目设置)中,以便自动运行。
示例(合并到 ~/.claude/settings.json 或 <project>/.claude/settings.json 中):
Evolution 设置
通过 ~/.claude/skills/skill-evolution/hooks/settings.json 配置行为:
{
"min_fail_count": 2,
"ignore_tool_errors": true,
"noise_filters": {
"ignore_patterns": [
"typescript: type.*already exists",
"eslint:.*no-unused-vars.*react",
"prettier:.*prettier-ignore"
],
"max_failures_per_run": 20,
"recent_only": true,
"recent_window_minutes": 60
},
"output_format": {
"summary_only": false,
"include_context": true,
"include_recent_failures": 20,
"sort_by": "frequency"
}
}
设置说明:
min_fail_count:生成候选项前,单种错误类型至少需要出现的次数ignore_tool_errors:是否忽略工具级错误(而不是用户代码错误)noise_filters.ignore_patterns:要忽略的正则表达式模式列表max_failures_per_run:每个会话最多记录的失败次数(防止数量激增)recent_only:仅查看近期时间范围内的失败recent_window_minutes:仅统计最近 N 分钟内的失败output_format:控制 evolution-candidates.md 的输出格式
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash|Write|Edit",
"hooks": [
{
"type": "command",
"command": "bash ~/.claude/skills/skill-evolution/hooks/pre-tool.sh"
}
]
}
],
"PostToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "bash ~/.claude/skills/skill-evolution/hooks/post-bash.sh \"$TOOL_OUTPUT\" \"$EXIT_CODE\""
}
]
},
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "bash ~/.claude/skills/skill-evolution/hooks/post-tool.sh \"$TOOL_OUTPUT\" \"$EXIT_CODE\""
}
]
}
],
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "bash ~/.claude/skills/skill-evolution/hooks/session-end.sh"
}
]
}
]
}
}
运行产物
钩子会写入项目本地的运行文件夹:
<project-root>/runs/evolution/<run_id>/
logs/
events.jsonl
failures.jsonl
state.json
context.json
evolution-candidates.md
evolution-review.md
run_id 存储在 <project-root>/runs/evolution/.current 中,因此同一会话中的所有钩子都会写入同一次运行。
演进检查点(大任务结束时的默认操作)
刚完成一项“可交付的大任务”时(例如,已经编写了 final.md,或填写了该次运行 tasks.md 中的 Delivery summary),必须在收尾时进行简短复盘,并让用户选择。
在对话中只询问 3 个问题(优先使用选择题以降低成本):
-
你想基于本次运行优化技能吗?
- A. 是,现在提出补丁(建议先使用
skill-improver生成最小补丁) - B. 先记录问题,之后再优化
- C. 不需要
- A. 是,现在提出补丁(建议先使用
-
本次最大的阻碍是什么?
- A. 缺少输入/上下文字段(需要更清晰的输入/输出约定)
- B. 计划不明确/粒度过大(需要拆分任务或明确验证步骤)
- C. 环境/依赖项/命令问题(需要脚本或固定命令)
- D. UI/设计迭代(需要更清晰的设计系统或 UI 子任务拆分)
- E. 外部服务/权限/配置(需要更明确的确认节点和验证)
- F. 其他(一句话说明)
-
你想优先优化哪个方向?
- A. 输入/输出约定:修复产物名称、字段和路径
- B. 索引/摘要:减少上下文,改善恢复导航(proposal/tasks)
- C. 脚本/模板:将重复步骤转化为确定性脚本
- D. 确认节点:减少高风险操作,更早、更明确地确认
执行规则:
- 如果用户选择 1A:立即运行
skill-improver,仅将run_dir路径作为输入(不要在对话中粘贴日志) - 如果用户选择 1B:将“阻碍 + 期望的优化方向”写入
evolution-review.md(或相应工作流运行的final.md/tasks.md),下次统一处理 - 如果用户选择 1C:不要打断用户,直接结束(但仍保留运行产物,以供日后复盘)
何时进化(专注于更快交付)
- 解决 Next.js 升级或迁移问题
- 修复防护措施问题(lint/typecheck/build)
- 掌握 Supabase 错误或迁移模式
- 解决 Stripe 配置或账单流程问题
- 解决 Vercel 部署或 GitHub CI 问题
- 解决 AI SEO 配置或索引问题
如何进化
- Hooks 使用最新信号创建
evolution-candidates.md+evolution-review.md。 - 完成一项大型任务后,提出 3 个检查点问题(见上文),并由用户决定。
- 如果用户选择进化:使用最佳
run_dir运行skill-improver(工作流的 run_dir 通常比进化的 run_dir 更合适)。 - 手动应用补丁并重新验证技能。
事件示例
{"ts":"2026-01-11T12:00:00Z","event":"post-bash","category":"build","exit_code":1,"summary":"next build failed: Module not found","artifacts":["logs/failures.jsonl"]}
输出
evolution-candidates.md(自动生成)evolution-review.md(自动生成,包含 3 个问题)skill-improver提供的建议补丁(手动应用)
不会自动编辑任何技能。
评论
支持 Markdown