更新:我们已将 Agent Skills 发布为开放标准,以便跨平台移植。(2025 年 12 月 18 日)
随着模型能力的提升,我们现在可以构建能与完整计算环境交互的通用智能体。例如,Claude Code 可以借助本地代码执行和文件系统,完成跨领域的复杂任务。但随着这些智能体越来越强大,我们需要更具组合性、可扩展性和可移植性的方式,为它们配备特定领域的专业知识。
这促使我们创建了 Agent Skills:由指令、脚本和资源组成的有组织的文件夹,智能体可以动态发现并加载它们,从而在特定任务上表现更好。Skills 把你的专业知识打包成可组合的资源提供给 Claude,从而扩展 Claude 的能力,把通用智能体变成适合你需求的专用智能体。
为智能体构建一个 skill,就像为新员工编写入职指南。不必再为每个用例构建零散、定制设计的智能体,现在任何人都可以通过沉淀和分享自己的流程性知识,用可组合的能力来让智能体专业化。本文将介绍什么是 Skills,展示它们如何工作,并分享构建你自己的 Skills 的最佳实践。

skill 的剖析
要看 Skills 的实际运作,我们来走一遍真实的例子:它是支撑 Claude 最近推出的文档编辑能力的 skill 之一。Claude 本来就很懂得理解 PDF,但直接操作 PDF(例如填写表单)的能力有限。这个 PDF skill 让我们能赋予 Claude这些新能力。
最简单的 skill 就是一个包含 SKILL.md file 的目录。该文件必须以 YAML frontmatter 开头,其中包含一些必需的元数据:name 和 description。启动时,智能体会把每个已安装 skill 的 name 和 description 预加载到系统提示词中。
这些元数据是渐进式披露的第一层:它提供的信息刚好足够让 Claude 知道每个 skill 何时该被使用,而无需把全部内容加载进上下文。该文件的正文是详细程度的第二层。如果 Claude 认为这个 skill 与当前任务相关,就会把完整的 SKILL.md 读入上下文来加载这个 skill。

随着 skill 变得越来越复杂,它们可能包含太多上下文,无法放进单个 SKILL.md,或者包含仅在特定场景下才相关的上下文。在这些情况下,skill 可以在其目录中打包额外的文件,并在 SKILL.md 中按名称引用。这些被链接的额外文件是详细程度的第三层(及更深层),Claude 可以按需选择浏览和发现。
在下面所示的 PDF skill 中,SKILL.md 引用了两个额外的文件(reference.md 和 forms.md),它们是 skill 作者选择与核心 SKILL.md 一起打包的。通过把填写表单的说明移到单独的文件(forms.md)中,skill 作者得以让 skill 的核心保持精简,并相信 Claude 只会在填写表单时才去读 forms.md。

渐进式披露是让 Agent Skills 既灵活又可扩展的核心设计原则。就像一本组织良好的手册,先是目录,然后是具体章节,最后是详细的附录,skill 让 Claude 只在需要时才加载信息:

拥有文件系统和代码执行工具的智能体,在处理某项任务时不需要把整个 skill 读入其上下文窗口。这意味着可以打包进 skill 的上下文量实际上是没有上限的。
Skills 与上下文窗口
下图展示了当用户的消息触发某个 skill 时,上下文窗口是如何变化的。

图中所示的操作顺序:
- 起初,上下文窗口中包含核心系统提示词、每个已安装 skill 的元数据,以及用户的初始消息;
- Claude 通过调用 Bash 工具读取
pdf/SKILL.md的内容,触发 PDF skill; - Claude 选择读取随 skill 一起打包的
forms.md文件; - 最后,在加载了 PDF skill 中的相关指令之后,Claude 继续执行用户的任务。
Skills 与代码执行
Skills 还可以包含代码,供 Claude 自行决定是否作为工具来执行。
大语言模型擅长许多任务,但某些操作更适合用传统的代码来执行。例如,通过生成 token 来给列表排序,其开销远高于直接运行一个排序算法。除了效率方面的考虑,许多应用还需要只有代码才能提供的确定性可靠性。
在我们的例子中,PDF skill 包含一个预先写好的 Python 脚本,它读取 PDF 并提取所有表单字段。Claude 可以运行这个脚本,而无需把脚本或 PDF 加载进上下文。而且由于代码是确定性的,这个工作流是一致且可重复的。

开发和评估 Skills
以下是开始编写和测试 skill 时的一些实用指南:
- 从评估入手:让智能体运行具有代表性的任务,观察它们在哪里遇到困难或需要额外的上下文,从而找出智能体能力上的具体缺口。然后循序渐进地构建 skill 来弥补这些不足。
- 为扩展而设计结构:当
SKILL.md文件变得难以驾驭时,把内容拆分到单独的文件中并加以引用。如果某些上下文相互排斥或很少一起使用,把路径分开可以减少 token 用量。最后,代码既可以充当可执行的工具,也可以充当文档。应当明确 Claude 是应该直接运行脚本,还是把脚本读入上下文作为参考。 - 站在 Claude 的角度思考:在真实场景中观察 Claude 如何使用你的 skill,并根据观察进行迭代:留意意外的行为轨迹,或对某些上下文的过度依赖。要特别关注 skill 的
name和description。Claude 在决定是否针对当前任务触发该 skill 时,会用到它们。 - 与 Claude 一起迭代:在和 Claude 一起完成任务的过程中,请 Claude 把它成功的做法和常犯的错误沉淀为 skill 中可复用的上下文和代码。如果它在使用 skill 完成任务时偏离了方向,请它自我反思哪里出了问题。这个过程能帮助你发现 Claude 实际需要什么上下文,而不是试图事先去预判。
使用 Skills 时的安全考量
Skills 通过指令和代码为 Claude 提供新能力。这让它们变得强大,但也意味着恶意的 skill 可能在使用它们的环境中引入漏洞,或指使 Claude 窃取数据并采取非预期的行为。
我们建议只从可信的来源安装 skill。从可信度较低的来源安装 skill 时,请在使用前进行彻底审查。首先阅读 skill 中打包的文件内容,了解它的作用,尤其要留意代码依赖项以及图片或脚本等打包资源。同样,也要留意 skill 中指示 Claude 连接到可能不可信的外部网络来源的指令或代码。
Skills 的未来
Agent Skills 目前已在 Claude.ai、Claude Code、Claude Agent SDK 和 Claude 开发者平台上得到支持。
在接下来的几周里,我们将继续添加功能,支持创建、编辑、发现、分享和使用 Skills 的完整生命周期。我们尤其期待 Skills 能帮助组织和个人与 Claude 分享他们的上下文和工作流。我们还将探索 Skills 如何与模型上下文协议(Model Context Protocol,MCP)服务器相辅相成,教会智能体涉及外部工具和软件的更复杂的工作流。
展望更远的未来,我们希望让智能体能够自行创建、编辑和评估 Skills,把它们自己的行为模式固化为可复用的能力。
Skills 是一个简单的概念,格式也相应地简单。这种简单性让组织、开发者和终端用户更容易构建定制化的智能体,并赋予它们新能力。
我们期待看到大家用 Skills 构建出什么。今天就开始吧,请查看我们的 Skills 文档和 cookbook。
致谢
作者 Barry Zhang、Keith Lazuka 和 Mahesh Murag,他们都非常喜欢文件夹。特别感谢 Anthropic 内部许多倡导、支持并构建了 Skills 的同事。
