Matt Pocock Skills
18 篇文章
- ask-matt 精读:一张会撒谎的地图,为什么宁可手写也不去扫描你已经装了什么ask-matt 是 mattpocock/skills 的入口路由器:你描述处境,它给你下一个该敲的技能名,然后停手。本文走一遍它的真实触发路径,拆开 flow / on-ramp / standalone / vocabulary 四类组织法,解释它为什么是一张手写地图而不是一次环境扫描,以及它把『路由会腐烂』当成明文义务而不是自动化。
- codebase-design 精读:一份词汇表,怎么用『删掉它』判定一个模块该不该存在codebase-design 是一份词汇表而不是一次会话:它定义 module / interface / depth / seam / adapter / leverage / locality 七个概念,并给每个词配一个被禁的替代词。本文走一遍它的真实触发路径,讲清它的四个判定工具(deletion test、接口即测试面、一个 adapter 是假缝两个才是真缝、depth 是接口的属性),它为什么公开否掉 Ousterhout 的 depth 定义,以及一个没有流程、没有停止条件的技能会付出什么代价。
- diagnosing-bugs 精读:没有红得起来的反馈回路,不许进入假设diagnosing-bugs 把调试切成六个相位,每个相位是一道门而不是一条待办。最重要的那道门在 Phase 1:你必须先有一条已经跑过一次、能对『这个 bug』亮红的命令,才被允许提出任何理论——正文把『先读代码猜一个理论』点名成这个技能专门要防的失败。本文讲清六个相位各自的完成标准、为什么假设必须一次生成 3–5 个且可证伪、带 DEBUG 前缀的调试日志为什么值得,以及它把『找不到正确的接缝』当成一条正式发现。
- domain-modeling 精读:术语是契约,值得在会话中途打断你domain-modeling 把术语当契约维护:冲突当场裁决、就地写进 GLOSSARY.md、用边界场景压力测试概念、代码和说法打架时把代码摔回来。本文讲清它为什么区分『主动改模型』和『被动读词表』,它给 glossary 和 ADR 设的两条不同门槛,以及几个它没藏起来的代价——自动触发最弱、未评审的 agent 写 glossary 比没有更糟、它并不能凭空生成领域语言。
- grill-me 精读:一个只有 7 行的技能,为什么反而是设计grill-me 的正文只有一行:调用 grilling。本文走一遍它的真实触发路径,解释薄指针与厚原语的分工,用 git 历史还原它从三段指令收缩成七行的过程,并说清楚它刻意剥离了触发词、状态、问题数量上限之后,为什么行为反而更准。
- grill-with-docs 精读:同一个访谈,为什么它敢往你的仓库里写文件grill-with-docs 的正文只有一句『调用 grilling 和 domain-modeling』。本文讲清楚它和 grill-me 的唯一差别是有工作目录,走一遍术语、ADR、对话三条产出的不同门槛,用 git diff 还原 88 行被删掉的过程,并说明薄指针的代价——依赖没加载时它会静默失灵。
- grilling 精读:把『问问题』抽成一个所有技能都调用的原语grilling 只有 30 行,却是 Matt Pocock 整套技能里被复用最多的一个:grill-me、grill-with-docs、triage、wayfinder、improve-codebase-architecture 都调它。本文讲透它的三件机制——design tree、frontier、round——以及它为什么把事实交给子代理去查、把决定留给人,还把『frontier 空』和『人确认』设成两道闸门。
- handoff 精读:让工作『旅行』,而不是把对话再讲一遍handoff 把当前对话压成一份交接文档,存进操作系统的临时目录,让另一个 agent 接着干。本文说明它给的是可携带性而不是压缩、它和 implement-spec 的『分支 + worktree』是同一条线的两端、以及它为什么坚持只写指针不抄内容、坚持落在 temp、坚持不自动触发——还有那个写在文档正文明文里的代价。
- implement 精读:17 行的技能,怎么用三条契约驱动整次实现implement 的 SKILL.md 只有 17 行,却承担了整条链上最重的一步。本文走一遍它的真实触发路径,解释它为什么把『测试怎么写』和『代码怎么审』全部推给别的技能,用两次 commit 说明指针的措辞本身就是机制,并列出它刻意不做的五件事:不访谈、不建分支、不做 PR、不碰工单、不把并发塞进自己。
- implement-spec 精读:把工单读成 task graph,终点是集成分支而不是 PRimplement-spec 在一张 task graph 的 ready frontier 上并行放实现子代理,每个在自己的 worktree 里、把成果汇到一条 integration branch,最后统一 code-review。本文讲清 frontier、快进合并、context pointer 三件机制,以及它为什么把『默认不开 PR』当设计而不是限制。
- prototype 精读:先有问题才有形状,一次原型只回答一个问题prototype 是『一次性代码,用来回答一个问题』,问题决定产物长什么样:状态/逻辑问题产出单个可分享的 HTML,UI 问题产出同一路由下几个激进不同的变体。本文讲清两条分支各自的规格、它为什么把答案和证据分开保存(原型进 prototype/<name> 分支、工单上留指针)、它和 handoff 的往返配合,以及它刻意摒弃的七件事——包括『用完就删』和对整个 app 做原型。
- research 精读:12 行定住一个后台代理,产物是一个带引用的 Markdown 文件research 的正文只有 12 行:派一个后台代理去读一手来源,把发现连同每条断言的出处写进一个 Markdown 文件,放在仓库已经放笔记的地方。本文讲清它为什么把产物做成文件而不是回答、它和 grill-with-docs 之间那条『保质期』的分界、把文件位置交给仓库惯例而不是写死路径的取舍,以及它那几个有名的坑——嵌套子代理、没有 stopping criterion、以及没人管什么叫『高可信来源』。
- setup-matt-pocock-skills 精读:为什么不把 issue tracker 写死在技能里setup-matt-pocock-skills 是每个仓库跑一次的配置技能:它问清三个决定(issue tracker、triage 标签、文档放哪),把答案写进 docs/agents/。本文解释这套『用数据文件换掉硬编码』的做法为什么能让同一批技能跑在 GitHub、GitLab、本地 markdown 或 Jira 上,以及一个配置技能该怎样探索、确认、幂等落盘。
- tdd 精读:没商定接缝就不写测试,重构不在这条循环里tdd 是一份只讲标准、不讲步骤的参照物:开写之前先把要测的接缝写下来并请你确认——没有确认过的接缝,一行测试都不写。本文走一遍它的真实触发路径(定接缝 → 一次一片 → 红 → 最小实现),讲清它为什么把三个反模式写得比正面例子还细、为什么 2026 年 6 月删掉了重构这一相而 description 还留着 red-green-refactor,以及它主动留白的那个缺口:没有任何东西替你判断『这次改动值不值得跑循环』。
- to-spec 精读:明令『不许提问』的技能,却把唯一一次打断留给了接缝to-spec 把刚结束的对话压成一份 spec。本文走一遍它的真实触发路径,解释它为什么禁止重新访谈、为什么动笔前只问一个问题(接缝),以及它刻意剥离文件路径、代码片段、架构任务适配和『保持同步』幻想之后,产物为什么反而更可靠。
- to-tickets 精读:竖着切、给每张票画上依赖的边,以及那个只肯在最后一张票上承诺绿灯的例外to-tickets 把一份计划切成工单。本文走一遍它的真实触发路径,讲清垂直切片的三条硬规则、为什么 blocking edges 才是产物的主体、宽重构为什么必须走 expand→migrate→contract,以及同一份产物落到本地文件和真实 tracker 上会长成两种形状。
- wait-what 精读:为什么『简洁一点』永远失败,而『等一下』能成功wait-what 只有一句祈使句,却解决了所有冗长技能解决不了的问题。本文讲清楚『命名听者而不是输出』为什么是机制本身,对照 grill-with-docs 说明事前预防与事后纠偏这一对的关系,并用一次 commit 说明它为什么把作用域从一封信放宽到整个语境。
- wayfinder 精读:一个只肯产出『决定』的技能,怎么处理一次会话装不下的规划wayfinder 把大到一个会话装不下的工作画成一张地图。本文走一遍它的两种触发模式,拆开 map / 子 issue / decision ticket / frontier 的机制,解释它为什么把『plan, don't do』写成第一原则、为什么禁止用 #42 称呼票,以及 fog 与 ticket 的那条分界线画在哪里。