
本篇是这一系列中关于 Skill 的最后一篇文章。上一篇里,我们已经见识过 Skill 的威力,但在真实项目里,需求远不止那些示例。除了更细致的场景,还更需要一套「通用的 Skill 创建方法」。只有这样,每个人才能为自己的项目打造真正好用、可复用的 Skill。接下来就顺着我的思路,一起把「如何创建 Skill」这件事,打磨成一套可落地的最佳实践。
功能单元
准确地分析 Skill 的能力边界非常关键:范围太大,会变成一个「什么都想干却什么都干不好」的巨石 Skill;范围太小,又会让 Skill 数量爆炸,后期维护成本很高。
所以,功能单元的合理设计,其实更像是在搭积木、搭 pipeline、做分层架构。不知道以后会不会真的出现专门的 Skill 架构师,哈哈哈。
参考内容
这部分大家应该都不陌生: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。
https://github.com/anthropics/skills/tree/main/skills/skill-creator
需求清单模板
先说明一下:我下面给出的这份需求清单模板会比较完整,你不需要一开始就把所有内容都写满。
刚开始创建 Skill 时,可以只填写最基础、最关键的部分;当你发现生成的 Skill 不够准确、不够稳定时,再逐步补充和迭代细节就好。
这份模板大致包含以下十个主要部分:
- 基本信息 - Skill 名称、描述、触发条件
- 使用场景 - 核心用例和边界情况
- 输入规范 - 必需/可选输入、格式要求、验证规则
- 输出规范 - 输出类型、文件详情、内容结构、示例
- 工作流程 - 主流程、决策点、错误处理
- 资源需求 - 脚本、参考文档、资源文件
- 依赖和约束 - 项目内/外部依赖、约束条件
- 验证方式 - 自动/手动验证、常见问题排查
- 参考资料 - 现有实现、外部文档、相关 Skill
- 补充说明 - 特殊需求、优先级、其他备注
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575
| # 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/ |
输出资源 |
直接复制 / 修改,不需读入上下文 |
典型使用场景包括:
- 模板文件 - 如 assets/slides.pptx(PPT 模板)
- 品牌资源 - 如 assets/logo.png(公司 logo)
- 样板代码 - 如 assets/frontend-template/(前端项目模板)
- 字体文件 - 如 assets/font.ttf
- 可直接复制修改的样例文档
Skill Creator 如何使用这些资源?
结合 SKILL.md 示例:当你为类似 frontend-webapp-builder 这种 Skill 设计「帮我建一个 todo app」的能力时:
- 写 web 前端时,很多基础 HTML/React 结构其实每次都差不多
- 把这些通用结构放到一个
assets/hello-world/ 模板目录里,会非常省事
执行时,Claude 会在运行 Skill 的过程中,直接把 assets/ 里的文件复制到目标目录,再按具体需求进行少量修改,而不是先把文件内容读入上下文再从零生成。
这样做的核心优势是:
- 节省 token:不占用上下文窗口
- 保证一致性:模板和资源始终保持统一格式
- 提高效率:复制 + 微调通常比完全重写更可靠
简单说:assets/ 就是 Skill 的「素材库」,Claude 可以直接拿来用,不需要先读一遍再重写。
这里我就不再展开具体示例了。你可以直接复制前面的 Skill Creator 需求清单模板,交给 AI 帮你生成一份真正贴合自己项目的需求清单。
执行
已经写完实际的需求清单后:
1
| /skill-creator 使用这个需求清单完成Skill创建
|
总结
回到一开始的目标:不是随便「整两个 Skill 玩玩」,而是把 Skill 当成你项目里的基础设施,做到可复用、可组合、可演进。
整篇文章其实围绕三件事展开:
- 把 Skill 切成合适的功能单元,像搭积木一样可组合
- 用文档驱动:CLAUDE.md + 示例结果 + 需求清单,把规则、输入、输出说清楚
- 接受「先 Plan 再执行,持续 Review 和迭代」这一套工程化流程
在此基础上,再借助 Skill Creator、需求清单模板和 assets/ 这类「素材库」,你就可以逐渐搭出一套属于自己团队的 Skill 体系——从一个个小能力,长成真正能支撑日常开发、运营、协作的工作流。
如果你已经有了第一个 Skill,不妨就从它开始,按照文中的思路倒推一遍:补上缺失的文档、示例和约束,然后再交给 Claude 帮你把 Skill 升级一版。真正的威力,往往是在第二版、第三版之后才会慢慢显现出来。