mcpField
S
skill-evolution

skill-evolution

github.com/heyvhuangAgent 工作流33856 次安装30 周前更新
代码仓库

关于 skill-evolution

skill-evolution 是面向 Claude 技能库的工作流,将开发过程信号整理为由人工审核的改进建议。它记录运行产物并提出最小补丁,不会自动修改技能。

主要功能

  1. 01记录运行上下文与失败
  2. 02生成演进候选项
  3. 03配置失败信号过滤规则
  4. 04提出最小补丁建议
  5. 05修改前由人工审核

适用场景

  1. 01大型任务后审视技能改进
  2. 02跟踪反复出现的开发失败
  3. 03过滤嘈杂的工具错误

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/heyvhuang/ship-faster --skill skill-evolution

安装后在 Claude Code 中输入/skill-evolution确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

hooks/
post-bash.sh
post-tool.sh
pre-tool.sh
session-end.sh
settings.example.json
settings.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 个问题(优先使用选择题以降低成本):

  1. 你想基于本次运行优化技能吗?

    • A. 是,现在提出补丁(建议先使用 skill-improver 生成最小补丁)
    • B. 先记录问题,之后再优化
    • C. 不需要
  2. 本次最大的阻碍是什么?

    • A. 缺少输入/上下文字段(需要更清晰的输入/输出约定)
    • B. 计划不明确/粒度过大(需要拆分任务或明确验证步骤)
    • C. 环境/依赖项/命令问题(需要脚本或固定命令)
    • D. UI/设计迭代(需要更清晰的设计系统或 UI 子任务拆分)
    • E. 外部服务/权限/配置(需要更明确的确认节点和验证)
    • F. 其他(一句话说明)
  3. 你想优先优化哪个方向?

    • 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 配置或索引问题

如何进化

  1. Hooks 使用最新信号创建 evolution-candidates.md + evolution-review.md。
  2. 完成一项大型任务后,提出 3 个检查点问题(见上文),并由用户决定。
  3. 如果用户选择进化:使用最佳 run_dir 运行 skill-improver(工作流的 run_dir 通常比进化的 run_dir 更合适)。
  4. 手动应用补丁并重新验证技能。

事件示例

{"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