File contents Ask Matt
你不必记住每一个技能,所以来问。
流程(flow)是穿过技能的一条路径。大多数路径沿一条 主干流程 行进,两条入口匝道 汇入其中。其余的都是独立技能,或者是在底层运行的词汇层。
主干流程:想法 → 交付
大多数工作走的路线。你有一个想法,想把它建出来。
/grill-with-docs — 通过盘问打磨想法。只要你在工作目录 里就从这里开始:它是有状态的,会把学到的东西保存在 CONTEXT.md 和 ADR 中。(没有工作目录?用 /grill-me——见"独立技能"。两者跑的是同一个 /grilling 原语;grill-with-docs 是会留下书面痕迹的那个,所以只要有仓库可以留痕迹,它就是更好的选择。)
分支——所有问题都能在对话中解决吗? 如果某个问题需要一个可运行的答案(状态、业务逻辑、必须亲眼看到的 UI),就绕道原型,由 /handoff 双向桥接(原型住在自己的目录里,这正是 /handoff 的用武之地——见"阶段边界"):
/handoff 跳出去,然后针对那个文件开一个新会话,
/prototype 用一次性代码回答问题,
/handoff 把你学到的东西带回来,并在原始想法线程中引用它。
分支——这是多会话构建吗?
是 → /to-spec (把对话变成 spec),然后 /to-tickets 把它拆成示踪子弹式 ticket,每个都声明自己的阻塞边 。在本地跟踪器上,每个 ticket 是 .scratch/<feature>/issues/ 下的一个文件,按阻塞优先的顺序人工推进;在真实跟踪器上,阻塞边变成原生阻塞链接,所以任何阻塞项已完成的 ticket 都可以被领取——每个 ticket 启动一次 /implement ,每个之间用 /clear 清空上下文 。每个 ticket 自包含,所以上一个的上下文可以丢弃。
否 → 就在同一个上下文窗口里 /implement 。
无论哪种方式,/implement 构建每个 issue 的方式都是在内部驱动 /tdd ——一次一个红-绿切片——然后在提交前用 /code-review 收尾,对 diff 做双轴审查(标准 + 规格)。只想在没有完整 spec 的情况下测试优先地构建一个具体行为时,单独用 /tdd ;任何时候想对照固定点审查分支或 PR,单独用 /code-review 。
上下文卫生
把步骤 1–3 保持在一个不间断的上下文窗口 里——在 /to-tickets 之前不要压缩或清空——这样盘问、spec 和 ticket 都建立在同一个思考之上。之后每次 /implement 从 ticket 出发、重新开始。
这里的上限是**智能区 **:模型仍能敏锐推理的窗口(最先进模型约 150k token)。如果会话在 /to-tickets 之前就逼近它,不要在劣化的状态下硬撑——在最近的阶段边界 /compact 然后继续(见"阶段边界")。
入口匝道
一个会产生工作的起点场景,然后并入主干流程。
bug 和请求堆积 → /triage 。它让 issue 走过分类角色,产出 agent 就绪的 issue,之后由 /implement 接手。
分类只适用于不是你创建 的 issue——bug 报告、外来的功能请求、任何以原始形态到达的东西。/to-tickets 产出的 ticket 已经是 agent 就绪的,所以不要分类它们 。
有东西坏了 → /diagnosing-bugs 。用于那些难啃的:一眼看不出的 bug、间歇性偶发(flake)、在两个已知正常状态之间悄悄溜进来的回归。在拥有紧反馈循环 之前它拒绝空谈理论——一条已经能对这个 bug 变红的命令——然后用回归测试修复。当真正的发现是没有好的接缝来锁死 bug 时,它的事后总结会交接给 /improve-codebase-architecture 。
一项庞大而模糊的工作——绿地项目或大型功能构建,大到一次会话装不下 → /wayfinder ,这是这里认知负荷最高的流程。当从这里到目的地的路还看不见时,它在 issue 跟踪器上绘制一张由决策 ticket 组成的共享地图 ,一次解决一个——产出决策,而非交付物 ——直到迷雾被推后、道路清晰。/grill-with-docs 打磨的是你能在一次会话里 hold 住的想法,wayfinder 则是为你 hold 不住的想法准备的——它更慢、更密,所以只留给这种情况,绝不要用于范围明确的功能。
当地图清晰时,它交接,不构建 :在 /to-spec 并入主干流程,把地图上相互关联的决策折叠成可构建的计划,然后照常 /to-tickets 和 /implement。把地图直接循环进 /implement 会跳过这个折叠,把关联的细节丢掉——只有当工作量确实很小的时候才直接进 /implement。
代码库健康
不是功能工作——是维护。
/improve-codebase-architecture — 只要有空就跑一跑,让代码库保持对 agent 友好的可作业状态。它揭示深化机会 ;挑一个就产生一个想法 ,你可以带着它从 /grill-with-docs 进入主干流程。它是找出候选者的勘测;/codebase-design (见下)是你设计所选方案的工作台。
底层词汇
两个模型调用的参考,运行在其他技能之下 ——各自是其词汇的唯一真实来源。当问题出在词语 而不是流程时,直接伸手去拿;或者让上面的技能把它们拉进来。
/domain-modeling — 打磨项目的领域 语言:挑战含糊的术语、消解过载的词("account" 身兼三职)、把难以逆转的决策记为 ADR。它是 /grill-with-docs 驱动、让 CONTEXT.md 保持为干净词汇表的主动训练。
/codebase-design — 设计模块形态 的深度模块词汇(module、interface、depth、seam、adapter、leverage、locality):在干净的接缝后面,用一个小接口承载大量行为。/tdd 和 /improve-codebase-architecture 都讲这套语言。
阶段边界
阶段 是会话内的一块工作——盘问、实现、QA。在两个阶段的边界 上你有五个选项,而在这张地图里,选哪个是最模糊的决定:
继续(Continue) — 原地不动。不花任何代价,也不损失任何东西。
/clear — 清空窗口,当这里没有任何东西与下一步相关时。
/handoff — 写一个可移植的 markdown 文件。用途窄:只用于新的环境 、新的目录 、同事 ,或在阶段中途 分叉一个子任务。它买到的是可移植性。
子代理(Subagent) — 把一个范围严格的任务送进它自己的窗口,拿回一份报告。
/compact — 压缩当前上下文,用它播种一个新会话。它是默认项 ,位于树的底部而不是最先伸手可及的地方。
读 PHASE-BOUNDARIES.md 了解排序的决策树——五个问题、每条分支背后的理由,以及为什么一手来源的成本让继续 成为第一个被排除的选项。在边界 处做决定;阶段中途,要么继续,要么把剩余部分拆成子代理。
独立技能
完全脱离主干流程。
/grill-me — 与 /grill-with-docs 同样锲而不舍的盘问,但无状态 :不向本地保存任何东西,不构建 CONTEXT.md。当你不在工作目录中 工作时用它——打磨计划、设计、一篇文章,任何底下没有仓库的东西。如果在工作目录里,就用 /grill-with-docs 代替:它跑同样的盘问并且留下书面痕迹,所以严格来说更好。
/grilling — 盘问原语本身:轮次、前沿,事实是 agent 的工作而决策是你的。/grill-me 和 /grill-with-docs 是两条具名的入口,/triage、/wayfinder 和 /improve-codebase-architecture 都在内部跑它。只有当你想盘问、但不要任何外壳时才直接伸手去拿。
/resolving-merge-conflicts — 一块一块地处理进行中的 merge 或 rebase 冲突,根据追溯到双方一手来源的意图 来解决,而不是靠挑行,然后完成操作。它从不跑 --abort。独立于所有流程:当你已经身处冲突之中时使用。
/prototype — 一个回答某个设计问题的小型一次性程序:这个状态模型感觉对吗,或者这个 UI 应该长什么样。一次性是对代码写法的约束,而不是销毁它的承诺:答案折进真实代码,原型本身作为一手来源 保留在 main 之外名为 prototype/<name> 的分支上,由实现 issue 指向它。它是主干流程第 2 步的绕道,但任何时候一个设计问题难以在纸上定案,都可以用它。
/research — 把阅读跑腿委托给后台 agent :它对照一手来源 调查一个问题,然后在仓库里留下一份带引用的 Markdown 文件。它读的时候你继续干活。它产出的文件是要带进 主干流程、在 /grill-with-docs 用的——研究喂养思考,不取代思考。
/to-questionnaire — 当挡着你的东西不在你脑子里、也不在代码库里,而在别人 脑子里时,这个技能给他们写一份问卷来填。它是 /grill-me 的反面:不是盘问你关于主题的事,而是盘问你关于发送 的事——发给谁、你需要拿回什么——然后把问题对准缺口。拿回来的东西是 /grill-with-docs 或 /to-spec 的素材。
/wizard — 用于只有人 能做的步骤:配置基础设施、设置凭据或 CI 密钥、在一个陌生的第三方仪表盘上点点点、跑一次性的迁移或切换。它生成一个交互式 bash 脚本,逐个打开 URL、捕获每个值,写进 .env 和 GitHub secrets——这样这个流程就不再需要每次向 agent 重新解释一遍。模型调用,所以 agent 一撞上只有你能通过的墙就会伸手去拿。如果 agent 自己能做,它就该自己做;这是给真正需要人在环里的场景的。
/wait-what — 对一条没被接住的消息的矫正。在任何其他技能内部、对话中途使用它,agent 会用你缺失的上下文、用 CONTEXT.md 的词汇,以大白话重新讲一遍它刚说过的话。它是事后补救;/grill-with-docs 是事前的解药,因为早早约定共同语言才不会让行话出现。
/teach — 跨多个会话学习一个概念,把当前目录当作有状态的工作空间。
/writing-for-agents — 编写 agent 消费的文档的参考:skills、AGENTS.md、被指向的文档。
前置条件
/setup-matt-pocock-skills — 在第一次工程流程之前运行,配置其他技能所依赖的 issue 跟踪器、分类标签和文档布局。自定义 issue 跟踪器也可以。
1 --- 2 name: ask-matt 3 description: 询问哪个技能或流程适合你的情况。本仓库内技能的路由器。 4 --- 5 6 # Ask Matt 7 8 你不必记住每一个技能,所以来问。 9 10 **流程(flow)**是穿过技能的一条路径。大多数路径沿一条**主干流程**行进,两条**入口匝道**汇入其中。其余的都是独立技能,或者是在底层运行的词汇层。 11 12 ## 主干流程:想法 → 交付 13 14 大多数工作走的路线。你有一个想法,想把它建出来。 15 16 1. **`/grill-with-docs`** — 通过盘问打磨想法。只要你在**工作目录**里就从这里开始:它是有状态的,会把学到的东西保存在 `CONTEXT.md` 和 ADR 中。(没有工作目录?用 `/grill-me`——见"独立技能"。两者跑的是同一个 `/grilling` 原语;`grill-with-docs` 是会留下书面痕迹的那个,所以只要有仓库可以留痕迹,它就是更好的选择。) 17 2. **分支——所有问题都能在对话中解决吗?** 如果某个问题需要一个可运行的答案(状态、业务逻辑、必须亲眼看到的 UI),就绕道原型,由 **`/handoff`** 双向桥接(原型住在自己的目录里,这正是 `/handoff` 的用武之地——见"阶段边界"): 18 - **`/handoff`** 跳出去,然后针对那个文件开一个新会话, 19 - **`/prototype`** 用一次性代码回答问题, 20 - **`/handoff`** 把你学到的东西带回来,并在原始想法线程中引用它。 21 3. **分支——这是多会话构建吗?** 22 - **是** → **`/to-spec`**(把对话变成 spec),然后 **`/to-tickets`** 把它拆成示踪子弹式 ticket,每个都声明自己的**阻塞边**。在本地跟踪器上,每个 ticket 是 `.scratch/<feature>/issues/` 下的一个文件,按阻塞优先的顺序人工推进;在真实跟踪器上,阻塞边变成原生阻塞链接,所以任何阻塞项已完成的 ticket 都可以被领取——每个 ticket 启动一次 **`/implement`**,**每个之间用 `/clear` 清空上下文**。每个 ticket 自包含,所以上一个的上下文可以丢弃。 23 - **否** → 就在同一个上下文窗口里 **`/implement`**。 24 25 无论哪种方式,**`/implement`** 构建每个 issue 的方式都是在内部驱动 **`/tdd`**——一次一个红-绿切片——然后在提交前用 **`/code-review`** 收尾,对 diff 做双轴审查(标准 + 规格)。只想在没有完整 spec 的情况下测试优先地构建一个具体行为时,单独用 **`/tdd`**;任何时候想对照固定点审查分支或 PR,单独用 **`/code-review`**。 26 27 ### 上下文卫生 28 29 把步骤 1–3 保持在**一个不间断的上下文窗口**里——在 `/to-tickets` 之前不要压缩或清空——这样盘问、spec 和 ticket 都建立在同一个思考之上。之后每次 `/implement` 从 ticket 出发、重新开始。 30 31 这里的上限是**[智能区](https://www.aihero.dev/ai-coding-dictionary/smart-zone)**:模型仍能敏锐推理的窗口(最先进模型约 150k token)。如果会话在 `/to-tickets` 之前就逼近它,不要在劣化的状态下硬撑——在最近的阶段边界 **`/compact`** 然后继续(见"阶段边界")。 32 33 ## 入口匝道 34 35 一个会产生工作的起点场景,然后并入主干流程。 36 37 - **bug 和请求堆积** → **`/triage`**。它让 issue 走过分类角色,产出 agent 就绪的 issue,之后由 **`/implement`** 接手。 38 39 分类只适用于**不是你创建**的 issue——bug 报告、外来的功能请求、任何以原始形态到达的东西。`/to-tickets` 产出的 ticket 已经是 agent 就绪的,所以**不要分类它们**。 40 41 - **有东西坏了** → **`/diagnosing-bugs`**。用于那些难啃的:一眼看不出的 bug、间歇性偶发(flake)、在两个已知正常状态之间悄悄溜进来的回归。在拥有**紧反馈循环**之前它拒绝空谈理论——一条已经能对*这个* bug 变红的命令——然后用回归测试修复。当真正的发现是没有好的接缝来锁死 bug 时,它的事后总结会交接给 **`/improve-codebase-architecture`**。 42 43 - **一项庞大而模糊的工作——绿地项目或大型功能构建,大到一次会话装不下** → **`/wayfinder`**,这是这里认知负荷最高的流程。当从这里到目的地的路还看不见时,它在 issue 跟踪器上绘制一张由**决策 ticket** 组成的**共享地图**,一次解决一个——产出**决策,而非交付物**——直到迷雾被推后、道路清晰。**`/grill-with-docs`** 打磨的是你能在一次会话里 hold 住的想法,wayfinder 则是为你 hold 不住的想法准备的——它更慢、更密,所以只留给这种情况,绝不要用于范围明确的功能。 44 45 当地图清晰时,**它交接,不构建**:在 **`/to-spec`** 并入主干流程,把地图上相互关联的决策折叠成可构建的计划,然后照常 `/to-tickets` 和 `/implement`。把地图直接循环进 `/implement` 会跳过这个折叠,把关联的细节丢掉——只有当工作量确实很小的时候才直接进 `/implement`。 46 47 ## 代码库健康 48 49 不是功能工作——是维护。 50 51 - **`/improve-codebase-architecture`** — 只要有空就跑一跑,让代码库保持对 agent 友好的可作业状态。它揭示**深化机会**;挑一个就*产生一个想法*,你可以带着它从 `/grill-with-docs` 进入主干流程。它是找出候选者的勘测;**`/codebase-design`**(见下)是你设计所选方案的工作台。 52 53 ## 底层词汇 54 55 两个模型调用的参考,运行在*其他技能之下*——各自是其词汇的唯一真实来源。当问题出在**词语**而不是流程时,直接伸手去拿;或者让上面的技能把它们拉进来。 56 57 - **`/domain-modeling`** — 打磨项目的*领域*语言:挑战含糊的术语、消解过载的词("account" 身兼三职)、把难以逆转的决策记为 ADR。它是 `/grill-with-docs` 驱动、让 `CONTEXT.md` 保持为干净词汇表的主动训练。 58 - **`/codebase-design`** — 设计模块*形态*的深度模块词汇(module、interface、depth、seam、adapter、leverage、locality):在干净的接缝后面,用一个小接口承载大量行为。`/tdd` 和 `/improve-codebase-architecture` 都讲这套语言。 59 60 ## 阶段边界 61 62 **阶段**是会话内的一块工作——盘问、实现、QA。在两个阶段的**边界**上你有五个选项,而在这张地图里,选哪个是最模糊的决定: 63 64 - **继续(Continue)** — 原地不动。不花任何代价,也不损失任何东西。 65 - **`/clear`** — 清空窗口,当这里没有任何东西与下一步相关时。 66 - **`/handoff`** — 写一个可移植的 markdown 文件。用途窄:只用于**新的环境**、**新的目录**、**同事**,或在**阶段中途**分叉一个子任务。它买到的是可移植性。 67 - **子代理(Subagent)** — 把一个范围严格的任务送进它自己的窗口,拿回一份报告。 68 - **`/compact`** — 压缩当前上下文,用它播种一个新会话。它是**默认项**,位于树的底部而不是最先伸手可及的地方。 69 70 读 [PHASE-BOUNDARIES.md](PHASE-BOUNDARIES.md) 了解排序的决策树——五个问题、每条分支背后的理由,以及为什么一手来源的成本让**继续**成为第一个被排除的选项。在**边界**处做决定;阶段中途,要么继续,要么把剩余部分拆成子代理。 71 72 ## 独立技能 73 74 完全脱离主干流程。 75 76 - **`/grill-me`** — 与 `/grill-with-docs` 同样锲而不舍的盘问,但**无状态**:不向本地保存任何东西,不构建 `CONTEXT.md`。当你**不在工作目录中**工作时用它——打磨计划、设计、一篇文章,任何底下没有仓库的东西。如果在工作目录里,就用 `/grill-with-docs` 代替:它跑同样的盘问并且留下书面痕迹,所以严格来说更好。 77 - **`/grilling`** — 盘问原语本身:轮次、前沿,事实是 agent 的工作而决策是你的。`/grill-me` 和 `/grill-with-docs` 是两条具名的入口,`/triage`、`/wayfinder` 和 `/improve-codebase-architecture` 都在内部跑它。只有当你想盘问、但不要任何外壳时才直接伸手去拿。 78 - **`/resolving-merge-conflicts`** — 一块一块地处理进行中的 merge 或 rebase 冲突,根据追溯到双方一手来源的**意图**来解决,而不是靠挑行,然后完成操作。它从不跑 `--abort`。独立于所有流程:当你已经身处冲突之中时使用。 79 - **`/prototype`** — 一个回答某个设计问题的小型一次性程序:这个状态模型感觉对吗,或者这个 UI 应该长什么样。一次性是对代码写法的约束,而不是销毁它的承诺:答案折进真实代码,原型本身作为**一手来源**保留在 main 之外名为 `prototype/<name>` 的分支上,由实现 issue 指向它。它是主干流程第 2 步的绕道,但任何时候一个设计问题难以在纸上定案,都可以用它。 80 - **`/research`** — 把阅读跑腿委托给**后台 agent**:它对照**一手来源**调查一个问题,然后在仓库里留下一份带引用的 Markdown 文件。它读的时候你继续干活。它产出的文件是要带*进*主干流程、在 `/grill-with-docs` 用的——研究喂养思考,不取代思考。 81 - **`/to-questionnaire`** — 当挡着你的东西不在你脑子里、也不在代码库里,而在**别人**脑子里时,这个技能给他们写一份问卷来填。它是 `/grill-me` 的反面:不是盘问你关于主题的事,而是盘问你关于**发送**的事——发给谁、你需要拿回什么——然后把问题对准缺口。拿回来的东西是 `/grill-with-docs` 或 `/to-spec` 的素材。 82 - **`/wizard`** — 用于只有**人**能做的步骤:配置基础设施、设置凭据或 CI 密钥、在一个陌生的第三方仪表盘上点点点、跑一次性的迁移或切换。它生成一个交互式 bash 脚本,逐个打开 URL、捕获每个值,写进 `.env` 和 GitHub secrets——这样这个流程就不再需要每次向 agent 重新解释一遍。模型调用,所以 agent 一撞上只有你能通过的墙就会伸手去拿。如果 agent 自己能做,它就该自己做;这是给真正需要人在环里的场景的。 83 - **`/wait-what`** — 对一条没被接住的消息的矫正。在任何其他技能内部、对话中途使用它,agent 会用你缺失的上下文、用 `CONTEXT.md` 的词汇,以大白话重新讲一遍它刚说过的话。它是事后补救;`/grill-with-docs` 是事前的解药,因为早早约定共同语言才不会让行话出现。 84 - **`/teach`** — 跨多个会话学习一个概念,把当前目录当作有状态的工作空间。 85 - **`/writing-for-agents`** — 编写 agent 消费的文档的参考:skills、AGENTS.md、被指向的文档。 86 87 ## 前置条件 88 89 **`/setup-matt-pocock-skills`** — 在第一次工程流程之前运行,配置其他技能所依赖的 issue 跟踪器、分类标签和文档布局。自定义 issue 跟踪器也可以。
devcxl/mattpocock-skills-zh/tree/main/skills/engineering/ask-matt commit 579f714c37
Frequently asked questions How do I install the Ask Matt skill? Run npx skillmds@latest add devcxl/ask-matt in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Ask Matt skill do? 询问哪个技能或流程适合你的情况。本仓库内技能的路由器。 It is listed under Coding & Dev Tools on SkillMD.
Is Ask Matt safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Ask Matt? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Ask Matt free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Ask Matt? devcxl (@devcxl) published this skill. Their other Agent Skills are listed on their SkillMD profile.