Matt Pocock(TypeScript 专家,Total TypeScript 创始人)的 Skills 是一套为 AI 编程助手(Claude Code、Codex 等)设计的工程实践技能集。核心理念是:小、可组合、可适配,强调开发者保持控制权,而非像 GSD、BMAD 等框架那样接管整个流程。这些技能基于数十年的软件工程经验,将经典工程实践转化为可重复的 AI 协作模式。
核心工作流拆解
Matt 的工作流是一个完整的需求 → 设计 → 实施 → 审查闭环,分为以下阶段:
阶段 1:对齐(Alignment)
核心技能:/grill-me 和 /grill-with-docs。这是 Matt 最核心的技能。当用户提出一个需求时,AI 不是立即开始编码,而是反向拷问用户——通过 relentless interview(无情的访谈)挖掘所有隐含假设和未明确的决策分支。
工作流程:
- 用户提出想法
- AI 开始系统性提问:目标用户是谁?边界条件是什么?错误场景如何处理?
- 直到决策树的每个分支都被解决
/grill-with-docs额外产出:CONTEXT.md(领域词汇表)和 ADR(架构决策记录)
解决的问题:“No-one knows exactly what they want” —— 软件开发中最常见的失败模式是需求错位。
阶段 2:规格化(Specification)
核心技能:/to-spec。将对齐阶段的对话综合成一份结构化的规格说明文档(类似 PRD),发布到 Issue Tracker。
规格模板包含:
- 问题陈述(Problem Statement)
- 解决方案(Solution)
- 用户故事(User Stories)—— 大量、编号的 “As an…, I want…, so that…” 格式
- 实施决策(Implementation Decisions)—— 模块、接口、架构决策,不包含具体代码
- 测试决策(Testing Decisions)—— 测试哪些模块、测试边界
- 范围外(Out of Scope)
关键原则:使用项目的领域词汇(来自 CONTEXT.md),尊重已有的 ADR。
阶段 3:任务拆分(Ticket Breakdown)
核心技能:/to-tickets。将规格说明拆分为 tracer-bullet tickets(追踪子弹工单),每个工单声明其阻塞边界。
特点:
- 每个工单是一个垂直切片(vertical slice)
- 明确声明依赖关系和阻塞边界
- 可输出到 GitHub Issues、Linear 或本地文件
阶段 4:实施(Implementation)
核心技能:/implement + /tdd。实施阶段采用严格的 TDD(测试驱动开发)循环。
关键规则:
- 只在预定义的 seams(接缝)处测试——公共边界,而非内部实现
- 一次一个垂直切片,不要水平切片(不要先写所有测试再写所有实现)
- 测试必须验证行为,而非实现细节
反模式警告:
- 实现耦合测试(mock 内部协作者)
- 同义反复测试(expect(add(a,b)).toBe(a+b))
- 水平切片(批量写测试再批量写实现)
阶段 5:代码审查(Code Review)
核心技能:/code-review。双轴审查:
- 标准轴:是否遵循仓库编码标准 + Fowler 代码异味基线
- 规格轴:是否忠实实现了原始 Issue/PRD
通过并行子代理运行,确保两个维度互不污染。
阶段 6:架构改进(Architecture Improvement)
核心技能:/improve-codebase-architecture。定期(建议每几天一次)扫描代码库,寻找深化模块的机会。
工作流程:
- 扫描代码库,识别可改进区域
- 生成可视化 HTML 报告
- 让用户选择一个改进点
- 启动
/grill-with-docs深入讨论该改进
辅助技能
- 调试技能
/diagnosing-bugs:纪律化的调试循环 - 原型技能
/prototype:构建一次性原型回答设计问题——可以是终端应用(状态/逻辑问题)或多个 UI 变体(从同一路由切换) - 领域建模
/domain-modeling:主动构建和锐化项目的领域模型:挑战术语与词汇表的一致性、用边界场景压力测试、更新 CONTEXT.md 和 ADR - 路由技能
/ask-matt:询问哪个技能或流程适合当前情况——整个技能库的路由器
技能分类体系
Matt 将技能按调用方式分为两类:规则 与 用户调用技能。模型可以调用技能,但不能调用另一个用户调用技能。
书籍思想溯源
Matt 的工作流深深植根于经典软件工程著作:
《The Pragmatic Programmer》(David Thomas & Andrew Hunt)
核心思想:DRY(Don’t Repeat Yourself)、正交性(Orthogonality)、曳尾石(Tracer Bullets)、小步前进(Small Steps)。
在 Matt 技能中的体现:
| 书籍概念 | Matt 技能 | 具体实践 |
|---|---|---|
| 曳尾石 Tracer Bullets | /to-tickets |
tracer-bullet tickets,端到端薄切片验证 |
| 小步前进 Small Steps | /tdd |
红-绿循环,一次一个垂直切片 |
| 需求模糊 | /grill-me |
通过拷问消除"没人知道想要什么" |
《Domain-Driven Design》(Eric Evans)
核心思想:通用语言(Ubiquitous Language)、限界上下文(Bounded Context)、实体/值对象/聚合、防腐层(Anti-Corruption Layer)。
在 Matt 技能中的体现:
| 书籍概念 | Matt 技能 | 具体实践 |
|---|---|---|
| 通用语言 Ubiquitous Language | CONTEXT.md | 项目词汇表,1 个词代替 20 个词 |
| 领域建模 | /domain-modeling |
主动构建和锐化领域模型 |
| 对齐阶段建立语言 | /grill-with-docs |
拷问同时产出 CONTEXT.md 和 ADR |
书中例子:“There’s a problem when a lesson inside a section of a course is made ‘real’” → “There’s a problem with the materialization cascade” —— 这就是通用语言的力量。
《Extreme Programming Explained》(Kent Beck)
核心思想:TDD、重构(Refactoring)、简单设计(Simple Design)、持续集成(Continuous Integration)。
在 Matt 技能中的体现:
| 书籍概念 | Matt 技能 | 具体实践 |
|---|---|---|
| TDD 测试驱动开发 | /tdd |
严格的红-绿-重构循环 |
| 重构 Refactoring | /improve-codebase-architecture |
“每天投资系统设计"的实践 |
| 代码审查 | /code-review |
重构在审查阶段,不在 TDD 循环内 |
《A Philosophy Of Software Design》(John Ousterhout)
核心思想:深模块(Deep Modules)、信息隐藏(Information Hiding)、分层设计(Layered Design)、定义错误(Errors)。
在 Matt 技能中的体现:
| 书籍概念 | Matt 技能 | 具体实践 |
|---|---|---|
| 深模块 Deep Modules | /codebase-design |
小接口、大行为的设计纪律 |
| 信息隐藏 | /tdd seams 概念 |
在公共边界测试,不穿透模块 |
| 分层设计 | /improve-codebase-architecture |
寻找深化模块的机会 |
关键洞察
- AI 时代的工程纪律更重要:AI 加速了编码,但也加速了软件熵。没有纪律的 AI 编程会产生更快的混乱。解决方案不是限制 AI,而是更严格地应用工程 fundamentals。
- 通用语言是效率杠杆:一个精心维护的 CONTEXT.md 让 AI 能用 1 个词代替 20 个词,减少 token 消耗,提高代码一致性,让代码库更易导航。
- 反馈循环决定质量:没有反馈的 AI 是盲目的。TDD、类型检查、浏览器访问构成了反馈三角,其中 TDD 提供了最结构化的反馈循环。
- 深模块是设计目标:不是更多模块,而是更深的模块——简单接口、丰富行为、清晰边界。这是对抗复杂性的核心武器。
实践建议
如果你想采用 Matt 的工作流:
- 从
/grill-me开始:养成在编码前对齐需求的习惯 - 建立 CONTEXT.md:花时间定义项目的通用语言
- 严格执行 TDD:红-绿循环不是可选的,是纪律
- 定期架构审查:每几天运行
/improve-codebase-architecture - 小步前进:一次一个垂直切片,不要批量操作
原文:公众号「麦坊」《Matt Pocock Skills 工作流深度分析》