04 技能自创建闭环:skill-creator 的完整工作流
04 技能自创建闭环:skill-creator 的完整工作流
学习目标
- 理解 skill-creator 技能的完整闭环:捕获意图→访谈调研→编写→测试→评估→优化
- 掌握并行实验的执行流程和数据结构
- 学习描述优化的自动评估循环
- 分析三种环境(Claude Code / Claude.ai / Cowork)的适配策略
前置知识
本章涉及技能评估方法与 Skill 渐进式加载的通用原理,建议先阅读:
下文假设你已理解上述概念,直接聚焦 skill-creator 技能的具体实现。
项目实践
完整闭环流程
skill-creator 定义了一个七步闭环:
关键步骤详解
步骤 1-2:捕获意图与访谈调研
skill-creator 的对话策略:
- 这个技能应该让 Claude 做什么?
- 何时触发?(哪些用户短语/上下文)
- 期望的输出格式是什么?
- 是否需要设置测试用例?(客观可验证的产出推荐,主观产出如写作风格/艺术不需要)
步骤 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 Code | Claude.ai | Cowork |
|---|---|---|---|
| Subagent 并行 | ✅ | ❌ | ✅ |
| eval-viewer 浏览器 | ✅ | ❌ | ❌ (用 —static) |
| 定量 benchmark | ✅ | ❌ | ✅ |
| 描述优化 | ✅ (claude -p) | ❌ | ✅ |
| 打包 .skill | ✅ | ✅ | ✅ |
Claude.ai 降级策略:
- 不使用 subagent,逐条执行测试用例
- 不使用浏览器 viewer,直接在对话中展示结果
- 不做定量 benchmark,专注定性反馈
问题与规避
技能只在训练集上有效
问题:技能在测试用例上表现完美,但实际使用中失败。
规避策略:
- 测试用例必须”像真实用户会说的话”
- 使用 60/40 训练/测试分割
- 用测试集得分选择最优描述(而非训练集)
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