| name | grill |
| description | Pre-implementation alignment grill. Forces the agent to ask sharp questions before writing code on a non-trivial change. |
grill — 动手前的对齐审讯
借鉴 mattpocock/skills 的 /grill-me. 修复最常见的失败模式:Agent 以为自己懂了,其实没懂。
When to invoke
- Task says "add", "redesign", "refactor", "migrate", or any verb that implies non-trivial scope
CURRENT_TASK.md → Intent 不到 2 行 / 没说清边界
- 你已经想好怎么做了 ← 正是要 grill 的时候
- 上次类似任务有过返工
跳过 grill:trivial 字面修复(typo / 改一个常量 / 改一行配置)。
How
逼着自己回答下面这组问题。不许跳。把答案写到 CURRENT_TASK.md 里 ## Grill 段(或者口头答完再开工,但要在 JOURNAL 留痕)。
必答 7 问
- 变了什么? 一句话,名词宾语精确到文件/函数。
- 没变什么? 列出"会被路过但不该改"的边界。
- 谁/什么会因此而坏? 调用方、迁移、缓存、定时任务、外部依赖。
- 怎么验证它真的好了? 必须可执行——
pnpm test foo、curl /…、UI 步骤。
- 如果错了,怎么回滚? 一行命令或一个 commit。
- 这个改动属于已有的某个抽象吗? 如果不属于,是不是该先建抽象?(避免 ball-of-mud)
- 我对哪一个假设最没把握? 把它写出来——这就是真正的风险。
加分 3 问(影响 >2 模块时强制)
- 公共 API 变了吗? 变了 → 必须走
DECISIONS.md.
- 数据形状变了吗? 变了 → 迁移计划 + 回滚计划。
- 能拆成两个 PR 吗? 能拆就拆,永远拆。
Output
CURRENT_TASK.md 里追加:
## Grill (前置审讯 - <date>)
1. 变了什么:…
2. 没变什么:…
3. 谁会坏:…
4. 验证:`<runnable command>`
5. 回滚:…
6. 抽象:…
7. **最不确定的假设:…** ← 风险根源
如果 #7 的假设无法当回合验证 → 把它拆出来当一个 research 任务先做。