编程 Matt Pocock Skills 深度实战:AI Agent 工程化技能集——从需求对齐到架构审查的完整指南(2026)

2026-06-04 12:45:43 +0800 CST views 7

Matt Pocock Skills 深度实战:AI Agent 工程化技能集——从需求对齐到架构审查的完整指南(2026)

2026年5月 GitHub 月榜第2名,月增星 71,266,总星 112,644。这个开源项目解决了一个所有 AI 编程者都在面临的根本性问题:AI 写代码太快,快到你的工程纪律追不上它。

一、背景:AI 编程的「速度陷阱」

Matt Pocock 是 TypeScript 圈最知名的教育者之一,他做了 Total TypeScript 课程平台,日常重度使用 Claude Code 写代码。他发现了一个致命的问题:

AI 写代码的速度,远超你的代码审查速度。

手动编程时,一个模块可能要半天,你有足够的时间停下来想架构、做 TDD、写 Code Review。但 AI 三分钟就能生成了一个 500 行的模块。你甚至来不及想"这个模块的职责划分是否合理",代码已经躺进仓库了。一个礼拜下来,项目就成了屎山。

这不是 AI 蠢的问题,而是 AI 天然缺少工程纪律

四个经典失败模式

失败模式表现后果
需求没对齐你以为 AI 懂了,它理解偏了返工率极高
没有共享语言AI 每次都用大白话解释概念,啰嗦又烧 tokencontext window 被撑爆
没有反馈循环写完代码不看测试、不看类型、不看浏览器代码上线 = 炸弹上线
没有架构审查AI 往一个模块里塞五个职责,函数 20 行变 200 行屎山堆得比手写快 10 倍

Matt Pocock 解决这个问题的方案,就是把他日常使用的工程纪律——Code Review、需求评审、TDD、架构审查——固化成 18 个 Skill 文件,让 AI 被迫执行这些步骤。

二、核心理念:不给 AI 加能力,给 AI 加纪律

mattpocock/skills 的设计哲学非常清晰:

不绑定任何模型。每个 Skill 是一个独立的 Markdown 文件,可以自由组合、随意修改。不做框架,做工具。

本质上,这不是在增强 AI 的编程能力,而是在 AI 的行为链路上加一层"工程纪律教练":

你丢需求给 AI → /grill-with-docs 强制需求对齐 → /to-prd 生成 PRD
→ /to-issues 拆解任务 → /tdd 强制 TDD → /improve-codebase-architecture 定期架构审查

核心逻辑只有一句话:好工程师该做的事,AI 被 skill 逼着也得做。

三、安装与初始化配置

3.1 一键安装

npx skills@latest add mattpocock/skills

这个命令会自动克隆 Matt Pocock 的 .claude/skills 目录到你的本地,并注册所有技能。

3.2 初始化配置

安装完成后,每个新仓库必须运行一次

/setup-matt-pocock-skills

这个初始化技能会依次问你三个问题:

问题1:Issue Tracker 选择

你用哪个工具管理 Issues?
→ GitHub Issues / Linear / 本地文件

Skill 会根据你的选择生成对应格式的 issue 描述。

问题2:Triage 标签词汇表

给 Issue 打标签时用哪些词汇?(例如:bug、feature、needs-triage)

/triage 技能会使用这些标签来组织和管理 issue 状态。

问题3:文档路径结构

生成的 ADR 和文档放哪?

这里有两个选择:

  • Single-context:适合单一产品/应用的仓库。ADR 统一放在 docs/adr/,根目录只有一个 CONTEXT.md。大多数项目选这个。
  • Multi-context:适合 Monorepo。每个子模块有独立的 context 文件,根目录有 CONTEXT-MAP.md 索引。

初始化完成后,项目根目录会自动生成一个 CONTEXT.md 文件——这是 AI 与你之间的共享语言词典,也是后续所有技能的核心数据基础。

3.3 Skills 作用域机制

Skills 存储在三个作用域中,可被不同粒度的工具使用:

个人技能:    ~/.agents/skills/          # 所有项目共享
项目技能:    ./.agents/skills/          # 随仓库 clone,团队共享
机器级技能:  /etc/codex/skills/         # 容器/机器默认配置

触发方式有两种:

  • 显式调用:在 CLI 中输入 /skill名称(如 /tdd
  • 隐式触发:任务描述与 Skill 描述匹配时,AI 自动激活对应技能

四、核心工程技能详解

4.1 /grill-with-docs —— 需求对齐 + 术语建设

这是整个技能体系里最核心的一个。 Matt Pocock 称之为"可能是我做过的最酷的事"。

工作原理

当你给 AI 一个模糊需求(比如"加个登录功能"),/grill-with-docs 会触发一轮苏格拉底式追问

你:加个用户登录功能

AI(/grill-with-docs 激活):
"你说的'用户'是指 Customer 还是 Admin?
登录方式是邮箱密码还是手机验证码?
是否需要支持 SSO(Google/GitHub 登录)?
Token 存在哪里?HttpOnly Cookie 还是 LocalStorage?
登录超时时间是多少?
是否需要记住我?"

核心价值:共享语言(Ubiquitous Language)

/grill-with-docs 在追问的同时,会维护一个 CONTEXT.md 文件。追问确认后,相关术语的定义会自动写入这个文件。

例如,你在项目中说"materialization cascade",而不是说一大段"当课程章节里的某个课时被标记为'正式发布'时,需要在文件系统中为它分配物理存储位置并触发一系列连锁反应"。

Before(无共享语言):

"There's a problem when a lesson inside a section of a course is made 'real' (i.e. given a spot in the file system)"

After(使用共享语言):

"There's a problem with the materialization cascade"

这种精确性带来的好处是:

  • 变量名、函数名、文件名都基于共享语言命名,一致性大幅提升
  • AI 的 context window 不再被冗长描述塞满
  • 同一个概念在不同 session 中保持一致的理解

生成 ADR(架构决策记录)

遇到重大技术决策(如"选 PostgreSQL 还是 MongoDB"),/grill-with-docs 会当场引导你写一份 ADR,放入 docs/adr/ 目录,记录决策理由和备选方案对比。

4.2 /grill-me —— 快速需求澄清(轻量版)

如果你不需要建文档、不想维护 CONTEXT.md,只想在开始写代码前快速对齐需求,用 /grill-me:

你:我想给 API 加个缓存层

AI(/grill-me 激活):
"缓存失效策略是什么?TTL 还是主动失效?
存热点数据还是全量数据?
用什么缓存中间件?(Redis / Memcached / 内存)
是否需要分布式一致性?"

不写文档,不更新 CONTEXT.md,专注快速澄清。适合非编码场景(技术选型讨论、方案设计)和还没建 CONTEXT.md 的项目。

4.3 /tdd —— 测试驱动开发的正确打开方式

核心要求:红→绿→重构,单步执行

/tdd 强制 AI 遵循 TDD 的三个阶段:

  1. Red(红):先写一个失败的测试,描述你期望的行为
  2. Green(绿):写最少的代码让测试通过
  3. Refactor(重构):在测试保护下改善代码质量

/tdd 的具体约束

规则1:每次只写一个测试,只写刚好让它通过的代码
规则2:只测公开接口行为,不碰实现细节
规则3:禁止一次性写完所有测试,要水平切片
规则4:测试名必须描述行为,而非实现

实际效果

你要加一个"购物车结算"功能。AI 不先写代码,而是先问你:

"结算接口的输入是什么?(Cart 对象)
输出是什么?(OrderConfirmation)
失败情况有哪些?(库存不足、支付失败、优惠券过期)
结算过程中需要记录哪些审计日志?"

然后逐条写失败的测试,逐条写让它通过的实现。每一步都有测试保护,任何回归立刻被发现。

解决的核心问题

没有 TDD 时,AI 写代码是"假设正确",有 TDD 时是"证明正确"。在 AI 编程场景下,TDD 更是关键——因为 AI 可能在没有任何预警的情况下悄悄破坏已有功能,而测试套件就是你的安全网。

4.4 /diagnose —— 系统化调试六步法

遇到复现困难、原因不明的 bug,/diagnose 提供了一个结构化的调试框架:

Phase 1: 造一个 pass/fail 信号(最关键!)
    → 在碰任何代码之前,先写一个能自动判断 bug 是否存在的脚本
    → 测试、curl 脚本、headless 浏览器脚本均可

Phase 2: 隔离触发条件
    → 用 pass/fail 信号反复运行,收集失败时的上下文

Phase 3: 假设成因
    → 基于 Phase 2 的数据,提出最可能的假设

Phase 4: 验证假设
    → 针对性地加日志或断点,验证或推翻假设

Phase 5: 修复
    → 在 pass/fail 信号保护下修复

Phase 6: 确认修复
    → 运行信号确认 bug 已消除

Phase 1 是整个方法论的灵魂。没有反馈循环,就别碰代码。这听起来简单,但恰恰是 AI 编程中最容易被跳过的步骤——因为 AI 太急于"帮你解决问题",在没有清晰反馈机制的情况下就开始盲目修改。

实际例子:一个 API 偶尔返回 500,日志里什么也没有。AI 用 /diagnose,先写一个重试脚本每 5 秒发一次请求,跑 10 分钟后收集到 3 次失败请求的特征数据——全部发生在请求体包含某个特殊字符时。最终锁定根因并修复,零误判。

4.5 /improve-codebase-architecture —— 架构体检

这是防止屎山形成的日常维护技能。Matt Pocock 建议每隔几天跑一次,或者在代码量明显增长后立即运行。

工作原理

/improve-codebase-architecture 会让 AI 派 subagent 遍历整个代码库,找出"浅模块"(Shallow Modules)。

什么是浅模块? John Ousterhout 在《A Philosophy of Software Design》中定义:最好的模块是深的——通过简洁的接口暴露大量功能。浅模块则相反:接口跟实现差不多复杂,等于没有封装。

输出示例

架构报告:UserService 发现浅模块问题

问题:UserService 接口暴露了 15 个方法
分析:其中 8 个只是直接转调 UserRepository 的同名方法
建议:
  1. 将这 8 个方法合并为 upsertUser() + queryUser()
  2. UserService 对外只暴露 2 个方法,内部处理 CRUD 逻辑
  3. UserRepository 降级为包的私有实现细节

预期效果:
  ✓ 接口从 15 个减到 2 个
  ✓ 调用方代码大幅简化
  ✓ 以后改 UserRepository 不会破坏 UserService 的外部接口

通过定期"架构体检",在 AI 疯狂加速编码的过程中及时踩刹车,保持代码库的长期可维护性。

4.6 /to-prd —— 对话自动生成 PRD

当你和 AI 经过一番需求讨论后,运行:

/to-prd

AI 会自动把当前对话上下文压缩成一份完整的 Product Requirements Document,提交到你的 issue tracker(GitHub Issues 或 Linear)。

PRD 包含

  • Problem Statement(问题描述)
  • Proposed Solution(解决方案)
  • User Stories(用户故事)
  • Implementation Decisions(实现决策)
  • Testing Decisions(测试决策)
  • Out of Scope(不在范围内)

你不需要写一个字,聊完天直接生成可归档的文档。这解决了 AI 编程中一个很实际的问题:对话里讨论了很多细节,但最后什么都没有沉淀下来。

4.7 /to-issues —— PRD 拆解为垂直切片任务

PRD 确认后,运行:

/to-issues

AI 将 PRD 拆解成垂直切片的独立 issue。每个 issue 贯穿所有集成层(前后端都包含),可以独立交付。

同时,每个 issue 会标注:

  • AFK(Agent Freely Known):AI 可以独立完成
  • HITL(Human In The Loop):需要人类决策
PRD "数据导出功能" 被拆解为:

issue #1(AFK):后端导出接口 + CSV 生成
issue #2(AFK):前端导出按钮 + 日期选择器
issue #3(HITL):权限控制——谁有权导出全部数据?
  → 需要你拍板,AI 无法替你决定数据访问权限策略

垂直切片 vs 水平切片(前后端分别开发再联调)的区别在于:垂直切片的每个 issue 交付后都能看到完整的功能,而不是半成品。

4.8 /triage —— Issue 状态机管理

一个基于标签的 issue 分类系统:

状态机:
  needs-triage → needs-info → ready-for-agent → done
                         ↘ ready-for-human
                         ↘ wontfix → 归档到 .out-of-scope/

类别:
  bug / enhancement / question / documentation

当有人提了个"支持 WebSocket 实时推送"的需求,/triage 会:

  1. 标记为 enhancement + needs-triage
  2. 列出技术权衡分析
  3. 如果判断不适合当前阶段,标记 wontfix 并写一份拒绝理由放入 .out-of-scope/
  4. 半年后有人再提,直接引用已有文档,无需重复讨论

4.9 /zoom-out —— 全局视角看代码

在动手改一个模块之前,先搞清楚它在整个系统中的位置:

/zoom-out

AI 会画出当前模块的相关模块和调用方地图,并标注影响范围。

你要改 PaymentService.processPayment()

AI 报告:
模块地图:
  PaymentService.processPayment()
  ├── 被调用方:OrderController, SubscriptionRenewal, RefundHandler
  ├── 依赖方:PaymentGateway, InvoiceGenerator
  └── 影响范围:订单、订阅、退款、发票 4 个功能域

警告:修改此方法签名会影响 3 个上游调用方
建议:只改内部实现,或同步更新所有调用方

避免"改完发现自己炸了三个模块"的悲剧。

4.10 /prototype —— 可丢弃的原型验证

对某个设计决定没把握时,用 /prototype 生成一个最小可行原型来验证假设:

规则:
  ✓ 用最少代码验证设计假设
  ✓ 逻辑问题 → 终端小程序推状态机
  ✓ UI 问题 → 同一路由用 URL 参数切换多方案
  ✗ 不写测试
  ✗ 不做抽象
  ✗ 原型代码明确标记 throwaway

实际例子:你不确定"任务看板"是用拖拽还是弹窗来移动任务。跑 /prototype,AI 生成:

/kanban?variant=drag   → 拖拽版
/kanban?variant=modal  → 弹窗版

你在浏览器里切换对比,5 分钟决定用哪个。然后删掉原型,把设计决策合并进正式代码。

4.11 /handoff —— 跨 Session 交接文档

这是 Matt Pocock 技能集中最被低估的一个技能。

当你和 Claude Code 干了半天,刚把 PRD 拆成 issue,该睡觉了。运行:

/handoff

AI 生成一份交接文档,包含:

  • 本次对话完成了什么
  • 当前卡点和原因
  • 下一步行动计划

第二天早上,新的 Claude Code session 读取这个文档,直接知道昨天做了什么、从哪里继续。

解决的问题:AI 编程中,每个 session 都是"失忆"的——对话结束后,所有上下文消失,下次又要从头解释。但工程实践中,很多任务需要跨越多个 session 才能完成。/handoff 把 session 之间的上下文断裂给缝上了。

4.12 /caveman —— 省 token 模式

当 context window 快满时,运行:

/caveman

AI 切成电报体,砍掉所有冠词、寒暄和 filler words:

正常模式:
"好的,我来帮你分析一下 PaymentService 这个类的结构。
这个类目前有大约 200 行代码,包含了支付处理的所有逻辑..."

caveman 模式:
"分析 PaymentService
→ 4 个方法, 2 个 helper
→ 提取 helper 到 PaymentsHelpers
→ 开始?"

token 节省约 75%。适合在 context window 紧张时快速推进对话。

4.13 /write-a-skill —— 构建你自己的工程纪律

这是技能的元技能——教你怎么创建新的 Skill。

Matt Pocock 的 Skill 文件格式非常开放:

# SKILL.md 示例结构

## 触发词
/skill-name

## 触发条件
当用户想要做 X 的时候激活

## 执行步骤
1. 第一步做什么
2. 第二步做什么
3. ...

## 输出格式
描述输出的结构和位置

## 注意事项
- 什么情况下应该终止
- 什么情况下可以跳过

你公司有一堆代码规范(commit 格式、分支命名、部署 checklist),跑 /write-a-skill,AI 引导你把这些写成 /code-review/pre-deploy 两个技能,新来的 Agent 自动遵守你们团队的规范。

五、推荐工作流:从需求到交付的完整闭环

mattpocock/skills 设计的精髓在于把所有工程纪律串联成一个可执行的工作流:

┌─────────────────────────────────────────────┐
│ 第一阶段:需求定义                            │
│ /grill-with-docs  → 需求对齐 + 术语建设      │
│ /to-prd            → 生成 PRD                 │
│ /to-issues         → 拆解垂直切片 issue       │
│ /triage            → 状态分类(ready-for-agent)│
└─────────────────────────────────────────────┘
                      ↓
┌─────────────────────────────────────────────┐
│ 第二阶段:编码实现                            │
│ /tdd               → 红→绿→重构               │
│ /zoom-out          → 改代码前看全局           │
│ /prototype         → 重要决策先做原型验证     │
└─────────────────────────────────────────────┘
                      ↓
┌─────────────────────────────────────────────┐
│ 第三阶段:调试与审查                          │
│ /diagnose          → 结构化调试(先造信号!)  │
│ /improve-codebase-architecture → 定期架构体检│
└─────────────────────────────────────────────┘
                      ↓
┌─────────────────────────────────────────────┐
│ 辅助技能:                                   │
│ /handoff           → 跨 session 交接         │
│ /caveman           → 省 token 加速            │
│ /write-a-skill     → 扩展自己的技能体系       │
└─────────────────────────────────────────────┘

六、与 QClaw Skills 的对比:殊途同归的工程纪律

有意思的是,Matt Pocock Skills 的设计思路和 QClaw 的 Skill 机制高度共鸣。两者都认识到:

  1. AI 需要工程纪律的约束,而不是更多能力加持
  2. Skill 应该是开放标准,不是专有框架——mattpocock/skills 的 SKILL.md 可以被 Codex CLI、Claude Code、GitHub Copilot 等多个平台直接复用
  3. 文档和交接是 AI 编程的生命线——CONTEXT.md、handoff、ADR,这些文档机制解决的是 AI 的"记忆断裂"问题

但两者也有分工上的差异:

  • Matt Pocock Skills 主要面向单个项目内的工程实践(TDD、架构、调试、PRD)
  • QClaw Skills 更偏向跨任务的工具链集成(搜索、发布、云存储、多平台协作)

如果你同时使用两者,合理的分工是:QClaw Skills 负责你的外部工作流(研究、发布、协作),Matt Pocock Skills 负责你的代码工程纪律。

七、安装与快速上手

7.1 安装步骤

# 1. 安装 skills CLI(如果没有)
npm install -g skills@latest

# 2. 添加 Matt Pocock Skills
npx skills@latest add mattpocock/skills

# 3. 进入项目目录,初始化
cd your-project
claude  # 启动 Claude Code
/setup-matt-pocock-skills  # 回答三个配置问题

# 4. 开始使用
/grill-with-docs  # 新需求的第一次对话

7.2 新手建议

不要一次启用所有技能。Matt Pocock 本人建议:

第一周:只启用 /grill-with-docs 和 /tdd
        感受需求对齐和 TDD 的效果

第二周:加入 /diagnose 和 /zoom-out
        改善调试和代码理解

第三周:加入 /improve-codebase-architecture
        开始定期架构审查

第四周:加入 /to-prd、/to-issues、/triage
        完善需求管理工作流

八、总结:AI 编程的下半场是工程纪律

mattpocock/skills 回答了一个 2026 年每个开发者都在面临的问题:有了 AI 之后,工程师的核心价值是什么?

Matt Pocock 的答案是:工程纪律,而不是写代码本身。

当 AI 能以 10 倍速度写代码时,唯一能与之匹配的是同样 10 倍严格的工程纪律——更早的需求对齐、更快的反馈循环、更频繁的架构审查、更系统的调试方法。

mattpocock/skills 的本质,是把几十年软件工程积累的最佳实践,转化为 AI 可以执行的 Skill 指令。它不改变 AI 的能力边界,它改变的是 AI 的行为模式——从"你让写什么我就写什么"到"在做任何事情之前,让我先确认我理解了对的、测试了对了、考虑了全局了"。

正如 Kent Beck 所说:"每天投资于系统的设计"(Invest in the design of the system every day)。有了 mattpocock/skills,AI 终于也能参与到这个投资中了。


参考资料

推荐文章

网站日志分析脚本
2024-11-19 03:48:35 +0800 CST
解决 PHP 中的 HTTP 请求超时问题
2024-11-19 09:10:35 +0800 CST
维护网站维护费一年多少钱?
2024-11-19 08:05:52 +0800 CST
前端如何一次性渲染十万条数据?
2024-11-19 05:08:27 +0800 CST
程序员茄子在线接单