Claude Code Skill(技能)完全指南

Claude Code Skill(技能)完全指南

一、什么是 Skill?

Skill(技能) 是 Claude Code 的扩展机制,让你能够自定义 Claude 的行为和能力。简单来说,skill 就像是给 Claude 写的"操作手册"------当你在特定场景下需要 Claude 按照特定方式工作时,skill 就会自动激活。

css 复制代码
graph TB
    subgraph no_skill ["没有 Skill"]
        A1[用户提问] --> B1["Claude 通用回答"]
    end

    subgraph with_skill ["有 Skill"]
        A2[用户提问] --> B2["Skill 自动激活"]
        B2 --> C2["按照 Skill 指引回答"]
        C2 --> D2["专业、定制化的结果"]
    end

Skill 的核心作用

作用 说明
扩展能力 让 Claude 掌握特定领域的知识或工作流程
标准化流程 确保每次执行任务都遵循相同的步骤和规范
提高效率 避免重复输入相同的指令和上下文
团队协作 可以将 skill 提交到版本控制,让整个团队共享

二、Skill 的工作原理

Skill 的工作流程可以用下图概括:

rust 复制代码
sequenceDiagram
    participant U as 用户
    participant CC as Claude Code
    participant S as Skill 文件
    participant C as Claude 模型

    U->>CC: 发起请求(如:/deploy 或问问题)
    CC->>S: 读取 SKILL.md
    S->>CC: 返回指令内容
    CC->>C: 发送用户请求 + Skill 内容
    C->>CC: 按照 Skill 指引生成响应
    CC->>U: 返回结果

Skill 的存放位置

不同的存放位置决定了 skill 的作用范围:

css 复制代码
graph TD
    subgraph priority ["优先级(从高到低)"]
        E["Enterprise企业级] --> P[Personal个人级"]
        P --> PR["Project项目级"]
        PR --> PL["Plugin插件级"]
    end

    subgraph paths ["路径"]
        EP["~/.claude/settings.json(managed settings)"]
        PP["~/.claude/skills//SKILL.md"]        PRP[".claude/skills//SKILL.md(项目根目录)"]        PLP["/skills//SKILL.md"]    end    E -.-> EP    P -.-> PP    PR -.-> PRP    PL -.-> PLP
位置 路径 适用范围
Enterprise 托管设置中配置 组织内所有用户
Personal ~/.claude/skills/<name>/SKILL.md 你的所有项目
Project .claude/skills/<name>/SKILL.md 当前项目
Plugin <plugin>/skills/<name>/SKILL.md 安装了该插件的项目

三、如何使用 Skill

3.1 内置 Skill(Bundled Skills)

Claude Code 自带了几个实用的内置 skill:

css 复制代码
graph LR
    subgraph builtin [内置 Skills]
        A["/simplify代码审查优化"]
        B["/batch批量并行任务"]
        C["/debug调试日志分析"]
        D["/loop循环执行任务"]
        E["/claude-apiAPI 文档加载"]
    end
Skill 用途 示例
/simplify 审查代码质量、复用性和效率 /simplify/simplify focus on memory efficiency
/batch 并行执行大规模代码变更 /batch migrate src/ from Solid to React
/debug 分析当前会话的调试日志 /debug/debug connection timeout issue
/loop 按间隔循环执行提示词 /loop 5m check if the deploy finished
/claude-api 加载 Claude API 参考文档 自动激活(检测到 SDK 导入时)

3.2 调用方式

有两种方式触发 skill:

scss 复制代码
flowchart TB
    subgraph direct ["方式一:直接调用"]
        A1["/skill-name [参数]"] --> B1["精确控制何时触发"]
    end

    subgraph auto ["方式二:自动激活"]
        A2[用户提问] --> B2{匹配 Skill 描述?}
        B2 -->|是| C2["Skill 自动加载"]
        B2 -->|否| D2["常规回答"]
    end

示例:

bash 复制代码
# 直接调用
/deploy production
/fix-issue 123
/explain-code src/auth/login.ts

# 自动激活(Claude 根据 description 判断)
"帮我解释这段代码是怎么工作的"  # 可能激活 explain-code skill

四、如何创建自定义 Skill

4.1 基础结构

每个 skill 是一个目录,核心文件是 SKILL.md

perl 复制代码
my-skill/
├── SKILL.md           # 必需:主指令文件
├── reference.md       # 可选:详细参考文档
├── examples/          # 可选:示例目录
│   └── sample.md
└── scripts/           # 可选:脚本文件
    └── validate.sh

4.2 SKILL.md 文件格式

yaml 复制代码
---
# === Frontmatter(YAML 配置)===
name: my-skill                    # Skill 名称(用于 /my-skill 调用)
description: 描述何时使用此 skill # Claude 用于判断是否自动激活
argument-hint: [issue-number]     # 参数提示(显示在自动补全中)
disable-model-invocation: true    # 禁止 Claude 自动激活(只能手动调用)
user-invocable: false             # 从菜单隐藏(只能由 Claude 激活)
allowed-tools: Read, Grep          # 限制可用的工具
context: fork                     # 在子代理中运行
agent: Explore                    # 指定子代理类型
---

# === Markdown 内容(指令)===
这里是 Claude 执行此 skill 时需要遵循的指令...

4.3 创建第一个 Skill

让我们创建一个简单的 skill,让 Claude 用可视化和类比的方式解释代码:

bash 复制代码
# 第一步:创建目录
mkdir -p ~/.claude/skills/explain-code
yaml 复制代码
# 第二步:创建 SKILL.md 文件
# 路径:~/.claude/skills/explain-code/SKILL.md

---
name: explain-code
description: 用可视化和类比的方式解释代码。当用户问"这是怎么工作的"或需要代码解释时使用。
---

解释代码时,请遵循以下格式:

1. **类比开场**:用日常生活中的例子比喻代码的作用
2. **流程图解**:用 ASCII 艺术展示代码结构或流程
3. **逐步讲解**:逐步说明代码在做什么
4. **注意事项**:指出常见的陷阱或误解

保持解释的口语化。对于复杂概念,使用多个类比帮助理解。
bash 复制代码
# 第三步:测试
# 方式一:直接调用
/explain-code src/auth/login.ts

# 方式二:自动激活(Claude 判断)
"这段代码是怎么工作的?"

4.4 参数传递

Skill 支持接收参数:

yaml 复制代码
---
name: fix-issue
description: 修复 GitHub Issue
disable-model-invocation: true
---

修复 GitHub Issue #$ARGUMENTS,遵循我们的编码规范。

步骤:
1. 阅读 Issue 描述
2. 理解需求
3. 实现修复
4. 编写测试
5. 创建提交

调用方式:/fix-issue 123$ARGUMENTS 会被替换为 123

也可以按位置访问参数:

yaml 复制代码
---
name: migrate-component
description: 迁移组件到新框架
---

将 $ARGUMENTS[0] 组件从 $ARGUMENTS[1] 迁移到 $ARGUMENTS[2]。
# 或使用简写:$0, $1, $2

保留所有现有行为和测试。

调用方式:/migrate-component SearchBar React Vue

五、高级用法与最佳实践

5.1 控制激活方式

css 复制代码
graph TB
    subgraph config [配置选项]
        A["默认行为"] --> A1["用户可调用Claude 可自动激活"]
        B["disable-model-invocation: true"] --> B1["仅用户可调用防止意外触发"]
        C["user-invocable: false"] --> C1["仅 Claude 可激活后台知识型"]
    end

何时使用哪种配置:

场景 配置 原因
部署流程 disable-model-invocation: true 不希望 Claude 自动触发部署
提交代码 disable-model-invocation: true 需要人工确认时机
遗留系统知识 user-invocable: false 是知识而非可执行命令
代码风格指南 默认 Claude 在写代码时自动应用

5.2 动态上下文注入

使用 ``!`command``` 语法在 skill 执行前运行 shell 命令:

yaml 复制代码
---
name: pr-summary
description: 总结 Pull Request 变更
allowed-tools: Bash(gh *)
---

## PR 上下文
- PR diff: !`gh pr diff`
- PR 评论: !`gh pr view --comments`
- 变更文件: !`gh pr diff --name-only`

## 任务
总结这个 Pull Request...

执行流程:

rust 复制代码
sequenceDiagram
    participant U as 用户
    participant S as Skill
    participant Sh as Shell
    participant C as Claude

    U->>S: /pr-summary
    S->>Sh: 执行 !`gh pr diff`
    Sh->>S: 返回 PR diff 内容
    S->>Sh: 执行 !`gh pr view --comments`
    Sh->>S: 返回评论内容
    S->>C: 发送完整的 PR 信息
    C->>U: 返回总结

5.3 在子代理中运行

设置 context: fork 让 skill 在隔离的子代理中运行:

yaml 复制代码
---
name: deep-research
description: 深度研究某个主题
context: fork
agent: Explore
---

深度研究 $ARGUMENTS:

1. 使用 Glob 和 Grep 查找相关文件
2. 阅读并分析代码
3. 总结发现,引用具体文件

5.4 最佳实践

css 复制代码
graph TD
    A[Skill 最佳实践] --> B[保持简洁]
    A --> C[拆分文件]
    A --> D[明确描述]
    A --> E[合理限制]

    B --> B1["SKILL.md 控制在 500 行以内"]
    C --> C1["详细文档放入单独文件"]
    D --> D1["description 决定何时激活"]
    E --> E1["使用 allowed-tools 限制权限"]

具体建议:

  1. 保持 SKILL.md 简洁 - 主文件控制在 500 行以内,详细参考放入独立文件
  2. 写好 description - 这是 Claude 判断是否激活 skill 的依据
  3. 拆分关注点 - 复杂 skill 可以用多个文件组织
  4. 限制工具权限 - 只读 skill 使用 allowed-tools: Read, Grep, Glob
  5. 防止意外触发 - 有副作用的操作设置 disable-model-invocation: true

六、实用 Skill 示例

示例 1:代码审查 Skill

yaml 复制代码
# ~/.claude/skills/review-code/SKILL.md

---
name: review-code
description: 审查代码变更,关注安全性、性能和可维护性
allowed-tools: Read, Grep, Glob
---

# 代码审查清单

审查以下方面的代码变更:

## 安全性
- [ ] SQL 注入风险
- [ ] XSS 漏洞
- [ ] 敏感数据暴露
- [ ] 认证/授权问题

## 性能
- [ ] N+1 查询
- [ ] 不必要的循环
- [ ] 内存泄漏风险

## 可维护性
- [ ] 代码可读性
- [ ] 命名规范
- [ ] 注释充分性
- [ ] 测试覆盖

$ARGUMENTS

示例 2:Git 提交 Skill

yaml 复制代码
# ~/.claude/skills/smart-commit/SKILL.md

---
name: smart-commit
description: 智能生成 Git 提交信息
disable-model-invocation: true
---

根据当前变更生成提交信息:

## 变更分析
!`git diff --cached --stat`
!`git diff --cached`

## 要求
1. 使用 Conventional Commits 格式
2. 主题行不超过 50 字符
3. 正文说明为什么做这个变更
4. 如果是破坏性变更,添加 BREAKING CHANGE

生成提交信息后,询问是否确认提交。

示例 3:项目文档生成 Skill

yaml 复制代码
# .claude/skills/gen-docs/SKILL.md

---
name: gen-docs
description: 为代码生成文档
---

为指定文件或目录生成文档:

## 目标
$ARGUMENTS

## 文档格式要求

### 函数文档
```typescript
/**
 * 函数描述
 * @param paramName - 参数说明
 * @returns 返回值说明
 * @example
 * // 使用示例
 */

组件文档

  • 用途说明
  • Props/API
  • 使用示例
  • 注意事项

请阅读代码后生成对应的文档。

yaml 复制代码
### 示例 4:测试覆盖率检查 Skill

```yaml
# ~/.claude/skills/check-coverage/SKILL.md

---
name: check-coverage
description: 检查测试覆盖率并报告未覆盖的代码
allowed-tools: Bash(npm *), Bash(yarn *), Read
---

## 运行测试覆盖率

!`npm test -- --coverage --coverageReporters=json --coverageReporters=text`

## 分析报告

1. 总结整体覆盖率
2. 列出覆盖率低于 80% 的文件
3. 指出关键业务逻辑是否被覆盖
4. 建议需要添加测试的代码路径

目标文件:$ARGUMENTS

总结

css 复制代码
graph TB
    subgraph concept [Skill 核心概念]
        A[SKILL.md 文件] --> B[YAML Frontmatter]
        B --> C[Markdown 指令]
    end

    subgraph key_config [关键配置]
        D[name: 调用名称]
        E[description: 自动激活依据]
        F[disable-model-invocation: 控制触发]
        G[allowed-tools: 权限限制]
    end

    subgraph usage [使用场景]
        H[标准化工作流]
        I[团队共享知识]
        J[自动化复杂任务]
        K[扩展 Claude 能力]
    end

Skill 是 Claude Code 最强大的扩展机制之一。通过创建和组织 skill,你可以:

  • 标准化团队工作流 - 将最佳实践固化为可复用的技能
  • 提升效率 - 避免重复输入相同的上下文和指令
  • 扩展能力 - 让 Claude 掌握特定领域的知识和流程
  • 保障安全 - 通过权限控制防止意外操作

开始创建你的第一个 skill 吧!


相关资源

相关推荐
qq_4275060819 分钟前
vscode使用kimi code的简单经验分享
前端·vscode·ai编程
恋猫de小郭21 分钟前
Claude Code 源码里有意思设定:伪造、投毒、卧底、封号
前端·人工智能·ai编程
大飞记Python33 分钟前
【2026更新】Python基础学习指南(AI版)——安装
自动化测试·python·ai编程
踩着两条虫1 小时前
VTJ.PRO 在线应用开发平台的LLM服务、缓存与AI Agent工作流
低代码·agent·ai编程
程序员cxuan1 小时前
来了来了,Claude Code 全架构解析 !!!
人工智能·后端·claude
木心术11 小时前
卷积神经网络(CNN)与AI编程的深度整合指南
人工智能·cnn·ai编程
带刺的坐椅2 小时前
CLI 编程代理横向分析报告
ai编程·cli·claudecode·opencode·soloncode
初见雨夜2 小时前
OpenAI 官方出手:把 Codex 接进 Claude Code
前端·openai·ai编程
jike88ai2 小时前
企业微信 CLI 开源了:用 88API + OpenClaw,把 AI Agent 接进消息、日程、文档和待办
aigc·claude·api中转·openclaw·openclaw连接微信
wangruofeng2 小时前
拆解 50 万行源码:Claude Code 在你的终端里到底做了什么?
aigc·claude