Featured image of post Skill 从入门到精通——第二章 Skills 规范详解

Skill 从入门到精通——第二章 Skills 规范详解

本文详细介绍 Agent Skills(智能体技能)完整格式规范;并使用官方`skills-ref`工具验证,确保符合规范。

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 直接校验通过。

部分支持技能的智能体还支持 tagsversionauthoragent 等扩展字段,建议统一收纳在 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 字段。


2.2.5 metadata(扩展元数据)

metadata 为可选字段,自由键值对,用于配置扩展信息。

需满足:

  • 由字符串键映射到字符串值的字典
  • 客户端可用于存储 Agent Skills 规范未定义的额外属性
  • 建议键名具备一定唯一性,避免意外冲突

Example:

1
2
3
4
metadata:
  url: example.org
  author: example-org
  version: "1.0"

2.2.6 allowed-tools(允许调用的工具,实验性)

空格分隔,声明该技能允许调用的内置 / 外部工具。

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示例如下:

image-20260414065402554

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.mdforms.md。将表单填写说明移至独立文件 forms.md,可以让技能核心保持精简,同时 智能体只会在填写表单时读取 forms.md

image-20260415220635000

建议引用路径保持扁平,尽量控制在 SKILL.md 下一级目录,避免深层嵌套与复杂引用链。


6. 核心设计原则

(一)、渐进式披露

为优化上下文 Token 使用效率,Agent Skills 采用采用三级分层加载、渐进式披露机制:

  1. 元数据层(启动加载)

    智能体启动时,仅加载所有技能的 name(技能名称)和 description(技能描述)至系统提示,大小控制在约 100 Token。该层仅用于智能体快速判断技能适用场景,无需加载技能全部内容,大幅降低初始上下文占用。

  2. 执行指令层(SKILL.md 正文,激活加载)

    技能被选中激活时,才加载完整 SKILL.md 正文。建议正文控制在 5000 Token 以内、行数不超过 500 行。

  3. 资源文件层(按需加载)

    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 环境显示如下: image-20260416095749180

步骤五、核心用法(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

image-20260416111055012

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

image-20260416111003199

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

image-20260416110702192

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

image-20260416110732056

总结

  1. 一个标准 Agent Skill 表现为一个目录,核心是必须包含规范的 SKILL.md,其中 namedescription 为必填元数据且格式严格约束。
  2. 技能采用渐进式加载设计,通过拆分代码、文档、资源到对应目录,实现上下文高效利用。
  3. 开发完成后可使用 skills-ref validate 进行格式校验,确保技能符合规范、可被平台正常识别与加载。

补充学习资源

如您想要系统建立 AI Agent 全栈开发能力,从概念认知到企业级项目落地、线上迭代优化,可以参考《栖微 AI Agent 工程师实战成长营》专栏。专栏以六阶成长路径组织内容,配套实战源码与持续更新的前沿案例,补齐 Demo 到生产环境之间的工程化短板。

更多介绍:《栖微 AI Agent 工程师实战成长营》

Github 项目 :https://github.com/tinyseeking/tidy-agent-practice

欢迎大家一起探讨智能体开发相关问题。

Licensed under CC BY-NC-SA 4.0