基础工具与工作流 · mattpocock/skills

grill-me

A relentless interview to sharpen a plan or design.

L1 基础 · 登记来源即可V1 已固定Dual-pass Audit
Author mattpocockGitHub mattpocock/skills ↗Stars 253948License MIT(仓库根 LICENSE 文件;GitHub API spdx MIT;Copyright (c) 2026 Matt Pocock)Commit 3cca18b368
管控等级描述 skill 的能力与建议配套的管控措施,不代表质量或安全认证,也不表示可用或不可用。是否使用由用户和管理者决定。不同 agent 宿主对权限的约束各不相同,请勿假定宿主一定会提供安全兜底。第三方 skill 版权归原作者,使用风险由使用者自行承担。

1实现原理 · 为什么它能做到

grill-me 本身是纯委托壳:整个 SKILL.md 正文只有一句『Call the Skill tool with "grilling".』,所有拷问行为都由同仓库的 grilling skill(model-invoked 原语)实现。

skills/productivity/grill-me/SKILL.md
Call the Skill tool with "grilling".
宿主在用户输入 /grill-me 时把同一会话切换到 grilling 的指令集执行——这是本仓库『user-invoked 编排层 + model-invoked 复用原语』架构的标准做法(grill-with-docs 同理,只是多调一个 domain-modeling)。

触发面被收窄为仅用户显式调用:Claude Code manifest 与 Codex manifest 双份关闭模型自动调用。

skills/productivity/grill-me/SKILL.md
disable-model-invocation: true
同一机制在 agents/openai.yaml 以 policy.allow_implicit_invocation: false 表达;AGENTS.md 规定 user-invoked skill 必须两者配对,保证 agent 不会在用户没喊 /grill-me 时自己开始拷问。

拷问的引擎是 design tree + frontier rounds:把待决策问题建成依赖树,每一轮只问『前置已定、现在就能答』的整层 frontier,而不是逐问深挖。

skills/productivity/grilling/SKILL.md
Map this as a **design tree**: every decision branches into the decisions that hang off it. … Work the tree in **rounds**. The **frontier** is every decision whose prerequisites are already settled: the questions you can ask _now_ without guessing at answers you haven't heard yet.
这里在做什么:用依赖排序保证不问出『取决于还没听到的答案』的问题;整层一次问完减少来回轮数。每轮答案会重塑树,把 frontier 向外推并解锁被阻塞的问题(同段下文 'settled decisions push the frontier outward and unblock questions that depended on them')。

每题强制附带模型自己的推荐答案,并给死输出格式(编号 ❓ + ➡️ 推荐答案),要求一轮问完就停、等用户答完再进下一轮。

skills/productivity/grilling/SKILL.md
Ask the whole frontier in one round: number each question and give your recommended answer. Then wait for the user's answers before the next round.
格式模板(❓ **Q1** - **<question title>**: … / ➡️ <your recommended answer>)内嵌在 SKILL.md 正文代码块里。逼模型对每个问题表态而非假装中立,用户可以直接同意/反驳推荐答案,表态成本低、收敛快。

职责硬性分离:事实查证归 agent(必要时派 sub-agent 去环境里查,且不阻塞本轮其余问题),决策归用户。

skills/productivity/grilling/SKILL.md
Finding _facts_ is your job, never the user's. When a frontier question needs a fact from the environment (filesystem, tools, etc.), dispatch a sub-agent to find it; don't ask the user for anything you could look up yourself. Don't block on it: a running exploration is an unsettled prerequisite, so only the questions downstream of it wait for the sub-agent to report; ask the rest of the frontier now. The _decisions_ are the user's: put each to them and wait.
这里在做什么:允许并行派 sub-agent 查文件系统/工具事实,前台继续问不受影响的 frontier——既不把查证负担甩给用户,也不让探索阻塞对话。sub-agent 能力依赖宿主支持,skill 本身不含任何脚本。

终止条件与行动门禁显式化:frontier 空即会话结束;在用户确认达成 shared understanding 之前 agent 不得动手实施。

skills/productivity/grilling/SKILL.md
The session is done when the frontier is empty: every branch of the design tree visited, nothing left silently assumed. Do not act on it until the user confirms you have reached a shared understanding.
防止『问着问着就开始写方案』的越界:拷问产出的是决策共识,实施要等用户放行。

stateless 定位:grill-me/grilling 两目录只有 SKILL.md 与 agents/openai.yaml,全文无任何文件写入指令;docs 页明确『writes no files』,仓库内定位为『非代码用途/无工作目录』入口。

skills/engineering/ask-matt/SKILL.md
**`/grill-me`**: the same relentless interview as `/grill-with-docs`, but **stateless**: it saves nothing locally and builds no `CONTEXT.md`.
与 grill-with-docs 的唯一实质差别是状态:后者同跑 grilling 但会写 CONTEXT.md/ADR(所以工程会话被引导用 grill-with-docs)。

2核心能力

01用户显式入口的『拷问式』需求澄清(/grill-me,仅人可触发)
02依赖感知的分轮提问:每轮问完整 frontier,不提前问依赖未决的问题
03每题附模型推荐答案(❓/➡️ 固定格式),用户可低成本表态或反驳
04agent 自主查证:派 sub-agent 查环境事实,用户只做决策
05显式收敛与行动门禁:frontier 空才结束,用户确认 shared understanding 前不实施
06无状态、可移植:不写文件、不需要仓库,主题不限于代码

4管控建议与判定依据

建议配套管控措施
面向 Agent
可自动加载
面向管理者
登记来源与版本
判定依据(文件路径与关键语句摘要)
  • SKILL.md: 纯提示词指令与规则文本,无脚本执行与外部影响
审计说明: 。纯指令型 skill:无脚本执行、无网络外发、无凭证读取、无本地文件写入;且 grill-me 双清单(disable-model-invocation: true + allow_implicit_invocation: false)仅限用户显式调用。注意点仅为对话性引导/锚定与 sub-agent 读环境的宿主权限边界,均不构成代码级风险。

5第二遍独立确认

  • [ok] grill-me 正文仅一行委托 grilling — SKILL.md 正文逐字为 'Call the Skill tool with "grilling".',无其他指令。
  • [ok] 仅用户可触发(disable-model-invocation + allow_implicit_invocation: false 双清单) — 两 manifest 均存在且取值正确;productivity/README.md 对 User-invoked 组的说明与本 skill 配置逐字吻合。
  • [ok] design tree / frontier rounds 机制 — grilling SKILL.md 原文含 'design tree'、'frontier'、'Recompute the frontier and ask the next round' 等全部机制描述,无夸大。
  • [ok] 每题带推荐答案与固定格式 — 原文 'number each question and give your recommended answer' + ❓/➡️ 代码块模板均在。
  • [ok] facts=agent(sub-agent 查证)、decisions=user — 原文整段存在;sub-agent 为宿主能力,非第三方依赖。
  • [ok] 终止条件 + 用户确认门禁 — 原文 'The session is done when the frontier is empty…Do not act on it until the user confirms' 存在。
  • [ok] 外部依赖清单为空 — 对 4 个文件扫描 URL/CLI/包/网络 token 零命中;grilling 只引用宿主通用能力(filesystem, tools, sub-agent),无可点名 CLI/API/端点。
  • [ok] 无脚本/无文件写入/无凭证读取 — 文件清单仅 4 个 manifest/markdown 文件;写文件类 token(write/create file/save/append)零命中;docs 页自述 'writes no files' 与源码一致。

6结论

  • 可组合的薄壳设计:grill-me 用一行正文把 grilling 原语变成用户入口,同一原语被多个工程 skill 复用,行为单一来源。
  • 拷问有算法式结构:frontier/rounds 保证只问『现在能答』的问题、整层一轮问完,可终止且不遗漏(frontier 空即完)。
  • 不把查证负担甩给用户:事实由 agent/sub-agent 查,每题还带推荐答案,用户只需表态。
  • 零副作用、跨宿主:stateless、无脚本无网络无写文件,Claude Code 与 Codex 双清单齐全,任意模型/主题可用。
  • 行动门禁防越界:用户确认 shared understanding 前禁止实施,拷问只产出决策。
  • 适合: 适合动工前把模糊想法拷问成可承诺决策的任何场景,尤其无仓库/非代码议题(产品方向、写作、业务决策);也适合想复用该提问机制的 skill 作者照抄 grilling 原语。在 Claude Code 里 /grill-me 在全新会话中启动效果最好(docs 建议 fresh conversation)。
    不适合: 不适合已有精确规格、无需提问的场景(docs:'If you can already specify the thing precisely, you don't need to grill it');不适合需要留下文档痕迹的工程会话(应选会写 CONTEXT.md/ADR 的 grill-with-docs);不适合需要实物反馈的问题(ungrillable 问题应转 prototype);不适合期望 skill 自动验证事实或写文件的场景——它只问不查不写。
    Install Agent-Ready
    ① Verified Mirror 2026-09-06
    Option A · Direct DownloadDownload grill-me.tar.gz
    sha256: e825a60d0e35dfb1…
    Option B · Copy Guide for Agent
    install.json
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 3cca18b368.