Claude Skills是什么?为什么要引入Skills?
Skills是什么
Skills的概念由Anthropic提出,其本质是一个更高层次的模块化能力包,用于扩展 Claude的功能。每个Skill都打包了指令、元数据和可选资源(脚本、模板),Claude在执行时会根据相关性自动使用。
为什么要使用Skills?
Skills是可重用的、基于文件系统的资源,为 Claude 提供特定领域的专业知识:工作流程、上下文和最佳实践,将通用代理转变为专家代理。与提示词(用于一次性任务的对话级指令)不同,Skills 按需加载,无需在多个对话中重复提供相同的指导。
关键优势:
- 专业化Claude:针对领域特定任务定制能力
- 减少重复:一次创建,自动使用
- 组合能力:通过Skills组合构建复杂的工作流
Skills是如何生效的?
Skills 利用 Claude 的虚拟机环境,提供仅凭提示词无法实现的能力。Claude 在具有文件系统访问权限的虚拟机中运行,这使得 Skills 可以作为包含指令、可执行代码和参考资料的目录存在,其组织方式类似于项目的目录结构,每个目录结构下有关于这个模块简要的描述、详细说明及资源和代码。
Skills这种基于文件系统的架构提供了其在调用LLM渐进式展开的能力:Claude 根据需要分阶段加载信息,而不是预先消耗上下文。
Anthropic使用三种类型的内容对Skill做渐进式展开,分别对应三种加载级别。
Level 1: Metadata-元数据 (始终加载)
Skill 的 YAML 前置元数据提供发现信息:
---
name: pdf处理
description: 从 PDF 文件中提取文本和表格,填写表单,合并文档。在处理 PDF 文件时使用,或当用户提到 PDF、表单或文档提取时使用。
---
Claude 在启动时加载此元数据并将其包含在系统提示词中。这种轻量级方法意味着你可以安装许多 Skills 而不会产生上下文损耗;Claude 只知道每个 Skill 的存在以及何时使用它。
Level 2: Instructions-详细说明 (触发时加载)
SKILL.md 的主要内容包含程序性知识:工作流程、最佳实践和指导:
# PDF处理
## Quick start
使用pdfplumber从PDF文件中提取文字
```python
import pdfplumber
with pdfplumber.open("document.pdf") as pdf:
text = pdf.pages[0].extract_text()
```
更多高级表格填写指南, 请见[FORMS.md](FORMS.md).
当你请求符合Skill描述的内容时,Claude会通过bash从文件系统读取 SKILL.md。只有在这时,这些内容才会进入上下文窗口。
Level 3: Resources and code-资源和代码 (按需加载)
Skills可以额外捆绑的资料:说明、代码和资源
pdf-skill/
├── SKILL.md (主要说明)
├── FORMS.md (表单填写指南)
├── REFERENCE.md (详细的API参考)
└── scripts/
└── fill_form.py (程序脚本)
- 说明:额外的md文件(FORMS.md、REFERENCE.md),包含专业指导和工作流程
- 代码:Claude通过bash运行的可执行脚本(fill_form.py、validate.py);脚本提供确定性操作而不消耗上下文
- 资源:参考资料如数据库模式、API文档、模板或示例
文件系统模型意味着每种内容类型都有不同的优势:说明用于灵活指导,代码用于可靠性执行,资源用于事实查询。在调用时Claude会根据需要判断是否需要加载对应的文件。
通过以下表格说明三个加载级别的区别:
| Level | 何时加载 | Token消耗 | 内容 |
|---|---|---|---|
| Level 1: Metadata | 总是加载(启动时) | ~100 tokens 每个Skill | ymal格式的名称和描述信息 |
| Level 2: Instructions | Skill被触发时 | 低于 5k tokens | SKILL.md中包括说明和指南 |
| Level 3+: Resources | 需要时加载 | 理论上是无限的(取决于资源多少) | 捆绑的可执行文件、文档、模版等资源 |
以下是Skills架构图:

让我们通过一个PDF处理的Skill来说明Skill是如何加载和使用的:

启动: 在系统提示词中包含 PDF处理的 Skill的描述- 从 PDF 文件中提取文本和表格,填写表单,合并文档。在处理 PDF 文件时使用,或当用户提到 PDF、表单或文档提取时使用用户请求: 从PDF文件中提取文本信息并进行汇总Claude调用: bash: read pdf-skill/SKILL.md → 将详细说明加载到上下文中Claude决策: 不需要使用到表单填写,所以不需要读取 FORMS.mdClaude执行: 使用SKILL.md中的详细说明完成用户请求的任务
上述示例说明了:
- Skill的元数据信息被预加载到系统提示词中
- Claude通过
bash工具读取 SKILL.md 触发Skill - Claude可以根据需要选择性读取额外的捆绑文件,比如 FORMS.md
- Claude完成任务
总体上,Skills的技术栈强调模块化和按需加载,解决了传统提示词工程上下文大小的局限,并通过可执行代码注入程序性知识。
如何使用Skills
目前还只有Claude支持Skills,Claude预置了多种Skills例如:
- PowerPoint (pptx): ppt创建、编辑
- Excel (xlsx): excel创建及分析
- Word (docx): word文档创建、编辑
- PDF (pdf): 生成pdf文件
除了预置的Skills外,Claude还提供了一系列RestFul接口创建、编辑、删除自定义Skills

通过API可以按照如下方式使用Skills:
response = client.beta.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [
{
"type": "anthropic",
"skill_id": "xlsx",
"version": "latest"
}
]
},
messages=[{
"role": "user",
"content": "Create a quarterly sales tracking spreadsheet with sample data"
}],
tools=[{
"type": "code_execution_20250825",
"name": "code_execution"
}]
)
Skills与MCP的区别是什么?
Skills和MCP的目标都是增强AI Agent的能力,但是它们在设计理念、实现方式和应用场景都存在显著差异。MCP定义了一种Agent与外部服务器的通讯协议,它解决的是Agent与外部工具如何对话的问题;而Skills是一种能力封装,它定义了一个Agent自身应该具备哪些知识、工作流和内部工具,它解决的是Agent如何思考和行动的问题;两者实际上是互补关系。
总体上,Skills更像是“即插即用”的本地插件,优化了LLM的提示词工程;MCP更像是“外部适配器”,拓展了大模型的能力边界。Skills可以构建在MCP上,例如在MCP检索数据后,使用Skills脚本处理。
Skills为我们带来了什么?
Ai Agent的实现一半靠LLM,另一半靠工程,Skills实际上又是从工程的角度对agent能力进行增强,关于Ai agent的开发范式目前来说开始在探索阶段,而Skills是这一阶段的又一产物,过去Anthropic Agent开发工程师们引入了MCP,现在引入了Skills,将来也许还是引入新的概念(比如Ability),对于普通的应用开发者来说还是要理性看待没有必要盲目跟风应用在实际项目中,更何况Anthropic对中国是完全封禁的,在项目中接入claude是不明智的选择。
但是也不是说Skills对应用开发者们没有用处,其最大的价值是:Anthropic将他们的Agent能力管理设计模式开源了;我们完全可以将这个模式借鉴过来,用在自己的Agent内,而不用关注到底使用的是哪个大模型。
当你的Agent能力越来越多时,一个包含几十个工具、几十种应用场景动辄成百上千的System Prompt如何维护?如何调优?而Skills的设计模式为我们提供了一种解耦、模块化的解决方案。你的Agent不再是依赖一个巨大的、难以维护的system prompt,而是一个由几十个标准化的Skill文件夹组成的能力库,每个Skill都可以单独测试和迭代。
浙公网安备 33010602011771号