01

Skills 是什么,以及为什么你需要它们

每次你和 AI 重复解释同一件事,你都在浪费时间——Skills 让 AI 永久记住怎么配合你工作。

想象一个刚入职的实习生

你刚雇了一个超级聪明的 AI 实习生。 问题是:每天早上他们来上班,对你们公司的一切毫无记忆。你必须每次都重新解释:

🔁

我们用 TDD 写代码

先写测试,再写实现,这是我们的铁律。

🐛

调试遵循诊断循环

复现 → 缩小范围 → 假设 → 验证 → 修复。

📝

需求先做 Grilling

开始写代码之前,必须回答所有不确定的设计问题。

💡
Skills 解决的核心问题

Skills 就是你写给这个"忘性大的实习生"的操作手册。当你说 /tdd,AI 立刻知道你的整套测试哲学和流程,不需要再解释一遍。

Skills vs. 普通提示词:有什么不同?

你可能已经在用提示词了。Skills 和普通提示词的区别,就像厨师的私人食谱 vs. 口头描述一道菜的做法:

💬
普通提示词(一次性)

每次对话都要重新粘贴。AI 理解了,但下次它仍然不记得。每次都从零开始。

Skills(持久化)

写一次,永久生效。在任何项目里输入 /tdd,AI 立刻进入你的测试流程。就像在 AI 大脑里安装了一个子程序。

🔧
Skills(可组合)

Skills 可以互相叠加。先 /grill-with-docs 对齐需求,再 /tdd 测试驱动开发,再 /diagnose 调试——像搭积木一样。

Matt Pocock 的四大工程问题

这套 Skills 体系解决的是 AI 编程时最常见的四个失败模式。每次你遇到这些问题,都有对应的 Skill:

1

AI 没做你想要的 → /grill-me

2

AI 说话太啰嗦 → /caveman

3

代码跑不通 → /tdd

4

代码结构越来越乱 → /improve-codebase-architecture

🏗️
为什么这比 GSD / BMAD 更好?

GSD 和 BMAD 等框架试图接管整个开发流程,但这让 AI 的 bug 变得难以排查。Matt Pocock 的 Skills 更小、更精准、可组合——你保持控制权,AI 在每个环节提供专项帮助。

测验:判断 Skills 的使用场景

你每次开始新功能开发,都要告诉 Claude:「先写测试,用红绿重构循环,测试要覆盖公共接口而不是实现细节」。你应该?

你的应用有一个偶发性 bug,只在生产环境出现,本地无法复现。你应该先用哪个 Skill?

02

一个 Skill 文件的完整解剖

Skills 只是普通的 Markdown 文件——但它的每个部分都有精确的用途。

Skills 的目录结构

每个 Skill 就是一个文件夹,里面放着指令和参考资料。就像一个员工手册:主文件是核心规程,其他文件是详细参考。

skills/engineering/tdd/ TDD Skill 的完整包
SKILL.md 主文件,AI 激活 Skill 时首先读这个
tests.md 测试示例和反例
mocking.md Mock 使用指南
deep-modules.md 深模块设计原则
interface-design.md 接口可测试性设计
📐
渐进式披露(Progressive Disclosure)

SKILL.md 只包含核心规程(保持简短)。详细说明放在单独文件里,只有需要时才读。这样 AI 不会被淹没在上千行指令里。

SKILL.md 的 Frontmatter:触发器

每个 SKILL.md 文件的顶部都有一个Frontmatter,它告诉 AI 两件事:这个 Skill 的名字,以及什么时候应该自动触发它。

CODE
---
name: tdd
description: Test-driven development
  with red-green-refactor loop.
  Use when user wants to build
  features or fix bugs using TDD,
  mentions "red-green-refactor",
  wants integration tests.
---
PLAIN ENGLISH

开始 Frontmatter 元数据块

这个 Skill 的命令名字是 "tdd",输入 /tdd 就能调用它

描述这个 Skill 做什么——这是 AI 判断"我现在应该用哪个 Skill"的依据

触发条件:用户提到红绿重构、TDD、集成测试……

当这些关键词出现时,AI 会自动加载并执行这个 Skill

结束 Frontmatter 块

Skills 之间如何「对话」

某些 Skills 依赖其他 Skills 设置的共享资源。就像公司的 HR 手册依赖之前建立的组织架构——它们共享同一套语言和文档体系。

Skill 文件内容:指令的密度

Skills 的内容不是泛泛的提示词,而是精确的工程规程。来看 TDD Skill 里最关键的那段——它明确禁止了最常见的错误:

CODE
## Anti-Pattern: Horizontal Slices

DO NOT write all tests first,
then all implementation.

## Correct approach

RED→GREEN: test1→impl1
RED→GREEN: test2→impl2
RED→GREEN: test3→impl3
PLAIN ENGLISH

反模式:不要用「水平切片」

不要先写完所有测试,再写所有实现

(这样写出来的测试是想象中的行为,不是真实行为)

正确做法:垂直切片,一次一个功能

写一个测试,立刻让它通过,再写下一个

每次循环都在真实代码的反馈下前进

💡
为什么要把「禁止」写进 Skill?

AI 有默认行为——不加约束,它倾向于先写完所有测试。Skill 里的明确禁令,覆盖了这些默认行为,让 AI 按照你的工程理念工作,而不是它自己的。

测验:Skill 结构判断

一个 Skill 的 Frontmatter 里,哪个字段决定了「什么时候 AI 应该自动触发这个 Skill」?

为什么 TDD Skill 把测试示例放在单独的 tests.md 里,而不是直接放在 SKILL.md 里?

03

实战 Skills 精读:TDD、Diagnose、Review

三个最核心的工程 Skills,逐行读懂它们如何工作——以及你可以怎么改造它们。

/tdd:测试驱动的六步循环

TDD Skill 的核心是一个严格的六步循环。每一步都有Checklist,AI 不能跳过任何一步:

1
规划(Planning)

确认公共接口、要测试的行为、深模块机会。得到用户认可后再开始。

2
追踪子弹(Tracer Bullet)

只写第一个测试,让它失败(RED),再写最少的代码让它通过(GREEN)。

3
增量循环(Incremental Loop)

每次 RED→GREEN 一个行为,不要同时写多个。

4
重构(Refactor)

GREEN 之后清理代码——但必须在测试全通过的状态下。

5
边界测试(Edge Cases)

列出错误路径、边界条件,用同样的循环覆盖它们。

6
总结(Summary)

写一段简洁的工作摘要,说明做了什么改变、为什么。

/diagnose:调试的反馈循环哲学

Diagnose Skill 的核心洞见是:调试的关键不是猜测,而是建立一个可重复的失败信号。有了信号,bug 就有 90% 被解决了。

CODE
## Phase 1 — Build a feedback loop

This is the skill. Everything else
is mechanical. If you have a fast,
deterministic, agent-runnable
pass/fail signal for the bug,
you will find the cause.

Spend disproportionate effort here.
Be aggressive. Be creative.
Refuse to give up.
PLAIN ENGLISH

阶段 1:建立反馈循环(这才是调试的精髓)

其他一切都是机械步骤——关键在这一步

你需要一个快速、确定性的、AI 可以自动运行的通过/失败信号

有了这个信号,你就一定能找到 bug 的根因

在这一步花大量时间是值得的

要有创造力,不要轻易放弃构建反馈循环

🔍
Diagnose 提供了 10 种建立反馈循环的方法

从「写一个失败的测试」到「差异循环(新版本 vs 旧版本对比输出)」,再到「属性/模糊测试(跑 1000 个随机输入找失败模式)」——每种方法对应不同类型的 bug。这是几十年调试经验的提炼。

/zoom-out:当 AI 迷失在代码细节里

Zoom-out Skill 解决一个特殊问题:AI 在深入某段代码后,有时会忘记整个系统的大图——就像一个工匠在修一块砖的时候,忘记了这是一面墙的一部分。

👤
开发者
🤖
AI 代理
🌫️
宏观视角丢失
点击「下一步」开始

测验:选择正确的 Skill

你的 API 有时响应 500 错误,但复现率只有 5%,日志里看不出规律。你的第一步是?

AI 花了 40 条消息帮你优化一个数据库查询,现在提出的解决方案感觉「在局部上是对的,但和整体架构可能冲突」。你应该?

04

打造你自己的 Skill

从「重复说同一件事」到「一个命令搞定」——这是 Skills 真正的魔力所在。

识别你的「重复解释」

你有没有在开始新功能时,重复告诉 AI 同一件事?这些「重复解释」就是你最好的 Skill 候选材料。想想你常说的话:

🏗️

项目规范类

「我们用 NestJS + TypeORM,测试用 Jest,所有 DTO 都要有 class-validator 装饰器。」

🔄

流程规范类

「每次 PR 提交前,先跑 lint,再跑测试,最后更新 CHANGELOG。」

🎨

代码风格类

「函数命名用动词开头,组件用 PascalCase,工具函数放 utils/,不要用 any。」

/write-a-skill 可以帮你把这些整理成规范的 Skill 文件——它会问你几个关键问题,然后生成完整的 Skill 结构。

一个 Skill 的最小可行结构

你不需要写出 TDD Skill 那么完整的文档就能开始。一个最小可行的 Skill 只需要三个部分:

SKILL.md
---
name: api-endpoint
description: Create NestJS API endpoints
  with our conventions. Use when
  adding new routes, controllers,
  or services.
---

# API Endpoint Conventions

Always use class-validator DTOs.
Always return standard response.
Never put business logic in controller.
PLAIN ENGLISH

命令名:/api-endpoint

触发条件:用户提到 NestJS、新路由、控制器……

正文:你的项目规范,用简洁的命令式写法

用 Always/Never 明确表达强制规则

避免模糊的「应该」「最好」,要明确

Drag & Drop:Skill 的三种类型

根据内容不同,Skills 可以分为三大类。把下面的 Skill 名称拖到它对应的类型:

/tdd
/setup-matt-pocock-skills
/diagnose
/caveman
/grill-with-docs

⚙️ 流程 Skill — 定义一套步骤循环,AI 按固定流程操作

拖到这里

📚 知识/配置 Skill — 建立共享语言或配置基础

拖到这里

🎨 风格 Skill — 改变 AI 的输出格式和表达方式

拖到这里

测验:Skill 设计决策

你想给 Skill 加入 20 个代码示例和反例。最好的做法是?

05

团队 Skills 工作流

当整个团队共享同一套 Skills,AI 就成了团队智慧的放大器——而不是每个人各自重新教的「不同学生」。

Skills 的分层:个人 vs. 团队 vs. 项目

Skills 可以在三个层级存在,就像公司的规章制度:有全公司适用的(全局),有部门内部的(团队),有项目专属的(本地):

🌍
全局 Skills(~/.claude/skills/)

安装在你个人机器上,适用于所有项目。例如 /tdd、/diagnose 这种通用工程规范。

👥
项目 Skills(.claude/skills/ 在仓库里)

存在 Git 仓库里,团队所有成员共享。包含这个项目的独特规范、领域语言、架构决策。

🔒
私有 Skills(个人 .gitignore)

个人工作习惯,不提交。例如你个人的代码风格偏好、自定义的调试步骤。

CONTEXT.md:团队共享语言的基础

在 Matt Pocock 的 Skills 体系里,CONTEXT.md 是比任何单个 Skill 都更基础的文件。它是团队和 AI 之间的「共同语言词典」:

CONTEXT.md
## Language

Issue tracker:
The tool that hosts a repo's issues
— GitHub Issues, Linear, etc.
Avoid: backlog manager, backlog host

Triage role:
A canonical state-machine label
applied to an Issue during triage.
PLAIN ENGLISH

语言词典部分——定义项目专用词汇

Issue Tracker:存放项目 issues 的工具

可能是 GitHub Issues、Linear 或本地文件

禁止用「backlog manager」等模糊说法

Triage Role:issue 在分类流程中的状态标签

用精确术语,AI 输出也会精确,少废话

一次完整的团队 Skills 对话

这是一个真实的团队使用 Skills 的工作流——从需求澄清到功能上线:

测验:团队 Skills 决策

你的团队刚确定了新的 API 命名规范——所有端点用 REST 风格,DTO 必须有验证装饰器,测试覆盖率 80%+。这个规范应该存在哪里?

CONTEXT.md 里的领域语言词典,除了让团队沟通更顺畅,还有什么工程上的实际好处?

🎓
你已经掌握了 Skills 体系的核心

从理解 Skills 是什么、解剖 Skill 文件结构、精读三个实战 Skills,到动手创建自己的 Skill,再到在团队中共享——这就是 Real Engineers 用 AI 的方式:用工程化的方法,管理工程化的工具