# 6.1 什么是 Claude Skills：模块化的专业能力扩展

在 2025 年 10 月，Anthropic 正式发布了 **Agent Skills** 功能。这标志着 Claude 从一个通用的对话助手，进化为可以被 **定制化增强** 的专业化平台。

## 6.1.1 官方定义

根据 Anthropic 官方博客的定义：

> **Skills are folders that include instructions, scripts, and resources that Claude can load when needed.**

翻译过来就是：**Skills 是包含指令、脚本和资源的文件夹，Claude 可以在需要时动态加载它们。**

这个定义揭示了 Skills 的三个核心特征：

1. **文件夹结构**：Skills 不是一段 Prompt 文本，而是一个工程化的目录。
2. **多类型资源**：可以包含 Markdown 指令、可执行脚本、参考文档等。
3. **按需加载**：Claude 会根据任务自动判断是否需要加载某个 Skill。

## 6.1.2 核心范式转变：从 Prompt Engineering 到 Context Engineering

Skills 的出现代表了一个更深层次的理念转变：**上下文工程（Context Engineering）**。

传统的 *Prompt Engineering* 关注如何通过话术让 AI “听懂指令”。而 *Context Engineering* 将模型的有限上下文窗口视为一种 **稀缺的计算资源**：

* **信噪比优化**：每一个 Token 都应该提供有效信息，Skills 封装高密度的专业知识，避免通用废话占用上下文。
* **渐进式披露**：不要一次性把所有知识塞给 Claude，Skills 支持 **Just-In-Time** 动态加载——只有当任务需要时，才注入相关上下文。

## 6.1.3 信息架构：Skills 的三层模型

为了实现高效的“上下文工程”，Skills 采用了三层信息架构设计。理解这个模型是写好 Skills 的基础。

| 层级                   | 内容                     | 加载时机              | 作用                                                             |
| -------------------- | ---------------------- | ----------------- | -------------------------------------------------------------- |
| **L1: Metadata**     | `name` 和 `description` | **Always Active** | 就像函数的签名。Claude 始终“看得到”这部分信息，用于判断是否调用该 Skill。因此这部分必须极其精简且具有区分度。 |
| **L2: Instructions** | `SKILL.md` 的正文         | **On Trigger**    | 就像函数的函数体。只有当 Skill 被命中（L1 匹配成功）时，这部分内容才会被加载到上下文中。              |
| **L3: Resources**    | Scripts, References    | **On Demand**     | 就像函数调用的外部库。脚本只在执行时运行，参考文档只在明确读取时加载。这部分几乎不占用上下文窗口。              |

**设计启示**：

* **L1 要“轻”**：不要在 description 里写具体操作步骤，只写“做什么”和“何时做”。
* **L2 要“准”**：正文聚焦于具体执行逻辑。
* **L3 要“全”**：把大量知识库和复杂逻辑下沉到 L3。

## 6.1.4 Skills 的四大特性

根据官方发布，Skills 具备以下核心特性：

| 特性                  | 说明                                            |
| ------------------- | --------------------------------------------- |
| **Composable（可组合）** | 多个 Skills 可以叠加使用，Claude 会自动协调它们的调用顺序          |
| **Portable（可移植）**   | 同一个 Skill 可以在 Claude.ai、Claude Code 和 API 中通用 |
| **Efficient（高效）**   | 只加载当前任务所需的最小信息集，不会拖慢响应速度                      |
| **Powerful（强大）**    | Skills 可以包含可执行代码，处理 Token 生成不擅长的任务（如精确计算）     |

## 6.1.4.1 为什么说 Skills 不是“玄学功能”

一个常见误解是：Skill 只是换了一种包装方式的 Prompt，本质上有没有都差不多。

2026 年的 SkillsBench 基准测试给出了更有说服力的答案：**高质量、人工策展的 Skills 通常能显著提升智能体完成任务的成功率，但模型临时自写的 Skills 平均并不能带来稳定收益。**

这说明了两件事：

1. **Skills 确实能工作**：它们不是“心理安慰式配置项”，而是可以被独立测量、经常能带来真实增益的运行时增强机制。
2. **Skill 质量高度依赖工程设计**：模型可能会受益于一份好 Skill，但并不意味着它能稳定写出同等质量的 Skill。

对 Claude 用户而言，这个结论非常重要：如果你已经知道某类任务需要固定流程、外部脚本、检查清单和错误处理，那么把这些知识沉淀成 Skill，通常比每次重新写长 Prompt 更稳。

## 6.1.5 Skills vs Prompts vs Projects vs MCP

这四个概念容易混淆，需要理清它们的区别：

| 概念                | 本质     | 何时使用                   | 持久性   |
| ----------------- | ------ | ---------------------- | ----- |
| **System Prompt** | 对话开场白  | 设定整体风格和角色              | 单次会话  |
| **Projects**      | 知识库容器  | 存放参考文档供 RAG 检索         | 跨会话持久 |
| **MCP**           | 外部连接协议 | 连接 Notion、Slack 等外部数据源 | 配置后持久 |
| **Skills**        | 专业能力包  | 封装特定任务的最佳实践和可执行逻辑      | 跨会话持久 |

**关键区别**：

* Projects 提供 **静态知识**（What to know）
* MCP 提供 **外部数据访问**（Where to look）
* Skills 提供 **执行方法**（How to do）

一个实际的例子：

* **Project**: 存放公司的品牌规范 PDF
* **MCP**: 连接 Figma 获取设计稿
* **Skill**: 封装如何根据品牌规范检查设计稿的具体流程

## 6.1.6 Skills 的运作机制

Skills 的核心是 **按需增强（On-Demand Augmentation）**：

{% @mermaid/diagram content="graph LR
subgraph "Skills Router"
direction TB
R\["Semantic Analysis"]
end

```
User(["User Request"]) --> R
R -->|"Match"| S1["Skill A"]
R -->|"Match"| S2["Skill B"]
R -->|"No Match"| Base["Base Claude"]

S1 --> C(("Claude"))
S2 --> C
Base --> C

C --> Resp(["Response"])" %}
```

工作流程：

1. **语义分析**：Claude 分析用户请求，与所有可用 Skills 的 `description` 进行语义匹配。
2. **智能选择**：这不是关键词匹配，而是理解上下文的语义匹配。多个 Skills 可以同时激活。
3. **动态加载**：仅加载匹配 Skill 的最小必要信息。
4. **执行任务**：使用 Skill 中的指令和工具完成任务。

## 6.1.7 Skills 的运行时架构（进阶）

> **来源说明**：本节内容基于社区对 Claude Code 源代码的逆向分析（HitCC 项目，CC BY 4.0），描述的是 Claude Code CLI 的内部实现。具体行为可能随版本更新而变化。

前文 6.1.3 节的 L1/L2/L3 描述的是 Skill **信息的分层组织**（元数据 → 正文 → 资源）。本节则从另一个维度——**运行时处理流水线**——来理解 Skills 系统在 Claude Code 内部是如何工作的：

| 阶段      | 名称        | 职责                                                 |
| ------- | --------- | -------------------------------------------------- |
| **注册**  | 聚合来源      | 从多个来源（内置、项目目录、插件、MCP 命令等）聚合所有可用 Skill              |
| **发现**  | 动态匹配      | 运行时根据文件路径和条件触发动态注册，支持"条件激活"——某些 Skill 只在访问特定目录时才启用 |
| **注入**  | Prompt 组装 | 通过声明列表和已调用 Skill 的指令两种方式注入上下文                      |
| **执行**  | 调用处理      | 处理斜杠命令调用和工具调用，支持内联展开和 Fork（子代理）两种执行路径              |
| **持久化** | 状态保持      | 在 compact 和 resume 操作中保持 Skill 调用状态                |

### 关键洞察：Prompt 中的 Skill 列表只是子集

运行时实际存在多个不同的 Skill 集合——全量注册表、可用性过滤后的运行时集合、向模型声明的 Prompt 子集、以及实际可执行的 Skill 池。模型只能调用在 Prompt 中声明的 Skill，但系统可以执行更多未声明的 Skill（如通过斜杠命令直接触发）。

### Skill 可以改变执行环境

Skill 不仅仅是"信息传递"——在 Claude Code 中，被激活的 Skill 可以**直接改变运行时执行上下文**，例如声明额外的工具权限、指定使用特定模型、调整推理投入程度等。这意味着一个 Skill 被激活后，它不只是给模型提供了额外的指令文本，而是可能**重塑了整个执行环境**的参数。

### Fork 模式

当 Skill 以 Fork 模式执行时（即在子代理中运行），系统会先将 Skill 预编译为完整的 prompt（包含所有必要的上下文和指令），然后在子代理上执行。这确保了子代理收到的是一个自包含的、完整的任务描述。

## 6.1.8 为什么需要 Skills？

### 降低 Prompt 工程门槛

普通用户无需编写复杂的 Prompt，只需启用相应的 Skill。例如，启用 `Excel Skill` 后，Claude 就能生成带有正确公式的专业电子表格。

### 团队标准化

企业可以定义标准的 Skills 并分发给所有员工。无论谁在使用 Claude，生成的内容都符合公司规范。

### 质量保证

Skills 可以包含可执行代码。对于需要精确计算的任务（如财务分析、数据处理），由代码执行而非 Token 生成，确保 100% 准确。

### 成本优化

SkillsBench 还提示了一个经常被低估的现实价值：**小模型 + 高质量 Skill，往往可以逼近大模型裸跑的效果。**

这意味着 Skill 不只是“让最强模型更强”，也是一种很实际的 **成本控制手段**：

* 简单和中等复杂度任务，可以优先尝试 Sonnet / Haiku + Skill；
* 只有在 Skill 无法覆盖或任务本身极其开放时，再升级到更贵的模型；
* 对稳定重复的企业流程，Skill 的一次性编写成本，往往能被后续的大量复用迅速摊薄。

***

理解了 Skills 的概念后，接下来我们深入探讨一个 Skill 的内部结构——官方的 `SKILL.md` 文件格式是什么样的？

➡️ [Skills 的结构与组成](https://yeasy.gitbook.io/claude_guide/di-san-bu-fen-jin-jie-pian/06_skills/6.2_structure)
