Ask Matt
SkillDev toolsAsk which skill or workflow suits your current situation. It acts as a router for the skills in this repository.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Ask Matt skill
What this skill tells your AI
The instructions your AI receives, as published by wenwuzhidao/mattpocock-skills-zh in skills/engineering/ask-matt/SKILL.md and read by ahel’s review.
你不会记得每一个技能,所以就问吧。
一个流程是穿过这些技能的一条路径。大多数路径都沿着一条主流程行进,还有两条引入匝道汇入其中。其余的要么是独立技能,要么是在底层运行的一层词汇。
主流程:想法 → 交付
大多数工作走的路线。你有一个想法,想把它构建出来。
-
/grill-with-docs— 通过访谈打磨想法。每当你在一个工作目录中工作时,从这里开始:它是有状态的,把学到的东西保留在CONTEXT.md和 ADR 中。(没有工作目录?用/grill-me——见「独立技能」。两者都运行同一个/grilling原语;grill-with-docs是会留下书面记录的那个,这使它在有仓库可供落笔的任何时候都是两者中更好的一个。) -
分支——你能在对话中解决每一个问题吗? 如果某个问题需要一个可运行的答案(状态、业务逻辑、你必须亲眼看到的 UI),就绕道去做一个原型,两个方向都由
/handoff搭桥(原型活在它自己的目录里,而这正是/handoff的用途——见「阶段边界」):/handoff出去,然后针对那个文件开一个全新的会话,- 用
/prototype以用完即弃的代码回答问题, - 把学到的东西
/handoff回来,并在原始的想法线程中引用它。
-
分支——这是一个跨多会话的构建吗?
- 是 →
/to-spec(把线程变成规格),然后/to-tickets把它拆成曳光弹式工单,每个都声明其阻塞边。在本地跟踪器上,那是.scratch/<feature>/issues/下每个工单一个文件,靠手工按阻塞优先顺序推进;在真实跟踪器上,这些边成为原生的阻塞链接,于是任何阻塞项已完成的工单都可以被领取——为每个工单启动/implement,在每个工单之间/clear上下文。每个工单都是自包含的,所以上一个工单的上下文是可丢弃的。 - 否 → 就在此处、在同一个上下文窗口里
/implement。
无论哪种方式,
/implement都通过在内部驱动/tdd来构建每个工单——一次一个红-绿切片——然后通过运行/code-review收尾,这是在提交前对 diff 做的双轴审查(标准 + 规格)。当你只想不带完整规格地、测试先行地构建某个具体行为时,单独使用/tdd;当你想针对某个固定基点审查一个分支或 PR 时,单独使用/code-review。 - 是 →
上下文卫生
把第 1–3 步保持在一个不间断的上下文窗口里——在 /to-tickets 之前不要压缩或清空——这样拷问、规格和工单就都建立在同一份思考之上。此后每个 /implement 都从头开始,以工单为工作依据。
对此的限制是**聪明区间**:模型仍能敏锐推理的那个窗口(在最先进的模型上约 150k tokens)。如果一个会话在 /to-tickets 之前就逼近它,不要在退化状态下硬撑——在最近的阶段边界处 /compact,然后继续(见「阶段边界」)。
引入匝道
一种会产生工作、随后汇入主流程的起始情形。
-
bug 和请求堆积起来了 →
/triage。它让工单在分诊角色中流转,产出可供 agent 处理的工单,稍后由/implement接手。分诊只针对不是你创建的工单——bug 报告、进来的功能请求、任何原始到来的东西。
/to-tickets产出的工单已经是可供 agent 处理的了,所以不要对它们做分诊。 -
有东西坏了 →
/diagnosing-bugs。针对那些难缠的:一眼看不出来的 bug、间歇性的抖动、在两个已知良好状态之间悄悄潜入的回归。它在拥有一个紧凑的反馈循环(一条已经能在这个 bug 上变红的命令)之前拒绝做任何理论推测——然后用一个回归测试来修复。它的事后复盘会在真正的发现是「没有好的接缝来把 bug 锁死」时,交接给/improve-codebase-architecture。 -
一项庞大、迷雾重重的工作——一个全新项目或一次庞大的功能构建,大到一个会话装不下 →
/wayfinder,这里认知负担最重的流程。当从此处到目的地的路径尚不可见时,它在工单跟踪器上绘制一张由决策工单构成的共享地图,并逐个解决它们——产出的是决策,而非交付物——直到迷雾被推开、路径清晰。/grill-with-docs打磨的是你能在一个会话里把握住的想法,而 wayfinder 针对的是你把握不住的那种想法——而且它更慢、更密,所以只在正是那种情况下动用它,绝不用于一个界定良好的功能。当地图明朗后,它做交接,不做构建:在
/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— 用于设计一个模块形状的深模块词汇(模块、接口、深度、接缝、适配器、杠杆、局部性):在一个干净的接缝处、用一个小接口承载大量行为。/tdd和/improve-codebase-architecture都讲这套词汇。
阶段边界
一个阶段是会话内部的一块工作——拷问、实现、QA。在其中两个之间的边界处,你有五个选项,而在它们之间做选择是整张地图里最模糊的决策:
- 继续 — 留在原地。不花代价,不丢东西。
/clear— 清空窗口,当这里的东西对接下来毫无意义时。/handoff— 写一个可移植的 markdown 文件。适用面窄:只针对新的 harness、新目录、同事,或在阶段中途分叉一个旁支任务。它换来的是可移植性。- 子 agent — 把一个界定紧凑的任务发送到它自己的窗口,并取回一份报告。
/compact— 压缩当前上下文,并用它引导一个全新的会话。这是默认项,位于决策树底部而非首选。
阅读 PHASE-BOUNDARIES.md 了解那棵有序的决策树——五个问题、每个分支背后的推理,以及为什么一手来源的代价使得继续成为要最先排除的那一个。在边界处做这个决策;阶段中途,要么继续,要么把剩下的拆分给子 agent。
独立技能
完全在主流程之外。
/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— 逐块处理进行中的合并或变基冲突,依据追溯到各方一手来源的意图来解决,而不是靠挑选行,然后完成该操作。它从不运行--abort。独立、脱离所有流程:当你已经身处冲突中途时动用它。/prototype— 一个小的、用完即弃的程序,回答一个设计问题:这个状态模型感觉对不对,或者这个 UI 该长什么样。用完即弃是对代码怎么写的一种约束,而不是要销毁它的承诺:答案会折叠进真实代码,而原型本身作为一份一手来源被保留在主线之外的prototype/<name>分支上,由实现工单指向它。它是主流程第 2 步里的那个绕道,但任何时候一个设计问题在纸上难以定夺时都可以动用它。/research— 把阅读的跑腿活儿委派给一个后台 agent:它针对一手来源调查一个问题,然后在仓库里留下一个带引用的 Markdown 文件。在它阅读时你继续干活。它产出的文件是要带进主流程/grill-with-docs的东西——研究喂养思考,而不是取代思考。/to-questionnaire— 当挡住你的东西既不在你脑子里、也不在代码库里,而在别人脑子里时,这个技能给他们写一份问卷去填。它是/grill-me的反向操作:它不就主题访谈你,而是就这次发送访谈你——它要发给谁、你需要拿回什么——并把问题瞄准那个缺口。回来的东西是给/grill-with-docs或/to-spec用的素材。/wizard— 针对只有人类才能采取的步骤:配置基础设施、设置凭据或 CI 密钥、点击穿过陌生的第三方仪表盘、执行一次性迁移或切换。它生成一个交互式 bash 脚本,打开每个 URL、捕获每个值、把它写进.env和 GitHub 密钥——这样这套流程就不再是每次都要向 agent 重新解释的东西。模型调用型,所以 agent 一撞上只有你才能越过的墙就会主动动用它。如果 agent 自己就能做,它就该自己做;这是用于人类确实身处环中的场合。/wait-what— 一条消息没传达到位时的纠正手段。在对话中途、在任何其他技能内部使用它,agent 就会带上你之前缺失的上下文,用平实的英语、用CONTEXT.md的词汇,重新表述它刚说过的东西。它是事后起作用的;/grill-with-docs是前置的疗法,因为早早商定的共同语言正是从一开始就阻止行话出现的东西。/teach— 跨多个会话学习一个概念,把当前目录当作一个有状态的工作区。/writing-for-agents— 编写供 agent 消费的文档(技能、AGENTS.md、被指向的文档)的参考。
前置条件
/setup-matt-pocock-skills — 在你第一次跑工程流程之前运行,以配置其他技能所假定的工单跟踪器、分诊标签和文档布局。自定义工单跟踪器也能用。
Signals
- GitHub stars
- 23
- Forks
- 4
- Last commit
- Aug 2026
Advanced
- Item type
- skill
- Key
ask-matt-wenwuzhidao- Source
- github.com/wenwuzhidao/mattpocock-skills-zh