跳转到内容

04 技能自创建闭环:skill-creator 的完整工作流

04 技能自创建闭环:skill-creator 的完整工作流

学习目标

  • 理解 skill-creator 技能的完整闭环:捕获意图→访谈调研→编写→测试→评估→优化
  • 掌握并行实验的执行流程和数据结构
  • 学习描述优化的自动评估循环
  • 分析三种环境(Claude Code / Claude.ai / Cowork)的适配策略

前置知识

本章涉及技能评估方法与 Skill 渐进式加载的通用原理,建议先阅读:

下文假设你已理解上述概念,直接聚焦 skill-creator 技能的具体实现。


项目实践

完整闭环流程

skill-creator 定义了一个七步闭环:

关键步骤详解

步骤 1-2:捕获意图与访谈调研

skill-creator 的对话策略:

  1. 这个技能应该让 Claude 做什么?
  2. 何时触发?(哪些用户短语/上下文)
  3. 期望的输出格式是什么?
  4. 是否需要设置测试用例?(客观可验证的产出推荐,主观产出如写作风格/艺术不需要)

步骤 3:编写 SKILL.md

skill-creator 定义了技能结构的规范:

skill-name/
├── SKILL.md (必填)
│ ├── YAML frontmatter (name + description 必填)
│ └── Markdown 指令
└── Bundled Resources (可选)
├── scripts/ - 可执行代码
├── references/ - 参考文档
└── assets/ - 模板/图标/字体

写作风格指导

Try to explain to the model why things are important in lieu of heavy-handed MUSTs. Use theory of mind and try to make the skill general and not super-narrow to specific examples.

特别是:避免 ALWAYS / NEVER 这类大写强制词——解释原因比强制命令更有效。

步骤 4-6:并行执行与评估

详见 AI 教程第 02 章”技能评估方法论”。

步骤 8:描述优化循环

这是 skill-creator 最独特的功能——自动优化触发准确率:

测试查询设计要求

  • 必须具体且有细节:文件路径、个人上下文、公司名、URL
  • 应包含小写、缩写、拼写错误、口语化表达
  • should-not-trigger 应该是”邻近误触”而非明显无关

三种环境适配

skill-creator 针对三种运行环境有不同的适配:

功能Claude CodeClaude.aiCowork
Subagent 并行
eval-viewer 浏览器❌ (用 —static)
定量 benchmark
描述优化✅ (claude -p)
打包 .skill

Claude.ai 降级策略

  • 不使用 subagent,逐条执行测试用例
  • 不使用浏览器 viewer,直接在对话中展示结果
  • 不做定量 benchmark,专注定性反馈

问题与规避

技能只在训练集上有效

问题:技能在测试用例上表现完美,但实际使用中失败。

规避策略

  1. 测试用例必须”像真实用户会说的话”
  2. 使用 60/40 训练/测试分割
  3. 测试集得分选择最优描述(而非训练集)

eval-viewer 在无显示环境无法启动

问题:Cowork 环境没有浏览器,webbrowser.open() 失败。

规避策略:使用 --static <output_path> 生成独立 HTML 文件,通过链接分享给用户。反馈通过 feedback.json 文件下载。

描述优化循环中 claude -p 不可用

问题run_loop.py 通过 subprocess 调用 claude -p,在非 Claude Code 环境中不可用。

规避策略:在 Claude.ai 上跳过描述优化循环。在 Cowork 中可以使用。


设计取舍

为什么用 subagent 并行而非单 Agent 依次执行?

优势:两个版本独立执行,无上下文偏差;总时间 = max 而非 sum。 代价:需要 subagent 支持。 Anthropic 的降级:Claude.ai 上自动降级为依次执行。

为什么测试查询要求”邻近误触”?

优势:测试描述的判别能力。一个对 docx 技能用”写斐波那契函数”的负例太简单(任何合理的描述都不会误触发),没有测试价值。“帮我把这份报告转成 PDF”作为 docx 技能的负例才是有价值的——它共享”文档”关键词但需要不同的技能。 代价:编写高质量的负例查询需要更多思考。


参考来源

  • Anthropic Skills 仓库:skills/skill-creator/SKILL.md
  • JSON Schema 规范:skills/skill-creator/references/schemas.md
  • agentskills.io 规范:https://agentskills.io/specification