SkillPkg Logo

什么是 Skills

Ironben/

Agent Skills 是一种用来给智能体(agents)提供新能力和专业知识的开放格式。本质上是:把指令、脚本和资源整理成“技能文件夹”,让智能体在需要时按需加载。

为什么需要 Agent Skills?

Agents 的能力越来越强,但在真实场景中经常缺少可靠执行任务所必需的上下文。Skills 通过提供可按需加载的流程知识以及公司、团队和个人的专属背景信息来解决这个问题。

有了 Skills,智能体可以根据当前任务动态扩展自己的能力。

  • 对技能作者来说:只需构建一次能力,就能在多个智能体产品中复用。
  • 对兼容的智能体来说:支持 Skills 之后,终端用户可以“开箱即用”地为智能体增加新能力。
  • 对团队和企业来说:可以把组织知识沉淀成可移植、可版本控制的包。

Agent Skills 能实现什么?

  • 领域专业知识:把专门领域的知识打包成可复用的指令,比如法务审查流程、数据分析流水线等。
  • 全新能力:为智能体新增能力(例如制作演示文稿、构建 MCP 服务器、分析数据集)。
  • 可重复的工作流:把多步骤任务变成标准化、可审计的工作流程。
  • 互操作性:在不同支持 Skills 的智能体产品之间复用同一套技能。

技能如何工作

一个技能就是一个包含 SKILL.md 文件的文件夹。这个文件至少包含元数据(name 和 description),以及指导代理如何执行某个具体任务的说明。

示例结构

1my-skill/
2├── SKILL.md # 必需:说明 + 元数据
3├── scripts/ # 可选:可执行代码
4├── references/ # 可选:文档与参考
5└── assets/ # 可选:模板与资源

技能使用“逐步披露”(progressive disclosure)来高效管理上下文:

  1. 发现(Discovery):启动时,代理只加载每个可用技能的名称与描述,刚好足够判断何时可能相关。
  2. 激活(Activation):当任务与技能的描述匹配时,代理将把完整的 SKILL.md 说明读入上下文。
  3. 执行(Execution):代理按照说明进行操作,并可按需加载引用文件或执行捆绑的代码。

这种方式让代理保持快速,同时在需要时获取更丰富的上下文。

SKILL.md 文件

每个技能都以一个包含 YAML 头信息和 Markdown 说明的 SKILL.md 文件开始:

示例

1---
2name: pdf-processing
3description: 从 PDF 文件中提取文本和表格、填写表单、合并文档。
4---
5
6# PDF 处理
7
8## 何时使用此技能
9当用户需要处理 PDF 文件时使用该技能……
10
11## 如何提取文本
121. 使用 pdfplumber 进行文本提取……
13
14## 如何填写表单
15...

这种简单格式的关键优势:

  • 自我文档化:技能作者或用户可以直接阅读 SKILL.md 来理解其功能,便于审计与改进。
  • 可扩展:技能可以从纯文本说明扩展到包含可执行代码、资源与模板的复杂形态。
  • 可移植:技能就是文件,易于编辑、版本化与分享。

规范说明

目录结构

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

1skill-name/
2└── SKILL.md # 必需

你可以按需添加其他目录(如 scripts/references/assets/)来支持技能。

SKILL.md 格式

SKILL.md 文件必须包含 YAML 前置头信息(frontmatter),后接 Markdown 正文内容。

前置头信息(必需)

1---
2name: skill-name
3description: 该技能的作用以及何时使用的描述。
4---

可选字段示例:

1---
2name: pdf-processing
3description: 从 PDF 文件中提取文本与表格、填写表单、合并文档。
4license: Apache-2.0
5metadata:
6 author: example-org
7 version: "1.0"
8---

字段说明:

  • name(必需):最多 64 个字符。仅允许小写字母、数字和连字符。不得以连字符开头或结尾。
  • description(必需):最多 1024 个字符。非空。描述技能的作用与使用场景。
  • license(可选):许可证名称或指向随附许可证文件的引用。
  • compatibility(可选):最多 500 个字符。指明环境要求(目标产品、系统软件包、网络访问等)。
  • metadata(可选):用于附加元数据的键值映射。
  • allowed-tools(可选):技能可使用的预先批准工具的用空格分隔列表(实验性)。

name 字段

必需的 name 字段要求:

  • 长度为 1–64 个字符
  • 仅包含 Unicode 小写字母数字与连字符(a-z 与 -)
  • 不得以连字符开头或结尾
  • 不得包含连续连字符(–)
  • 必须与父目录名称一致

有效示例:

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

无效示例:

  • name: PDF-Processing , 不允许大写
  • name: -pdf , 不得以连字符开头
  • name: pdf--processing , 不允许连续连字符

description 字段

必需的 description 字段要求:

  • 长度为 1–1024 个字符
  • 应同时描述技能做什么、何时使用
  • 建议包含有助于代理识别相关任务的关键词

良好示例:

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

较差示例:

1description: 帮助处理 PDF。

license 字段

可选的 license 字段:

  • 指定应用于技能的许可证
  • 建议保持简短(许可证名称或随附许可证文件名)

示例:

1license: Proprietary. LICENSE.txt has complete terms

compatibility 字段

可选的 compatibility 字段:1

  • 若提供,长度为 1–500 个字符
  • 仅在技能有特定环境要求时包含
  • 可指明目标产品、需要的系统软件包、网络访问等

示例:

1compatibility: Designed for Claude Code (or similar products)
1compatibility: Requires git, docker, jq, and access to the internet

大多数技能无需 compatibility 字段。

metadata 字段

可选的 metadata 字段:

  • 符串键到字符串值的映射
  • 客户端可用来存储规范未定义的附加属性
  • 建议使键名足够独特以避免冲突

示例:

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

allowed-tools 字段

可选的 allowed-tools 字段:

  • 以空格分隔的可预先批准运行的工具列表
  • 实验性。不同代理实现的支持情况可能不同

示例:

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

正文内容

frontmatter 之后的 Markdown 正文包含技能说明。没有格式限制。写下能帮助代理有效完成任务的内容。建议包含:

  • 步骤式操作指南
  • 输入与输出示例
  • 常见边界情况

注意:当技能被激活后,代理会加载整个文件。对于较长的内容,建议拆分到引用文件中。

可选目录

scripts/

包含可供代理运行的可执行代码。脚本应当:

  • 自包含或清楚记录依赖
  • 包含有用的错误信息
  • 能够优雅处理边界情况

支持语言取决于代理实现,常见选项包括 Python、Bash、JavaScript。

references/

包含代理在需要时可阅读的额外文档:

  • REFERENCE.md—— 详细技术参考
  • FORMS.md —— 表单模板或结构化数据格式
  • 领域特定文件(如 finance.md]、legal.md 等)

保持单个参考文件聚焦。代理按需加载,文件更小意味着更少的上下文占用。

assets/

包含静态资源:

  • 模板(文档模板、配置模板)
  • 图片(图示、示例)
  • 数据文件(查找表、模式)

渐进披露(Progressive disclosure)

技能应围绕高效使用上下文来组织:

  1. 元数据(约 100 tokens):所有技能在启动时加载 name 与 description
  2. 说明(建议 < 5000 tokens):当技能被激活时加载完整 SKILL.md 正文
  3. 资源(按需):仅在需要时加载文件(如 `scripts/`、`references/`、`assets/` 中的内容)

建议将主 SKILL.md 控制在 500 行以内。详细的参考材料移动到独立文件。

文件引用

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

1参见详细参考指南:
2references/REFERENCE.md
3
4运行提取脚本:
5scripts/extract.py

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

校验

使用 skills-ref 库来校验你的技能:

1skills-ref validate ./my-skill

该命令会检查 SKILL.md 的前置头信息是否有效,并是否遵循所有命名约定。

什么是 Agent Skills?用 SKILL.md 为 AI 智能体扩展能力与工作流的完整指南 | 技能包 SkillPkg