| name | skill-creator |
| description | 元技能:创建、测试、优化 Agent Skills。当用户说'帮我创建一个 skill'、'怎么写 SKILL.md'、'优化这个 skill'、'测试 skill 效果'、'skill 触发不准'、'写一个新的 skill'、'skill 怎么不生效'时触发此 Skill。核心能力:Skill 设计→SKILL.md 编写→测试用例生成→Eval 运行→迭代优化→description 调优。 |
来源: Anthropic 官方 Skills (anthropics/skills)
发布时间: 2026-04-29
理念: "授人以鱼不如授人以渔——学会创建 skill,你就拥有了无限扩展 AI 能力的方法。"
🛠️ Skill 创造者
从零创建一个高质量的 Agent Skill,或优化已有的 Skill。
🎯 什么时候用
| 场景 | 示例 |
|---|
| 创建新 Skill | "帮我做个翻译 skill" |
| 优化现有 Skill | "这个 skill 触发不准,帮我调" |
| 测试 Skill | "怎么知道我的 skill 好不好用" |
| 修复问题 | "skill 不生效,帮我排查" |
| 学习规范 | "SKILL.md 怎么写才对" |
🔄 创建 Skill 的 6 步流程
Step 1:定义(Decide)
回答 3 个核心问题:
- 解决什么问题? — Skill 的核心价值
- 什么时候触发? — 用户的说法/场景
- 有什么独特原则? — 和其他方案的区别
好例子:
问题:选择困难症不知道吃什么
触发:"吃什么"、"帮我选外卖"、"中午吃啥"
原则:根据预算/口味/人数快速决策,不纠结
Step 2:起草(Draft)
创建标准目录结构:
your-skill-name/
├── SKILL.md # ⭐ 核心文件
└── references/ # 可选:参考资料
└── xxx.md
SKILL.md 格式
---
name: "skill-english-name" # 英文,中划线连接
description: > # > 表示多行字符串
一句话描述这个 Skill 做什么。
什么时候应该触发它(关键词)。
核心特点/原则是什么。
---
# 标题
详细说明...
description 编写技巧(最关键!)
description 决定 Skill 的触发准确度,必须包含:
- 功能描述 — 做什么
- 触发场景 — 什么情况下用
- 核心原则 — 独特价值
好例子:
"帮助用户快速做出外卖选择,告别选择困难症。适用于纠结吃什么、点外卖选择困难、不知道吃什么等场景。根据预算、口味偏好、人数快速推荐具体餐厅和菜品,不做泛泛而谈。"
坏例子:
"这是一个食物选择的 skill。" # ❌ 太简单,触发不准
Step 3:测试(Test)
生成 5-10 个测试用例,覆盖:
- ✅ 应该触发的场景(正面案例)
- ❌ 不应该触发的场景(负面案例)
测试用例模板:
正面:
1. "两个人吃,100块预算,想吃辣的" → 应该触发 food-picker
2. "中午吃什么好纠结" → 应该触发 food-picker
负面:
1. "怎么做红烧肉" → 不应该触发(这是菜谱,不是选择)
2. "帮我写代码" → 不应该触发(完全无关)
Step 4:评估(Evaluate)
运行测试,记录结果:
| 用例 | 预期 | 实际 | 结果 |
|---|
| "吃啥" | 触发 | 触发 | ✅ |
| "怎么做菜" | 不触发 | 触发了 | ❌ |
Step 5:迭代(Iterate)
根据评估结果优化:
触发过度(不该触发时触发了):
- 在 description 中增加排除条件
- 更精确地描述触发边界
触发不足(该触发时没触发):
- 增加更多触发关键词
- 扩展 description 的场景描述
优化技巧:
- description 长度控制在 150-300 字
- 使用具体的动词和名词,避免抽象描述
- 包含用户原话式的表达
Step 6:规模化(Scale)
- 扩展到 20-50 个测试用例
- 让不同用户试用收集反馈
- 记录常见误触发场景持续优化
🧪 Eval 框架(自动化测试)
简单版:手动测试清单
## 测试清单
- [ ] 正面用例 1:xxx → 预期触发
- [ ] 正面用例 2:xxx → 预期触发
- [ ] 负面用例 1:xxx → 预期不触发
- [ ] 边界用例:xxx → 预期?
进阶版:自动化 Eval
import json
test_cases = [
{"input": "吃什么", "should_trigger": True},
{"input": "帮我写周报", "should_trigger": False},
]
for case in test_cases:
result = test_skill(case["input"])
status = "✅" if result == case["should_trigger"] else "❌"
print(f"{status} {case['input']}")
🐛 常见问题排查
| 问题 | 原因 | 解决方案 |
|---|
| Skill 完全不触发 | description 太模糊 | 增加具体关键词和场景描述 |
| Skill 总是误触发 | description 太宽泛 | 增加排除条件和边界说明 |
| Skill 触发不稳定 | 关键词冲突 | 检查和其他 skill 的 description 重叠 |
| 格式错误 | frontmatter 语法错 | 检查 --- 位置和缩进 |
| 不生效 | 路径/命名问题 | 确保文件夹名和 name 字段一致,用中划线 |
📝 最佳实践
DO(要做)
- ✅ description 包含"当用户说...时触发"
- ✅ 提供具体示例(用户原话)
- ✅ 一个 Skill 只做一件事,做到极致
- ✅ 使用
references/ 存放详细参考资料
- ✅ 持续迭代优化 description
DON'T(不要做)
- ❌ 一个 Skill 试图做所有事
- ❌ description 只有一句话
- ❌ 复制粘贴别人的 description
- ❌ 忽略负面测试用例
- ❌ 创建后不再优化
🎓 示例:从 0 创建 "food-picker"
v1 草稿
---
name: "food-picker"
description: "帮助选择食物"
---
问题:太简单,触发不准
v2 优化
---
name: "food-picker"
description: "帮助用户快速做出外卖选择,告别选择困难症。适用于纠结吃什么、点外卖选择困难、不知道吃什么等场景。根据预算、口味偏好、人数快速推荐具体餐厅和菜品。"
---
改进:增加了场景、关键词、具体价值
v3 最终版
---
name: "food-picker"
description: >
帮助用户快速做出外卖/就餐选择,专治选择困难症。
当用户说"吃什么"、"帮我选外卖"、"中午吃啥"、"不知道吃什么"、
"两个人吃什么"、"有推荐吗"等时触发。
根据预算、口味偏好(辣/清淡/酸甜等)、就餐人数、地区特色快速给出具体推荐。
核心原则:不泛泛而谈,直接给出具体选项;不超预算;考虑忌口。"
---
改进:更详细的触发词、核心原则、边界说明
🔗 相关 Skill
| Skill | 用途 |
|---|
| skill-lookup | 发现热门 Skill |
| skill-accelerator | 学习新技能的方法论 |
| systematic-debugging | 调试 Skill 本身的问题 |
"创建一个好 Skill 需要 3 次迭代:第一次写出来,第二次测试发现边界,第三次打磨 description。"