如果你正在使用 Claude Code,却还不知道 Skills,那你可能只用了它一半的能力。
一、什么是 Skills?
想象一下,你有一个非常聪明的编程助手,但每次和它合作,你都需要重复告诉它"我们团队的代码风格是什么""提交代码前要跑哪些检查""怎么部署到测试环境"……
Skills 就是解决这个问题的。
简单来说,Skills 是你写给 Claude Code 的可复用指令集。它让 Claude 能够:
- 自动遵循你的团队规范
- 执行复杂的多步骤工作流
- 一键完成重复性任务
- 在特定场景下自动触发正确的行为
你可以把 Skills 理解为:给 AI 编写的"标准操作手册"。
二、Skills 的前世今生
在 Claude Code 2.1.3 之前,有两个独立的概念:
| 概念 | 作用 |
|---|---|
| Slash Commands(斜杠命令) | 手动输入 /命令名 触发的快捷操作 |
| Skills(技能) | Claude 根据上下文自动发现并使用的能力 |
从 2.1.3 版本开始,两者合并为统一的 Skills 系统。现在一个 Skill 既可以被你手动通过 /skill-name 调用,也可以被 Claude 在合适的时机自动触发。
三、快速上手:你的第一个 Skill
3.1 Skill 放在哪里?
Skills 有两个存放位置:
~/.claude/skills/ # 全局 Skills,所有项目都能用
your-project/.claude/skills/ # 项目级 Skills,仅当前项目可用
项目级 Skills 可以提交到 Git,团队成员自动共享。
3.2 Skill 的文件结构
每个 Skill 是一个文件夹,核心是一个 SKILL.md 文件:
.claude/skills/
└── my-first-skill/
└── SKILL.md
3.3 SKILL.md 怎么写?
一个 SKILL.md 由两部分组成:
1) YAML 前置元数据(告诉 Claude 这个 Skill 是什么、什么时候用)
2) Markdown 正文(具体的指令内容)
来看一个最简单的例子——一个帮你生成 Git 提交信息的 Skill:
---
name: commit-msg
description: 生成符合团队规范的 Git commit message
user_invocable: true
---
# 生成 Commit Message
当用户要求生成 commit message 时,请遵循以下规范:
## 格式
<type>(<scope>): <subject>```
Type 类型
- feat: 新功能
- fix: Bug 修复
- docs: 文档更新
- style: 代码格式调整
- refactor: 重构
- test: 测试相关
- chore: 构建/工具链相关
要求
- subject 不超过 50 个字符
- body 用中文描述改动原因和影响
- 如果关联了 Issue,在末尾加上
Closes #xxx
保存后,你就可以在 Claude Code 中输入 `/commit-msg` 来调用它了。
### 3.4 YAML 前置元数据详解
```yaml
---
name: my-skill # Skill 名称,也是斜杠命令名
description: 做某件事 # 描述,Claude 用它来判断何时自动触发
user_invocable: true # 是否可通过 /name 手动调用
---
name:必填,用作/命令的名称description:必填,写清楚这个 Skill 做什么,Claude 依据此决定是否自动使用user_invocable:设为true表示用户可以通过斜杠命令手动调用
四、三个开箱即用的实用 Skill
Skill 1:代码审查助手
---
name: review
description: 对当前改动进行代码审查
user_invocable: true
---
# 代码审查
请对当前 Git 暂存区的改动进行审查,关注以下方面:
1. **安全性**:是否存在 SQL 注入、XSS 等安全隐患
2. **性能**:是否有明显的性能问题(N+1 查询、不必要的循环等)
3. **可读性**:命名是否清晰、逻辑是否易懂
4. **边界情况**:是否处理了空值、异常输入等
输出格式:
- 使用 ✅ 标记没有问题的方面
- 使用 ⚠️ 标记需要注意的问题
- 使用 ❌ 标记必须修复的问题
最后给出总体评价和改进建议。
Skill 2:快速创建组件
---
name: component
description: 创建 React 组件的标准模板
user_invocable: true
---
# 创建 React 组件
当用户要求创建组件时:
1. 在 `src/components/` 下创建组件目录
2. 生成以下文件:
- `index.tsx` - 组件主文件,使用函数式组件 + TypeScript
- `index.module.css` - CSS Modules 样式文件
- `index.test.tsx` - 单元测试文件
3. 组件规范:
- 使用 FC 类型定义
- Props 单独定义 interface
- 导出命名组件(非默认导出)
Skill 3:日报生成器
---
name: daily-report
description: 根据今天的 Git 提交生成工作日报
user_invocable: true
---
# 生成工作日报
1. 读取今天的所有 Git commit 记录
2. 按功能模块分类整理
3. 用以下模板生成日报:
## 今日工作内容
- [模块名] 具体做了什么
## 遇到的问题
- 如果 commit message 中提到了 fix,总结修复了什么问题
## 明日计划
- 根据当前分支和未完成的 TODO 推测
五、Skills 的工作原理
理解 Skills 的运行机制,有助于你写出更好的 Skill:
┌─────────────────────────────────────────────┐
│ Claude Code 启动 │
├─────────────────────────────────────────────┤
│ 1. 扫描 Skills 目录 │
│ 2. 加载所有 SKILL.md 的元数据(名称+描述) │
│ 3. 等待用户输入... │
├─────────────────────────────────────────────┤
│ 用户输入 /review │
│ → 精确匹配,直接加载 review Skill 的全部内容 │
├─────────────────────────────────────────────┤
│ 用户输入"帮我检查一下代码" │
│ → Claude 根据描述匹配,自动触发 review Skill │
└─────────────────────────────────────────────┘
这就是 渐进式披露(Progressive Disclosure) 机制:启动时只加载轻量的元数据,使用时才加载完整内容,保证性能。
六、入门小结
| 你学到了 | 关键点 |
|---|---|
| Skills 是什么 | 给 Claude 的可复用指令集 |
| 放在哪里 | ~/.claude/skills/ 或 .claude/skills/ |
| 怎么写 | YAML 元数据 + Markdown 指令 |
| 怎么用 | /skill-name 手动调用或 Claude 自动触发 |
| 怎么分享 | 提交 .claude/skills/ 到 Git |
文章评论