# 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 会自动判断和调用相关 Skill        |
| **Portable（可移植）**   | 同一个 Skill 可以在 Claude.ai、Claude Code 和 API 中通用   |
| **Efficient（高效）**   | 只加载当前任务所需的最小信息集，通过分层加载优化上下文使用                   |
| **Powerful（强大）**    | Skills 可以包含可执行脚本，处理 Token 生成不擅长的任务（如精确计算、文件格式化） |

### 为什么说 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
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 的结构与组成](/claude_guide/di-san-bu-fen-jin-jie-pian/06_skills/6.2_structure.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://yeasy.gitbook.io/claude_guide/di-san-bu-fen-jin-jie-pian/06_skills/6.1_intro.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
