


grill-me 从入门到精通:Matt Pocock 技能宇宙中最出圈的那个"追问机器" 入口只有 1 行代码,引擎只有 7 行正文。凭什么在 GitHub 拿下 17 万 Star,全仓库累计 610 万次安装? 答案不是因为技术有多复杂——恰恰相反,是因为它够简单。简单到只做一件事,而且做到极致:在写代码之前,先把话说清楚。 本文对 grill-me 最彻底的一次拆解。从零基础到源码级理解,看完你不仅能用好它,还能理解它背后的设计哲学——并且把这些哲学用在你自己的 Skill 开发里。 快速导航 章节 适合谁 一、它是什么 所有人 二~三、生态分量 + 三层进阶 想理解全貌的人 四~五、源码精读 + 设计哲学 想自己写 Skill 的人 六~七、实战流程 + 9 大避坑 想用好 grill-me 的人 八、决策指南 不确定要不要用的人 一、一句话说清楚:grill-me 到底是什么 grill-me 是一个让 AI 反过来面试你的 Skill。 但它本身极其简单——整个文件只有 1 行代码: Run a `/grilling` session. 对,就这一行。grill-me 只是一个入口,真正干活的是另一个 Skill:grilling。grilling 才是那个 7 行正文的追问引擎。grill-me 的职责只有一个:当你喊 /grill-me 的时候,把 grilling 唤醒。 这个设计极其聪明——grill-me 标记为 disable-model-invocation: true,只有你主动调用时才触发,不会占用 AI 的上下文窗口。而 grilling 是 model-invoked,可以被其他 Skill 复用。 所以下文提到"追问逻辑"的时候,说的都是 grilling 引擎,不是 grill-me 本身。记住这个区分,整个设计哲学你就能看懂。 grilling 引擎做了什么? 在写代码之前,AI 会像审讯官一样,沿着你计划中的每一个决策分支,一次一个问题地追问——直到你们两个对"到底要做什么"达成完全一致。 "Interview me relentlessly about every aspect of this plan until we reach a shared understanding." 不是 AI 帮你做决定。是 AI 让你意识到哪些决定还没做。 它解决的是 AI 编程的第一失败模式:Agent 没做你想要的——因为你要什么,连你自己都没想清楚。 三个核心特征: 一次只问一个问题——反对批量提问。Matt 的原话是"一次问多个问题会让人困惑(bewildering)" 每个问题附带推荐答案——降低你的决策疲劳。你只需要说 Yes / No / It depends 能从代码库查到的,不问你——只有真正需要你做取舍的决策,才会端到你面前 典型的 grilling session:15-50 个问题,30-60 分钟。少于 5 个说明需求写太细了(不需要 grill),大于 50 个说明范围太大需要拆分。 二、它在 mattpocock/skills 生态中的分量 数据告诉你它有多重 以下数据来自 skills.sh 实时统计(截至 2026 年 7 月): 指标 数据 GitHub Stars 17 万+(仓库整体) 总安装量 610 万+(全仓库 50 个 Skill 累计) grill-me 安装量 65.5 万 grill-with-docs 安装量 55.5 万 grilling 引擎安装量 26.6 万 skills.sh 排名 第 5 位(Matt 一人占了 Top 10 中的 3 席) 核心代码行数 7 行正文(grilling 引擎) 架构分量:它是所有高阶 Skill 的底层原语 整个 mattpocock/skills 仓库有 50 个 Skill。grilling 不是"其中之一"——它是被其他 Skill 反复调用的底层引擎: grilling(7行正文追问引擎) ├── /grill-me 纯对话版,无代码库 ├── /grill-with-docs 追问 + 产出 CONTEXT.md + ADR ├── /triage 追问 Issue → 分类 → 写开发说明书 ├── /codebase-design 追问架构决策 └── /wayfinder 把大项目拆成并行 grilling sessions 一个 12 行的文件,被 5 个不同的 Skill 复用。 这就是"单一真相来源"(Single Source of Truth)的威力。如果追问逻辑要在每个 Skill 里重复写一遍,改一次要改 5 个文件,而且很快就会出现行为漂移。 Matt 把这个 12 行引擎放在 skills/productivity/grilling/SKILL.md,标记为 model-invoked——模型可以自动调用它,其他 Skill 也可以委托给它。 而用户直接使用的 /grill-me 只有 1 行正文,标记为 user-invoked——不占用模型的上下文窗口。它唯一的指令就是: Run a /grilling session. 三、从入门到精通:三个层次 Level 1:/grill-me — 纯对话版 适用场景:没有代码库,纯聊天打磨想法。 怎么用:在任何 Claude Code 会话里输入: /grill-me 我想做一个用户头像上传功能,支持裁剪 然后 AI 开始追问: Q1: "图片来源是本地上传还是 URL 引用?我建议本地上传,因为你需要裁剪功能,裁剪通常在前端做,需要用到本地文件。对吗?" Q2: "存储位置你倾向 S3 还是本地文件系统?我建议 S3,因为你后续会做 CDN 加速。对吗?" Q3: "裁剪在前端做还是后端做?我建议前端,用 react-image-crop 这个库,5MB 限制、1:1 输出 200×200。你觉得呢?" 每一个问题都带推荐答案,你只需要点头或摇头。 6 个问题、2 分钟,所有模糊点变成了明确的技术决策。 这个层面你只需要记住一句话:/grill-me 是对话工具,不碰文件,不产生代码。追问结束后的产出——全在你的脑子里和聊天记录里。 Level 2:/grill-with-docs — 代码库版 + 自动沉淀 适用场景:有代码库,需要把追问结论固化到项目文档中。 核心区别:在 grilling 引擎的基础上,同步运行 /domain-modeling: 产出的文档 作用 写什么 CONTEXT.md 项目术语表 所有领域术语的精确定义 ADR(架构决策记录) 硬决策归档 只记录同时满足三个条件的决策 ADR 的三个条件:不可逆 + 脱离上下文会困惑 + 确实做了取舍。 不满足这三个条件的决策,不写 ADR。Matt 自己的项目里,ADR 目录通常不超过 10 个文件。 Level 2 的关键认知:grill-with-docs 解决的不仅是"这次把需求说清楚",更是"下次换一个会话 / 换一个人,不需要重新说清楚"。共享语言(CONTEXT.md)让每一次 AI 会话都变得更短、更精准。 Matt 自己的 course-video-manager 仓库里有一个经典案例: 一段长达 15 个单词的啰嗦描述,被精炼成了一个术语——"materialization cascade"(物化级联)。此后每一次 AI 会话,因为有了这个共享词汇,描述从 15 个词变成了 2 个词。 Level 3:grilling 引擎 + 你写的 Skills 适用场景:你自己写 Skill,想复用追问机制。 怎么用:在你的 SKILL.md 里,不需要重写追问逻辑。直接引用 grilling 引擎: # 在你自己写的 Skill 里: 执行以下步骤: 1. 运行 /grilling session,确认用户需求和技术边界。 2. 追问结束后,进入实现阶段…… 因为 grilling 是 model-invoked,你的 Skill 可以直接调用它,不用复制粘贴。这就是 Matt 架构里最聪明的地方:把追问能力做成一个可复用的组件。 你需要理解的是 grilling 引擎的设计原则(下一章),这样你才知道什么时候该调用它、什么时候该自己写追问逻辑。 四、源代码精读:12 行凭什么能打 先看完整源码。这是 skills/productivity/grilling/SKILL.md 的全部内容: --- name: grilling description: Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases. --- Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer. Ask the questions one at a time, waiting for feedback on each question before continuing. Asking multiple questions at once is bewildering. If a question can be answered by exploring the codebase, explore the codebase instead. 正文只有 7 行。 我们逐行拆解。 第一块:定义任务 + 完成标准 Interview me relentlessly about every aspect of this plan until we reach a shared understanding. "relentlessly" 是整个文件最重要的词。它不是 "carefully"(仔细地)、不是 "thoroughly"(彻底地)、不是 "comprehensively"(全面地)——这三个词在 LLM 的默认行为里全是 no-op(不改变行为的废话)。 "Relentlessly" 告诉模型:这次的追问比平常的"彻底"更猛,不要因为觉得够了就停。 一个词完成了 20 行指令才能达到的行为锚定。 "until we reach a shared understanding" 是完成标准(completion criterion)。它必须是可检查的——模型自己能判断"理解了"还是"还没理解"。好的完成标准不需要人类介入验证。 flowchart TD START(["🚀 /grill-me 启动"]) ASK["🤔 AI 追问一个问题
(附带推荐答案)"] ANSWER["👤 用户回答
Yes / No / It depends"] CHECK{"🤖 模型自检:
设计树的每个分支
都达成共识了吗?"} NEXT["📂 走下一个未遍历的分支"] DONE(["✅ shared understanding
grilling 结束,进入实现"]) START --> ASK ASK --> ANSWER ANSWER --> CHECK CHECK -->|"❌ 还没"| NEXT NEXT --> ASK CHECK -->|"✅ 是"| DONE style START fill:#607D8B,color:#fff style DONE fill:#4CAF50,color:#fff style CHECK fill:#FF9800,color:#fff