grill-me Skill 详细总结

一句话概述:grill-me 把"事前需求对齐"这件容易被省略的事,变成一个结构化、可执行、不依赖个人自觉性的协作步骤。它逼 AI 在写代码前,把你的需求当成一棵决策树,一根一根分支问清楚。


一、grill-me 是什么

grill-me 是 Matt Pocock(前 Vercel 开发者工具团队工程师)在 mattpocock/skills 仓库中开源的一个 AI 编程 Skill。它的核心作用是:在 AI 助手真正动手写代码之前,通过一场"无情面谈"(relentless interview),把模糊的需求逐条追问清楚,确保双方对方案的理解一致。

基本信息

属性
名称 grill-me
作者 Matt Pocock
仓库 mattpocock/skills
路径 skills/productivity/grill-me/
触发方式 手动命令 /grill-me
适用 Agent Claude Code / Cursor / Codex / Windsurf / Cline / OpenCode / Trae / CodeBuddy 等支持 Skills 标准的 Agent
安装命令 npx skills add mattpocock/skills --skill=grill-me
状态 无状态(stateless),不写文件、不留下工作产物

原始 SKILL.md 源码

grill-me 的 SKILL.md 极其精简,只有几行:

---
name: grill-me
description: A relentless interview to sharpen a plan or design.
disable-model-invocation: true
---

Run a `/grilling` session.

它本质上是一个"入口包装"——实际工作由底层的 grilling 原语完成。disable-model-invocation: true 表示 AI 不会自动触发这个 Skill,必须由用户手动输入 /grill-me 来启动。

配套的 agents/openai.yaml

interface:
  display_name: "Grill Me"
  short_description: "Sharpen a plan through interview"
policy:
  allow_implicit_invocation: false

二、核心原语:grilling

grill-me 的实际逻辑由 grilling skill 提供。grilling 是整个"拷问"技术族的核心原语(primitive),是唯一的真相来源(single source of truth)。

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 until we reach a shared understanding. Walk down each branch of the decision 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 *fact* can be found by exploring the environment (filesystem, tools, etc.), look it up rather than asking me. The *decisions*, though, are mine — put each one to me and wait for my answer.

Do not act on it until I confirm we have reached a shared understanding.

三条核心规则

规则 内容 中文解读
规则一 把需求当决策树,按分支逐层深挖 先把功能拆成架构、数据模型、交互、边界情况等分支,再顺着依赖关系一条条走——上游决策没定,下游问题不问
规则二 一次只问一个问题,问完再问下一个 逐个提问看似慢,实际上每个回答都能立刻影响下一个问题该怎么问,效率反而更高,也不容易漏答
规则三 能从代码库里找到答案的,不问用户 防止"重复劳动式提问"——比如"现有用户表有没有唯一索引"直接翻代码库即可,省下提问预算给真正需要人决策的问题

两个关键设计

  1. 每个问题附带推荐答案:AI 不是抛出一个空问题让你回答,而是先给出自己的推荐方案,你只需确认或纠正。这降低了用户的认知负担。

  2. 全部厘清后才允许进入实现阶段:直到决策树的所有分支都被访问、没有隐藏的默认假设,AI 才开始写代码。用户必须确认"已达成共享理解"后才会继续。


三、grill-me 能做什么

解决的核心问题

AI 编码助手有个共同的性格缺陷:急于动手。你描述一个功能,它十几秒就能给出一个像模像样的方案,但那些没被明说的边界情况——并发冲突、权限归属、异常分支——它会替你悄悄做主,用一个"看起来合理"的默认假设糊过去。

grill-me 解决的就是这个问题:把"需求澄清"从一个容易被跳过的可选步骤,变成写代码前的强制协作环节。

有 vs 没有 grill-me 的差别

维度 没有 grill-me 有 grill-me
边界情况处理 AI 自行假设,多为"想当然" 逐条提问,你来拍板
需求对齐时机 代码写完后靠评审 / 产品验收发现 写代码之前就对齐
隐藏依赖 实现到一半才发现依赖别的决策 按依赖树顺序逐个厘清
Token 消耗 高(返工、重写、来回解释) 低(一次问清楚,少走弯路)
团队一致性 依赖个人习惯,问不问全看自觉 统一约束,自动执行

典型症状(没有 grill-me 时)

  • AI 在没有澄清需求的情况下直接开始写代码,写完才发现方向完全跑偏
  • 同一个功能反复被打回,原因不是代码质量差,而是"没考虑到 XX 场景"
  • 团队里每个人对同一份需求的理解都不完全一样,AI 只是把这种模糊性又复制了一份到代码里

四、整个 grill 技术族

grill-me 并不是孤立存在的,它属于 mattpocock/skills 仓库中的一组"拷问"技术。理解整个体系有助于选择正确的工具。

技术族全景

grilling(核心原语 / primitive)
├── grill-me(无状态入口,手动触发)
├── grill-with-docs(有状态入口,手动触发,会写 ADR + 术语表)
└── batch-grill-me(批量版本,开发中,每轮问所有可用问题)

各组件对比

Skill 触发方式 状态 产物 适用场景
grilling /grilling 或 AI 自动触发 无状态 底层原语,通常不直接使用
grill-me /grill-me 手动触发 无状态 构建前的压力测试,快速对齐
grill-with-docs /grill-with-docs 手动触发 有状态 ADR + 术语表(CONTEXT.md) 需要留下决策记录的正式场景
batch-grill-me 手动触发 无状态 大型需求,每轮批量提问提升效率(开发中)

在构建链中的位置

grill-me 处于构建链的最前端:

grill-with-docs  to-spec  to-tickets  implement  code-review
  • grill-me / grill-with-docs 守在最前面,保证"做的是对的事"
  • code-review 守在最后面,保证"事做对了"
  • 少了前者,后者审得再严也只是在精修一个错误的答案

何时用哪个

  • grill-me:方案大致正确但隐含未解决决策,想快速发现软肋
  • grill-with-docs:方案模糊、领域语言未确定,需要留下 ADR 和术语表
  • batch-grill-me:需求太大、一个一个问太慢,想每轮批量问所有可用问题
  • wayfinder(上游):全新项目或大型功能构建,路线不明,先做决策地图

五、如何上手安装

通用安装命令

# 方法一:npx skills CLI(推荐,跨 Agent 通用)
npx skills add mattpocock/skills --skill=grill-me

# 方法二:手动克隆
git clone https://github.com/mattpocock/skills ~/.claude/skills/grill-me

各主流 AI IDE 安装

Claude Code

npx skills add mattpocock/skills --skill=grill-me
/skills list        # 确认 grill-me 出现在列表中
/grill-me           # 手动触发

Skills 目录位置:项目级 .claude/skills/grill-me/

Cursor

npx skills add mattpocock/skills --skill=grill-me --host cursor

Skills 目录位置:项目级 .cursor/skills/,重启 Cursor 后生效

Codex

skill-installer install mattpocock/skills/grill-me

OpenCode

mkdir -p ~/.agents/skills
git clone https://github.com/mattpocock/skills ~/.agents/skills/grill-me

Trae

npx skills add mattpocock/skills --skill=grill-me --host trae

CodeBuddy

npx skills add mattpocock/skills --skill=grill-me

更新

npx skills update grill-me

六、如何使用

基本使用流程

  1. 在你的 AI 编码助手(如 Claude Code)中打开项目
  2. 输入 /grill-me 后跟上你的需求描述
  3. AI 开始按决策树分支逐个提问,每个问题附带推荐答案
  4. 你确认或纠正每个推荐答案
  5. 所有问题厘清后,AI 生成计划摘要
  6. 确认后进入代码实现阶段

验证 Skill 生效的检验法

测试 Prompt 1(正向触发)

/grill-me 我要给用户服务加一个手机号更新接口

预期行为:AI 不直接写代码,而是开始按分支提问(如"手机号是否需要短信验证码校验""被其他账号占用时如何处理"),每个问题都附带推荐答案,等你确认后才继续。

测试 Prompt 2(边界验证)

这个功能很简单,你直接写就行,不用问我

预期行为:AI 仍应至少确认关键的高风险分支(如唯一性冲突、鉴权归属),而不是完全放弃澄清——如果它完全妥协直接开写,说明约束没有生效。


七、实战案例

案例一:开发一个新接口

任务:为用户服务新增"手机号更新"接口(Java 17 + Spring Boot 3 + MySQL)

步骤

# Step 1:触发 Skill
/grill-me 给用户服务加一个更新手机号的接口

AI 按分支提问(节选):

Q1/6:新手机号是否需要验证码校验?
推荐答案:需要,沿用现有短信验证码组件(复用注册流程的 SmsService)
(确认:是)

Q2/6:新手机号已被其他账号占用时如何处理?
推荐答案:返回 409 冲突,提示"该手机号已被使用",不做自动合并账号
(确认:是,账号合并单独立项)

Q3/6:更新成功后,旧手机号是否需要收到通知?
推荐答案:需要,发送一条"您的账号手机号已变更"短信到旧号码,用于安全提醒
(确认:是)

AI 生成计划摘要: - 接口:PUT /api/v1/users/{id}/phone - 校验:验证码 + 唯一性 + 旧号码通知 - 涉及表:users(phone 字段唯一索引) - 依赖:SmsService(已存在,复用)

最终实现代码:

@PutMapping("/{id}/phone")
public Result<Void> updatePhone(@PathVariable Long id,
                                 @RequestBody @Valid UpdatePhoneRequest req) {
    smsService.verifyCode(req.getNewPhone(), req.getSmsCode());
    userService.updatePhoneWithUniqueCheck(id, req.getNewPhone());
    smsService.notifyOldPhone(id, "您的账号手机号已变更");
    return Result.success();
}

与无 Skill 对比:没有 grill-me 时,AI 大概率只写"更新手机号+校验格式"这一层最简单的逻辑,唯一性冲突、旧号码安全通知这类"产品认为是常识"的分支会被完全跳过。

案例二:修复一个存量 Bug

Bug:并发更新导致用户积分数据不一致

# Step 1:/grill-me 描述 bug 现象
# Step 2:AI 先探索代码库,定位现有的积分更新逻辑
# Step 3:AI 提问关键分支:乐观锁还是悲观锁?并发量级如何?是否需要分布式锁?
# Step 4:确认方案后再动手改代码

关键作用:修 Bug 最怕"头痛医头"——不问清楚并发场景和量级,直接加个 synchronized 看似解决了,线上多实例部署时完全没用。grill-me 把"选哪种锁"这种架构级决策提前到写代码之前拍板。


八、batch-grill-me(批量版本,开发中)

batch-grill-me 是 grill-me 的批量变体,核心区别在于提问策略:不是一次一个问题,而是每轮问所有可用问题

核心逻辑

  • 把需求映射为一棵设计树
  • 每轮计算前沿(frontier):所有前置依赖已解决的问题
  • 将整个前沿的问题一次性提出(编号 + 推荐答案)
  • 用户回答后,已解决的决策推动前沿向外扩展
  • 重复直到前沿为空

SKILL.md 源码要点

---
name: batch-grill-me
description: A relentless interview that asks every frontier question at once, round by round.
disable-model-invocation: true
---

特点:当某个前沿问题需要从环境中查找事实时,会派遣子代理去查找而不阻塞用户——只有依赖该事实的问题等待,其余问题照常提问。


九、价值与 ROI

软件工程视角

grill-me 的本质是把"事前需求对齐"变成一个结构化、可执行、不依赖个人自觉性的协作步骤。它解决的不是效率问题,是"信任问题"——你敢不敢把一个功能完全交给 AI 从头写到尾。

ROI 估算

场景 引入前 引入后 节省估算
新接口开发返工 平均 1-2 次因需求理解错误被打回 需求歧义在编码前解决 减少约 60% 的需求类返工
复杂 Bug 修复 方案选错重做 关键架构决策前置确认 减少一次完整重构成本

团队建议

个人 Skill 完全够用,但如果团队里每个人对"什么算清楚"的标准不一致,建议把它沉淀成团队共享 Skill,统一提问的深度。


十、注意事项与局限

  1. grill-me 是无状态的:它不写文件、不留下工作产物。面试结束后对话历史就是你唯一的记录。如果需要持久化决策(ADR、术语表),使用 grill-with-docs。

  2. 只负责开工前:grill-me 保证"开工前大家理解一致",但写到一半 AI 遇到当初没被问到的小分支,仍可能擅自做主。需要后续 Skill(如实现过程中的约束守卫)来保证已拍板的决策在整个编码过程中始终具有约束力。

  3. 需要代码库探索能力:规则三(能从代码库找答案的不问用户)依赖 AI 具备读文件/搜索能力。如果使用的 Agent 缺少这些能力,这条规则会退化。

  4. 手动触发disable-model-invocation: true 意味着 AI 不会自动触发 grill-me,必须用户主动输入 /grill-me。这是有意为之——避免 AI 过度干预正常开发流程。

  5. 作者自己已转向 grill-with-docs:根据社区文章,Matt Pocock 建议在需要留下决策记录的场景使用 grill-with-docs,grill-me 更适合快速对齐。


十一、相关链接

资源 链接
GitHub 仓库 https://github.com/mattpocock/skills
grill-me 源码 https://github.com/mattpocock/skills/tree/main/skills/productivity/grill-me
grilling 源码 https://github.com/mattpocock/skills/tree/main/skills/productivity/grilling
grill-with-docs 源码 https://github.com/mattpocock/skills/tree/main/skills/engineering/grill-with-docs
官方文档 grill-me https://aihero.dev/skills-grill-me
官方文档 grilling https://aihero.dev/skills-grilling
官方文档 grill-with-docs https://aihero.dev/skills-grill-with-docs
中文解读(腾讯云) https://developer.cloud.tencent.com/article/2702695

本文档整理于 2026 年 7 月 22 日,基于 mattpocock/skills 仓库 main 分支源码及社区相关文章综合编写。


本站由 时空 使用 Stellar 搭建。