
Agent Skills 是专门用来扩展 Claude 功能的模块化能力集合。你可以把它想象成一个工具箱,每个 Skill(技能)都包含了特定的指令、元数据,以及可选的脚本或模板等资源。当处理的任务与某个 Skill 相关时,Claude 会自动调用这些资源,无需你手动干预。
为什么我们需要 Agent Skills?
简单来说,Skills 是一套基于文件系统的、可复用的资源包。它们为 Claude 注入了特定领域的专业知识,包括工作流程、上下文信息和最佳实践,从而将通用的 AI 代理转变为你需要的专家。
这与我们平时在对话中使用的“提示”有很大不同。提示是对话级别的一次性任务指令,而 Skills 是按需加载的。这意味着,对于一些重复性的专业任务,你无需在每次新对话中都重新交代一遍相同的操作指南,大大提升了效率。
Skills 带来的核心优势
- 专业化 Claude:为特定领域的任务量身定制功能,让 Claude 更“懂行”。
- 减少重复劳动:一套 Skill 创建后,可以在无数个相关场景中被自动使用。
- 组合强大功能:你可以将多个 Skills 结合起来,构建出更复杂、更智能的工作流。
本文将深入探讨 Agent Skills 的架构及其在实际中的应用,告诉你如何用 Skills 来武装你的 AI 代理。
Skills 的使用概览
Anthropic 官方为处理常见的文档任务(如 PowerPoint、Excel、Word、PDF)提供了一系列预构建的 Agent Skills。当然,你也可以根据自己的需求,创建完全自定义的 Skills。无论是预构建的还是自定义的,它们的工作机制是相同的——Claude 会在识别到相关任务时自动调用它们。
预构建的 Agent Skills
这些 Skills 对所有 claude.ai 用户以及通过 Claude API 的开发者开放。你可以在下文“可用 Skills”部分看到完整列表,直接使用。
自定义 Skills
这允许你将组织内部的专业知识或特定工作方式打包成 Skills。自定义 Skills 在 Claude 的所有产品中都能使用:你可以在 Claude Code 中创建它们,通过 API 上传,或者在 claude.ai 的设置中添加。
如何开始?
- 使用预构建 Skills:可以参考官方快速入门教程,立刻开始通过 API 使用 PPT、Excel、Word 和 PDF 等 Skills。
- 创建自定义 Skills:可以查阅 Agent Skills 食谱,学习如何动手制作属于你自己的 Skills。
Skills 的工作原理揭秘
Skills 的强大之处在于,它利用了 Claude 的代码执行环境,提供了远超纯文本提示所能实现的功能。Claude 在一个拥有文件系统访问权限的虚拟机中运行,Skills 则作为包含指令、可执行代码和参考资料的目录存在。这种组织方式,就像你为新入职的同事准备的一份详尽的“工作指南”。
这种基于文件系统的架构支持渐进式披露:Claude 按需、分阶段地加载所需信息,而不是一开始就把所有内容都塞进上下文,从而节省了宝贵的上下文窗口空间。
Skill 内容类型与加载时机
一个 Skill 可以包含三种类型的内容,它们会在不同的时间点被加载:
1级:元数据(始终加载)
内容类型:指令。
Skill 的 YAML 前言(Front Matter)提供了用于被“发现”的信息:
---
name: pdf-processing
description: 从 PDF 文件中提取文本和表格、填充表单、合并文档。在处理 PDF 文件或用户提及 PDF、表单或文档提取时使用。
---
Claude 在启动时就会加载这些元数据,并将其包含在系统提示中。这种方式非常轻量,意味着你可以安装很多 Skills 而不会产生显著的上下文成本;Claude 只需要知道每个 Skill 是干什么的,以及何时该用它。
2级:指令(触发时加载)
内容类型:指令。
SKILL.md 文件的主体部分包含了程序性知识:工作流程、最佳实践和具体指导。
# PDF 处理
## 快速入门
使用 pdfplumber 从 PDF 中提取文本:
```python
import pdfplumber
with pdfplumber.open("document.pdf") as pdf:
text = pdf.pages[0].extract_text()
有关高级表单填充,请参阅 FORMS.md。
当用户的请求与某个 Skill 的描述匹配时,Claude 会通过 bash 命令从文件系统中读取对应的 `SKILL.md`。只有在这个时候,这些指令内容才会进入上下文窗口。
#### 3级:资源和代码(按需加载)
**内容类型**:指令、代码和资源。
Skills 还可以捆绑其他材料,例如:
pdf-skill/
├── SKILL.md (主要指令)
├── FORMS.md (表单填充指南)
├── REFERENCE.md (详细 API 参考)
└── scripts/
└── fill_form.py (实用脚本)
* **指令**:包含更专业指导和工作流的其他 Markdown 文件(如 `FORMS.md`, `REFERENCE.md`)。
* **代码**:Claude 可以通过 bash 运行的可执行脚本(如 `fill_form.py`)。脚本能提供确定性的操作,且其代码本身不会消耗上下文。
* **资源**:参考资料,例如数据库架构图、API 文档、模板或示例文件。
Claude 只在明确引用时才去访问这些文件。文件系统模型让每种内容类型都各司其职:指令用于灵活指导,代码用于可靠执行,资源用于事实查询。
| 级别 | 加载时间 | 令牌成本 | 内容 |
| :--- | :--- | :--- | :--- |
| **1级:元数据** | 始终(启动时) | 每个 Skill 约 100 令牌 | YAML 前言中的 `name` 和 `description` |
| **2级:指令** | 触发 Skill 时 | 通常少于 5k 令牌 | 包含指令和指导的 SKILL.md 主体 |
| **3级+:资源** | 按需 | 理论上无限制(不占上下文) | 通过 bash 执行的捆绑文件,内容不加载到上下文中 |
渐进式披露确保了在任何给定时间,只有最相关的内容占据着有限的上下文窗口。
### Skills 的底层架构
Skills 在 Claude 的代码执行环境中运行,Claude 拥有文件系统访问、执行 bash 命令和运行代码的能力。你可以理解为,Skills 以目录的形式存在于虚拟机上,Claude 使用与你操作电脑相同的 bash 命令来与它们交互。
#### Claude 如何访问 Skill 内容?
当 Skill 被触发时,Claude 会用 `bash` 命令从文件系统读取 `SKILL.md`,将其指令载入上下文。如果这些指令中引用了其他文件(比如 `FORMS.md` 或某个数据库架构文件),Claude 也会用其他的 bash 命令去读取它们。当指令提到某个可执行脚本时,Claude 会通过 bash 运行它,并且只接收脚本的运行**输出**(脚本的源代码本身永远不会进入上下文)。
#### 此架构支持的关键特性
* **按需文件访问**:Claude 只读取特定任务真正需要的文件。一个 Skill 可以包含几十个参考文件,但如果你的任务只需要“销售数据库架构”,那么 Claude 就只加载那个文件。其他文件静静地待在文件系统里,不消耗任何令牌。
* **高效的脚本执行**:当 Claude 运行 `validate_form.py` 时,脚本的代码永远不会被加载到上下文窗口。只有脚本的输出(比如“验证通过”或一条具体的错误信息)会消耗令牌。这让使用预写脚本比让 Claude 临时生成等效代码要高效得多。
* **捆绑内容无上限**:因为文件在被访问前不占上下文,所以 Skills 可以包含极其全面的 API 文档、大型数据集、广泛的示例或任何你需要的参考资料。对于未使用的捆绑内容,没有上下文成本。
这种基于文件系统的模型,正是实现渐进式披露的关键。Claude 浏览你的 Skill 目录,就像你查阅工作手册的特定章节一样,只为当前任务访问最精确的内容。
### 实例:PDF 处理 Skill 的加载流程
让我们看一个 Claude 加载和使用 PDF 处理 Skill 的典型流程:
1. **启动**:系统提示中包含:`PDF Processing - Extract text and tables from PDF files, fill forms, merge documents`。
2. **用户请求**:“请从这个 PDF 里提取文本并做一个总结”。
3. **Claude 调用**:`bash: read pdf-skill/SKILL.md` → 主要指令被加载到上下文中。
4. **Claude 判断**:当前任务不需要表单填充功能,因此不读取 `FORMS.md`。
5. **Claude 执行**:依据 `SKILL.md` 中的指令,完成任务。
## Skills 的适用平台
Skills 在 Claude 的各类代理产品中均可使用,但具体支持情况略有不同:
### Claude API
Claude API 同时支持预构建的 Agent Skills 和自定义 Skills。两者的使用方式相同:在 API 请求的 `container` 参数中指定相关的 `skill_id`,并启用代码执行工具。
**前提条件**:通过 API 使用 Skills 需要启用三个 Beta 功能标头:
* `code-execution-2025-08-25` - Skills 在代码执行容器中运行。
* `skills-2025-10-02` - 启用 Skills 功能本身。
* `files-api-2025-04-14` - 用于向/从容器上传/下载文件。
使用预构建的 Agent Skills 时,直接引用其 `skill_id`(如 `pptx`, `xlsx`)。创建自定义 Skills 则需要通过 Skills API (`/v1/skills` 端点) 来上传。通过 API 上传的自定义 Skills 在工作区范围内共享。
### Claude Code
Claude Code **仅支持自定义 Skills**。
**自定义 Skills**:以包含 `SKILL.md` 文件的目录形式创建 Skills。Claude 会自动发现并使用它们。Claude Code 中的自定义 Skills 完全基于本地文件系统,不需要 API 上传步骤。
### Claude Agent SDK
Claude Agent SDK 通过基于文件系统的配置来支持自定义 Skills。
**自定义 Skills**:在 `.claude/skills/` 目录中创建包含 `SKILL.md` 的目录形式的 Skills。通过在代理的 `allowed_tools` 配置中包含 `"Skill"` 来启用 Skills 功能。SDK 运行时会自动发现该目录下的 Skills。
### Claude.ai
Claude.ai 同时支持预构建的 Agent Skills 和自定义 Skills。
* **预构建的 Agent Skills**:这些 Skills 在你处理文档时已在后台默默工作,Claude 会自动调用,无需任何设置。
* **自定义 Skills**:通过“设置” > “功能”页面,以 zip 文件的形式上传你自己的 Skills。该功能在启用了代码执行的 Pro、Max、Team 和 Enterprise 计划中可用。需要注意的是,在 Claude.ai 上传的自定义 Skills 是**个人用户**级别的,它们不在组织范围内共享,管理员也无法进行集中管理。
## 如何构建一个 Skill?
每个 Skill 都必须有一个名为 `SKILL.md` 的核心文件,并且该文件需要包含 YAML 前言(Front Matter)。
```yaml
---
name: your-skill-name
description: Brief description of what this Skill does and when to use it
---
# Your Skill Name
## Instructions
[为 Claude 提供的清晰、分步指导]
## Examples
[使用此 Skill 的具体示例]
必需字段:name 和 description。
字段要求:
name:
- 最多 64 个字符。
- 只能包含小写字母、数字和连字符(-)。
- 不能包含 XML 标签。
- 不能是保留字,如“anthropic”、“claude”。
description:
- 必须非空。
- 最多 1024 个字符。
- 不能包含 XML 标签。
description 字段至关重要,它应该清晰地说明这个 Skill 能做什么,以及 Claude 在什么时候应该使用它。详细的创作指南请参考官方最佳实践文档。
至关重要的安全考量
我们强烈建议仅从可信来源使用 Skills:要么是你自己创建的,要么直接来自 Anthropic。 Skills 通过指令和代码为 Claude 提供了新的能力,这虽然强大,但也意味着一个恶意的 Skill 可以指示 Claude 以与其声称目的不符的方式调用工具或执行代码。
如果你必须使用来自不信任或未知来源的 Skill,请务必格外谨慎,并在使用前对其进行彻底审计。根据 Claude 在执行 Skill 时被赋予的访问权限,恶意 Skills 可能导致数据泄露、未授权系统访问或其他安全风险。
关键安全注意事项:
- 彻底审计:审查 Skill 中捆绑的所有文件:
SKILL.md、脚本、图片和其他资源。留意异常模式,如意外的网络调用、奇怪的文件访问行为,或与 Skill 描述不符的操作。
- 外部来源风险高:那些需要从外部 URL 获取数据的 Skills 风险尤其大,因为获取的内容可能包含恶意指令。即使是原本可信的 Skill,如果其外部依赖被篡改,也可能变得危险。
- 工具滥用:恶意 Skills 可以诱导 Claude 以有害的方式调用各种工具(文件操作、bash 命令、代码执行)。
- 数据泄露:能够访问敏感数据的 Skills,可能被设计用来向外部系统泄露信息。
- 像安装软件一样对待:只从受信任的来源获取 Skills。在将 Skills 集成到能够访问敏感数据或执行关键操作的生产系统时,要格外小心。
当前可用的 Skills
预构建的 Agent Skills
以下预构建的 Agent Skills 现已可用:
- PowerPoint (pptx):创建演示文稿、编辑幻灯片、分析演示内容。
- Excel (xlsx):创建电子表格、分析数据、生成带图表的报告。
- Word (docx):创建文档、编辑内容、格式化文本。
- PDF (pdf):生成格式化的 PDF 文档和报告。
这些 Skills 在 Claude API 和 claude.ai 上均可使用。
自定义 Skills 示例
关于完整、实用的自定义 Skills 示例,请查阅官方的 Skills 食谱。
限制与约束
了解这些限制有助于你更有效地规划和部署 Skills。
跨平台可用性
自定义 Skills 不会在不同平台间自动同步。 上传到一个平台的 Skills 不会自动出现在其他平台:
- 上传到 Claude.ai 的 Skills,必须单独上传到 API 才能使用。
- 通过 API 上传的 Skills,在 Claude.ai 上不可用。
- Claude Code 的 Skills 基于文件系统,与 Claude.ai 和 API 相互独立。
你需要为你打算使用 Skills 的每一个平台,单独管理和上传 Skills。
共享范围
Skills 的共享模型因其使用平台而异:
- Claude.ai:仅限个人用户。每个团队成员需要单独上传。
- Claude API:工作区范围。所有工作区成员都可以访问已上传的 Skills。
- Claude Code:个人级别(
~/.claude/skills/)或项目级别(.claude/skills/)。
Claude.ai 目前不支持由管理员集中管理或组织范围内分发自定义 Skills。
运行时环境约束
Skills 在代码执行容器中运行,受以下限制:
- 无网络访问:Skills 无法进行外部 API 调用或访问互联网。
- 无法运行时安装包:只能使用容器内预安装的软件包。你无法在 Skill 执行期间安装新的包。
- 仅限预配置依赖:请查阅代码执行工具的官方文档,以获取可用软件包的完整列表。
你需要确保你设计的 Skills 能够在这些约束条件下正常工作。
随着 Agent 技术的发展,像 Skills 这样的模块化、专业化能力扩展方式,正成为提升 AI 应用效能的关键。希望本文能帮助你更好地理解并运用这一强大工具。如果你想了解更多关于 AI智能体开发或云计算实践,欢迎在云栈社区与更多开发者交流探讨。