Claude Code Skill:最佳实践与创建规范

AI摘要
本文是一篇关于如何系统化创建和优化AI技能(Skill)的技术指南,属于知识分享。文章提出了“文档驱动开发”理念,强调通过定义功能单元边界、维护CLAUDE.md知识库、提供结果参照和明确需求清单来构建可靠、可复用的Skill。核心流程包括先制定计划(Plan模式)再执行,并通过持续审查与迭代进行优化。文章还推荐了官方Skill Creator工具,并附带了详细的、模块化的需求清单模板,旨在帮助读者将Skill建设为可组合、可演进的项目基础设施。

本篇是这一系列中关于 Skill 的最后一篇文章。上一篇里,我们已经见识过 Skill 的威力,但在真实项目里,需求远不止那些示例。除了更细致的场景,还更需要一套「通用的 Skill 创建方法」。只有这样,每个人才能为自己的项目打造真正好用、可复用的 Skill。接下来就顺着我的思路,一起把「如何创建 Skill」这件事,打磨成一套可落地的最佳实践。

功能单元

准确地分析 Skill 的能力边界非常关键:范围太大,会变成一个「什么都想干却什么都干不好」的巨石 Skill;范围太小,又会让 Skill 数量爆炸,后期维护成本很高。

所以,功能单元的合理设计,其实更像是在搭积木、搭 pipeline。

参考内容

这部分大家应该都不陌生:AI 的行为,很大程度上取决于它能看到的历史数据、文档和各种参考材料。这些内容会直接影响 Skill 生成的质量和风格。我给这套思路起了一个名字——「文档驱动开发」。下面就从几类关键的参考内容展开说明:

1. CLAUDE.md 知识库

没错,这里指的就是 CLAUDE.md 这个知识库文件。对大多数项目来说,都非常有必要维护这样一份「全局生效」的知识库:AI 每次都会读取它,用来统一项目的规范和约定。建议你定期迭代更新其中的内容,用来:

  • 降低 AI 误解需求、犯低级错误的概率
  • 提高回复的一致性和可预期性
  • 让规范本身产生复利效应(越写越全、越用越顺)

2. 结果参照

Skill 中的示例目录,本质上是给 AI 的「标准答案样本」。通过这些示例,你可以直接告诉 AI:

  • 结果大概长什么样
  • 应该采用怎样的格式和结构
  • 内容需要细到什么程度、覆盖哪些关键点

3. 明确的需求与背景说明

每个 Skill 都应该有一份专门的「需求清单」,用来尽可能完整地说明:

  • 任务的背景和目标
  • 大致的处理过程
  • 可用的输入信息(来源、格式、范围)
  • 期望的输出形式和精度

你可以完全按照程序设计的方式来思考:这个 Skill 需要哪些「参数」、哪些是必填、哪些是可选、默认值是什么。你给 AI 的输入越清晰、边界越明确,最终生成的 Skill 就越稳。

小结

上面 1、2 两部分负责给 AI 设定「规范」和「结果参考」,而第 3 部分则是尽可能把「输入信息」说明白。三者结合起来,才能让 Skill 在你的项目里既靠谱又可控。

Plan 模式

相比直接让 AI 上来就执行,然后再在结果上反复修改,我更推荐先让它「先写 Plan 再执行」。也就是先和 AI 一起把整体方案、步骤、风险点对齐好,再进入真正的开发阶段,这点和我们日常做项目、写方案的习惯是高度一致的。

Review 与迭代

Skill 几乎不可能「一次生成就完美」。更现实的做法是,把每一次使用中暴露出来的问题,当成优化 Skill 的素材。根据这些实际错误和偏差,持续更新:

  • SKILL.md 中的说明和约束
  • 参考示例和输出样本
  • CLAUDE.md 里的全局规范

长期来看,这些小步迭代会让 Skill 越用越顺手,也能逐渐贴合你团队自己的工程习惯。

终极形态

我心目中 Skill 的终极形态,有点像 n8n 这类工作流编排工具:先做好一堆颗粒度合适的「积木」,再通过编排和组合,把它们串成一条条自动化的工作流。届时,Skill 不再只是「单点能力」,而是可以拼接起来的「完整生产线」。

Skill Creator

这里强烈推荐使用官方提供的、专门用来创建其他 Skill 的 Skill——Skill Creator。

github.com/anthropics/skills/tree/...

需求清单模板

先说明一下:我下面给出的这份需求清单模板会比较完整,你不需要一开始就把所有内容都写满。

刚开始创建 Skill 时,可以只填写最基础、最关键的部分;当你发现生成的 Skill 不够准确、不够稳定时,再逐步补充和迭代细节就好。

这份模板大致包含以下十个主要部分:
1. 基本信息 - Skill 名称、描述、触发条件
2. 使用场景 - 核心用例和边界情况
3. 输入规范 - 必需/可选输入、格式要求、验证规则
4. 输出规范 - 输出类型、文件详情、内容结构、示例
5. 工作流程 - 主流程、决策点、错误处理
6. 资源需求 - 脚本、参考文档、资源文件
7. 依赖和约束 - 项目内/外部依赖、约束条件
8. 验证方式 - 自动/手动验证、常见问题排查
9. 参考资料 - 现有实现、外部文档、相关 Skill
10. 补充说明 - 特殊需求、优先级、其他备注

# Skill 创建需求清单模板(详细版)

> 此模板用于向 Skill Creator 提供完整的需求描述。每个部分都有详细的子项和填写指南。

---

## 一、基本信息

### 1.1 Skill 名称

**要求**- 格式:hyphen-case(小写字母、数字、连字符)
- 长度:最多 64 个字符
- 示例:`my-skill-name`, `pdf-converter`, `api-generator`

**填写**```
名称:
```

### 1.2 Skill 描述

**要求**- 长度:最多 1024 个字符
- 必须回答两个问题:
 - "这个 Skill 是做什么的?"
 - "什么时候应该使用它?"

**填写**```
描述:
```

### 1.3 触发条件

**说明**:Claude 根据什么判断应该使用这个 Skill
**填写**```
当用户需要 __________ 时使用此 Skill当检测到 __________ 情况时使用此 Skill```

---

## 二、使用场景

### 2.1 核心用例(必填,至少 1 个)

**用例 1**:
```
场景名称:

用户输入是什么:
- 输入类型:(文档/命令/配置/其他)
- 输入内容示例:

期望输出是什么:
- 输出类型:(代码/文档/操作/其他)
- 输出内容示例:

执行步骤:
1.
2.
3.
```

**用例 2**(可选):
```
场景名称:

用户输入是什么:

期望输出是什么:

执行步骤:
```

**用例 3**(可选):
```
场景名称:

用户输入是什么:

期望输出是什么:

执行步骤:
```

### 2.2 边界情况

**不处理的情况**:
```
这个 Skill 不应该处理:
1.
2.
3.
```

**错误处理**:
```
当输入不完整时:
当输入格式错误时:
当依赖不存在时:
```

---

## 三、输入规范

### 3.1 必需输入

| 序号 | 输入名称 | 类型 | 描述 | 示例值 |
|------|----------|------|------|--------|
| 1 | | | | |
| 2 | | | | |
| 3 | | | | |

### 3.2 可选输入

| 序号 | 输入名称 | 类型 | 描述 | 默认值 | 示例值 |
|------|----------|------|------|--------|--------|
| 1 | | | | | |
| 2 | | | | | |

### 3.3 输入格式要求

**文件类型要求**:
```
支持的文件格式:
文件大小限制:
编码要求:
```

**内容格式要求**:
```
必须包含的字段/结构:
格式示例:
```

### 3.4 输入验证规则

```
规则 1:
规则 2:
规则 3:
```

---

## 四、输出规范

### 4.1 输出类型(勾选所有适用项)

- [ ] 生成新文件
- [ ] 修改现有文件
- [ ] 执行命令/操作
- [ ] 返回信息/数据
- [ ] 调用外部服务

### 4.2 输出文件详情(如生成文件)

**文件 1**:
```
文件名/路径模式:
文件格式:
生成位置:
命名规则:
```

**文件 2**(如有):
```
文件名/路径模式:
文件格式:
生成位置:
命名规则:
```

### 4.3 输出内容结构

**代码文件结构**(如适用):
```
- 头部信息:
- 导入部分:
- 类型定义:
- 主体逻辑:
- 导出部分:
```

**文档文件结构**(如适用):
```
- 标题格式:
- 章节结构:
- 必需章节:
```

### 4.4 输出示例(必填)

提供一个完整的期望输出示例:

```
(粘贴完整的输出示例)
```

### 4.5 输出质量要求

```
代码风格:
命名规范:
注释要求:
格式化规则:
```

---

## 五、工作流程

### 5.1 主流程

```
阶段 1:准备阶段
├── 步骤 1.1:
├── 步骤 1.2:
└── 步骤 1.3:

阶段 2:处理阶段
├── 步骤 2.1:
├── 步骤 2.2:
└── 步骤 2.3:

阶段 3:输出阶段
├── 步骤 3.1:
├── 步骤 3.2:
└── 步骤 3.3:
```

### 5.2 决策点

**决策点 1**:
```
条件:
如果 A → 执行 X如果 B → 执行 Y否则 → 执行 Z```

**决策点 2**(如有):
```
条件:
如果 A →如果 B →否则 →```

### 5.3 错误处理流程

```
错误类型 1:
- 检测方式:
- 处理方式:
- 用户提示:

错误类型 2:
- 检测方式:
- 处理方式:
- 用户提示:
```

---

## 六、资源需求

### 6.1 脚本文件 (scripts/)
**是否需要脚本**:[ ] 是 [ ] 否

**脚本 1**:
```
文件名:
编程语言:
主要功能:
输入参数:
输出结果:
使用场景:
```

**脚本 2**(如有):
```
文件名:
编程语言:
主要功能:
输入参数:
输出结果:
使用场景:
```

### 6.2 参考文档 (references/)
**是否需要参考文档**:[ ] 是 [ ] 否

**文档 1**:
```
文件名:
文档类型:(API文档/规范说明/示例集合/其他)
主要内容:
来源:
用途:
```

**文档 2**(如有):
```
文件名:
文档类型:
主要内容:
来源:
用途:
```

### 6.3 资源文件 (assets/)
**是否需要资源文件**:[ ] 是 [ ] 否

**资源 1**:
```
文件名:
文件类型:(模板/图片/配置/其他)
用途:
使用方式:
```

**资源 2**(如有):
```
文件名:
文件类型:
用途:
使用方式:
```

---

## 七、依赖和约束

### 7.1 项目内依赖

**依赖的文件**:
```
1\. 文件路径:
 依赖原因:
2\. 文件路径:
 依赖原因:```

**依赖的模块/函数**```
1\. 模块名:
 使用方式:
2\. 模块名:
 使用方式:```

### 7.2 外部依赖

**API/服务依赖**:
```
1\. 服务名:
 用途: 认证方式:
2\. 服务名:
 用途: 认证方式:```

**工具依赖**```
1\. 工具名:
 版本要求:
2\. 工具名:
 版本要求:```

### 7.3 约束条件

**技术约束**:
```
编程语言限制:
框架版本要求:
运行环境要求:
```

**业务约束**:
```
数据处理限制:
安全合规要求:
性能要求:
```

**编码规范**:
```
代码风格:
命名约定:
文件组织:
```

---

## 八、验证方式

### 8.1 自动验证

**语法/编译验证**:
```
验证命令:
预期结果:
```

**单元测试**:
```
测试命令:
测试覆盖范围:
```

**集成测试**:
```
测试命令:
测试场景:
```

### 8.2 手动验证

**检查清单**:
```
[ ] 检查项 1:
[ ] 检查项 2:
[ ] 检查项 3:
[ ] 检查项 4:
```

**验收标准**:
```
标准 1:
标准 2:
标准 3:
```

### 8.3 常见问题排查

```
问题 1:
- 症状:
- 原因:
- 解决方案:

问题 2:
- 症状:
- 原因:
- 解决方案:
```

---

## 九、参考资料

### 9.1 现有实现参考

```
参考文件 1:
- 路径:
- 参考价值:

参考文件 2:
- 路径:
- 参考价值:
```

### 9.2 外部文档

```
文档 1:
- 链接/位置:
- 内容摘要:

文档 2:
- 链接/位置:
- 内容摘要:
```

### 9.3 相关 Skill
```
Skill 1:
- 名称:
- 关系:(相似/依赖/互补)

Skill 2:
- 名称:
- 关系:
```

---

## 十、补充说明

### 10.1 特殊需求

```
(任何无法归类到上述类别的特殊需求)
```

### 10.2 优先级说明

```
必须实现:
1.
2.

可选实现:
1.
2.

未来扩展:
1.
2.
```

### 10.3 其他备注

```
(其他需要 Skill Creator 了解的信息)
```

---

## ✅ 提交前检查清单

**必填项**:
- [ ] 1.1 Skill 名称
- [ ] 1.2 Skill 描述
- [ ] 1.3 触发条件
- [ ] 2.1 至少 1 个核心用例
- [ ] 4.4 输出示例

**推荐填写**:
- [ ] 3.1 必需输入
- [ ] 4.2 输出文件详情
- [ ] 5.1 主流程
- [ ] 8.2 手动验证检查清单

**可选填写**:
- [ ] 其他所有项目(根据 Skill 复杂度决定)

---

## 📝 快速填写模式

如果时间有限,至少提供以下信息:

```markdown
## Skill 名称
[填写]

## 描述和触发条件
[填写]

## 核心用例
输入:[填写]
输出:[填写]
步骤:[填写]

## 输出示例
[粘贴完整示例]
```

这里再重点讲一下关于 assets/ 目录这一块。

assets/ 目录是什么?

它的作用是:存放「不需要加载到上下文中、但会被 Claude 直接拿来作为最终输出素材」的文件。

和其他目录的区别大概是这样:

目录 用途 Claude 如何使用
scripts/ 可执行代码 直接执行,不需读入上下文
references/ 参考文档 需要读入上下文来理解和参考
assets/ 输出资源 直接复制 / 修改,不需读入上下文

典型使用场景包括:

1. 模板文件 - 如 assets/slides.pptx(PPT 模板)
2. 品牌资源 - 如 assets/logo.png(公司 logo)
3. 样板代码 - 如 assets/frontend-template/(前端项目模板)
4. 字体文件 - 如 assets/font.ttf
5. 可直接复制修改的样例文档

Skill Creator 如何使用这些资源?

结合 SKILL.md 示例:当你为类似 frontend-webapp-builder 这种 Skill 设计「帮我建一个 todo app」的能力时:
1. 写 web 前端时,很多基础 HTML/React 结构其实每次都差不多
2. 把这些通用结构放到一个 assets/hello-world/ 模板目录里,会非常省事

执行时,Claude 会在运行 Skill 的过程中,直接把 assets/ 里的文件复制到目标目录,再按具体需求进行少量修改,而不是先把文件内容读入上下文再从零生成。

这样做的核心优势是:

  • 节省 token:不占用上下文窗口
  • 保证一致性:模板和资源始终保持统一格式
  • 提高效率:复制 + 微调通常比完全重写更可靠

简单说:assets/ 就是 Skill 的「素材库」,Claude 可以直接拿来用,不需要先读一遍再重写。

这里我就不再展开具体示例了。你可以直接复制前面的 Skill Creator 需求清单模板,交给 AI 帮你生成一份真正贴合自己项目的需求清单。

执行

已经写完实际的需求清单后:

/skill-creator 使用这个需求清单完成Skill创建

总结

回到一开始的目标:不是随便「整两个 Skill 玩玩」,而是把 Skill 当成你项目里的基础设施,做到可复用、可组合、可演进。

整篇文章其实围绕三件事展开:

  • 把 Skill 切成合适的功能单元,像搭积木一样可组合
  • 用文档驱动:CLAUDE.md + 示例结果 + 需求清单,把规则、输入、输出说清楚
  • 接受「先 Plan 再执行,持续 Review 和迭代」这一套工程化流程

在此基础上,再借助 Skill Creator、需求清单模板和 assets/ 这类「素材库」,你就可以逐渐搭出一套属于自己团队的 Skill 体系——从一个个小能力,长成真正能支撑日常开发、运营、协作的工作流。

如果你已经有了第一个 Skill,不妨就从它开始,按照文中的思路倒推一遍:补上缺失的文档、示例和约束,然后再交给 Claude 帮你把 Skill 升级一版。真正的威力,往往是在第二版、第三版之后才会慢慢显现出来。

本作品采用《CC 协议》,转载必须注明作者和本文链接
打赏
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!