Skill(技能包)
Skill 是一种打包好的、可复用的能力单元——通常是一段说明文字,有时还搭配脚本或参考文件——智能体只有在任务真正用得上时才会把它加载进上下文。
大多数智能体一开始只有一个通用的系统提示词和固定的工具集。如果什么能力都塞进提示词里,上下文很快就会被无关内容占满。Skill 的思路是把某个具体能力单独打包成一个文件夹——一份说明(有时还带脚本、模板或参考资料)——只有当前任务真的匹配得上,才把它加载进来。
这样做的核心好处是节省上下文:智能体可能“知道”几十个 Skill 的存在,但每次对话只会按需加载一两个真正相关的,而不是把所有可能用到的指令常年挂在提示词里。
Claude Skills 是这个模式的一个具体实现:每个 Skill 是一个文件夹,里面有一个 SKILL.md 文件,用 YAML frontmatter 写明名称和“什么情况下该用它”的描述,后面跟着具体操作说明。智能体在运行时会自己判断当前任务是否匹配某个 Skill 的描述。
怎么运作
实际运行时,智能体(或运行它的程序)会先低成本地保留所有可用 Skill 的名称和描述列表。一旦用户的请求看起来匹配某个 Skill 的描述,就把那个 Skill 完整的说明内容——以及它引用的其他文件——加载进上下文,智能体再照着这份说明继续干活。如果没有匹配上,这些内容完全不会被加载。
举个例子
skills/pdf-forms/SKILL.md
---
name: pdf-forms
description: 填写并压平 PDF 表单字段。当用户要求填写或补全一份 PDF 表单时使用。
---
1. 用 PDF 处理库识别表单字段。
2. 把提供的值对应到字段名上。
3. 填写并压平表单。和相关概念的区别
Skill 和工具(tool)的区别:工具是一个输入参数固定的可调用函数(参见 function-tool-calling),而 Skill 是更大的一个说明和资源包,里面甚至可能会指导智能体该如何组合使用多个工具来完成任务。
常见误解
常见问题
Claude Code 里的 Skill 是什么?
做一个 Skill 需要写代码吗?
Skill 和 tool 有什么区别?
最近核实: 2026-08-28