数据截至 (上游 commit 69ef37e9424c)
第 1 章 · SKILL.md 格式规范
本章讲清楚 skill 文件到底长什么样:目录结构、frontmatter 的 6 个字段及各自约束、正文怎么写、以及把这一切串起来的“渐进式披露三层”。读完你能手写一个合规的
SKILL.md,也能看懂校验器在卡什么。来源:docs/specification.mdx。
1.1 目录结构:一个文件夹 + 一个必需文件
skill 的最小单位是一个目录,里面至少有一个 SKILL.md(docs/specification.mdx:8-17):
skill-name/
├── SKILL.md # 必需:元数据 + 指令
├── scripts/ # 可选:可执行代码
├── references/ # 可选:参考文档
├── assets/ # 可选:模板、资源
└── ... # 任意其他文件/目录
三个可选目录各有分工(docs/specification.mdx:187-214):
| 目录 | 放什么 | 何时被加载 |
|---|---|---|
scripts/ | 可执行代码(Python / Bash / JS),agent 直接跑 | 正文指示运行时 |
references/ | 按需读的文档(REFERENCE.md、finance.md…) | 正文指示阅读时 |
assets/ | 静态资源:模板、图片、数据表、schema | 用到时 |
规范强调:引用文件保持“离 SKILL.md 一层深”,别搞深层嵌套引用链(docs/specification.mdx:237)。
1.2 SKILL.md 两段式:frontmatter + 正文
一个 SKILL.md 由两部分组成(docs/specification.mdx:21):
- YAML frontmatter——夹在两道
---之间的元数据; - Markdown 正文——闭合
---之后的全部 内容,就是给 agent 的指令。
最小例子只需两个必填字段(docs/specification.mdx:37-42):
---
name: skill-name
description: A description of what this skill does and when to use it.
---
1.3 frontmatter 的 6 个字段
规范定义了 6 个字段,只有 name、description 必填(docs/specification.mdx:25-32):
| 字段 | 必填 | 约束 |
|---|---|---|
name | 是 | ≤64 字符;小写字母 / 数字 / 连字符;不得以 - 开头或结尾 |
description | 是 | ≤1024 字符;非空;说明“做什么 + 何时用” |
license | 否 | 许可证名,或指向打包进来的许可证文件 |
compatibility | 否 | ≤500 字符;声明环境要求(目标产品、系统包、网络等) |
metadata | 否 | 任意 key-value 映射(string→string),放规范没定义的额外属性 |
allowed-tools | 否 | 空格分隔的预批准工具串(实验性) |
下面逐个看关键约束(也是校验器真正在卡的点,见第 2 章)。
name:不只是“小写带横线”
规范列出的规则比表格更细(docs/specification.mdx:58-66):
- 长度 1–64;
- 只能含 unicode 小写字母、数字、连字符;
- 不能以
-开头或结尾;