安装此技能
npx skills@latest add mattpocock/skills --skill=ask-matt 然后在你的编码 agent 里输入 /ask-matt 。
本页目录
它做什么
ask-matt 是这个仓库里所有技能之上的路由器(router)。你描述自己所处的处境——一个无从下手的主意、一堆不断涌来的 bug 报告、一场拖得太长的会话(session)——它就会说出该用哪个技能、或者哪一串技能,并指出这串技能里哪些位置需要人来做决定。
它只给建议,然后就停。它不会质询,不会写规范文档(spec),不会打开文件,也不会替你触发它刚点名的那个技能;你拿到的只是接下来该输入的内容,而输入的人是你。它还是一张手写的本仓库技能地图,而不是对你已安装内容的扫描,所以它不会把你自己的技能、或者别的作者的技能也纳入路由。
什么时候用它
你通过输入 /ask-matt 来调用它;agent 不会主动去拿它。
| 你的处境 | 路由器会给你什么 |
|---|---|
| 有一个主意,但不知道从哪开始 | 主流程的起点,以及这次构建是否小到可以跳过规范文档 |
| 别人不断发来 bug 和需求 | triage 这个入口,以及为什么你自己生成的工单(ticket)不该走它 |
| 两个技能看起来可以互换 | 它们之间的分界线,而且通常是一条具体的判据,而不是口味问题。grill-me 还是 grill-with-docs,取决于你是否在一个工作目录里;grill-with-docs 还是 wayfinder,取决于这件工作是否装得下一次会话 |
| 一场很长的会话,以及一个关于上下文(context)的决定 | 阶段边界上五个选项组成的有序决策树 |
| 你已经挑好了一个技能 | 没有有用的东西。直接调用那个技能 |
前提条件
路由器只负责点名技能,不负责安装它们。它指向的一切都得先装好,建议才有可操作性;而且它只认识本仓库里被正式推出的技能。
依赖追踪系统的那些路线(triage、to-spec、to-tickets、implement)假定 setup-matt-pocock-skills 已经在仓库里配置好了 issue 追踪器。即便还没有配置,路由器仍然会推荐它们。
是流程,不是技能
这个技能的关键词是流程(flow),指的是穿过一系列技能的路径,而不是单个技能。当你说出自己的处境时,路由器把你放到某条流程的某一步上。这和”这是与你关键词匹配的技能”是两个不同的答案。路线一共五种,技能本身有完整描述:
- 主流程,从主意到上线。质询、写规范、拆工单、实现(一次一个工单,或者用 implement-spec 并行推进整张任务图)、审查,然后是 retro,把这次构建学到的东西回灌进 agent 的环境。它有两个分支。一个是原型绕行,用在需要可运行代码才能定论的问题上。另一个是规范文档与工单的拆分,只有构建跨越多场会话时才值得付出这个成本。
- 入口(On-ramps),针对的是先产生工作、再汇入主流程的处境:不断进来的 bug 报告、某个东西坏了,或者一件既模糊又大到装不进一场会话的工作。
- 代码库健康,属于维护而非功能开发。improve-codebase-architecture 会巡视代码、找出可以加深的机会,它找到的每一个机会都会作为一条主意重新进入主流程。
- 独立技能(Standalones),不挂在任何流程上,单独使用:原型、问卷、调研。
- 底下的一层词汇表,是另外那些技能在”问题出在词上而不是流程上”时引入的两份参考。
阶段边界
这个技能另一个关键概念是阶段边界(phase boundary)。一个阶段是一场会话里的一段工作(质询、实现、QA),而”这份上下文我该怎么处理”这个问题,只属于两个阶段之间的边界。阶段进行到一半时没有什么可决定的:要么继续,要么把剩下的部分拆给子代理(subagent)。
| 选项 | 什么时候选它 |
|---|---|
| 继续 | 下一个阶段需要这一阶段的原文,或者你还剩高效区(smart zone)。这是唯一能让会话保持为一手来源(primary source)的做法,所以先排除它 |
/clear | 身后的一切都可以丢弃。最便宜的选择,而且如果你判断错了,它无法撤销 |
| handoff | 有东西必须被带走:新的运行环境(harness)、新的目录、一位同事、中途分叉出来的支线任务 |
| 子代理 | 任务边界足够清晰,可以在你离开键盘的情况下运行 |
/compact | 以上都不是。它是默认项,决策树通常在这里结束 |
人们常常把其中两个搞错,这正是路由器给出顺序、而不只是给出一份清单的原因。/handoff 看起来像是在上下文窗口之间搬家的通用做法,但它不是。它给你的只是可携带性。/compact 是决策树里的最后一项,而不是第一项,因为排在它上面的四个选项每个都更便宜或更精确。
常见问题
难道没有一个按正确顺序排列的技能清单吗?
一直有人在 README 里要这份清单。这个技能就是那份清单。一张静态表格会写着 wayfinder → to-spec → to-tickets → implement → code-review → retro,而它在大多数情况下都是错的。重要的部分是那些分支:有没有代码库、构建是否跨会话、靠谈话能不能把这个问题定下来。代价是路由器靠手工维护,因此会落后于仓库。/grilling 在路由器点名它之前很久就已经发布了。
它告诉我有一半技能没装。
这是一个已知 bug,而且没有修。路由器让你走的那些技能,大多设置了 disable-model-invocation: true,这意味着运行环境在把技能列表注入 agent 上下文时会把它们排除掉。agent 把那份列表当成穷尽的,于是报告它们缺失。在一个被报告的会话里,它宣称整套”规范文档加工单”的流程都不存在,并改道到光秃秃的 /grilling 和 /tdd。这个插件的 27 个技能里有 16 个带着这个标记,所以这是常见情况而不是边缘情况。它们其实都装了。照样输入斜杠命令即可,或者去查 .claude-plugin/plugin.json,那才是”到底装了什么”的权威。
它描述了某个技能的行为,但那个技能并不是那样做的。
这也是一个真实 bug,也没有修。路由器回答时用的是它自己给每个技能写的一行摘要,而不是技能本身。一份详细的报告在一场会话里追踪到三处实例,其中一次仅凭”把讨论串变成一份规范文档”这句摘要就建议跳过 to-spec。路由器从未打开过 to-spec/SKILL.md。在每一个例子里,它都只在用户反驳之后才去核实,从来没有主动核实过。当时跳过 to-spec 的代价是漏掉了一次真实的接缝检查,最终产出的工单低估了工作量。当路由器陈述另一项技能的行为、而你要据此行动时,先让它打开那份 SKILL.md。这条同样适用于地图完全没有覆盖的问题,比如要不要用计划模式(plan mode):那个答案是模型(model)的推断,而不是这里写下来的东西。
为什么它是散文而不是编号清单?
这个抱怨是合理的。一个未解决的 issue 主张:大部分路由是确定性的,而叙事体让人难以扫读。没有人阻止你要求压缩版本:说一句”只给我顺序”,你就会得到顺序。散文承载的是有条件的部分:分支、哪里需要人做决定、以及步骤之间在哪里 clear 或 compact。一张扁平的清单恰好把这些丢掉了。
它能在我自己的技能、或者别的作者的技能上做路由吗?
不能。有三份彼此独立的提案都想要一个读取你本地 skills/ 目录、并基于已安装内容做推荐的路由器。ask-matt 不是那个东西。它是一套技能的手绘地图,只知道这一套。
它让我去改 SKILL.md。
这个建议常常是对的,但改动很少能留存下来。有人问它怎么让 implement 关闭工单,得到的回答是往技能里加一行,而且问题立刻解决了。npx skills update 会覆盖那个文件,而插件安装是只读的。把长期行为写进你自己的 CLAUDE.md 或 AGENTS.md,或者在调用时说清楚。你在提示词里做的改动能经受更新。人们就是用这个办法把流程指向 Linear 而不是 GitHub,或者问它哪些未关闭的工单可以并行跑。
它点名了一个我没有的技能,或者漏掉了一个我有的。
先查变更日志,确认是不是改名。writing-great-skills 变成了 writing-for-agents,没有保留别名;to-prd 变成了 to-spec;pathfinder 变成了 wayfinder。另有四个技能被直接退役、并入吸收了它们的技能:ubiquitous-language、design-an-interface、qa 和 request-refactor-plan。如果它漏掉了你有的某个技能,那是路由器自身的滞后,上面已经说过了。
它生效的标志
- 它最后点名该输入什么,然后停在那里,而不是自己动手开始干活。
- 它给出的路线会提到在哪里 clear 或 compact 上下文、哪里需要你来审查,而不只是一串技能名字。
- 两个技能很接近时,它说清楚该用哪个,以及另一个为什么不适合你。
- 它关于其他技能行为的任何说法,都在轨迹里表现为它真的读了那个技能的
SKILL.md。 - 你从它给出的东西里认出了自己的处境,而不是一个最接近的通用场景。
它在体系中的位置
ask-matt 是一个独立路由器,覆盖整套技能。它永远不是某条链上的一步。它指向每一条链,而其他文档页会链回它,这样谁都不用重画那张图。从这里出发,你最常落到 grill-with-docs,主流程的起点;或者 triage,那是”工作找上门”而不是”你开始工作”时的入口。
它是它所描述的技能的二手来源(secondary source)。当路由器与某份 SKILL.md 不一致时,以 SKILL.md 为准。