原文链接:Equipping agents for the real world with Agent Skills

Claude 功能强大,但实际工作离不开过程性知识与业务场景背景。为此,我们推出 Agent Skills—— 一种通过文件和文件夹构建专业智能体的全新方式。

随着模型能力的提升,我们如今已能构建可与完整计算环境交互的通用智能体。例如 Claude Code,可借助本地代码执行和文件系统完成跨领域复杂任务。但随着这些智能体愈发强大,我们需要更具可组合性、可扩展性和可移植性的方式,为其赋予特定领域专业能力。

这一需求促使我们打造了 Agent Skills:它是包含指令、脚本和资源的结构化文件夹集合,智能体可动态发现并加载这些内容,从而在特定任务中表现更出色。Skills 通过将专业知识封装为 Claude 可调用的组合式资源,拓展了 Claude 的能力边界,让通用智能体转变为贴合具体需求的专业智能体。

为智能体构建 Skill,就如同为新员工准备入职指南。无需为每个使用场景单独构建零散的定制化智能体,现在任何人都能通过捕捉和分享过程性知识,为智能体添加可组合的专业能力。本文将详细解释 Skills 的定义、工作原理,并分享构建专属 Skill 的最佳实践。

screenshot-20251118-233322

1 Skill 的构成

要直观了解 Skills 的运作方式,我们以一个实际案例展开:该 Skill 为 Claude 近期推出的文档编辑功能提供支持。Claude 本身已具备强大的 PDF 理解能力,但在直接操作 PDF(如填写表单)方面存在局限,而这款 PDF Skill 恰好弥补了这一短板。

从本质来看,一个 Skill 是包含SKILL.md文件的目录。该文件必须以 YAML 前置元数据开头,包含两项必填内容:名称(name)和描述(description)。智能体启动时,会将所有已安装 Skill 的名称和描述预加载到系统提示词中。

这些元数据构成了渐进式披露的第一层级:它仅提供足够信息,让 Claude 判断何时应使用某个 Skill,而无需将全部内容加载到上下文。文件的正文部分则是第二层级的详细信息。当 Claude 认为某一 Skill 与当前任务相关时,会通过读取完整的SKILL.md文件将该 Skill 加载到上下文。

screenshot-20251118-233950
A SKILL.md file must begin with YAML Frontmatter that contains a file name and description, which is loaded into its system prompt at startup.

随着 Skill 复杂度提升,单一SKILL.md文件可能无法容纳全部内容,或部分内容仅适用于特定场景。这种情况下,Skill 可在目录中包含额外文件,并在SKILL.md中通过文件名引用这些文件。这些关联的额外文件构成了第三层级及更深层次的细节,Claude 仅会在需要时自行导航和获取。

在下方展示的 PDF Skill 中,SKILL.md引用了两个额外文件(reference.md和forms.md),这些文件与核心的SKILL.md一同打包。通过将表单填写说明移至独立文件forms.md,Skill 创作者得以保持核心文件的简洁性,同时确保 Claude 仅在执行表单填写任务时才读取forms.md的内容。

You can incorporate more context (via additional files) into your skill that can then be triggered by Claude based on the system prompt.
You can incorporate more context (via additional files) into your skill that can then be triggered by Claude based on the system prompt.

渐进式披露 是 Agent Skills 具备灵活性和可扩展性的核心设计原则。就像一本结构清晰的手册 —— 先有目录,再分章节,最后附上详细附录 ——Skills 让 Claude 仅在需要时才加载对应信息。

screenshot-20251118-234427

具备文件系统和代码执行工具的智能体,在处理特定任务时无需将 Skill 的全部内容载入上下文窗口。这意味着,一个 Skill 可容纳的上下文信息实际上不受限制。

2 技能与上下文窗口

下图展示了用户消息触发 Skill 时,上下文窗口的变化过程:

Skills are triggered in the context window via your system prompt.
Skills are triggered in the context window via your system prompt.
  1. 初始状态:上下文窗口包含核心系统提示词、所有已安装 Skill 的元数据,以及用户的初始消息;
  2. Claude 通过调用 Bash 工具读取pdf/SKILL.md的内容,触发 PDF Skill;
  3. Claude 选择读取该 Skill 打包的forms.md文件;
  4. 加载完 PDF Skill 中的相关指令后,Claude 开始执行用户的任务。

3 技能与代码执行

Skills 还可包含代码,供 Claude 根据任务性质自行决定是否作为工具执行。

大型语言模型在诸多任务中表现优异,但某些操作更适合通过传统代码执行完成。例如,通过生成令牌排序列表的成本远高于直接运行排序算法。此外,许多应用场景需要只有代码才能提供的确定性可靠性。

在上述 PDF Skill 案例中,包含一个预编写的 Python 脚本,可读取 PDF 并提取所有表单字段。Claude 无需将脚本或 PDF 本身加载到上下文,即可直接运行该脚本。得益于代码的确定性,这一工作流程具备一致性和可重复性。

Skills can also include code for Claude to execute as tools at its discretion based on the nature of the task
Skills can also include code for Claude to execute as tools at its discretion based on the nature of the task

4 技能的开发与评估

以下是启动 Skill 创作和测试的实用指南:

  • 从评估入手:让智能体执行代表性任务,观察其在哪些环节遇到困难或需要额外上下文,明确能力缺口。随后逐步构建 Skill 以弥补这些不足。
  • 结构化设计以支持扩展:当SKILL.md文件过于庞大时,可将内容拆分至独立文件并建立引用。若某些上下文互斥或极少同时使用,保持其路径独立可减少令牌消耗。此外,代码既可作为可执行工具,也可充当文档,需明确 Claude 是应直接运行脚本,还是将其作为参考内容读取到上下文。
  • 从 Claude 的视角思考:观察 Claude 在实际场景中对 Skill 的使用情况,并据此迭代优化。留意是否存在意外执行路径或对特定上下文的过度依赖,同时重点打磨 Skill 的名称和描述——Claude 会依据这些信息判断是否触发该 Skill。
  • 与 Claude 协同迭代:在与 Claude 协作完成任务的过程中,可要求它将成功经验和常见错误整理为 Skill 中可复用的上下文和代码。若 Claude 使用 Skill 执行任务时出现偏差,可让它自我反思问题所在。这一过程能帮助你精准定位 Claude 实际需要的上下文,而非仅凭预判进行设计。

5 使用 Skills 的安全注意事项

Skills 通过指令和代码为 Claude 赋予新能力,这既让它功能强大,也意味着恶意 Skill 可能会给使用环境带来漏洞,或诱导 Claude 泄露数据、执行非预期操作。

我们建议仅从可信来源安装 Skill。若需安装来源可信度较低的 Skill,使用前务必进行全面审计:首先读取 Skill 打包的所有文件内容,了解其功能用途,尤其关注代码依赖项以及图片、脚本等打包资源。同时,警惕 Skill 中要求 Claude 连接潜在不可信外部网络资源的指令或代码。

6 Skills 的未来发展

目前,Agent Skills 已在 Claude.ai、Claude Code、Claude Agent SDK 以及 Claude 开发者平台全面支持。

未来几周,我们将持续添加新功能,覆盖 Skill 的创建、编辑、发现、分享和使用全生命周期。我们尤其期待 Skills 能帮助企业和个人与 Claude 共享自身的业务场景和工作流程。此外,我们还将探索 Skills 如何与模型上下文协议(MCP)服务器互补,教会智能体处理涉及外部工具和软件的更复杂工作流程。

长远来看,我们希望让智能体能够自主创建、编辑和评估 Skills,将自身的行为模式固化为可复用的能力。

Skills 概念简洁,格式也相应简单。这种简洁性让企业、开发者和终端用户都能轻松构建定制化智能体,为其赋予新能力。

我们期待看到大家利用 Skills 创造出更多实用功能。如需立即上手,可查阅我们的 Skills 文档和使用指南。
 

分类&标签