Agent Skills 开放格式与目录结构

本节目标

分清“规范要求”“推荐约定”和“client 实现”,并能设计一个最小 Skill 目录。

Skill 解决什么问题

普通提示可以告诉模型这一次怎么做,但团队的真实工作往往还依赖项目约定、固定步骤、校验脚本、模板和故障经验。Agent Skills 用一个可版本控制的文件夹打包这些内容,让兼容 client 能发现并在适当时机提供详细说明。

格式开放意味着不同产品可以读取同一基本结构;不意味着不同产品的安装路径、可调用工具、权限、冲突优先级、子 agent 继承和触发概率完全相同。有些 host 会按 description 自动选择,有些允许显式选择,有些配置会预加载完整正文。移植前需要阅读目标 client 的官方说明并实际测试;详见 定位、客户端差异与权限边界。

一个 Skill 应围绕一个连贯能力边界,而不是把整个团队手册塞进一个包。先从真实项目中的稳定做法、失败记录、模板和可验证脚本提炼;若两个任务的输入、风险或验收方式完全不同,应拆成两个 Skill。来源、许可证、版本和兼容性信息也属于可维护性契约。

最小与扩展目录

text-statistics/
├── SKILL.md          # 必需:YAML frontmatter + Markdown 指令
├── scripts/          # 可选:可执行脚本
├── references/       # 可选:按需读取的参考材料
├── assets/           # 可选:模板、静态资源、查找表
└── evals/            # 常用评测目录;官方创作指南中的实践结构

规范的最低要求是 Skill 目录中存在 SKILL.md。scripts/、references/、assets/ 是规范描述的可选目录;evals/ 是官方评测指南采用的工作结构,不应误称为必需格式字段。

如何决定放在哪里

  • 每次激活都必须知道的步骤、边界和关键 gotchas 放 SKILL.md。
  • 只在某个错误或子任务出现时需要的长说明放 references/,并在 SKILL.md 明确“何时读哪一篇”。
  • 重复计算、格式转换或确定性校验放 scripts/,避免模型每次重新发明代码。
  • 长模板、示例素材和静态 schema 放 assets/。

文件引用使用相对 Skill 根目录的路径,并尽量保持一层引用深度。深层“文档再链接文档”会让 agent 不知道何时继续加载,也增加遗漏风险。

规范与 client 的边界

问题开放格式规定具体 client 决定
必需文件SKILL.md去哪些目录发现它
核心 metadataname、description如何匹配和展示
指令与资源Markdown body、可选目录用什么工具读取/执行
权限allowed-tools 是实验字段;compatibility 只能描述环境要求是否支持、如何向用户确认、身份与 scope 如何验证
触发description 是关键发现信息实际模型与 harness 的匹配行为

常见误区

  • 把任何长文档都叫 Skill:没有明确任务、触发和可执行流程,价值有限。
  • 把产品专属安装命令写成开放规范:应标记 client 名称与版本/获取日期。
  • 把所有知识塞进 SKILL.md:激活后全量进入上下文,反而干扰执行。
  • 目录很多但 SKILL.md 不说明何时读取:资源存在不等于 agent 会正确使用,更不等于资源内容可信。
  • 把 Skill 当作授权:它可影响选择工具的上下文,却不能证明用户同意、令牌 scope 正确或动作已获审批。

练习与自测

  1. 为“审查本仓库 Python CLI”设计目录,只写文件名和每项用途,并说明这个能力为何足够内聚。
  2. 判断 API 错误码长表、每次必做的安全检查、输出报告模板、确定性 schema 验证器各放哪里。
  3. 自测:evals/ 是规范必需目录吗?不是;它是官方评测指南推荐的实践结构。

下一步

学习 SKILL.md 前置元数据与渐进式披露。

参考资料