用 Agent Skills 武装 Agent 应对真实世界¶
原文发布于 2025 年 10 月 16 日,作者 Barry Zhang、Keith Lazuka 和 Mahesh Murag
更新:Agent Skills 于 2025 年 12 月 18 日作为开放标准发布,支持跨平台移植。
引言¶
Claude 能力强大,但真实工作还需要流程知识和组织上下文。Agent Skills 是一种用文件和文件夹构建专业化 Agent 的新方式。
随着模型能力的提升,通用 Agent 已经能与完整的计算环境交互。Claude Code 可以利用本地代码执行和文件系统完成跨领域的复杂任务。然而,我们仍然需要更可组合、更可扩展、更便携的方式来为 Agent 注入领域专业知识。
Agent Skills 就是这样一种解决方案:它是由指令、脚本和资源组成的文件夹,Agent 可以动态发现并加载这些内容,从而更好地完成特定任务。Skills 通过将专业知识打包为可组合的资源来扩展 Claude 的能力,将通用 Agent 转变为专业化 Agent。
构建一个 Skill 就像"为新员工准备一份入职指南"。任何人都可以通过捕获和分享流程知识来让 Agent 具备可组合的专业能力。

Skill 的结构剖析¶
一个 Skill 本质上就是一个包含 SKILL.md 文件的目录,其中组织了指令、脚本和资源,为 Agent 赋予额外能力。
文章以一个真实案例来说明:PDF skill 赋予了 Claude 文档编辑能力。Claude 本身能够理解 PDF,但直接操作 PDF(例如填写表单)的能力有限。PDF skill 弥补了这一缺陷。
最简形式下,Skill 就是一个包含 SKILL.md 文件的目录。该文件必须以包含 name 和 description 元数据的 YAML frontmatter 开头。Agent 启动时,会将所有已安装 Skill 的名称和描述预加载到系统提示中。
这些元数据是渐进式信息披露(progressive disclosure)的第一层——仅提供刚好足够的信息让 Claude 判断何时使用每个 Skill,而不将所有内容都加载到上下文中。SKILL.md 的正文内容是第二层细节。当 Claude 认为某个 Skill 相关时,才会将完整的 SKILL.md 读入上下文。

当 Skill 变得复杂时,单个 SKILL.md 可能容纳不下所有上下文,或某些内容仅在特定场景下才相关。Skill 可以在目录中捆绑额外文件,并通过文件名引用它们。这些被引用的文件构成了第三层(及更深层)细节,Claude 仅在需要时才会导航到这些文件。
以 PDF skill 为例,SKILL.md 引用了两个额外文件(reference.md 和 forms.md)。将表单填写的指令移到 forms.md 后,核心 Skill 保持精简,Claude 仅在需要填写表单时才读取该文件。

渐进式信息披露是让 Agent Skills 灵活且可扩展的核心设计原则。 就像一本组织良好的手册——有目录、章节和附录——Skill 让 Claude 仅在需要时加载信息。

| 披露层级 | 内容 | 加载时机 |
|---|---|---|
| 第一层 | Skill 名称和描述(YAML frontmatter) | Agent 启动时预加载到系统提示 |
| 第二层 | SKILL.md 正文 |
Claude 判断 Skill 相关时读取 |
| 第三层及以上 | 捆绑的额外文件(如 forms.md) |
Claude 在执行特定任务时按需导航 |
拥有文件系统和代码执行工具的 Agent 不需要一次性将整个 Skill 读入上下文,因此 Skill 能够承载的上下文量实际上是无限的。
Skill 与上下文窗口¶
Skill 在上下文窗口中的触发是按需发生的,遵循渐进式加载模式。

操作顺序:
- 上下文窗口以核心系统提示、已安装 Skill 的元数据和用户初始消息开始
- Claude 通过调用 Bash 工具读取
pdf/SKILL.md来触发 PDF skill - Claude 选择读取该 Skill 捆绑的
forms.md文件 - Claude 继续执行用户任务,此时已装备了 PDF skill 中的相关指令
Skill 与代码执行¶
Skill 可以包含代码供 Claude 自行决定执行,将确定性的工具执行能力融入 Agent 工作流。
LLM 擅长许多任务,但某些操作更适合传统代码执行。例如,通过逐 token 生成来排序列表远比直接运行排序算法昂贵。很多应用还需要只有代码才能提供的确定性可靠性。
PDF skill 包含一个预写的 Python 脚本,用于读取 PDF 并提取所有表单字段。Claude 可以运行该脚本,无需将脚本内容或 PDF 文件加载到上下文中。由于代码是确定性的,这一工作流的结果一致且可复现。

| 方式 | 适用场景 | 特点 |
|---|---|---|
| LLM 推理 | 理解语义、做出判断、生成文本 | 灵活但成本高 |
| 代码执行 | 数据处理、文件操作、确定性计算 | 高效且可复现 |
| 两者结合 | Claude 判断何时运行脚本,脚本执行具体操作 | 兼具灵活性和可靠性 |
开发和评估 Skill¶
开发 Skill 的核心方法是:从评估出发、为扩展而设计、从 Claude 的视角思考、与 Claude 协同迭代。
-
从评估开始: 在代表性任务上运行 Agent,观察它在哪里力不从心,找到能力差距。针对不足之处增量式地构建 Skill。
-
为扩展而设计: 当
SKILL.md变得臃肿时,将内容拆分到单独文件中并引用它们。如果某些上下文互斥或很少同时使用,保持路径分离可以减少 token 用量。代码既可以作为可执行工具也可以作为文档——明确 Claude 应该运行脚本还是作为参考阅读。 -
从 Claude 的视角思考: 监控 Claude 在真实场景中如何使用你的 Skill 并进行迭代。关注意外的执行路径或对某些上下文的过度依赖。特别注意
name和description——Claude 根据这两个字段决定是否触发该 Skill。 -
与 Claude 协同迭代: 在你工作的过程中,让 Claude 将成功的方法和常见错误捕获为可复用的上下文和代码。如果它偏离轨道,让它自我反思哪里出了问题。这有助于发现 Claude 实际需要什么上下文,而不是凭直觉预判。
使用 Skill 时的安全考量¶
Skill 通过指令和代码赋予 Claude 新能力,因此恶意 Skill 可能引入漏洞或指导 Claude 泄露数据。
安全建议:
| 建议 | 说明 |
|---|---|
| 仅从可信来源安装 Skill | 优先使用官方或社区审核过的 Skill |
| 彻底审计不太信任的 Skill | 在使用前通读所有文件 |
| 阅读捆绑文件 | 理解 Skill 具体做了什么 |
| 注意代码依赖和捆绑资源 | 关注图片、脚本等附加文件 |
| 警惕连接外部网络的指令 | 防范可能连接不可信来源的操作 |
Skills 的未来¶
Agent Skills 已在 Claude.ai、Claude Code、Claude Agent SDK 和 Claude Developer Platform 全面支持。
未来规划将覆盖 Skill 的完整生命周期——创建、编辑、发现、分享和使用。Anthropic 对以下方向尤其兴奋:
- Skills 帮助组织将上下文和工作流分享给 Claude
- 探索 Skills 如何与 Model Context Protocol(MCP)服务器互补,教会 Agent 涉及外部工具的复杂工作流
展望更远的未来,Anthropic 希望让 Agent"自主创建、编辑和评估 Skill",使其能将自身的行为模式固化为可复用的能力。
Skills 是一个"简单的概念配以简单的格式",让组织、开发者和终端用户都能更轻松地构建定制化 Agent。
致谢¶
本文由 Barry Zhang、Keith Lazuka 和 Mahesh Murag 撰写——他们"都特别喜欢文件夹"。特别感谢 Anthropic 内部支持和构建 Skills 的所有同事。