Claude 现已引入 Skills 功能,显著提升了其执行特定任务的能力。Skills 本质上是一个包含指令、脚本和资源的结构化文件夹,Claude 能够根据任务需求动态加载这些资源。
这一机制的核心优势在于按需加载:Claude 仅在检测到当前任务与特定技能相关时才会调用该技能。这种设计不仅确保了 Claude 的运行效率,还能使其快速获取特定领域的专业知识,从而更高效地完成任务。
在执行过程中,Claude 会自动扫描可用技能库以匹配相关项。一旦找到匹配项,它仅加载完成任务所需的最少信息和文件。
目前,Skills 功能已在 Claude 的专业版、Max 版、团队版和企业版中上线。值得注意的是,Skills 的设计理念已逐渐被开源社区采纳并实现,例如 LangChain 的 Deep Agents 体系。详情可参考:Using skills with Deep Agents[1] 。
因此,深入理解 Skills 的功能架构、使用技巧及底层原理,对于构建高效的 AI 代理至关重要。
Skills 的核心特性包括:
可组合性 :支持多技能叠加使用。Claude 能够自动识别任务所需技能组合并协调执行。可移植性 :采用统一的格式标准。只需构建一次,即可在 Claude 应用、Claude Code 及 API 等不同环境中通用。执行力 :支持编写和执行代码,在处理需要确定性结果的任务时,比单纯的文本生成更可靠。Claude Agent Skills 工作原理 随着大语言模型能力的飞跃,构建能够与复杂计算环境交互的通用智能体已成为现实。然而,随着智能体功能的日益强大,我们需要一种更具可组合性、可扩展性和可移植性的架构,以便为它们赋予特定领域的专业知识。
Agent Skills 本质上是一个包含指令、脚本和资源的标准化目录结构。代理(Agent)能够动态发现并加载这些资源,从而获得完成特定任务所需的能力。通过将专业知识封装为可组合的资源包,Skills 极大地扩展了 Claude 的功能边界,将其从一个通用代理转变为能够适应特定需求的专用代理。
形象地说,为智能体构建技能就像是为新员工编写一份详尽的入职指南。借助于 Skills,我们无需再为每个特定场景构建孤立的、定制化的智能体。相反,任何人都能够通过捕获和共享流程知识,为智能体灵活添加功能模块。本文将深入解析 Skills 的定义、工作原理,并分享构建高质量 Skills 的最佳实践。
Agent Skills 在计算环境交互中的位置(来自:Equipping agents for the real world with Agent Skills[2] )
从技术角度来看,技能是一个包含SKILL.md文件及相关脚本、资源的标准化目录。这些组件共同协作,为代理提供额外的功能支持。
Skills 核心结构说明 每个技能目录的核心是一个SKILL.md文件。该文件必须以 YAML Frontmatter(前置元数据)开头,其中包含name(技能名称)和description(技能描述)等关键元数据。在启动阶段,代理会将所有已安装技能的name和description预加载到其系统提示符中。
这种机制构成了“渐进式披露”(Progressive Disclosure)的第一层:它仅提供最关键的索引信息,足以让 Claude 判断何时调用特定技能,而无需一次性加载所有细节。
SKILL.md文件的正文内容则是第二层详细信息。当 Claude 判定某项技能与当前任务相关时,它才会读取该技能的完整信息并将其加载到上下文中。
SKILL.md 示例(来自:Equipping agents for the real world with Agent Skills[3] )
随着技能复杂性的增加,单个SKILL.md配置文件可能无法容纳所有的上下文信息,或者某些信息仅在特定场景下才相关。在这种情况下,技能可以在目录中捆绑额外的文件,并在SKILL.md中通过文件名引用它们。这些额外的链接文件构成了第三层(及更高层)的详细信息,Claude 可以根据需要选择性地读取。
在下方所示的 PDF 技能示例中,SKILL.md引用了两个与核心内容一起打包的附加文件:reference.md和forms.md。通过将表单填写说明移至单独的文件(forms.md),技能作者保持了SKILL.md核心内容的简洁,同时确保 Claude 仅在需要填写表单时才会读取相关说明。
SKILL.md 复杂示例(来自:Equipping agents for the real world with Agent Skills[4] )
你可以通过添加文件将更多上下文信息添加到你的技能中,然后Claude可以根据系统提示触发该技能。 渐进式披露是使代理技能灵活且可扩展的核心设计原则。就像一本组织良好的手册,从目录开始,然后是具体章节,最后是详细的附录一样,技能允许 Claude 仅在需要时加载信息
Skills 的触发机制 得益于文件系统和代码执行工具的支持,智能体在执行任务时无需一次性加载技能的所有内容。这一特性突破了上下文窗口的限制,使得技能能够包含几乎无限量的背景信息和资源。
技能的触发主要依赖于加载到系统提示符中的元数据。
SKILL 触发流程(来自:Equipping agents for the real world with Agent Skills[5] )
一个完整的技能包含三个核心要素:名称 (唯一标识符)、描述 (激活条件)和指令 (执行步骤)。在实际运行中,只有SKILL.md中的名称和描述会直接影响技能的触发判定。换言之,这两个字段决定了 Claude 是否会调用该技能来获取专业知识或执行特定工作流。
因此,名称 的设计应遵循简洁明了的原则,建议使用小写字母和连字符(kebab-case),例如pdf-editor或brand-guidelines。
Skills 的扩展能力:代码执行 除了文本指令外,Skills 还可以包含供 Claude 调用的可执行代码。
虽然大型语言模型在众多任务中表现优异,但在某些场景下,传统的代码执行更为高效且可靠。例如,对列表进行排序,直接运行算法远比让 LLM 生成排序后的文本要经济得多。更重要的是,许多企业级应用对结果的确定性有严格要求,这是单纯的概率模型难以保证的。
通过集成 Python 脚本等工具,Skills 能够实现高度可靠的自动化流程。例如,一个包含预写 Python 脚本的技能可以自动读取 PDF 文件并提取表单字段。在此过程中,Claude 无需将整个脚本或 PDF 内容加载到上下文中,仅需调用脚本即可。这种基于代码的工作流不仅节省了上下文资源,还确保了结果的一致性和可重复性。
Skills 执行的工具代码(来自:Equipping agents for the real world with Agent Skills[6] )
SKILL.md 编写指南 SKILL.md是定义技能行为的核心文件。它是一个标准的 Markdown 文件,由两部分组成:**Frontmatter(前言)*和*正文内容 。前言用于配置技能的元数据和运行权限,而正文内容则详细指导 Claude 如何执行操作。
Frontmatter(前言)配置 Frontmatter 位于文件的头部,采用 YAML 格式编写,包含控制 Claude 如何发现和使用该技能的关键配置。以下是一个典型的skill-creator前言示例:
--- name: skill-creator description: Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations. license: Complete terms in LICENSE.txt ---description :技能功能的简要概述。这是 Claude 判断是否调用该技能的核心依据。描述应采用清晰、行动导向的语言(如“当用户想要创建新技能时使用此技能”),以帮助 Claude 准确匹配用户意图。allowed-tools (可选):定义该技能可自动使用的工具列表,无需用户每次批准。model (可选):指定执行该技能的模型版本。默认继承当前会话模型,但对于代码审查等复杂任务,可指定更强大的模型。version (可选):版本号(如 "1.0.0"),用于版本控制和文档管理。disable-model-invocation (可选):如果设置为true,Claude 将不会自动调用该技能。这适用于需要用户显式通过/skill-name触发的高风险操作或配置命令。SKILL.md 提示内容编写 Frontmatter 之后是 Markdown 正文,即 Claude 在调用技能时实际读取的提示信息(Prompt)。这是定义技能行为、指令和工作流的地方。编写高效提示的关键在于简洁性 和渐进式披露 :在SKILL.md中仅提供核心指令,细节内容则通过外部文件引用。
--- # 文档前置信息 --- # [简要用途说明 - 1–2 句话] ## 概述 [描述此技能的功能、使用场景及所提供的价值] ## 前置条件 [列出所需的工具、文件或上下文] ## 操作步骤 ### 步骤 1:[第一步操作] [使用祈使句给出明确指令] [必要时提供示例] ### 步骤 2:[下一步操作] [使用祈使句给出明确指令] ### 步骤 3:[最后一步操作] [使用祈使句给出明确指令] ## 输出格式 [说明结果应如何组织] ## 错误处理 [当出现问题时的应对措施] ## 示例 [提供具体的使用示例] ## 相关资源 [引用随附的 scripts/、references/、assets/ 等内容]提示内容编写最佳实践:
控制篇幅 :建议控制在 5000 字(约 800 行)以内,避免上下文过载。使用指令性语言 :直接使用祈使句(如“分析代码以发现...”),避免冗长的第二人称描述(如“你应该...”)。引用外部文件 :将详细文档、规范或长文本移至外部文件,通过引用加载。使用相对路径 :始终使用{baseDir}变量指定路径,严禁硬编码绝对路径(如/home/user/project/)。当技能被激活时,Claude 将获得allowed-tools中指定工具的访问权限,并根据配置加载相应的模型。技能的根目录路径会自动注入,确保能够正确访问所有绑定的资源。
辅助资源的组织与绑定 为了充分发挥 Skills 的潜力,通常需要将辅助资源与SKILL.md捆绑在一起。推荐的标准目录结构包含以下三个子目录:
my-skill/ ├── SKILL.md # 核心提示词与指令 ├── scripts/ # 可执行脚本 (Python/Bash) ├── references/ # 需加载到上下文的参考文档 └── assets/ # 静态资源与模板为什么要进行资源打包? 资源打包的核心目的是保持SKILL.md的精简(建议不超过 5000 字),防止无效信息占用 Claude 的上下文窗口。通过将详细文档、脚本和模板分离,Claude 可以利用渐进式披露技术,仅在真正需要时加载特定资源。
scripts/ :存放 Claude 可通过 Bash 工具调用的可执行代码。包括自动化脚本、数据处理程序、验证器或代码生成器,用于执行确定性任务。references/ :存放 Claude 在需要时会读取到上下文中的参考文档。包括 Markdown 指南、JSON Schema、API 规范、检查清单等。凡是对于SKILL.md来说过于冗长,但对任务执行又必不可少的文本内容,都应放入此处。assets/ :存放 Claude 可以引用但通常不会直接加载到上下文中的静态文件。包括 HTML/CSS 模板、图片、字体或二进制文件。总结 鉴于 Claude 核心架构的闭源特性,本文主要从应用层面对 Skills 进行了剖析。随着 AI 代理生态的发展,类似的设计模式正在被广泛采纳。在后续的文章中,我们将结合开源框架 LangChain 的 Deep Agents,进一步探讨这种架构在更广泛场景下的实现与应用。