Skill 从入门到精通——第二章 Skills 规范详解
本文详细介绍 Agent Skills(智能体技能)完整格式规范;并使用官方skills-ref工具验证,确保符合规范。
1. 目录结构规范
一个独立技能对应一个目录,必须包含 SKILL.md,其余为可选扩展目录。
标准的 Skill 目录结构如下:
1
2
3
4
5
6
7
8
9
10
|
skill-name/
├── SKILL.md # 必需:技能元数据 + 执行逻辑指令
├── scripts/ # 可选:可执行脚本、代码片段
│ ├── validate.py # 输入验证脚本
│ └── generate.py # 代码/文档生成脚本
├── references/ # 可选:参考文档、领域知识、说明文档
│ ├── api-guide.md # 示例:API指南
│ └── examples/ # 示例:使用案例目录
├── assets/ # 可选:模板、图片、配置文件、静态资源
└── ... # 其他自定义文件/目录
|
必需 vs 可选文件:
| 文件/目录 |
必需 |
说明 |
SKILL.md |
✅ |
核心文件,包含元数据和主指令 |
scripts/ |
❌ |
可执行脚本、代码片段 |
references/ |
❌ |
各类参考资源,领域知识、说明文档,按需加载 |
| assets/ |
❌ |
可选:模板、图片、配置文件、静态资源 |
2. SKILL.md 文件格式
SKILL.md 文件必须包含 YAML Frontmatter (YAML 前置元信息),其后紧跟 Markdown 正文内容:
- 顶部为 YAML 元数据,用
--- 包裹
- 下方为 Markdown 格式的执行指令
2.1 前置元数据(Frontmatter)
SKILL.md 的 YAML Frontmatter 包含以下字段:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
---
# ===== 必需字段 =====
name: skill-identifier # 唯一标识(kebab-case)
description: "明确功能、触发条件和排除场景" # 关键!决定触发准确率
# ===== 推荐字段 =====
license: MIT # 开源协议名称或许可证文件路径
compatibility: # 兼容平台声明
- claude.ai # Web 界面
- claude-code # 终端工具
# ===== 可选字段 =====
allowed-tools: # 能力边界控制
- read
- write
- bash
metadata:
url: example.org
author: example-org
version: "1.0"
---
|
字段详解:
| 字段 |
必需 |
说明 |
示例 |
name |
✅ |
技能名称,唯一标识(kebab-case),1–64 字符;仅小写字母、数字、连字符;不可首尾连字符;不可连续 --;必须与目录名一致 |
api-doc-generator |
description |
✅ |
描述,1–1024 字符;非空;需清晰描述功能与适用场景,智能体根据该描述判断是否使用该技能。 |
"Generates API docs..." |
license |
❌ |
开源协议名称或许可证文件路径 |
MIT |
compatibility |
❌ |
1–500 字符;说明环境要求(目标产品、依赖包、系统、网络访问等) |
需要安装 git、docker、jq;及具备网络访问 |
allowed-tools |
❌ |
允许使用的工具,空格分隔;实验性字段,平台支持程度不一 |
[read, write] |
metadata |
❌ |
自定义键值对,用于作者、版本、标签等扩展信息 |
url: example-org |
以上六个字段为 Agent Skills 官方规范 定义的标准字段,可通过官方验证工具 skills-ref 直接校验通过。
部分支持技能的智能体还支持 tags、version、author、agent 等扩展字段,建议统一收纳在 metadata 中配置,以保证规范兼容性。
2.2 字段详细规则
2.2.1 name(技能唯一标识)
必填的 name 字段需满足:
- 长度为 1-64 个字符
- 仅可包含 Unicode 小写字母(
a-z)和连字符(-)
- 不能以连字符(
-)开头或结尾
- 不能包含连续的连字符(
--)
- 必须与上级目录名称完全一致
有效示例:
1
2
3
|
name: pdf-processing
name: data-analysis
name: code-review
|
无效示例:
1
2
3
|
name: PDF-Processing # 大写字母不允许
name: -pdf # 不能以连字符开头
name: pdf--processing # 连续连字符非法
|
2.2.2 description(技能描述)
description 为必填字段,需满足:
- 长度为 1-1024 个字符
- 需同时描述技能的功能和使用场景,最佳实践为:功能 + 触发场景 + 关键词
- 智能体将依据该描述判断是否启用当前技能,因此描述应具体、明确,避免模糊笼统
优秀示例:
1
2
|
# ✅ 好的描述 - 具体、包含触发条件和排除场景
description: "从 PDF 提取文本与表格、填写表单、合并多页 PDF。适用于用户需要处理 PDF、文档解析、表单填写等场景。"
|
不佳示例:
1
2
|
# ❌ 差的描述 - 模糊、缺乏具体触发条件
description: "处理 PDF 相关事宜"
|
2.2.3 license(许可证)
license 为可选字段,需满足:
- 用于指定该技能适用的许可证
- 建议保持简洁(可填写许可证名称,或打包的许可证文件名)
示例:
1
|
license: 专有许可证。完整条款见 LICENSE.txt 文件
|
2.2.4 compatibility(环境兼容说明)
compatibility 为可选字段,需满足:
- 若提供,长度需为 1-500 个字符
- 仅当技能有特定环境要求时才需要填写,普通工具类技能可省略。
- 可说明目标产品、所需系统包、网络访问需求等
示例:
1
2
|
compatibility: 适用于 Claude Code(或同类产品)
compatibility: 需要安装 git、docker、jq,且需具备互联网访问权限
|
注:大多数技能无需填写 compatibility 字段。
metadata 为可选字段,自由键值对,用于配置扩展信息。
需满足:
- 由字符串键映射到字符串值的字典
- 客户端可用于存储 Agent Skills 规范未定义的额外属性
- 建议键名具备一定唯一性,避免意外冲突
Example:
1
2
3
4
|
metadata:
url: example.org
author: example-org
version: "1.0"
|
空格分隔,声明该技能允许调用的内置 / 外部工具。
allowed-tools 为可选字段:
- 以空格分隔的预授权工具列表,这些工具允许被该技能调用。
- 属于实验性字段,不同智能体实现对该字段的支持程度可能不同。
示例:
1
|
allowed-tools: Bash(git:*) Bash(jq:*) Read Write
|
2.3 完整配置示例
最简合法示例:
1
2
3
4
|
---
name: pdf-processing
description: 用于 PDF 文本提取、表单填写与文档合并。
---
|
完整示例:
1
2
3
4
5
6
7
8
9
10
|
---
name: pdf-processing
description: 从 PDF 文件中提取文本、表格,填写表单并合并文档。适用于用户上传 PDF、需要解析或编辑 PDF 的场景。
version: "1.0"
license: Apache-2.0
compatibility: 需要 Python 及 PyPDF2 环境
metadata:
url: example-org
allowed-tools: Bash Python Read Write
---
|
3. Markdown 正文(执行指令)
前置元数据之后,使用 Markdown 格式编写技能的具体执行指令,无格式限制。你可以编写任何有助于智能体高效完成任务的内容,但建议结构清晰。
推荐结构:
提示:智能体在决定激活某技能时,才会加载完整 SKILL.md。若文件内容较长,建议将部分内容拆分到 references/ 或 scripts/等附件文件中,避免占用过多上下文 Token。
推荐结构
适配以下模板编写技能,将方括号中的内容替换为你的具体信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
---
name: your-skill
description: [你的技能描述]
---
## overview
[简要说明本技能的核心作用、适用场景与预期效果]
## 执行步骤
1. [步骤1:输入解析与校验]
[...可写明脚本执行命令]
2. [步骤2:核心逻辑执行与资源调用]
3. [步骤3:结果加工与格式整理]
4. [步骤4:输出返回与状态记录]
## 输入输出示例
### 输入格式
[示例输入内容或结构]
### 输出格式
[示例输出内容或结构]
## 边缘情况处理
- 情况1:[输入缺失/格式错误] → 处理方案:[具体应对逻辑]
- 情况2:[调用失败/超时无返回] → 处理方案:[具体应对逻辑]
- 情况3:[结果为空/不符合预期] → 处理方案:[具体应对逻辑]
## 约束与注意事项
[执行限制、权限要求、安全规则、禁用行为等]
## 预期输出结果
Expected output:[描述成功执行后的结果]
|
一个简单的标准SKILL.md示例如下:

4. 添加附件资源
当技能说明内容较多、或仅适用于特定场景时,不建议全部写在单个 Skill.md 中,可在技能目录下新增文件进行拆分。例如可创建 REFERENCE.md 存放补充说明与参考信息,并在 Skill.md 中进行引用,便于智能体在执行技能时自行判断读取,实现按需加载,减少不必要的上下文占用。
技能目录用于组织代码、文档与资源,通常包含以下目录:
references/
references/目录用于存放智能体执行任务时可查阅的补充参考资料,如技术文档、白皮书、行业规范等领域知识,实现内容拆分与按需加载。
其它常见目录还包括:
templates/:存放代码、文案、报告等标准化模板,确保输出格式统一。
schemas/:数据结构定义,存放 JSON Schema 等格式校验文件,用于格式校验与解析。
assets/:存放静态资源,包含图片、配置文件、多媒体素材等。
examples/:存放输入输出示例、典型场景与最佳实践,辅助模型理解执行逻辑。
建议每个参考文件只聚焦单一主题,保持内容精简。智能体将按需加载这些文件,文件越小,占用的上下文 Token 越少。
scripts/
``scripts/`目录用于存放智能体可直接调用执行的脚本与代码文件。
建议遵循以下规范:
- 尽量做到自包含,如需外部依赖需明确声明;
- 提供清晰、友好的错误提示与返回信息;
- 对边界场景、异常输入具备稳健处理能力。
支持的语言由运行智能体的环境决定,常见包括 Python、Bash、JavaScript 等。
在 SKILL.md 中列出所有可用脚本,让智能体知晓其存在。请使用相对于技能目录根路径的相对路径来引用文件。智能体会自动解析这些路径 —— 无需使用绝对路径。
SKILL.md 引用脚本示例:
1
2
3
4
|
## 可用脚本
- **`scripts/validate.sh`** — 校验配置文件
- **`scripts/process.py`** — 处理输入数据
|
随后指导智能体运行这些脚本。
5. 文件引用
在技能内部需要引用它文件时,必须在 SKILL.md 中明确声明引用关系,且统一使用相对于当前技能根目录的相对路径,禁止使用绝对路径或外部 URL。
示例(在 SKILL.md 中):
1
2
3
4
5
|
详情请参阅[参考指南](references/REFERENCE.md)。
运行提取脚本:
```bash
python scripts/extract.py
|
如在anthropic 官方pdf技能中,引用reference.md及forms.md。将表单填写说明移至独立文件 forms.md,可以让技能核心保持精简,同时 智能体只会在填写表单时读取 forms.md。

建议引用路径保持扁平,尽量控制在 SKILL.md 下一级目录,避免深层嵌套与复杂引用链。
6. 核心设计原则
(一)、渐进式披露
为优化上下文 Token 使用效率,Agent Skills 采用采用三级分层加载、渐进式披露机制:
-
元数据层(启动加载)
智能体启动时,仅加载所有技能的 name(技能名称)和 description(技能描述)至系统提示,大小控制在约 100 Token。该层仅用于智能体快速判断技能适用场景,无需加载技能全部内容,大幅降低初始上下文占用。
-
执行指令层(SKILL.md 正文,激活加载)
技能被选中激活时,才加载完整 SKILL.md 正文。建议正文控制在 5000 Token 以内、行数不超过 500 行。
-
资源文件层(按需加载)
scripts/、references/、assets/ 等附件文件仅在实际需要时加载,不占用初始上下文。
原则:将技能核心执行逻辑、关键操作指令放在 SKILL.md正文;详细说明、参考资料、辅助脚本等非核心内容,需拆分至独立附件文件,通过“按需加载”机制调用。该模式可最大限度减少 Token 消耗,同时保留专业的领域能力。
(二)、可组合性
智能体支持同时加载多个技能,因此开发的技能应能与其它技能兼容协作,而非假设自身是唯一可用的功能。
(三)、可移植性
技能需具备良好的可移植性,实现“一次创建、多平台复用”:单个 Skill 创建完成后,可直接应用于所有支持 Skill 机制的智能体及相关平台,无需额外修改核心代码,仅需保证目标运行环境支持该技能所需的依赖项(如脚本运行环境、工具依赖等)即可。
7. 验证
可使用Agent Skills 官方提供的 skills-ref 工具对技能目录进行规范校验:
1
|
skills-ref validate ./my-skill
|
校验内容包括:
SKILL.md 中 Frontmatter 语法与必填字段完整性;
name 字段命名规范、长度与格式约束;
- 技能目录名与
name 字段一致性检查;
- 整体结构是否符合 Agent Skills 规范要求。
1
|
官方说明:该工具仅用于个人验证,不建议生产环境使用,协议 Apache 2.0。
|
7.1 安装skills-ref 工具
步骤一、环境准备
- 已安装 Python 3.8+
- 可选:安装 uv(更快的包管理器,
pip install uv)
- 终端:macOS/Linux 用终端;Windows 用 PowerShell 或 CMD
步骤二、获取代码
1
2
|
git clone https://github.com/agentskills/agentskills.git
cd agentskills/skills-ref
|
步骤三、分系统安装(pip /uv 二选一)
1. macOS / Linux 系统
方式 A:pip 安装
1
2
3
4
5
6
7
8
|
# 创建 Python 虚拟环境,目录名为 .venv
python -m venv .venv
# 激活虚拟环境(macOS/Linux 专用命令)
source .venv/bin/activate
# 以可编辑模式安装当前项目(skills-ref)及其依赖
pip install -e .
|
方式 B:uv 安装(更快)
1
2
3
4
5
|
# 使用 uv 快速创建虚拟环境并安装所有依赖
uv sync
# 激活虚拟环境
source .venv/bin/activate
|
2. Windows 系统
方式 A:pip 安装
PowerShell
1
2
3
4
5
6
7
8
|
# 创建虚拟环境
python -m venv .venv
# 在 PowerShell 中激活虚拟环境
.venv\Scripts\Activate.ps1
# 安装项目依赖
pip install -e .
|
若提示脚本禁止:
1
2
|
# 为当前用户允许运行本地脚本,解决 PowerShell 执行策略限制
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
|
Command Prompt (CMD)
1
2
3
4
5
6
7
8
|
# 创建虚拟环境
python -m venv .venv
# 在 CMD 中激活虚拟环境
.venv\Scripts\activate.bat
# 安装项目依赖
pip install -e .
|
方式 B:uv 安装(Windows)
powershell
1
2
3
4
5
|
# uv 一键创建环境+安装依赖
uv sync
# 激活虚拟环境
.venv\Scripts\Activate.ps1
|
步骤四、验证安装成功
激活虚拟环境后执行:
1
2
|
# 查看 skills-ref 命令帮助,检查是否安装成功
skills-ref --help
|
出现命令说明即安装完成。
window 10 环境显示如下:

步骤五、核心用法(CLI + Python API)
CLI 命令(命令行方式)
1
2
3
4
5
6
7
8
|
# 验证技能
skills-ref validate path/to/skill
# 读取技能元数据(输出 JSON)
skills-ref read-properties path/to/skill
# 为 Agent 提示词生成 <available_skills> 格式 XML
skills-ref to-prompt path/to/skill-a path/to/skill-b
|
Python API
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# 导入路径处理工具
from pathlib import Path
from skills_ref import validate, read_properties, to_prompt
# 验证技能目录是否合法(检查格式、缺失字段等)
# my-skill 是你的技能文件夹路径,可自行修改
problems = validate(Path("my-skill"))
if problems:
print("Validation errors:", problems)
# 读取技能的元信息(名称、描述、参数等)
props = read_properties(Path("my-skill"))
print(f"Skill: {props.name} - {props.description}")
# 为多个技能生成可直接给 AI 使用的提示词
# 支持传入多个技能路径:skill-a、skill-b 可替换成真实路径
prompt = to_prompt([Path("skill-a"), Path("skill-b")])
print(prompt)
|
7.2 使用 skills-ref 工具验证
这里我们使用Anthropic 官方公布的brand-guidelines skill 来验证测试:
新建brand-guidelines目录,在该目录下新建SKILL.md文件, 内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
---
name: brand-guidelines
description: Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
license: Complete terms in LICENSE.txt
---
# Anthropic Brand Styling
## Overview
To access Anthropic's official brand identity and style resources, use this skill.
**Keywords**: branding, corporate identity, visual identity, post-processing, styling, brand colors, typography, Anthropic brand, visual formatting, visual design
## Brand Guidelines
### Colors
**Main Colors:**
- Dark: `#141413` - Primary text and dark backgrounds
- Light: `#faf9f5` - Light backgrounds and text on dark
- Mid Gray: `#b0aea5` - Secondary elements
- Light Gray: `#e8e6dc` - Subtle backgrounds
**Accent Colors:**
- Orange: `#d97757` - Primary accent
- Blue: `#6a9bcc` - Secondary accent
- Green: `#788c5d` - Tertiary accent
### Typography
- **Headings**: Poppins (with Arial fallback)
- **Body Text**: Lora (with Georgia fallback)
- **Note**: Fonts should be pre-installed in your environment for best results
## Features
### Smart Font Application
- Applies Poppins font to headings (24pt and larger)
- Applies Lora font to body text
- Automatically falls back to Arial/Georgia if custom fonts unavailable
- Preserves readability across all systems
### Text Styling
- Headings (24pt+): Poppins font
- Body text: Lora font
- Smart color selection based on background
- Preserves text hierarchy and formatting
### Shape and Accent Colors
- Non-text shapes use accent colors
- Cycles through orange, blue, and green accents
- Maintains visual interest while staying on-brand
## Technical Details
### Font Management
- Uses system-installed Poppins and Lora fonts when available
- Provides automatic fallback to Arial (headings) and Georgia (body)
- No font installation required - works with existing system fonts
- For best results, pre-install Poppins and Lora fonts in your environment
### Color Application
- Uses RGB color values for precise brand matching
- Applied via python-pptx's RGBColor class
- Maintains color fidelity across different systems
|
在brand-guidelines同级目录中,开启命令行窗口,执行命令:
1
2
|
# 验证技能是否符合格式规范
skills-ref validate brand-guidelines/SKILL.md
|

当格式不符合规范时(如元数据中额外添加的tags字段,但这在有些智能体是支持的):

1
2
|
# 读取技能元数据(输出 JSON)
skills-ref read-properties brand-guidelines/SKILL.md
|

1
2
|
# 为 Agent 提示词生成 <available_skills> 格式 XML
skills-ref to-prompt brand-guidelines/SKILL.md
|

总结
- 一个标准 Agent Skill 表现为一个目录,核心是必须包含规范的
SKILL.md,其中 name 和 description 为必填元数据且格式严格约束。
- 技能采用渐进式加载设计,通过拆分代码、文档、资源到对应目录,实现上下文高效利用。
- 开发完成后可使用
skills-ref validate 进行格式校验,确保技能符合规范、可被平台正常识别与加载。
补充学习资源
如您想要系统建立 AI Agent 全栈开发能力,从概念认知到企业级项目落地、线上迭代优化,可以参考《栖微 AI Agent 工程师实战成长营》专栏。专栏以六阶成长路径组织内容,配套实战源码与持续更新的前沿案例,补齐 Demo 到生产环境之间的工程化短板。
更多介绍:《栖微 AI Agent 工程师实战成长营》
Github 项目 :https://github.com/tinyseeking/tidy-agent-practice
欢迎大家一起探讨智能体开发相关问题。