Skills
1. Skills 是什么
1.1 定义
Skill(技能)是 Claude Code 的扩展机制,它将可重复的工作流编码为可复用的指令模板。每个 Skill 是一个文件夹,核心文件是 SKILL.md——一个包含 YAML frontmatter 和 Markdown 指令的文件。当 Claude 检测到任务与 Skill 的描述匹配时,它会自动加载该 Skill 的完整指令,从而按照预设的流程执行任务。
Anthropic 官方将其比喻为"自定义入职材料"(custom onboarding materials)——你写一次,Claude 在每个会话中都知道如何执行特定任务,无需重复解释。
1.2 与 MCP 的区别
Skills 和 MCP(Model Context Protocol)是 Claude Code 的两套互补扩展机制,但定位截然不同:
| 维度 | Skills | MCP |
|---|---|---|
| 本质 | 指令和流程模板 | 外部工具和数据接口 |
| 作用 | 教 Claude 如何做 | 给 Claude 用什么做 |
| 内容 | Markdown 指令、脚本、参考文档 | API 端点、数据库连接、文件系统 |
| 类比 | 菜谱(告诉厨师步骤) | 厨具(提供烹饪工具) |
| 加载方式 | 按需动态加载 | 会话开始时连接 |
| 适用场景 | 可重复工作流、编码规范、审查清单 | 外部服务集成、数据访问 |
两者可以协同工作:MCP 提供工具和数据访问能力,Skills 教 Claude 最佳的使用方法和流程。例如,一个 MCP Server 连接了公司的 JIRA 系统,而 Skill 则定义了"如何按照团队规范创建和分配任务"的完整流程。
1.3 适用场景
Skills 在以下场景中特别有效:
- 可重复工作流:代码审查、部署流程、周报生成、数据清洗
- 编码规范:团队代码风格、API 设计约定、错误处理模式
- 文档生成:按照品牌指南创建 Word/PPT/PDF、技术文档
- 领域知识:特定框架的使用模式、遗留系统的上下文
- 多步骤流程:需要按特定顺序执行的复杂任务
Skills 不适合一次性任务或简单到 Claude 可以直接完成的任务——过度使用反而会增加不必要的上下文开销。
2. Skills 文件格式详解
2.1 目录结构
每个 Skill 是一个独立的目录,遵循以下结构:
my-skill/
├── SKILL.md # 必需:主指令文件
├── references/ # 可选:参考文档(按需加载)
│ ├── api-guide.md
│ └── examples.md
├── scripts/ # 可选:可执行脚本
│ └── validate.py
├── assets/ # 可选:模板、字体、图片
│ └── template.html
└── evals/ # 建议:评估测试
└── evals.json
关键规则:
- 文件夹名使用 kebab-case(短横线连接的小写字母)
SKILL.md文件名必须严格匹配大小写- Skill 目录内不要放
README.md,所有指令集中在SKILL.md
2.2 SKILL.md 结构
SKILL.md 由两部分组成:YAML frontmatter(配置元数据)和 Markdown body(执行指令)。
---
name: code-review # Skill 名称,成为 /slash-command
description: 按照团队规范审查代码。当用户请求代码审查、PR review、检查代码质量时使用。
when_to_use: 触发短语:review, 审查, 检查代码, code review
disable-model-invocation: false # 是否禁止 Claude 自动调用
user-invocable: true # 是否对用户可见(/菜单中显示)
allowed-tools: Read Grep Bash(git *) # 预授权工具
model: sonnet # 激活时使用的模型
context: fork # 在子代理中运行
agent: Explore # 子代理类型
---
# 代码审查 Skill
## 审查清单
1. **功能正确性**:代码是否实现了预期功能
2. **代码风格**:是否符合团队编码规范
3. **安全性**:是否存在注入、XSS、敏感信息泄露等风险
4. **性能**:是否存在明显的性能问题
5. **可测试性**:是否易于测试,测试覆盖率如何
## 输出格式
对每个审查项给出:
- 状态:通过 / 建议改进 / 必须修复
- 具体问题描述
- 改进建议(含代码示例)
2.3 YAML Frontmatter 完整字段
| 字段 | 必需 | 说明 |
|---|---|---|
name | 否 | 显示名称,省略则使用目录名。仅限小写字母、数字和连字符,最多 64 字符 |
description | 推荐 | Skill 的功能描述和触发时机。Claude 用它判断是否加载该 Skill |
when_to_use | 否 | 补充触发条件,追加到 description 后,共享 1536 字符上限 |
argument-hint | 否 | 自动补全时显示的参数提示,如 [issue-number] |
arguments | 否 | 命名位置参数,用于 $name 替换 |
disable-model-invocation | 否 | 设为 true 则仅用户可手动调用(适合部署等副作用操作) |
user-invocable | 否 | 设为 false 则对用户隐藏,仅 Claude 自动调用(适合背景知识) |
allowed-tools | 否 | Skill 激活时 Claude 可无需确认使用的工具 |
model | 否 | Skill 激活时使用的模型,如 sonnet、opus |
effort | 否 | 努力程度:low、medium、high、xhigh、max |
context | 否 | 设为 fork 则在隔离的子代理上下文中运行 |
agent | 否 | 配合 context: fork 使用的子代理类型 |
paths | 否 | Glob 模式,限制 Skill 的自动激活范围 |
shell | 否 | 内联 shell 命令使用的 shell:bash(默认)或 powershell |
2.4 字符串替换
Skill 支持动态值替换:
| 变量 | 说明 |
|---|---|
$ARGUMENTS | 调用时传入的所有参数 |
$ARGUMENTS[N] / $N | 按 0 基索引访问第 N 个参数 |
$name | frontmatter 中 arguments 声明的命名参数 |
${CLAUDE_SESSION_ID} | 当前会话 ID |
${CLAUDE_SKILL_DIR} | Skill 文件所在目录 |
示例:
---
name: fix-issue
description: 修复指定 GitHub Issue
disable-model-invocation: true
---
修复 GitHub Issue #$ARGUMENTS:
1. 读取 Issue 描述
2. 理解需求
3. 实现修复
4. 编写测试
5. 创建提交
调用 /fix-issue 123 时,$ARGUMENTS 会被替换为 123。
2.5 动态上下文注入
使用 !`command` 语法可以在 Skill 内容发送给 Claude 之前执行 shell 命令,将实时数据注入提示:
---
name: pr-summary
description: 总结当前 Pull Request
context: fork
agent: Explore
allowed-tools: Bash(gh *)
---
## PR 上下文
- PR diff: !`gh pr diff`
- PR 评论: !`gh pr view --comments`
- 变更文件: !`gh pr diff --name-only`
## 任务
总结这个 Pull Request 的变更内容、潜在风险和测试覆盖缺口。
多行命令使用 ```! 代码块:
## 环境信息
```!
node --version
npm --version
git status --short
```
3. 创建 Skills:从零开始的完整流程
3.1 第一步:确定工作流
在编写 Skill 之前,先问自己三个问题:
- 这个任务是否重复出现? 如果只做一次,不需要 Skill
- Claude 是否能直接完成? 如果任务简单到 Claude 一次就能做对,不需要 Skill
- 是否有特定的团队规范? 如果涉及编码标准、审查流程等组织特定知识,非常适合 Skill
3.2 第二步:选择存储位置
Skill 的存储位置决定了其作用域:
| 位置 | 路径 | 适用范围 |
|---|---|---|
| 企业级 | 托管设置 | 组织内所有用户 |
| 个人级 | ~/.claude/skills/<name>/SKILL.md | 你的所有项目 |
| 项目级 | .claude/skills/<name>/SKILL.md | 当前项目 |
| 插件级 | 通过插件市场安装 | 插件启用处 |
优先级规则:企业 > 个人 > 项目 > 插件。同名 Skill 时,高优先级覆盖低优先级。
3.3 第三步:编写 SKILL.md
以下是一个完整的代码审查 Skill 示例:
---
name: code-review
description: 按照团队规范进行代码审查。当用户请求 review、代码审查、检查 PR、分析代码质量时自动激活。
when_to_use: 触发词:review, 审查, PR, code review, 检查代码
---
# 代码审查指南
## 审查流程
1. **理解变更范围**
- 读取变更文件的完整内容
- 理解变更的业务背景和目的
- 检查相关测试文件是否同步更新
2. **逐文件审查**
- 检查功能正确性
- 检查代码风格和命名规范
- 检查错误处理完整性
- 检查安全性问题
- 检查性能影响
3. **输出审查报告**
- 按严重程度分类问题
- 提供具体的改进建议(含代码示例)
- 标记必须修复 vs 建议改进
## 审查标准
### 必须修复(Blocker)
- 安全漏洞(SQL 注入、XSS、敏感信息硬编码)
- 明显的功能缺陷
- 破坏现有测试
- 类型错误(TypeScript 项目)
### 建议改进(Suggestion)
- 命名不够清晰
- 缺少注释或文档
- 可优化的算法复杂度
- 可提取的重复代码
## 输出格式
审查摘要
- 文件数:N
- 问题数:N(Blocker: N, Suggestion: N)
- 总体评价:通过 / 需修改
详细审查
文件:path/to/file.ts
问题 1 Blocker
- 描述:...
- 建议:
代码示例
问题 2 Suggestion
- 描述:...
- 建议:...
## 常见陷阱
- 不要只关注风格问题而忽略功能正确性
- 对于重构类 PR,重点关注是否保持了行为一致性
- 检查边界条件和错误路径是否被覆盖
3.4 第四步:测试与迭代
创建 Skill 后,需要验证两个维度:
触发测试:
- 明显的请求应触发:
"帮我审查这个 PR" - 同义请求应触发:
"检查一下这段代码" - 无关请求不应触发:
"今天天气怎么样"
执行测试:
- 运行完整工作流,检查输出格式是否正确
- 验证工具调用顺序是否符合预期
- 检查边界情况的处理
Skills 2.0 引入了内置的 eval 框架,可以系统地测试 Skill:
// evals/evals.json
{
"evals": [
{
"name": "basic-trigger",
"prompt": "帮我 review 这个文件",
"expected": "skill should be invoked"
},
{
"name": "security-check",
"prompt": "检查这段代码是否有安全问题",
"expected": "reports security issues if present"
}
]
}
3.5 使用 skill-creator 辅助创建
Anthropic 提供了一个 meta-Skill——skill-creator,它可以交互式地帮助你构建 Skill:
# 在 Claude Code 中
"使用 skill-creator 帮我创建一个数据库迁移 Skill"
它会通过问答引导你定义工作流、触发条件、脚本需求等,然后生成完整的 Skill 目录结构。
4. 内置 Skills:Anthropic 预置技能
4.1 文档处理四件套
Anthropic 官方维护了四个文档处理 Skill,驱动 Claude 的文件创建能力:
| Skill | 格式 | 核心能力 |
|---|---|---|
| xlsx | Excel | 创建含公式、图表、格式化的电子表格;数据分析 |
| pptx | PowerPoint | 创建专业演示文稿;支持图表、动画、主题 |
| docx | Word | 创建和编辑文档;表格、页眉页脚、目录 |
| 生成 PDF;表单填写;OCR;合并/分割 |
这些 Skill 是 source-available(非开源)的,但代码公开在 github.com/anthropics/skills 中作为复杂 Skill 的参考实现。
安装方式:
# Claude Code
/plugin marketplace add anthropics/skills
/plugin install document-skills@anthropic-agent-skills
# 或通过 skills.sh 安装
npx skills add https://github.com/anthropics/skills --skill xlsx
使用示例:
"创建一个 Q3 销售数据的 Excel 文件,包含收入趋势图"
"把这份数据转换成 PowerPoint 演示文稿"
"从这个 PDF 中提取表格数据并生成 Excel"
4.2 其他官方 Skills
Anthropic 在 github.com/anthropics/skills 开源了 17 个 Skill,分为四大类:
创意与设计:
algorithmic-art:p5.js 生成艺术canvas-design:博物馆级视觉设计slack-gif-creator:Slack 优化 GIF 动画theme-factory:10 种专业主题配色
前端开发:
frontend-design:生产级前端界面(避免"AI 感"设计)web-artifacts-builder:React + Tailwind 交互组件brand-guidelines:Anthropic 品牌识别应用
技术开发:
claude-api:Claude API/SDK 开发指南mcp-builder:MCP Server 构建skill-creator:Skill 创建与测试webapp-testing:Playwright 网页自动测试
企业沟通:
doc-coauthoring:协作式文档撰写internal-comms:内部沟通模板
4.3 社区热门 Skills
| Skill | 作者 | 功能 | 周安装量 |
|---|---|---|---|
| find-skills | Vercel | 发现其他 Skill | ~787K |
| web-design-guidelines | Vercel | 100+ 可访问性/UX 规则审查 | ~133K |
| react-best-practices | Vercel | 57 条 React/Next.js 性能规则 | - |
| superpowers | obra | 多代理开发工作流 | ~40K |
| remotion-best-practices | Remotion | 程序化视频开发 | ~117K |
| firecrawl | Firecrawl | 网页爬取和数据提取 | - |
5. 共享与分发
5.1 团队内共享
通过 Git 共享(推荐):
将 Skill 放在项目的 .claude/skills/ 目录中,通过 Git 与团队共享:
# 项目结构
my-project/
├── .claude/
│ └── skills/
│ ├── code-review/
│ │ └── SKILL.md
│ └── deploy/
│ └── SKILL.md
├── src/
└── package.json
通过插件市场共享:
将 Skill 打包为 Claude Code 插件,发布到插件市场:
my-plugin/
├── .claude-plugin/
│ └── plugin.json # 插件元数据
└── skills/
├── code-review/
│ └── SKILL.md
└── deploy/
└── SKILL.md
plugin.json 示例:
{
"name": "my-team-skills",
"description": "我们团队的自定义 Skills 集合",
"version": "1.0.0",
"author": { "name": "Team Name" }
}
安装后,Skill 以命名空间形式调用:/my-team-skills:code-review。
5.2 版本管理
Skill 的版本策略:
- 显式版本:在
plugin.json中设置version字段,只有版本号更新时用户才会收到更新 - 隐式版本:省略
version字段,Git 提交 SHA 作为版本标识,每次提交都视为新版本 - Skill 级别版本:自定义 Skill 可使用时间戳作为版本号
5.3 社区 Skills 生态
Skills 遵循 Agent Skills 开放标准,该标准已被 30+ 平台采纳,包括:
- Claude Code / Claude.ai
- GitHub Copilot / VS Code
- Cursor
- Gemini CLI
- OpenAI Codex CLI
- Roo Code、Goose、OpenHands 等
社区 Skill 目录:
- skills.sh:Vercel Labs 维护的开放目录
- skillsdirectory.com:带安全扫描的目录
- GitHub 上的
anthropics/skills:官方示例和文档 Skill
安全提醒:Skill 可以包含可执行脚本,安装第三方 Skill 前务必审查 SKILL.md 和 scripts/ 目录的内容。
6. 实际案例
6.1 代码审查 Skill
---
name: pr-review
description: 审查 Pull Request,检查代码质量、安全性和团队规范符合度。当用户请求 review PR、审查代码变更、检查 pull request 时激活。
context: fork
agent: Explore
allowed-tools: Read Grep Bash(git *)
---
# PR 审查流程
## 前置检查
1. 获取 PR diff:`git diff main...HEAD`
2. 获取提交历史:`git log --oneline main..HEAD`
3. 检查 CI 状态
## 审查维度
### 1. 功能正确性
- 变更是否实现了 PR 描述中的目标
- 边界条件是否被处理
- 是否有回归风险
### 2. 代码质量
- 是否符合项目编码规范
- 命名是否清晰、一致
- 函数长度是否合理(建议 < 50 行)
- 复杂度是否可控
### 3. 安全性
- 用户输入是否被正确校验
- 是否存在 SQL 注入、XSS 风险
- 敏感信息是否被硬编码
- 权限检查是否完整
### 4. 测试
- 新增代码是否有对应测试
- 测试是否覆盖了正常路径和异常路径
- 现有测试是否仍然通过
## 输出格式
对每个审查维度给出评分(通过/警告/阻塞),并提供:
- 具体问题描述
- 建议的修复方案(含代码示例)
- 优先级(P0-必须修复 / P1-建议修复 / P2-可选优化)
6.2 周报生成 Skill
---
name: weekly-report
description: 从 Git 提交历史生成本周工作周报。当用户请求生成周报、weekly report、本周总结时激活。
disable-model-invocation: true
allowed-tools: Bash(git *)
---
# 周报生成器
## 数据收集
执行以下命令收集本周工作数据:
```bash
# 本周提交(按作者分组)
git log --since="1 week ago" --author="$(git config user.name)" --pretty=format:"%h %s" --no-merges
# 变更文件统计
git diff --stat HEAD@"{1 week ago}"..HEAD
# 参与的 PR
gh pr list --search "updated:>$(date -v-7d +%Y-%m-%d) author:@me" --state all
报告结构
# 周报 $(date +%Y-%m-%d)
## 本周完成
- [项目/模块] 具体工作内容(关联提交 hash)
## 进行中
- [项目/模块] 当前进度和下一步计划
## 遇到的问题
- 问题描述及解决方案(如有)
## 下周计划
- 优先级排序的工作项
生成规则
- 按项目/模块分组,不要按时间顺序罗列
- 每个工作项标注关联的 commit hash 或 PR 链接
- 突出关键成果,省略 trivial 的改动
- 问题部分要诚实,不要回避遇到的困难
### 6.3 数据处理 Skill
```yaml
---
name: data-cleaning
description: 清洗和标准化数据文件(CSV、JSON、Excel)。当用户请求清洗数据、data cleaning、处理脏数据、标准化格式时激活。
allowed-tools: Read Write Bash(python3 *)
---
# 数据清洗工作流
## 第一步:数据探查
1. 读取数据文件,分析结构
2. 生成数据质量报告:
- 总行数、列数
- 每列的数据类型
- 缺失值比例
- 重复行数量
- 异常值统计
## 第二步:清洗规则
根据数据探查结果,执行以下清洗操作:
1. **处理缺失值**
- 数值列:用中位数填充或删除
- 类别列:用众数填充或标记为"未知"
- 时间列:用前后值插值
2. **处理重复值**
- 删除完全重复的行
- 对业务关键列检查逻辑重复
3. **标准化格式**
- 日期格式统一为 ISO 8601
- 文本去除首尾空格,统一大小写规则
- 数值单位统一
4. **异常值处理**
- 使用 IQR 方法识别异常值
- 根据业务规则决定删除或修正
## 第三步:输出
1. 生成清洗后的数据文件
2. 生成清洗报告,记录:
- 原始数据状态
- 应用的清洗规则
- 清洗前后的统计对比
- 被修改/删除的数据明细
7. 最佳实践
7.1 何时使用 Skills vs 直接对话
| 场景 | 建议方式 | 理由 |
|---|---|---|
| 一次性任务 | 直接对话 | 无需创建 Skill 的开销 |
| 简单任务(Claude 一次能做对) | 直接对话 | 避免不必要的上下文加载 |
| 团队编码规范 | CLAUDE.md + Skill | CLAUDE.md 始终加载,Skill 按需加载 |
| 可重复工作流(>3 次/周) | Skill | 一次编写,持续受益 |
| 需要特定步骤顺序的流程 | Skill | 确保执行一致性 |
| 多步骤复杂任务 | Skill + subagent | 隔离上下文,防止漂移 |
7.2 Skill 设计原则
1. 渐进式披露(Progressive Disclosure)
Skill 采用三级加载机制,设计时应充分利用:
- Level 1 - YAML frontmatter(始终加载):只放触发判断所需的最少信息
- Level 2 - SKILL.md body(触发时加载):核心指令,控制在 500 行以内
- Level 3 - 链接文件(按需加载):详细参考、示例、长文档
2. description 是触发器,不是摘要
description 字段的唯一目的是让 Claude 判断何时加载该 Skill。它必须包含:
- 明确的功能描述
- 具体的触发短语和场景
好的 description:
description: 分析 Figma 设计文件并生成开发者交接文档。当用户上传 .fig 文件、请求"design specs"、"component documentation"或"design-to-code handoff"时使用。
差的 description:
description: 帮助处理项目相关任务。 # 太模糊,无触发词
3. 聚焦"推 Claude 出舒适区"的信息
Claude 已经知道如何写代码。Skill 应该专注于:
- 你团队的特定规范(不是通用最佳实践)
- 常见陷阱和错误模式(gotchas)
- 偏好选择(如"我们不用 lodash,用原生方法")
4. 使用文件系统作为上下文工程
将详细参考、API 签名、模板拆分到单独文件中,Skill 主体保持精简:
<!-- SKILL.md -->
## 额外资源
- 完整 API 细节,参见 [reference.md](reference.md)
- 使用示例,参见 [examples.md](examples.md)
- 验证脚本,参见 [scripts/validate.py](scripts/validate.py)
5. 不要过度约束 Claude
Skill 需要在多种场景下复用,过于具体的指令会破坏边缘情况的处理:
- 给出意图和约束,而不是每一步的精确操作
- 像给人类同事写文档一样写 Skill
7.3 常见陷阱
description 预算问题:
所有 Skill 的 description 共享约 2% 的上下文窗口(约 16,000 字符)。安装过多 Skill 会导致 description 被截断,Claude 失去触发关键词。建议每个项目保持 5-8 个自动触发 Skill,其余设为 disable-model-invocation: true。
YAML 多行 description:
某些格式化工具(如 Prettier)会将单行 description 折成多行,Claude Code 的 YAML 解析器无法正确处理,导致 Skill 静默消失。保持 description 在单行内。
Skill 与 CLAUDE.md 的边界:
- 通用知识(框架 API、项目架构)→ 放入 CLAUDE.md
- 可重复工作流(审查流程、部署步骤)→ 放入 Skill
- Vercel 的实验表明:对于通用知识,直接嵌入 CLAUDE.md 的 8KB 压缩文档索引比 Skill 的按需加载效果更好(100% vs 79% 通过率)
Eval 测试必须真实:
测试 prompt 必须是你在实际工作中会说的那种话——包含错别字、缩写、不完整的句子。用 polished 的测试 prompt 会导致 Skill 在实际使用中表现不佳。
8. 参考来源
- Claude Code Skills 官方文档
- Agent Skills 开放标准
- Anthropic Skills GitHub 仓库
- Claude Skills 官方博客
- The Complete Guide to Building Skills for Claude (PDF)
- Claude Code Agent SDK Skills 文档
- Claude Skills Cookbook
- Inside Claude Code Skills: Structure, prompts, invocation — Mikhail Shilkov
- What's New in Claude Code Skills 2.0 — Pere Villega
- Claude Code Skills and the Agent Skills Open Standard — Dakota Smith
- Best Claude Code Skills to Try in 2026 — Firecrawl
- Anthropic 官方 Skills 完整指南 — ClaudeWorld