Claude Skills 基础原理与编写指南

原始问题:Skills 是什么?如何在项目中使用?如何写一个适合自己项目的 Skill?

什么是 Skills?

Skills 是 Claude AI 的模块化扩展机制,用于为 Claude 提供专门的领域知识、工作流程和工具。可以理解为给 Claude 的"技能包"或"上岗指南"——让通用 AI 变成针对特定任务的专家。

Skills 的核心价值

能力说明
专业工作流定义多步骤的领域操作流程
工具集成提供特定文件格式或 API 的操作指南
领域知识公司特定的知识、schema、业务逻辑
资源捆绑脚本、参考文档、模板等资源

核心原理

三层渐进加载机制

Skills 使用渐进式加载来高效管理上下文空间:

┌─────────────────────────────────────────────────────────────┐
│ 第1层: Frontmatter (name + description)                     │
│ ▸ 始终在上下文中 (~100 词)                                   │
│ ▸ 决定是否触发该 Skill                                       │
├─────────────────────────────────────────────────────────────┤
│ 第2层: SKILL.md 正文                                        │
│ ▸ 触发后才加载 (<5000 词)                                    │
│ ▸ 核心工作流指令                                             │
├─────────────────────────────────────────────────────────────┤
│ 第3层: 捆绑资源 (scripts/ references/ assets/)              │
│ ▸ 按需加载 (无限制)                                          │
│ ▸ 脚本可直接执行,无需读入上下文                              │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13

自由度匹配原则

根据任务的脆弱程度选择合适的指令形式:

自由度形式适用场景
文字指令多种方案都可行、依赖上下文判断
伪代码/带参数脚本有推荐模式、允许少量变化
具体脚本操作脆弱易错、需要严格一致性

类比:窄桥配护栏(低自由度),开阔地允许多条路(高自由度)

Skill 文件结构

标准目录结构

skill-name/
├── SKILL.md              # 必需:定义 + 指令
├── scripts/              # 可选:可执行脚本
│   └── do-something.mjs
├── references/           # 可选:参考文档(按需读取)
│   └── api-docs.md
└── assets/               # 可选:模板、图片(用于输出)
    └── template.html
1
2
3
4
5
6
7
8

资源类型说明

目录用途加载时机
scripts/可执行代码(Python/Bash/Node 等)直接执行,无需读入上下文
references/参考文档、API 文档、Schema按需加载到上下文
assets/模板、图片、字体等输出资源用于输出,不加载到上下文

SKILL.md 编写指南

基本结构

---
name: my-skill
description: 简洁描述技能功能。当用户说 "xxx"、"yyy" 时触发。
---

# 技能标题

## 触发条件

- "xxx"
- "yyy"

## 工作流程

### 1. 第一步

...

### 2. 第二步

...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

Frontmatter 是关键

---
name: my-skill
description: |
  [做什么] + [什么时候触发]。
  当用户说 "关键词1"、"关键词2"、"关键词3" 时使用此 Skill。
---
1
2
3
4
5
6

⚠️ description 是唯一的触发依据,必须写清楚所有触发条件!

正文编写原则

  1. 简洁为王:只写 Claude 不知道的内容
  2. 命令式语气:用 "执行..."、"创建...",而非 "你可以..."
  3. 控制在 500 行以内:超出就拆分到 references/

实战示例

场景分析

假设要创建一个文档归档 Skill:

问题回答
解决什么对话整理成文档是重复劳动
触发词/ai-doc、"整理到知识库"
步骤分析对话 → 匹配分类 → 创建文档 → 更新配置 → git 提交

识别可复用资源

场景可复用资源
每次都要更新配置scripts/ai-doc.mjs
每次都要查分类定义references/knowledge-map.json
每次都要写相同格式文档模板定义在 SKILL.md 中

完整 Skill 示例

---
name: interview-manager
description: 管理面试准备知识单元。当用户说 "/interview"、"添加面试知识点"、"更新项目经验" 时触发。
---

# 面试知识管理

## Skill 资源

- `scripts/generate-interview-prep.mjs` - 生成/更新文档
- `references/templates.md` - 三种文档模板

## 触发条件

- `/interview`
- "添加面试知识点"
- "更新项目经验"

## 约束

- **扁平结构**:不允许子目录
- **命名规范**`project__<slug>.md` / `tech__<slug>.md` / `matrix__<slug>.md`

## 工作流程

### 1. 确定文档类型

| 类型     | 前缀        | 用途                     |
| -------- | ----------- | ------------------------ |
| 项目经验 | `project__` | 描述具体项目、职责、成果 |
| 技术深度 | `tech__`    | 某技术栈的原理、最佳实践 |
| 对比矩阵 | `matrix__`  | 多技术横向对比           |

### 2. 创建文档

根据类型使用对应模板

### 3. 运行验证

\`\`\`bash
node tools/generate-interview-prep.mjs --validate
\`\`\`
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

最佳实践速查

做 ✅不做 ❌
在 description 写清楚所有触发词在正文写 "When to use"
把大段参考文档放 references/全塞进 SKILL.md
用脚本处理脆弱操作让 AI 每次重写相同代码
测试脚本能正常运行只写不验证
删除不需要的示例文件保留空目录和占位文件

渐进式内容组织模式

模式 1:高层指南 + 引用

# PDF Processing

## Quick start

[代码示例]

## Advanced features

- **Form filling**: See [FORMS.md](FORMS.md)
- **API reference**: See [REFERENCE.md](REFERENCE.md)
1
2
3
4
5
6
7
8
9
10

模式 2:按领域分文件

bigquery-skill/
├── SKILL.md (overview)
└── references/
    ├── finance.md
    ├── sales.md
    └── product.md
1
2
3
4
5
6

模式 3:条件细节

## Creating documents

Use docx-js for new documents.

**For tracked changes**: See [REDLINING.md](REDLINING.md)
1
2
3
4
5

参考

上次更新:
(adsbygoogle = window.adsbygoogle || []).push({});