编写 Skill
流程
-
收集需求 — 向用户询问:
- 这个 skill 覆盖什么任务/领域?
- 应处理哪些具体用例?
- 需要可执行脚本,还是只要说明即可?
- 是否要纳入参考材料? -
起草 skill — 创建:
- 简洁说明的 SKILL.md
- 若内容超过 500 行,则增加额外参考文件
- 若需要确定性操作,则增加实用脚本 -
与用户评审 — 展示草稿并询问:
- 是否覆盖你的用例?
- 有无遗漏或不清楚之处?
- 哪些部分应更详细或更简略?
Skill 结构
skill-name/
├── SKILL.md # Main instructions (required)
├── REFERENCE.md # Detailed docs (if needed)
├── EXAMPLES.md # Usage examples (if needed)
└── scripts/ # Utility scripts (if needed)
└── helper.js
SKILL.md 模板
---
name: skill-name
description: Brief description of capability. Use when [specific triggers].
---
# Skill Name
## Quick start
[Minimal working example]
## Workflows
[Step-by-step processes with checklists for complex tasks]
## Advanced features
[Link to separate files: See `REFERENCE.md`]
Description 要求
description 是 agent 决定加载哪个 skill 时唯一能看到的内容。它会与所有已安装 skill 一起出现在系统提示中。agent 读取这些 description,并根据用户请求选择相关 skill。
目标:给 agent 刚好足够的信息,让它知道:
- 这个 skill 提供什么能力
- 何时/为何触发(具体关键词、上下文、文件类型)
格式:
- 最多 1024 个字符
- 使用第三人称
- 第一句:它做什么
- 第二句:"Use when [specific triggers]"
好例子:
Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when user mentions PDFs, forms, or document extraction.
坏例子:
Helps with documents.
坏例子无法让 agent 把它和其他文档类 skill 区分开。
何时添加脚本
在以下情况添加实用脚本:
- 操作是确定性的(校验、格式化)
- 同一段代码会反复生成
- 错误需要显式处理
相比生成代码,脚本能省 token,也更可靠。
何时拆分文件
在以下情况拆成独立文件:
- SKILL.md 超过 100 行
- 内容属于不同领域(例如 finance vs sales schema)
- 高级功能很少用到
评审清单
起草完成后,确认:
- [ ] Description 包含触发条件("Use when...")
- [ ] SKILL.md 少于 100 行
- [ ] 无时效性信息
- [ ] 术语一致
- [ ] 包含具体示例
- [ ] 引用层级不超过一层