本文档定义了 Agent Skills 格式。

目录结构

技能是一个至少包含 SKILL.md 文件的目录:

skill-name/
└── SKILL.md          # 必需
您可以选择性地包含[其他目录](#可选目录),如 `scripts/`、`references/` 和 `assets/` 来支持您的技能。

SKILL.md 格式

SKILL.md 文件必须包含 YAML frontmatter,后跟 Markdown 内容。

Frontmatter(必需)

---
name: skill-name
description: 描述此技能的作用以及何时使用它。
---

可选字段:

---
name: pdf-processing
description:  PDF 文件中提取文本和表格,填写表单,合并文档。
license: Apache-2.0
metadata:
  author: example-org
  version: "1.0"
---
字段必需约束
name最多 64 个字符。仅小写字母、数字和连字符。不能以连字符开头或结尾。
description最多 1024 个字符。非空。描述技能的作用以及何时使用它。
license许可证名称或对捆绑许可证文件的引用。
compatibility最多 500 个字符。指示环境要求(目标产品、系统包、网络访问等)。
metadata用于附加元数据的任意键值映射。
allowed-tools技能可以使用的预批准工具的空格分隔列表。(实验性)

name 字段

必需的 name 字段:

有效示例:

name: pdf-processing
name: data-analysis
name: code-review

无效示例:

name: PDF-Processing  # 不允许大写
name: -pdf  # 不能以连字符开头
name: pdf--processing  # 不允许连续连字符

description 字段

必需的 description 字段:

好的示例:

description:  PDF 文件中提取文本和表格,填写 PDF 表单,并合并多个 PDF。在处理 PDF 文档或用户提到 PDF、表单或文档提取时使用。

不好的示例:

description: 帮助处理 PDF。

license 字段

可选的 license 字段:

示例:

license: 专有。LICENSE.txt 包含完整条款

compatibility 字段

可选的 compatibility 字段:

示例:

compatibility: 专为 Claude Code(或类似产品)设计
compatibility: 需要 git、docker、jq 和互联网访问
大多数技能不需要 `compatibility` 字段。

metadata 字段

可选的 metadata 字段:

示例:

metadata:
  author: example-org
  version: "1.0"

allowed-tools 字段

可选的 allowed-tools 字段:

示例:

allowed-tools: Bash(git:*) Bash(jq:*) Read

正文内容

frontmatter 之后的 Markdown 正文包含技能指令。没有格式限制。编写任何有助于智能体有效执行任务的内容。

推荐部分:

请注意,智能体在决定激活技能后将加载整个文件。考虑将较长的 SKILL.md 内容拆分为引用的文件。

可选目录

scripts/

包含智能体可以运行的可执行代码。脚本应该:

支持的语言取决于智能体实现。常见选项包括 Python、Bash 和 JavaScript。

references/

包含智能体在需要时可以阅读的其他文档:

保持单个参考文件专注。智能体按需加载这些文件,因此较小的文件意味着使用更少的上下文。

assets/

包含静态资源:

渐进式披露

技能应该为高效使用上下文而构建:

  1. 元数据(约 100 个 token):namedescription 字段在启动时为所有技能加载
  2. 指令(建议 < 5000 个 token):激活技能时加载完整的 SKILL.md 正文
  3. 资源(根据需要):仅在需要时加载文件(例如 scripts/references/assets/ 中的文件)

保持您的主 SKILL.md 少于 500 行。将详细的参考材料移动到单独的文件。

文件引用

在技能中引用其他文件时,使用从技能根目录的相对路径:

有关详细信息,请参阅[参考指南](references/REFERENCE.md)。

运行提取脚本:
scripts/extract.py

保持文件引用从 SKILL.md 一级深度。避免深度嵌套的引用链。

验证

使用 skills-ref 参考库来验证您的技能:

skills-ref validate ./my-skill

这将检查您的 SKILL.md frontmatter 是否有效并遵循所有命名约定。