SKILL.md 怎么写?Claude Code 技能系统入门指南
SKILL.md 怎么写?Claude Code 技能系统入门指南
Prorise第七章. Agent Skills 技能系统
本章摘要:斜杠命令需要你显式输入 /xxx 才能触发。但有些能力,你希望 Claude 能 “自动识别” 何时使用——比如当你提到 “PDF” 时,它自动知道该用 PDF 处理技能。Agent Skills 就是这种 “自动匹配” 的能力系统。
本章学习路径
| 阶段 | 内容 | 解锁能力 |
|---|---|---|
| 第一阶段 | Skills 与其他功能的区别 | 理解 Skills 的定位和适用场景 |
| 第二阶段 | 创建 Skill | 掌握 SKILL.md 的编写方法 |
| 第三阶段 | 实战创建 | 完成一个代码解释 Skill 的配置 |
7.1. Skills 与其他功能的区别
上一章我们学会了创建斜杠命令。但斜杠命令有个特点:必须显式调用。
“其实就是相当于给AI定义不同的角色,是吗? 但是这样子的话,它和subagent有什么区别呢?”
可以理解为这个新的技能功能其实就是给 AI 定义不同的角色和风格。区别在于,Sub Agent 更像是一个真正独立的小助手,有自己独立的运行逻辑和上下文处理。而技能更像是给同一个 AI 主体戴上不同的“帽子”或设定不同的“模式”,让它在同一个环境里按照不同的风格来工作。简单来说,Sub Agent 是真正的独立个体,而技能只是让同一个 AI 切换不同的工作风格而已。
“我想让 Claude 更智能一点——当我说’帮我处理这个 PDF’时,它自动知道该怎么做,而不是我每次都要输入 /pdf。”
这就是 技能Claude 自动匹配并应用的能力模块 的用途。
7.1.1. Skills vs 斜杠命令
| 维度 | 斜杠命令 | Agent Skills |
|---|---|---|
| 触发方式 | 显式(输入 /xxx) | 隐式(Claude 自动判断) |
| 适用场景 | 固定操作(如 /commit) | 领域能力(如 PDF 处理) |
| 复杂度 | 单文件 | 可包含多个支持文件 |
| 发现机制 | 用户记住命令名 | Claude 根据描述匹配 |
选择建议:
- 如果是 “我想执行某个固定操作” → 用斜杠命令
- 如果是 “我想让 Claude 具备某种能力” → 用 Skills
7.1.2. Skills vs 子代理
| 维度 | 子代理 | Agent Skills |
|---|---|---|
| 运行环境 | 独立上下文 | 主对话上下文 |
| 工具权限 | 可独立配置 | 可限制工具 |
| 适用场景 | 需要隔离的复杂任务 | 增强主对话的能力 |
| 上下文影响 | 不污染主对话 | 共享主对话上下文 |
选择建议:
- 如果任务需要大量探索,不想污染主对话 → 用子代理
- 如果只是给 Claude 增加某种知识或能力 → 用 Skills
7.1.3. Skills vs CLAUDE.md
| 维度 | CLAUDE.md | Agent Skills |
|---|---|---|
| 加载时机 | 每次会话都加载 | 按需加载 |
| 内容类型 | 项目级指令和上下文 | 特定领域的能力 |
| 适用场景 | 项目规范、技术栈说明 | 专业技能、处理流程 |
选择建议:
- 如果是 “所有对话都需要知道的信息” → 放 CLAUDE.md
- 如果是 “特定场景才需要的能力” → 用 Skills
7.1.4. 本节小结
Skills 的定位:
| 功能 | 触发方式 | 核心用途 |
|---|---|---|
| 斜杠命令 | 显式 /xxx | 固定操作 |
| 子代理 | Claude 委派 | 隔离任务 |
| CLAUDE.md | 自动加载 | 项目上下文 |
| Skills | 自动匹配 | 领域能力 |
7.2. 创建 Skill
理解了 Skills 的定位,现在来看如何创建一个 Skill。
7.2.1. SKILL.md 文件格式
Skill 的核心是一个 SKILL.md 文件,包含 YAML frontmatter 和 Markdown 内容。
存放位置:
| 位置 | 路径 | 作用范围 |
|---|---|---|
| 项目级 | .claude/skills/<skill-name>/SKILL.md | 当前项目 |
| 用户级 | ~/.claude/skills/<skill-name>/SKILL.md | 所有项目 |
基本结构:
1 | --- |
Frontmatter 字段:
| 字段 | 必填 | 说明 |
|---|---|---|
name | 是 | Skill 名称,只能用小写字母、数字和连字符 |
description | 是 | 描述用途,Claude 根据这个决定何时使用 |
allowed-tools | 否 | 允许使用的工具列表 |
model | 否 | 使用的模型 |
7.2.2. 支持文件的渐进式披露
Skill 可以包含多个支持文件,实现 渐进式披露——核心信息放在 SKILL.md,详细参考放在其他文件。
目录结构示例:
1 | .claude/skills/pdf-processing/ |
在 SKILL.md 中引用:
1 | ## 快速开始 |
7.2.3. allowed-tools 工具限制
allowed-tools 字段可以限制 Skill 激活时 Claude 能使用的工具。
示例:只读 Skill
1 |
|
这个 Skill 激活时,Claude 只能读取和搜索,不能修改文件。
示例:数据处理 Skill
1 |
|
这个 Skill 可以读写文件和执行命令,但不能使用网络相关工具。
7.2.4. 本节小结
创建Skill 的核心要素:
| 要素 | 作用 | 必填 |
|---|---|---|
name | Skill 名称 | 是 |
description | 触发条件描述 | 是 |
allowed-tools | 工具限制 | 否 |
| 支持文件 | 详细参考资料 | 否 |
7.3. 实战:创建代码解释 Skill
理论讲完了,现在来实战创建一个专门解释代码的 Skill。
7.3.1. 需求分析
我们想要一个 Skill,它能够:
- 当用户说 “解释这段代码” 时自动激活
- 用 ASCII 图表展示代码结构
- 用生活化的类比解释抽象概念
- 只读不写——只负责解释,不修改代码
7.3.2. 编写 SKILL.md
步骤 1:创建目录
1 | mkdir -p ~/.claude/skills/code-explainer |
步骤 2:创建 SKILL.md
创建文件 ~/.claude/skills/code-explainer/SKILL.md:
1 | --- |
7.3.3. 添加支持文件
为了让 Skill 更强大,我们可以添加一些支持文件。
创建类比库
创建文件 ~/.claude/skills/code-explainer/ANALOGIES.md:
1 | # 常用类比库 |
在 SKILL.md 中引用
在 SKILL.md 的末尾添加:
1 | ## 参考资料 |
7.3.4. 本节小结
创建 Skill 的完整流程:
| 步骤 | 操作 | 产出 |
|---|---|---|
| 需求分析 | 明确 Skill 的能力和触发条件 | 功能清单 |
| 编写 SKILL.md | 创建核心配置文件 | Skill 主文件 |
| 添加支持文件 | 创建参考资料(可选) | 辅助文件 |
| 测试验证 | 用自然语言触发 Skill | 确认可用 |
7.4. 本章总结与 Skills 速查
本章我们学习了 Agent Skills 技能系统——让 Claude 自动识别并应用特定能力。核心思想是:把领域知识封装成可复用的模块,让 Claude 在合适的时机自动调用。
7.4.1. 场景速查:遇到这些情况,直接用
场景 1:创建简单的只读 Skill
创建 ~/.claude/skills/analyzer/SKILL.md:
1 | --- |
场景 2:创建带支持文件的 Skill
1 | ~/.claude/skills/api-designer/ |
场景 3:查看所有可用 Skills
1 | › 你有哪些 Skills? |
Claude 会列出所有已加载的 Skills。
场景 4:测试 Skill 是否生效
用自然语言描述一个匹配 Skill 描述的任务:
1 | › 帮我解释一下这段代码的工作原理 |
如果 code-explainer Skill 配置正确,Claude 会自动应用它。







