编写一项技能
编写技能 (Writing Skills)
> 衍生自 Matt Pocock 的 write-a-skill (MIT)。原样保留了 Matt 的语气和三阶段工作流。新增内容:验证工具 + 引用 + cs-* 包装器(见下文 *工具与配套*)。
流程
1. 收集需求 - 询问用户:
- 该技能涵盖的任务/领域是什么?
- 需要处理哪些具体用例?
- 是需要可执行脚本还是仅需指令?
- 是否有需要包含的参考资料?
2. 起草技能 - 创建:
- 包含简洁指令的 SKILL.md
- 如果内容超过 500 行,创建额外的参考文件
- 如果需要确定性操作,创建实用脚本
3. 用户评审 - 展示草案并询问:
- 这是否涵盖了你的用例?
- 是否有遗漏或不清晰的地方?
- 哪些部分需要增加或减少细节?
技能结构
skill-name/
├── SKILL.md # 主指令(必填)
├── REFERENCE.md # 详细文档(可选)
├── EXAMPLES.md # 使用示例(可选)
└── scripts/ # 实用脚本(可选)
└── helper.jsSKILL.md 模板
---
name: skill-name
description: 能力的简短描述。在 [特定触发条件] 时使用。
---
技能名称
快速上手
[最小可行性示例]
工作流
[针对复杂任务的步骤流程及检查清单]
高级特性
描述 (Description) 要求
描述是智能体在决定加载哪个技能时唯一能看到的内容。它会与所有其他已安装技能一起出现在系统提示词中。智能体会阅读这些描述,并根据用户请求选择相关的技能。
目标:为智能体提供足够的信息,使其能够获知:
1. 该技能提供了什么能力
2. 何时/为何触发它(特定的关键词、上下文、文件类型)
格式:
- 最多 1024 个字符
- 使用第三人称编写
- 第一句:它能做什么
- 第二句:“在 [特定触发条件] 时使用”
优秀示例:
从 PDF 文件中提取文本和表格,填写表单,合并文档。在处理 PDF 文件或用户提到 PDF、表单或文档提取时使用。糟糕示例:
帮助处理文档。糟糕的示例让智能体无法将其与其他文档技能区分开来。
何时添加脚本
在以下情况添加实用脚本:
- 操作是确定性的(验证、格式化)
- 相同的代码会被重复生成
- 需要显式的错误处理
相比于生成的代码,脚本可以节省 Token 并提高可靠性。
何时拆分文件
在以下情况拆分为独立文件:
SKILL.md超过 100 行
- 内容属于不同的领域(例如:财务架构 vs 销售架构)
- 高级特性很少被用到
评审检查清单
起草完成后,请验证:
- [ ] 描述中包含触发条件(“在...时使用”)
- [ ]
SKILL.md低于 100 行
- [ ] 不含时效性信息
- [ ] 术语一致
- [ ] 包含具体示例
- [ ] 引用深度不超过一级
工具与配套
验证工具和 cs-* 封装程序与本技能配套。可通过编程方式运行所有 6 项审核清单检查项:
python scripts/skill_review_checklist_runner.py path/to/skill-folder有关工具目录、cs-skill-author 角色代理以及 /cs:write-a-skill 斜杠命令,请参阅 references/companion_tooling.md。
---
版本: 1.0.0
衍生自: Matt Pocock (MIT) + 本仓库的封装程序