Skills 是 Claude Code 最被低估的功能——看似简单,却解决了两大 AI 使用的核心痛点:重复输入和 通用与专业的矛盾

它的逻辑很直接:在 Skills 目录下写一个 SKILL.md 文件,告诉 Claude「什么情况下该做什么」,它会在合适的时机自动加载,你不需要每次重复提示。

本文从零开始,系统讲透这套机制。读完你会掌握:

  • Skills 的运行架构:元数据注入、按需加载、脚本执行的完整链路

  • SKILL.md 的所有配置项(13 个 frontmatter 字段逐一解析)

  • 4 种存放位置的优先级规则,以及 Monorepo 的自动发现机制

  • 三种动态内容机制:参数变量、${CLAUDE_SKILL_DIR} 路径引用、Shell 命令注入

  • context: fork

     子代理隔离执行的使用场景与配置方式

  • 5 个内置 Skills 的实际效果(/batch 并行重构、/simplify 代码优化等)

  • 技能的三种分发方式:Git 版本控制、插件打包、企业管理配置

全文共 10 章 + 附录,按需跳读:

| 你的情况

|

推荐入口

刚接触 Skills,想建立整体认知

|

第一章,约 10 分钟

| |

想立刻动手,跟着步骤做

|

第二章,创建第一个技能

| |

想搞懂底层运行原理

|

第一章 1.4 节,有架构流程图

| |

配置写了但不生效

|

第四章 Frontmatter 详解 + 第十章故障排查

| |

需要把技能共享给团队

|

第九章,三种分发方式对比

| |

碎片时间快速查配置项

|

直接翻附录速查卡

|


Claude Code

Skills 功能

完全新手指南

程序员康健

2026 · 基于官方文档整理

目录

第一章:什么是 Claude Code Skills?

    1.1  Skills 能解决什么问题?

    1.2  Skills 的核心概念

    1.3  Skills 与其他功能的关系

    1.4  架构原理:技能如何运行?

第二章:快速上手——创建你的第一个 Skill

    2.1  Skill 的文件结构

    2.2  SKILL.md 的结构解析

    2.3  动手实践:创建 explain-code 技能

第三章:Skill 存放位置详解

    3.1  四个存放位置

    3.2  优先级与同名冲突

    3.3  Monorepo 的子目录自动发现

    3.4  --add-dir 的特殊行为

第四章:Frontmatter 配置详解

    4.1  完整配置参考表

    4.2  重点字段详解

第五章:变量替换与动态内容

    5.1  参数变量

    5.2  Shell 命令注入(动态上下文)

第六章:支持文件——构建强大技能

    6.1  为什么需要支持文件?

    6.2  推荐目录结构

    6.3  在 SKILL.md 中引用支持文件

    6.4  实战案例:带可视化的代码库分析技能

第七章:高级模式——子代理与权限控制

    7.1  在子代理中运行技能(context: fork)

    7.2  工具访问控制

    7.3  扩展思维模式

第八章:内置 Skills 介绍

    8.1  内置技能列表

    8.2  /batch 详解——最强大的内置技能

第九章:分享与分发技能

    9.1  三种分发方式

    9.2  Agent Skills 开放标准

第十章:故障排查与最佳实践

    10.1  常见问题排查

    10.2  技能编写最佳实践

    10.3  技能开发工作流建议

附录:完整 Frontmatter 速查卡

参考资源

第一章:什么是 Claude Code Skills?

如果你刚开始接触 Claude Code,可能会好奇 “Skills” 究竟是什么。简单来说:Skills 就是给 Claude 定制的"专项技能包",让它学会某一特定领域的知识或工作流程,从而在处理相关任务时更专业、更高效。

把 Skills 想象成这样一个场景:你请来了一位全能助理(Claude),他非常聪明,但对你的公司、你的项目、你的习惯一无所知。而 Skills 就相当于你给他准备的"岗前培训手册"——告诉他你们团队用什么技术栈、代码风格如何、如何部署项目……有了这份手册,助理就能立刻进入状态,不需要每次都重新解释。

1.1 Skills 能解决什么问题?

在没有 Skills 之前,使用 Claude Code 时你可能会遇到这些烦恼:

•重复解释:每次开新会话都要告诉 Claude “我们用 TypeScript,遵循 AirBnb 风格规范……”

•上下文丢失:跨项目时,Claude 对不同项目的特定约定毫不知情

•工作流碎片化:部署、代码审查、提交等操作需要手动逐步提示

•知识无法沉淀:团队积累的最佳实践只存在于人的脑子里,无法系统化传递给 AI

Skills 正是为了解决这些问题而生。它让你把反复使用的知识和流程"固化"成可复用的配置文件,Claude 会在需要时自动加载并应用。

1.2 Skills 的核心概念

1.3 Skills 与其他功能的关系

Claude Code 中有几个相似的概念,容易混淆:

1.4 架构原理:技能如何运行?

了解 Skills 背后的运行机制,有助于你写出更高效的技能配置。技能运行于代理的虚拟机环境中。以 Claude 平台为例,代理启动时会扫描已安装技能目录,将每个技能的元数据(name、description)注入系统提示;只有当用户请求符合某技能触发条件时,代理才用 Bash 命令读取该技能的 SKILL.md 并将其内容加载到上下文。

如果指令中引用了附加文件(参考文档、示例、模式模板等),代理也会通过 Bash 动态读取;如指令中提到可执行脚本,代理会直接运行脚本,获取输出而不将脚本源代码载入上下文。这种"逐步加载"使得代理可以包含大量参考内容但不会一次性占用上下文窗口。

技能体系的完整工作流程如下图所示:

图片

此外,技能可以组合使用(多个技能同时在容器中可用),复杂任务可由多技能协同处理。例如在财务分析场景中,可以同时载入 Excel 处理技能和自定义的财务估值技能,代理根据触发条件并行调用各自的能力。

总体来看,技能架构的核心设计哲学是:需求驱动时才加载相关知识,大幅减少对话上下文的占用,且相同技能可在不同场景下重复复用。

第二章:快速上手——创建你的第一个 Skill

理论够了,动手最重要。这一章我们从零开始,手把手创建一个真实可用的 Skill。

2.1 Skill 的文件结构

一个 Skill 就是一个目录,最简单的形式只需要一个文件:

my-skill/

├── SKILL.md           ← 必需,技能的核心文件

├── template.md        ← 可选,Claude 填充的模板

├── examples/

│   └── sample.md      ← 可选,示例输出

└── scripts/

    └── helper.sh      ← 可选,可执行脚本

其中 SKILL.md 是唯一必需的文件。其他文件可以根据需求添加,用来支撑更强大的能力。

2.2 SKILL.md 的结构解析

每个 SKILL.md 由两部分组成:

-–

name: my-skill           ← 技能名(生成 /my-skill 命令)

description: 描述这个技能的作用和触发时机

-–

## 这里是正文

当 Claude 调用这个技能时,会按照以下指令执行:

1. 步骤一

2. 步骤二

两个 -– 之间的部分叫做 frontmatter(前言),使用 YAML 格式,用来告诉 Claude 技能的元信息。frontmatter 之后的 Markdown 内容,就是 Claude 执行技能时遵循的指令。

2.3 动手实践:创建 explain-code 技能

我们来创建一个"代码讲解"技能,让 Claude 在解释代码时总是使用类比和 ASCII 图示。

步骤一:创建技能目录

个人技能存放在 ~/.claude/skills/ 目录下,对所有项目生效:

mkdir -p ~/.claude/skills/explain-code

步骤二:编写 SKILL.md

创建文件 ~/.claude/skills/explain-code/SKILL.md,内容如下:

-–

name: explain-code

description: 用类比和图示解释代码原理。当用户问"这段代码是什么意思?"、

             “这个函数怎么工作?“时自动触发。

-–

解释代码时,必须包含以下四个部分:

1. **生活类比**:用日常生活的例子打比方

2. **ASCII 图示**:用字符画出结构或流程

3. **逐步解析**:一行一行解释代码做了什么

4. **常见误区**:指出这里最容易搞错的地方

语气要通俗易懂,适合初学者。

步骤三:测试技能

技能创建完成后,有两种方式触发它:

1.自动触发: 直接问 Claude 相关问题

/chat 这段 Promise 代码是什么意思?

2.手动触发: 使用斜杠命令

/explain-code src/auth/login.ts

Claude 在回答时,就会按照你的技能指令,必然包含类比和图示。

第三章:Skill 存放位置详解

不同的存放位置决定了 Skill 的作用范围——是个人独享、项目专属,还是团队共享。

3.1 四个存放位置

3.2 优先级与同名冲突

当多个位置存在同名技能时,优先级从高到低:

插件内的技能使用 plugin-name:skill-name 的命名空间,不会与其他级别冲突。

3.3 Monorepo 的子目录自动发现

如果你的项目是 Monorepo 结构,Claude Code 会自动发现子目录中的技能。例如,当你在编辑 packages/frontend/ 内的文件时,Claude Code 会自动查找并加载 packages/frontend/.claude/skills/ 中的技能。

my-monorepo/

├── .claude/skills/         ← 根目录技能(所有子包可用)

│   └── deploy/

├── packages/

│   ├── frontend/

│   │   └── .claude/skills/ ← 前端专属技能

│   │       └── react-patterns/

│   └── backend/

│       └── .claude/skills/ ← 后端专属技能

│           └── api-conventions/

3.4 –add-dir 的特殊行为

当你用 --add-dir 标志添加额外目录时,该目录内的 .claude/skills/ 会被自动加载,这是 Skills 特有的例外规则(其他配置如 subagents、commands 不会被加载)。

这个特性非常适合共享 Skill 库的场景:

claude –add-dir /path/to/shared-skills-repo

而且支持"热更新”——在会话中修改这些技能文件后,不需要重启 Claude Code,修改会立即生效。

第四章:Frontmatter 配置详解

Frontmatter 是控制 Skill 行为的"控制面板”。掌握这些配置项,才能真正发挥 Skills 的威力。

4.1 完整配置参考表

4.2 重点字段详解

description —— 最关键的字段

这是整个 frontmatter 中最重要的字段。Claude 依赖它来判断"什么时候该加载这个技能"。写好 description 的原则:

•前置关键词:最重要的触发关键词放在最前面,因为超过 250 字符会被截断

•描述使用场景:明确说明"何时使用",如 “当用户问……时使用”

•避免过于宽泛:太宽泛会导致技能频繁被触发,影响性能

反面示例 vs 正面示例:

# ❌ 太模糊,容易过度触发

description: 帮助 React 开发

# ✅ 精确描述触发场景

description: React 组件性能优化指导。当代码包含 useEffect、useMemo、useCallback,

             或用户询问组件卡顿、重复渲染问题时使用。

disable-model-invocation vs user-invocable

这两个字段控制"谁能触发技能",很多人搞混:

paths —— 按文件类型激活

让技能只在处理特定文件时才被激活,避免污染不相关的任务:

-–

name: react-patterns

description: React 最佳实践

paths: “**/*.tsx,**/*.jsx”

-–

# 这个技能只在处理 React 文件时才会被 Claude 考虑加载

effort —— 控制思考深度

可以为特定技能设置不同的思考强度,平衡速度和质量。注意 max 级别仅 Claude Opus 4.6 可用。

-–

name: deep-review

description: 深度代码审查

effort: max

-–

第五章:变量替换与动态内容

静态指令有限制——有时你需要把用户输入的内容传递给技能,或者注入实时数据。Skills 提供了两种机制来实现这一点。

5.1 参数变量

当用户调用 /skill-name 时,可以传入参数,技能内用变量引用:

单参数示例

-–

name: fix-issue

description: 修复 GitHub Issue

disable-model-invocation: true

-–

修复 GitHub Issue #$ARGUMENTS,遵循以下步骤:

1. 阅读 Issue 描述

2. 分析根本原因

3. 实现修复

4. 编写测试

5. 提交代码

执行 /fix-issue 42 时,Claude 收到的指令变为 “修复 GitHub Issue #42,遵循以下步骤……”

多参数示例

-–

name: migrate-component

description: 将组件从一个框架迁移到另一个框架

-–

将 $0 组件从 $1 迁移到 $2。

保留所有现有功能和测试,不引入行为变更。

执行 /migrate-component SearchBar React Vue 时,Claude 收到:“将 SearchBar 组件从 React 迁移到 Vue……”

5.2 Shell 命令注入(动态上下文)

使用 !`command` 语法,可以在技能被发送给 Claude 之前,先执行一段 Shell 命令,并将输出注入到技能内容中。

内联注入

-–

name: pr-summary

description: 总结当前 Pull Request 的变更

context: fork

allowed-tools: Bash(gh *)

-–

## PR 上下文

- 变更差异:!`gh pr diff`

- PR 评论:!`gh pr view –comments`

- 修改文件:!`gh pr diff –name-only`

## 你的任务

请总结这个 PR 的主要变更、影响范围和潜在风险。

多行命令注入

对于多行命令,使用 ```! 代码块:

## 运行环境

```!

node –version

npm –version

git log –oneline -5

```

禁用 Shell 注入

管理员可以在设置中添加 “disableSkillShellExecution”: true 来禁用此功能(适合安全敏感环境)。被禁用时,注入点会替换为 [shell command execution disabled by policy]。

第六章:支持文件 —— 构建强大技能

单个 SKILL.md 适合简单任务,但复杂能力需要多个文件配合。这一章介绍如何组织技能目录,让技能更强大、更易维护。

6.1 为什么需要支持文件?

有几个场景,单文件 SKILL.md 会遇到瓶颈:

•内容太长:详细的 API 文档、参考规范塞进一个文件,每次触发技能都全量加载,占用大量 context

•输出需要模板:代码审查报告、技术文档等有固定格式,需要模板文件

•需要执行脚本:生成可视化、数据处理等任务,需要 Python/Shell 脚本支持

解决方案:把这些内容拆分到独立文件中,在 SKILL.md 中引用,让 Claude 按需加载。

6.2 推荐目录结构

code-review/

├── SKILL.md              ← 核心指令(控制在 500 行以内)

├── checklist.md          ← 详细审查清单(按需加载)

├── templates/

│   └── report.md         ← 审查报告模板

├── examples/

│   ├── good-example.ts   ← 合格代码示例

│   └── bad-example.ts    ← 需要改进的示例

└── scripts/

    └── complexity.py     ← 计算代码复杂度的脚本

6.3 在 SKILL.md 中引用支持文件

在 SKILL.md 里明确告诉 Claude 每个文件的内容和加载时机:

-–

name: code-review

description: 全面的代码审查,包含安全、性能、可维护性检查

-–

执行代码审查,聚焦以下维度:安全、性能、可读性。

## 附加资源

- 详细审查清单:见 [checklist.md](checklist.md)(执行审查时加载)

- 报告模板:见 [templates/report.md](templates/report.md)(生成报告时使用)

- 运行复杂度分析:python ${CLAUDE_SKILL_DIR}/scripts/complexity.py

## 输出要求

使用模板格式输出审查报告。

6.4 实战案例:带可视化的代码库分析技能

下面是一个使用支持文件的完整示例——一个能生成可交互 HTML 可视化的技能:

目录结构

codebase-visualizer/

├── SKILL.md

└── scripts/

    └── visualize.py

SKILL.md

-–

name: codebase-visualizer

description: 生成代码库的可交互 HTML 树状可视化。

             探索新代码库、了解项目结构时使用。

allowed-tools: Bash(python *)

-–

# 代码库可视化

运行可视化脚本:

```bash

python ${CLAUDE_SKILL_DIR}/scripts/visualize.py .

```

这将在当前目录生成 codebase-map.html 并在浏览器中打开。

注意 ${CLAUDE_SKILL_DIR} 的用法——无论当前工作目录在哪,这个变量始终指向技能文件所在的目录,确保脚本路径正确。

第七章:高级模式 —— 子代理与权限控制

掌握基础后,这一章介绍两个让 Skills 真正强大的高级特性:在独立子代理中运行技能,以及精细控制工具权限。

7.1 在子代理中运行技能(context: fork)

context: fork 让技能在隔离的子上下文中执行,不影响主对话。这就像派遣一个"特种兵"去完成特定任务,完成后汇报结果。

何时使用 context: fork?

•任务独立性强:需要大量探索、不应干扰主对话的研究任务

•需要特定工具:任务需要只读工具集(如 Explore 代理)

•避免上下文污染:PR 分析、代码库扫描等不需要对话历史的任务

示例:深度研究技能

-–

name: deep-research

description: 对指定主题进行深入研究,分析代码库

context: fork

agent: Explore

-–

深入研究:$ARGUMENTS

1. 用 Glob 和 Grep 找到相关文件

2. 读取并分析代码

3. 总结发现,附上具体文件引用

可用的内置代理类型

7.2 工具访问控制

allowed-tools 限制工具

在技能激活期间,可以限制 Claude 只使用特定工具,这对只读技能或安全敏感操作非常有用:

-–

name: safe-reader

description: 只读模式,不修改任何文件

allowed-tools: Read Grep Glob

-–

在只读模式下分析代码…

多个工具可以空格分隔,也可以用 YAML 列表格式:

allowed-tools:

  - Read

  - Grep

  - Bash(gh *)

  - Bash(python *)

限制技能的全局访问

除了在单个技能里控制,还可以在权限配置中全局管理哪些技能 Claude 可以调用:

# 在 /permissions 中禁用所有技能

Skill

# 只允许特定技能

Skill(commit)

Skill(review-pr *)

# 禁止特定技能

Skill(deploy *)

7.3 扩展思维模式

在技能内容中任意位置包含 “ultrathink” 这个词,就能激活 Claude 的深度思考模式,适合需要复杂推理的技能:

-–

name: architecture-review

description: 深度架构审查

effort: max

-–

对这个系统进行架构审查。ultrathink

分析:可扩展性、安全性、可维护性、性能…

第八章:内置 Skills 介绍

Claude Code 预置了几个高质量的内置技能,可以直接使用,无需任何配置。

8.1 内置技能列表

8.2 /batch 详解 —— 最强大的内置技能

/batch 是内置技能中最令人印象深刻的一个,它能把大型重构任务自动化:

工作流程:

3.Claude 研究代码库,理解任务范围

4.将工作分解为 5~30 个独立单元

5.展示计划,等待你确认

6.为每个单元创建独立的 git worktree

7.并行启动多个后台代理,各自处理一个单元

8.每个代理:实现 → 测试 → 提交 → 开 PR

第九章:分享与分发技能

好的技能应该被共享,而不是只留给自己用。

9.1 三种分发方式

方式一:Git 版本控制(团队协作)

把项目级技能提交到代码仓库,团队成员 clone 后即可使用:

git add .claude/skills/

git commit -m “add: code-review and deploy skills”

git push

所有团队成员的 Claude Code 都会自动加载这些技能,无需单独配置。

方式二:插件(Plugins)

如果你的技能与其他配置(MCP 服务器、钩子等)配套使用,可以打包成插件:

my-plugin/

├── claude-plugin.json    ← 插件清单

├── skills/

│   ├── deploy/

│   └── review/

└── hooks/

    └── post-commit.sh

方式三:企业级管理配置

企业版用户,管理员可以通过管理配置文件为所有成员统一下发技能,新成员入职即自动获得团队标准技能集。

9.2 Agent Skills 开放标准

Anthropic 已将 Skills 发布为开放标准(agentskills.io)。这意味着:

•跨平台兼容:同一个 SKILL.md 可以在 Claude Code、其他支持该标准的 AI 工具中使用

•生态共享:社区可以贡献和分发通用技能包

•未来兼容:随着更多工具支持该标准,你的技能投资不会过时

第十章:故障排查与最佳实践

技能不按预期工作?这一章提供系统化的排查方法和经验总结。

10.1 常见问题排查

问题一:技能没有触发

按以下步骤排查:

9.确认技能文件存在:检查路径和文件名是否正确(SKILL.md,注意大小写)

10.验证技能已被加载:在 Claude Code 中问 “What skills are available?”

11.检查 description 是否包含用户可能使用的关键词

12.尝试直接手动触发:/skill-name,确认技能语法正确

13.检查是否设置了 disable-model-invocation: true(如果设了,Claude 不会自动触发)

问题二:技能触发太频繁

解决方案:

14.让 description 更具体,减少误触发关键词

15.设置 disable-model-invocation: true,改为手动触发

16.使用 paths 字段限制文件类型

问题三:description 被截断

症状:技能名称出现在列表中,但关键触发词丢失,导致 Claude 不能正确匹配。

解决方案:

17.把最重要的触发关键词移到 description 的最前面

18.每个技能 description 严格控制在 250 字符以内(这是硬性限制)

19.如需增加总预算,设置环境变量:export SLASH_COMMAND_TOOL_CHAR_BUDGET=16000

问题四:Shell 注入命令失败

排查步骤:

20.在终端手动运行命令,确认命令本身正确

21.检查技能目录内的脚本文件权限:chmod +x scripts/xxx.sh

22.确认 disableSkillShellExecution 未被管理员禁用

10.2 技能编写最佳实践

10.3 技能开发工作流建议

这是一个经过验证的技能开发流程:

23.明确需求:写下你想让 Claude 做什么,以及触发时机

24.从简单开始:先写最小可用版本,只有 name、description 和核心指令

25.测试触发:自动触发和手动触发都测一遍

26.收集反馈:实际使用几天,观察哪里不符合预期

27.迭代优化:根据反馈调整 description、指令细节

28.添加支持文件:需要时才添加模板、示例、脚本,不要过度设计

29.提交分享:好的技能提交到代码库,与团队共享

附录:完整 Frontmatter 速查卡

-–

# ── 基本信息 ──────────────────────────────────────────

name: skill-name                    # 技能名,生成 /skill-name 命令

description: >                      # Claude 的触发判断依据,<250字符

  关键词优先,描述何时使用。

# ── 调用控制 ───────────────────────────────────────────

disable-model-invocation: false     # true = 只能手动 /调用

user-invocable: true                # false = 从菜单隐藏,仅 Claude 自动调用

# ── 工具与模型 ─────────────────────────────────────────

allowed-tools: Read Grep Glob       # 无需审批的工具(空格分隔)

model: claude-sonnet-4-6            # 覆盖默认模型

effort: medium                      # low / medium / high / max

# ── 执行环境 ──────────────────────────────────────────

context: fork                       # 在隔离子代理中运行

agent: Explore                      # 指定子代理类型

# ── 激活范围 ──────────────────────────────────────────

paths: “**/*.tsx,**/*.jsx”          # 仅在匹配文件时激活

# ── 其他 ─────────────────────────────────────────────

argument-hint: “[issue-number]”     # 自动补全提示

shell: bash                         # bash 或 powershell

-–

## 技能正文内容(Markdown)

使用 $ARGUMENTS 引用用户传入的参数。

使用 !`shell-command` 注入动态上下文。

使用 ${CLAUDE_SKILL_DIR} 引用技能目录路径。

参考资源

官方文档:code.claude.com/docs/en/skills

Agent Skills 开放标准:agentskills.io

技能生态 cookbook:platform.claude.com/docs/en/build-with-claude/skills-guide

子代理文档:code.claude.com/docs/en/sub-agents

扫码关注,获取更多 AI 编程教程

持续分享 AI 编程工具 · 开发效率提升 · Claude Code 实战


AI 是怎么替代你的?

群晖完全新手指南—家里装一台 NAS,从此告别百度网盘和移动硬盘

GitHub Copilot 完全指南:从入门到精通

Cursor深度使用指南:从入门到精通

Claude Code 完全新手指南(2026 版):从入门到精通

全网最详细的OpenClaw完全新手指南(中文保姆级教程)

一天烧掉一个亿 Token?程序员的 AI 账单,正在惩罚「偷懒的人」