从零开始,完全掌握 AI 智能体技能系统——让 Claude 拥有「专业手艺」的模块化能力扩展框架
Skill(技能)是 Claude 的一种模块化能力扩展机制。每个 Skill 本质上是一个包含指令、脚本和资源文件的文件夹,当 Claude 判断某个任务与某个 Skill 相关时,会自动加载其中的指令来指导自己完成任务。
简单来说,Skill 就像是给 Claude 发了一本「专业操作手册」。平时手册放在书架上不占桌面空间,需要时才拿下来翻开使用。
想象 Claude 是一位厨师。他天生聪明,什么菜都能做。但如果你给他一本《正宗四川火锅详细教程》(=一个 Skill),他做出来的火锅就会更正宗、更稳定。这本食谱不是让厨师变聪明了——而是让他在做这道具体的菜时,有了标准化的步骤和配方可以参照。
Skill = 一组打包好的专业指令 + 可选的脚本/资源,让 Claude 在特定任务上表现得更专业、更稳定、更可复用。
Claude 本身已经很强大,但面对某些任务时,没有 Skill 和有 Skill 的区别非常明显:
你当然可以凭记忆从家开车到一个去过一次的餐厅。但打开导航(= Skill),你会走最优路线、避开拥堵、不会走错路。导航不是代替你开车,而是给你最佳路径指引。Skill 就是 Claude 的「任务导航」。
| 痛点 | Skill 的解决方案 |
|---|---|
| 输出不稳定 | 标准化流程和模板,每次执行一致 |
| 需要反复教 | 写一次 Skill,永久复用 |
| 上下文浪费 | 渐进式加载:只在需要时才加载详细内容 |
| 无法共享 | 打包为 .skill 文件,一键安装分享 |
每个 Skill 本质上就是一个文件夹,结构非常简洁:
把 Skill 想象成一个标准化的工具箱。箱子上有标签写着「这是电工工具箱」(= SKILL.md 的元数据),打开后最上面是操作说明书(= SKILL.md 正文),下面分隔层里放着螺丝刀、电笔等工具(= scripts)和参考手册(= references)。你只需要拿相关的工具,不用全部倒出来。
--- name: daily-report description: "生成团队日报。当用户提到日报、每日总结、工作汇报时触发此 Skill。" --- # 团队日报生成器 ## 工作流程 1. 询问用户今天完成的工作内容 2. 按照以下模板整理输出 3. 生成 Markdown 格式的日报 ## 输出模板 # [日期] 工作日报 ## 今日完成 ## 进行中 ## 明日计划 ## 需要协助
就这么简单!一个 SKILL.md 文件就是一个完整的 Skill。上面的 YAML 部分(两行 --- 之间)是元数据,下面的 Markdown 正文是详细指令。
Skill 最精妙的设计是它的三级渐进式加载(Progressive Disclosure)机制。这保证了效率——不用的指令不占空间。
Claude 启动时,会加载所有可用 Skill 的 name 和 description。就像看书架上每本书的书脊标题——只需一眼就知道有什么,每个 Skill 仅占约 100 tokens。
当 Claude 判断某个 Skill 与当前任务相关时,才加载该 Skill 的完整指令。就像从书架上取下那本书翻开阅读。
SKILL.md 中引用的脚本、参考文档、模板等,只有在实际需要时才会读取或执行。就像翻到食谱某一页后,发现需要用到附录里的酱料配方表,才翻到附录去看。
Level 1 = 在图书馆的电子目录里搜索,瞬间找到哪些书可能有用。Level 2 = 走到书架前把那本书取下来翻阅目录和正文。Level 3 = 正文提到「详见参考文献 A」,你才去查阅参考文献。你不会一次把图书馆所有书都搬到桌上。
Claude 的上下文窗口是有限的。渐进式加载意味着你可以安装几十个 Skill,但只有当前任务需要的那个才会占用上下文空间。这就好比你手机里装了 100 个 App,但同时运行的只有当前打开的那几个。
Skill 有两种调用方式,取决于谁来决定「用不用这个 Skill」:
| 调用方式 | 触发者 | 使用场景 | 示例 |
|---|---|---|---|
| 模型自动调用 | Claude 自主决定 | Claude 扫描描述后认为相关,自动加载 | 用户说「帮我做个 PPT」→ Claude 自动加载 pptx Skill |
| 用户显式调用 | 用户主动触发 | 通过命令 /skill-name 直接调用 |
用户输入 /deploy → 执行部署 Skill |
例如:「帮我把这个数据整理成 Excel 表格」
对比用户请求与每个 Skill 的 description,判断哪个最相关。此处看到 xlsx Skill 的描述包含「spreadsheet」「xlsx」等关键词。
读取 xlsx Skill 的 SKILL.md 正文,获取详细的操作指令、脚本路径、最佳实践。
Claude 遵循 Skill 中的步骤:安装必要的包、使用指定的库、按模板生成输出文件。
将生成的 Excel 文件呈现给用户下载。
Skills 就像自助餐台上的菜品。你不用告诉服务员(Claude)去厨房用什么做法——当你指着一道菜说「我要这个」时,后厨的标准食谱(Skill)就会自动被启用。有时候你甚至不需要指,服务员看到你拿了意大利面,就自动给你配上帕玛森芝士(自动触发相关 Skill)。
Skill 的 description 字段是决定是否被触发的唯一依据。写得太模糊会导致「该触发时不触发」,写得太泛会导致「不该触发时也触发」。好的 description 应该既包含 Skill 能做什么,也包含在什么场景下应该使用。
让我们一步步创建一个真实可用的 Skill。我们将创建一个「会议纪要生成器」。
你开了一家奶茶店,想让每个员工做出来的珍珠奶茶味道一样。你不会每次都口头教——你会写一份 SOP:珍珠煮多久、糖放多少克、奶茶比例多少。这份 SOP 就是你的 Skill。
mkdir meeting-notes cd meeting-notes touch SKILL.md
--- name: meeting-notes description: "生成结构化的会议纪要。当用户提到会议纪要、 meeting notes、会议记录、会议总结时使用此 Skill。" --- # 会议纪要生成器 根据用户提供的会议信息,生成结构化的会议纪要。 ## 工作流程 1. 确认以下信息(如用户未提供则主动询问): - 会议主题 - 参与人员 - 会议日期 - 讨论内容要点 2. 按照下方模板整理输出 3. 提取关键的待办事项(Action Items)并标注负责人 ## 输出模板 使用以下 Markdown 格式: ``` # 会议纪要:[主题] **日期**:[YYYY-MM-DD] **参会人**:[人员列表] **记录人**:AI 助手 ## 会议要点 - [要点 1] - [要点 2] ## 决议事项 | 编号 | 决议 | 负责人 | 截止日期 | |------|------|--------|----------| ## 待办事项 (Action Items) - [ ] [任务] — @[负责人] — DDL: [日期] ## 下次会议 - 时间: - 议题: ``` ## 注意事项 - 语言风格保持正式、简洁 - 待办事项必须有明确的负责人 - 如果信息不完整,先总结已有信息,再列出需要补充的部分
根据你使用的平台,安装方式不同(详见第 10 章)。在 Claude.ai 中,你可以将文件夹压缩为 zip,然后在「设置 → 功能 → 自定义技能」中上传。在 Claude Code 中,放到 .claude/skills/ 目录即可。
只需一个包含 SKILL.md 的文件夹,你就完成了你的第一个 Skill。当你下次对 Claude 说「帮我整理一下今天的会议纪要」时,这个 Skill 就会自动触发。
| 字段 | 必需 | 说明 |
|---|---|---|
name | ✅ 是 | Skill 的唯一标识符,小写字母+连字符,如 daily-report |
description | ✅ 是 | 触发描述。是 Claude 决定是否加载此 Skill 的依据,尽量详细 |
context | 否 | 设置为 fork 时,Skill 在独立子智能体中执行 |
agent | 否 | 指定执行 Skill 的子智能体类型(Explore、Plan 等) |
disable-model-invocation | 否 | 设为 true 则禁止 Claude 自动调用,仅限用户手动触发 |
user-invocable | 否 | 设为 false 则用户不能手动调用,仅供 Claude 自动使用 |
description 就像一则招聘广告。它不仅要说清楚这个岗位做什么(「负责前端开发」),还要说清楚什么人应该来应聘(「有 React 经验的前端工程师」)。同样,description 要说清楚 Skill 做什么,以及在什么情况下应该使用它。
简单的 Skill 只需一个 SKILL.md。但对于复杂任务,你可以添加可执行脚本和参考文档。
脚本是 Skill 的「肌肉」——它们处理确定性的、重复性的任务,比如文件转换、数据处理等。
在 SKILL.md 中引用脚本:
## 数据清洗
使用内置脚本清洗 CSV 文件中的异常值:
```bash
python scripts/clean_csv.py input.csv output.csv
```
脚本会自动处理:空行删除、编码转换、列名标准化。
当 Skill 需要支持多种场景时,把不同场景的详细说明拆分到 references/ 目录中:
Claude 只会读取与当前任务相关的那个参考文件。如果用户说「部署到 AWS」,Claude 只加载 aws.md,不会浪费上下文读取 gcp.md。
你家有一套 20 卷的百科全书。查「植物」相关内容时,你只抽出「自然科学卷」来翻,不会把 20 卷全搬到桌上。references/ 就是这样——只加载需要的那一卷。
assets/ 目录用来存放输出中会用到的静态资源,如模板文件、公司 Logo 图片、自定义字体等。Claude 在执行任务时会直接引用这些文件。
Skill 是跨平台的开放标准。创建一次,可以在 Claude 的所有产品中使用:
| 平台 | 预置 Skill | 自定义 Skill | 安装方式 |
|---|---|---|---|
| Claude.ai | ✅ 自动可用 | ✅ 上传 .zip | 设置 → 功能 → 自定义技能 → 上传 |
| Claude Code | ✅ 内置 | ✅ 文件夹 | 放入 .claude/skills/ 目录 |
| Claude API | ✅ skill_id | ✅ 上传 API | 通过 Skills API 上传并在 container 参数中引用 |
| Agent SDK | ✅ 同 API | ✅ 自动发现 | 放入 .claude/skills/,SDK 自动发现 |
将你的 Skill 文件夹压缩为 .zip 文件(确保 SKILL.md 在根目录)。
打开 Claude.ai → 点击左下角「设置」→「功能」→ 找到「自定义技能」。
上传 .zip 文件。安装成功后,Claude 会自动在相关任务中使用该 Skill。
import anthropic client = anthropic.Anthropic() response = client.messages.create( model="claude-sonnet-4-20250514", max_tokens=4096, tools=[{"type": "code_execution"}], # 在 container 中指定 Skill container={ "type": "default", "skills": [ { "type": "anthropic", "skill_id": "pptx", # 预置 Skill }, { "type": "custom", "skill_id": "sk_abc123", # 自定义 Skill } ] }, messages=[{ "role": "user", "content": "创建一份 Q3 销售汇报 PPT" }] )
Skill 和 MCP 是 Claude 生态中两种互补的扩展机制。理解它们的区别是架构决策的关键。
Skill 像是厨师的食谱——它教你怎么做菜(内部指令),轻量、快速、不需要外部连接。MCP 像是外卖平台——它连接你和外部的餐厅(外部服务),需要网络、需要认证、但能获取你自己做不了的东西。
| 维度 | Skill | MCP |
|---|---|---|
| 本质 | 指令注入(提示词扩展) | 外部服务连接(协议标准) |
| 数据来源 | 内置知识 + 本地文件 | 实时外部数据源 |
| 执行位置 | Claude 内部 | 外部服务器 |
| 上下文消耗 | 轻量(渐进加载) | 较重(工具定义+返回值) |
| 延迟 | 低(本地) | 取决于外部服务 |
| 需要网络 | 不需要 | 需要 |
| 适用场景 | 标准化流程、文档生成、知识封装 | 数据库查询、API 调用、发送消息 |
最强大的方案往往是两者结合。例如:用一个 Skill 来定义「周报的生成流程和格式」,同时用 MCP 来实时拉取 Jira 任务列表和 GitHub PR 数据。Skill 负责「怎么做」,MCP 负责「用什么数据」。
截至 2026 年初,Skill 生态已经蓬勃发展:
Skill 可以执行任意代码。务必只安装来自可信来源的 Skill。安装前检查 SKILL.md 和脚本内容,确保没有恶意代码。Skill 不应收集敏感信息、连接不明服务、或请求不必要的权限。
Agent Skills 是让 AI 从「通才」变为「专才」的关键机制。它用最简单的形式(一个 Markdown 文件)实现了强大的能力扩展——标准化的输出质量、高效的上下文管理、便捷的知识共享。无论你是想让 Claude 更好地完成日常工作,还是想为团队构建可复用的 AI 工作流,现在就是开始编写你的第一个 Skill 的最好时机。