【什么是Skill】

在现代基于大模型(LLM)的智能代理(agent)架构中,LLM是AI Agent的“大脑”,负责思考和规划,Skill(技能)是"手脚",负责执行和行动,通常指一组封装好的、面向特定功能的可调用单元(函数、API、服务或子代理),这些单元可以被Agent在推理过程中动态调用以完成具体任务。

在某些框架中也被称为 Tools 或 Plugins,任何本地函数、外部 REST API、数据库查询器、检索器(retriever)、工具(tool)或一组复合能力(组合 skill)等都可以被看做是Agent Skill。

通常,Skill会被放入System Prompt中,让LLM知道有什么Skill可以使用。在LangChain等框架中会显示提供Skill和LLM的绑定,在Invoke时,同样会将Skill放入提示词中。

一个 Skill 通常包含以下三个核心要素:

  • 描述/元数据(Schema/Description): 这是写给 LLM 看的说明书。它告诉模型:“这个技能叫什么?有什么用?输入参数需要什么格式?”

  • 权限(Authorization): 访问外部服务所需的 API Key 或认证令牌

  • 功能逻辑(Implementation): 这是一段具体的代码(如 Python 函数、API 调用),用于执行特定任务(例如:查询天气、发送邮件、查询数据库)

【Skill 的作用与价值】

  • 扩展能力边界:把 LLM 的文本生成能力与现实世界操作(检索知识、执行命令、调用服务)连接起来
  • 复用与模块化:同一 Skill 可以被不同 agent 复用,便于维护与升级
  • 提升可靠性与可控性:将高风险或高确定性任务(如支付、下单、系统配置)放入受控代码/服务中,而不是让模型“想象”答案

【Claude Code Skill】

Claude Code Skill 是 Claude Code(Anthropic 推出的终端原生 AI 编程工具)用来扩展其能力的一种机制,是 Agent Skills 开放标准在软件编程领域的一种具体实现方式。

其将Skill推到新的阶段——可以用过纯自然语言描述实现Skill,而在通用Agent Skill中,Skill需要通过代码编写的方式实现。

在软件编程领域,存在极其强大的Bash,可以实现文件的增删改查,程序的调用执行等,Claude Code基于Bash等实现了极为强大的工具。

Skill.md中的逻辑描述经过解析后,其最终执行时所需的能力均可通过这些工具实现,一些与业务相关的特有的能力可以通过命令行调用py方式实现,因此只需做纯自然语言描述即可。

两者区别如下:

维度 通用 Agent Skill (如 LangChain Tools, OpenAI Plugins) Claude Code Skill (Claude Code 特有实现)
存在形式 代码/API:通常是 Python/JS 函数,或者通过 HTTP API 暴露的服务。 文件/Markdown:以本地目录形式存在,核心是 SKILL.md 文档和关联脚本(如 Bash 脚本)。
注册方式 显式注册:需要在代码中实例化工具类(如 tools = [search_tool])或通过 API 上传 Schema。 自动发现:Claude Code 会自动扫描项目目录中的 Skill 定义,无需手动编写注册代码。
交互媒介 函数调用 (Function Calling):LLM 输出 JSON 参数 →→ 代码执行 →→ 返回字符串结果。 Bash 命令与文件操作:Claude Code 通过在终端执行 Bash 命令、读取/编辑文件来与 Skill 交互。
上下文管理 一次性加载:通常将工具的描述一次性放入 Prompt 中(容易占用 Token)。 渐进式披露 (Progressive Disclosure):分级加载(元数据 →→ 指令 →→ 资源)。只有当 Claude 决定使用该 Skill 时,才会加载详细的指令内容,极大节省上下文窗口。
执行环境 沙箱/云端:通常运行在 Python 解释器或云端服务器中。 本地终端 (Terminal):直接在用户的本地开发环境中运行,拥有访问本地文件系统、运行 git 命令等权限。

【Claude Code Skill 的具体结构】

一个Skill的完整目录结构如下:

my-skill/
  SKILL.md
  scripts/
  assets/
  references/

  • SKILL.md(必需):Skill 的核心文件
  • scripts/(可选):放 Python/Bash 等脚本,让 Skill 在流程中可调用本地工具(例如 lint、format、生成代码、跑测试)
  • assets/(可选):常用于生成文件的模板(比如 PR 描述模板、报告模板)、代码脚手架/配置样板、固定格式输出(减少模型“临场发挥”导致的漂移)
  • references/(可选):参考资料/规范/手册,例如团队代码规范、API 文档摘录、安全/合规要求等,供 Skill 执行时查阅。信息不应该同时存在于Skill.md和references中,如果信息量过大,可以将简略信息放置前者,详细信息放入后者

Skill文档内容

由 YAML 元数据 和 Markdown 指令 两部分组成的混合体

YAML Frontmatter (元数据头)位于文件的最顶部,用 --- 包裹,是Skill的元数据,是“索引层”,通常在Claude Code启动时就常驻加载,让系统知道技能是否可用、何时可用,有如下关键字段:

  • name: 技能名称(通常与文件夹名一致)
  • description: 简短描述。非常重要,因为 Claude 依靠这段文字来进行语义匹配,需要包括两个方面的内容,具体能力(即能干什么)、触发场景(即什么时候可以使用),也可以增加使用限制(即什么情况下不使用)。

Markdown Body (指令正文),这是当 Skill 被触发后,注入到 Claude 上下文中的具体 Prompt,模型按照要求做事。完整的内容如下:(很多不是必须的)

  • 目标与范围(Goal/Scope)
  • 输入要求(需要用户提供什么、文件路径、上下文)
  • 输出协议(必须产出哪些段落/字段/格式,如 JSON、表格、固定章节)
  • 约束规则(禁止行为,哪些必须要做)
  • 操作步骤(分阶段依次做哪些事情,可以引用其他Skill)
  • 决策规则(优先级、if/then、边界条件、冲突处理)

【Skill使用】

Skill创建

使用Anthropic 提供的 skill-creator Skill创建Skill

Skill获取

可从以下渠道获取Skill,注意这些skill可以用于Claude Code、Cursor、

Skill优化

  • skill冲突:随着skill逐渐增多,必然出现skill冲突的情况,需要在skill中指定优先级或者设计为互斥的或者指定使用某个skill
  • 精简skill:skill最好保持精简,小于500行。必要时需要对skill中的Body做转向优化,以减少输入token消耗,也可以用Skill-Creator自检
  • skill组合:一个skill只做一件事,不要做一个万能Skill,不能skill之间可以通过指定的方式做不同组合,可以是链式或有向无环图组合,以实现不同功能
  • 尽可能脚本化:一个功能可以通过底层的 Python/Bash 脚本实现的,不要放在skill boby中描述,使用脚本更快速、确定、节省token
  • 定期迭代:通过skill-creator生成skill后还需要做定期微调迭代

【参考】

https://code.claude.com/docs

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐