04Agent Skills

alex
6
2026-01-08

一、Skills 是什么:从概念来源到运作原理

2025 年 10 月中旬,Anthropic 正式发布 Claude Skills。

两个月后,Agent Skills 作为开放标准被进一步发布,意在引导一个新的 AI Agent 开发生态。

Agent Skills 就像一份“带目录的说明书”当然为了更好的理解,你可以把 Skills 理解为“通用 Agent 的扩展包” 。更专业地说,它是一种渐进式披露的提示词管理机制

换句话来说Agent Skills 本质上是一个模块化的 Markdown 文件,能教会 AI 工具 (如 Claude、GitHub Copilot、Cursor 等) 执行特定任务,且支持自动触发、团队共享与工程化管理,彻底告别重复的提示词输入。

由于Agent 可通过加载不同的 Skills 包,使其来具备不同的专业知识、工具使用能力,能够稳定完成特定任务。

skills3.png

普遍直接认为是:行为规范 + 专业知识 + 使用时机的组合

二、Agent Skills的基本结构

按照Skills的渐进式披露机制分为三个层次:

元数据(Metadata)

指令(Instruction)

资源(Resource)

其中,只有元数据层默认被加载到大模型的上下文中,其余两层均为按需加载。大家可以这样理解:

  • 层级 1:技能发现 -- AI 先读取所有技能的元数据(包含必要的name 和 description如同书的目录,告诉模型有哪些可用的能力),判断任务是否相关,这些元数据始终在系统提示中。

  • 层级 2:加载核心指令(如同书的正文,详细说明在某一能力下如何执行某项任务; -- 如果相关,AI 自动读取 SKILL.md 的正文内容,获取详细指导。

  • 层级 3:加载资源文件(如同书的附录,提要时读取额外文件(如脚本、示例),或通过工具执行脚本。

智能体在执行时,首先仅载入“目录”(元数据),随后根据实际需求,再决定是否查阅该目录下的“正文”(指令)与“附录”(资源)。

skills2.png

执行原理

  • 意图识别,决定是否进入受控执行路径。

  • 命中 Skill 后,系统加载 SKILL.md,建立工具权限与行为边界,再结合上下文进行推理。

  • 只有在确实需要时才调用被允许的外部工具,否则在规则内完成逻辑。

  • 最终结果经过约束整合后输出,用户的下一次输入触发新一轮完整流程。

当然,Skill 也可以用来扩展 Agent 的工具、MCP 使用边界,通过文档与脚本,也可以教会 Agent 连接并使用特定的外部工具、MCP 服务

举个例子,这是 PPTX Skill 的文件目录:

skills4.png

  • 整个文件夹就是一个完整的能力包,用来支持 AI 创建、编辑和分析 PowerPoint 演示文稿。

  • 核心文件是 SKILL.md,包含技能的元数据和任务指导,告诉 agent 什么时候使用这个技能、如何按步骤处理任务。特别的,独立子技能往往会被拆为子文档(如教 AI 把 html 导出为 pptx 流程的 html2pptx.md),以避免一次性加载过长的 skill 文档,节省上下文窗口

  • Scripts/ 包含 Agent 可用的各类预先写好的程序脚本,比如 html 转 pptx 的一键程序脚本。这样 Agent 运行任务时就无需临时开发工具,直接调用,节省 tokens ,避免出错,提升速度

  • 也有一些参考文档(此项目打包的不算规范,但根据 SKILL.md ,Agent 也能理解哪些文档可以参考),比如 ooxml.md,是对 ooxml 格式文件的解析指南

整个 Skill 以简明的形式,把技能指引文档、代码脚本、参考文档和可用资源组合,定向扩展了 Agent 完成 pptx 生成相关的工作能力。

☞ Skills 核心运行机制:渐进式披露

正如 《有效的 Context 工程》 文中所论证的,上下文过长容易导致模型能力下降。

由于 Skills 的本质就是 Context 工程,所以这个问题也需在 Skill Agent 中注意。

一个完整装载了 Skill 的 Agent 架构是这样的:

img

Skill 包放在 Agent 文件系统(右侧)中,并非默认全量加载在 Context Window 中。

根据 Context 加载顺序、优先级的不同,Skill 被划分为了 3 种层级:

img

Skill 内容物的 3 种渐进披露优先级

img

1)Level 1(元数据,始终加载):

SKILL.md 文档内的元数据,包含名称与用途描述。

长度约 100 tokens。

Agent 启动时,就在 Context Window 中加载 Skill 元数据,将其包含在系统提示中。

AI 通过理解用户消息与 Skills 元数据的匹配情况,判断是否需要自动使用技能。

---
name: pdf
description: 全面的 PDF 操作工具包,用于提取文本和表格、创建新 PDF、合并/拆分文档以及处理表单。当 Claude 需要填写 PDF 表单或大规模地程序化处理、生成或

一般包含工作流程、最佳实践和指导。

建议少于 5000 tokens。

当用户发出的消息与Skill 元数据的描述匹配,需要调用 Skill 时,Agent 才会用 bash 读取文档正文 。读取时文档内容加载到 Context Window 中。

img

SKILL.md 的结构:分为 YAML 元数据与 MD 正文 

3)Level 3(子技能指令 / 资源 / 代码,按需动态加载):

由子技能文档、代码脚本、参考文档、可用资源等文件构成。

也有 Agent Skill 规范文档将它们统称为「Resource」。相对来讲,Level 3 结构要求没那么严谨。

· Sub-SKILL.md 子技能文档:相对独立、复杂的子技能指令,单独放在 Level3 拆分加载

img

随着一个 Skill 的复杂度提升,可能因为技能知识的上下文过长,或者有些知识仅在特定场景使用,而不适合放入单个SKILL.md,可被分拆为独立指令文档,仅在必要时加载。

· Scripts 代码脚本:视作“Agent 的可执行资源”,而不算 tool use(tool use 是 Agent 外部调用的独立服务)

Agent 在 Agent 电脑(虚拟机)中直接调用脚本,脚本代码本身不进 Context Window,只有脚本运行完成后的输出会进 Agent 的 Context。

· Reference 参考文档、Assets 可用资源,当然都是 Level 3,仅在必需时动态读取加载。

Level 3 因为按需加载的特性,文件在被访问前不会占用 Context 长度,所以没有内容大小限制,可按业务实际说明需要添加材料。

⬇️

小结:整个 Skill 运行过程中,Agent 自动判断哪些技能与任务相关,根据 skills 的元信息,动态判断、加载完成任务所需模块:

Level 1: SKILL.md 元数据(name + description)
         ↓
Level 2: SKILL.md 完整内容
         ↓
Level 3: Resources 中的具体文件(按需读取)

三、作用和特点

作用

作用维度

具体描述

核心价值

能力拓展

将大语言模型(LLM)从纯粹的“文本生成与推理”能力,扩展为可执行具体动作的“智能体”。

化“言”为“行”,让AI从顾问变为执行者。

效率聚合

将原本需要在多个软件、平台间手动切换完成的任务,聚合在一个对话界面中自动完成。

一站式服务,消除切换成本,极大提升复杂任务效率。

知识实时化

通过联网搜索、查询数据库等技能,突破大模型训练数据的时间与私有性限制,获取最新、专有信息。

解决LLM的“知识截止”与“信息孤岛”问题

流程自动化

将固定规则的工作流(如数据抓取、报告生成、信息监控与通知)编码为技能,由AI自动触发和执行。

7x24小时无人值守,将人从重复劳动中解放。

个性化服务

技能可以结合用户个人的数据(日历、邮件、笔记)和偏好,提供高度定制的服务,如个人知识库问答。

从通用到个人,成为真正的智能助手。

生态与创新

提供标准化接口,允许开发者专注于单一技能开发,并通过组合不同技能快速构建复杂应用,促进创新。

乐高式创新,降低AI应用开发门槛,繁荣生态


特点和使用场景

  • 适用于复杂的重复场景

  • 得益于渐进式披露机制的特点可以实现按需加载,能够有效缓解上下文限制

四、如何制作一个Agent Skills

在介绍如何制作Agent Skills之前在回顾一下Skills的基本结构,构建Skills同样遵循其结构设定来搭建。

1、Skill 的最小结构

my-skill/
└── SKILL.md   (唯一必需)

SKILL.md 基本模板:

---
name: your-skill-name
description: What it does and when Claude should use it
---

# Skill Title

## Instructions
Clear, concrete, actionable rules.

## Examples
- Example usage 1
- Example usage 2

## Guidelines
- Guideline 1
- Guideline 2

元数据字段:

字段

必需

作用

name

唯一标识,小写+连字符

description

触发条件(最重要)

allowed-tools

限制可用工具

model

指定模型

context

fork = 独立上下文

agent

fork 时使用的子代理

hooks

Skill 生命周期钩子

user-invocable

是否显示在 / 菜单

SKILL.md 文件的核心构成

以 Claude 的 PDF 文档编辑技能为例,Claude 原生可解析 PDF,但无法直接操作(如填写表单),该技能补足了这一短板。

  • 核心形态:一个包含 SKILL.md 的目录

  • 必填元数据:SKILL.md 开头的 YAML 块,需包含 name(名称)和 description(描述),启动时预加载至系统提示词

多文件 Skill(渐进式披露)

渐进式披露机制

  • 第一层:元数据 → 让 Claude 判断技能适用场景,不加载全部内容

  • 第二层:SKILL.md正文 → 判定相关后,载入完整上下文

  • 第三层 +:附属文件(如forms.md)→ 按需引用,精简核心文件体积

下图显示了当用户消息触发技能时,上下文窗口如何变化:

  • 初始状态:上下文窗口含系统提示词、技能元数据、用户指令

  • 调用 Bash 工具读取目标 SKILL.md,触发对应技能

  • 按需加载附属文件(如forms.md)

  • 加载完成后执行用户任务

推荐目录结构

为避免上下文膨胀:

  • 核心规则 → SKILL.md

  • 详细资料 → 单独文件

  • 实用逻辑 → 脚本执行(不加载)

推荐结构:

my-skill/
├── SKILL.md
├── reference.md
├── examples.md    # 存放示例文件
└── scripts/
    └── helper.py

第一个 Skill

让我们暂时忘掉复杂的创建过程,先从 使用一个现成的 Skill 开始,感受它带来的便利。

创建 Skill 目录

Skills 存放在 ~/.claude/skills/(个人全局)或项目目录下的 .claude/skills/(项目专用)。

本章节再项目目录下测试,先创建个目录 claude-test:

mkdir claude-test

进入该目录,创建 skills 的目录与文件:

mkdir -p .claude/skills/python-naming-standard

编写配置文件 SKILL.md

在目录下创建 SKILL.md,这是 Skill 的大脑 ,告诉 Claude 什么时候用它。

---
name: Python 内部命名规范技能
description: 当用户要求重构、审查或编写 Python 代码时,请参考此规范。
---

## 指令
1. 所有的内部辅助函数必须以 `_internal_` 前缀命名。
2. 如果发现不符合此规则的代码,请自动提出修改建议。
3. 在执行 `claude commit` 前,必须检查此规范。

## 参考示例
- 正确:`def _internal_calculate_risk():`
- 错误:`def _calculate_risk():`

字段要求:

  • name:必须仅使用小写字母、数字和连字符(最多 64 个字符)

  • description:Skill 的简要描述及其使用时机(最多 1024 个字符)

创建完后文件结构如下:

你的项目现在看起来应该是这样的:

my-project/
├─ src/
│  └─ test.py              # 项目源码
├─ .claude/
│  ├─ skills/
│  │  └─ hello-world/
│  │     ├─ skill.md       # Skill 定义(YAML + Instructions,机器可执行)
│  │     └─ README.md      # Skill 说明(人类阅读,可选)
│  └─ config.yml           # Claude 项目级配置(可选)
├─ .gitignore
└─ README.md               # 项目整体说明

接下来我们再终端执行以下命令启动 Claude Code:

claude

输入任务:

帮我写一个计算用户折扣的函数

Claude 就会会扫描已安装的 Skills,发现你的请求涉及 "Python 代码编写",匹配了 python-naming-standard。

它会根据 SKILL.md 中的要求,生成如下代码:

def _internal_get_discount(user_score):
    # 计算逻辑...
    return discount

添加资源文件(可选)

另外我们可以在 .claude/skills/ 下添加以下目录:

在同一文件夹添加:

  • examples/:存放示例文件。

  • references/:存放参考文档。

  • scripts/:存放可执行脚本(例如 Python 处理 PDF)。

然后在 SKILL.md 中引用:

查看示例 commit:./examples/good-commit.txt
运行脚本:使用工具执行 ./scripts/process.py

五、如何使用Agent Skills

对于如何使用Skills这一问题,其实方法和方案有很多。主流方式还是以嵌入代码中的langchain,Function Calling,MCP以及终端类似于Claude code为主,当然还有其他方式。目前的使用方式可以参考下方表格⬇️

用户类型

使用方式

具体操作

工具/平台示例

终端用户 (最终使用者)

直接调用

通过自然语言对话,AI自动识别并调用相应技能

ChatGPT Plus(GPTs)、Claude、Copilot、豆包等

手动激活

点击界面上的特定功能按钮或选择预设技能

Midjourney(输入/imagine)、一些AI助手App的功能面板

高级用户/业务人员

技能组合

创建工作流,串联多个技能(如:爬取数据→分析→生成报告)

Make、Zapier、LangChain Flow、Cline

个性化配置

调整技能参数、设置触发条件、连接个人数据源

GPTs Builder、Claude Project、自定义AI助手平台

开发者/技术爱好者

技能开发

编写代码实现新技能,封装为API或插件

Python、LangChain、FastAPI、开源框架

技能集成

将第三方技能集成到自己的Agent系统中

MCP协议、API调用、Function Calling

技能部署与管理

部署技能服务、管理技能版本、监控调用情况

云服务器、Docker、技能市场平台

六、prompt、mcp、agent skills关系

参考指南:

https://sspai.com/post/105230

https://blog.csdn.net/2401_84494441/article/details/157431905

动物装饰