Skill Learning

grill-me

Pure wrapper detectedThis learning unit includes the thin entry skill and the single implementation skill that carries all core behavior.

1. Bilingual SKILL.md

左右滑动可直接切换英文版与中文版;两种语言按段落自动对齐。英文中的蓝色虚线词语可点击查看解释。共标记 21 处。

入口 skill:grill-me左右滑动切换语言 · 段落位置自动对齐
Run a `/grilling` session.
运行一次 `/grilling` 会话。

Entry SHA-256: 6189dfceb7304a6e5558f75d87e68fa3bc7fcf7ba120e44f21f8a61fe01eba54

Path: skills/productivity/grilling/SKILL.md · View implementation source

真实实现 skill:grilling左右滑动切换语言 · 段落位置自动对齐
. : .
Work the tree in **rounds**. The **** is every decision — the questions you can ask _now_ without guessing at answers you haven't heard yet. Ask the whole in one round: number each question and give your recommended answer. Then wait for the user's answers before the next round.
Each question should be formatted like so:
``` ❓ **Q1** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>
➡️ <your recommended answer> ```
— settled decisions push the outward and . Recompute the and ask the next round. A question whose answer depends on another question still open in this round belongs to a _later_ round, not this one.
Finding _facts_ is your job, never the user's. When a 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 , so only the for the sub-agent to report — ask the rest of the now. The _decisions_ are the user's — put each to them and wait.
The session is done when the is empty: every branch of the design tree visited, . Do not act on it until the user confirms you have reached a shared understanding.
持续、彻底地访谈用户,直到双方达成共同理解。把整个问题映射成一棵**设计树(design tree)**:每项决策都会分叉出依赖于它的后续决策。
以若干**轮次(rounds)**推进这棵树。所谓**前沿(frontier)**,是指所有前置条件已经确定的决策——也就是你现在就能询问、而不必猜测那些尚未得到答案的问题。每一轮都要一次性询问整个前沿:给每个问题编号,并给出你的推荐答案。然后等待用户回答,再进入下一轮。
每个问题应采用如下格式:
```markdown ❓ **Q1** - **<问题标题>**:<问题正文,可以包含多个段落以及多个选项>
➡️ <你的推荐答案> ```
用户在每一轮中的回答都会重塑这棵树——已经确定的决策会把前沿向外推进,并解锁那些依赖于它们的问题。重新计算前沿,然后询问下一轮问题。如果一个问题的答案依赖于本轮中另一个仍未解决的问题,那么它应当属于**后续轮次**,而不是当前轮次。
查找**事实**是你的责任,绝不是用户的责任。当某个前沿问题需要从环境中获取事实(文件系统、工具等)时,派出一个子 agent 去查找;凡是你自己能够查到的信息,都不要反过来询问用户。不要因此阻塞整个流程:正在运行的探索任务只是一个尚未确定的前置条件,所以只有依赖该结果的问题需要等待子 agent 返回;前沿中其余的问题现在就照常提出。**决策**属于用户——把每项决策交给用户,并等待其回答。
当前沿为空时,会话才算完成:设计树的每个分支都已被访问,没有任何假设被悄悄遗漏。在用户确认双方已经达成共同理解之前,不要根据讨论结果采取行动。

Implementation SHA-256: fa5c1e5ee76b1c8f1ae56101f52c9e239de75d5c578adc61227b92d10b7e52ef

2. Why This Skill Is Clever

一句话核心机制

这个学习单元分成两层:grill-me只允许用户主动开启的超薄入口grilling 是真实执行机制,它把模糊想法建模为一棵动态设计树,每轮只询问当前前置条件已经满足的“前沿”问题,直到没有隐含假设。

1. 为什么这里确实是“纯套壳”,而不只是普通调用

grill-me 的 body 只有一句:

Run a /grilling session.

它没有自己的提问步骤、格式、停止条件、事实查找规则或产出定义。全部核心行为都由唯一的 grilling 承担。因此它符合三个纯套壳条件:

  1. 自身没有流程;
  2. 只全量委托一个 skill;
  3. 被委托者负责全部核心行为。

这与“一个完整的 implement skill 在最后调用 code-review”不同。后者有自己的主体流程,code-review 只是局部能力,不能把两份原文合并成一个学习单元。

2. 入口层的巧妙之处:高干扰能力必须 opt-in

grill-me 写了:

disable-model-invocation: true

这意味着高强度追问不能由模型擅自发起,而要由用户显式选择。这个边界非常合理:grilling 的目标就是“不留情面地追问”,如果自动触发,正常对话会突然变成几十个问题,用户体验极差。

作者没有削弱能力,而是限制了谁有权启动能力。这是 skill 设计中很值得迁移的一条原则:高成本、高干扰、强控制型流程,最好采用显式 opt-in 入口。

3. 真实机制不是“多问问题”,而是维护依赖图

grilling 最重要的一句不是 Interview the user relentlessly,而是:

Map this as a design tree

普通访谈常先写一张固定问题清单,然后从上到下提问。这里却把每个问题视为决策节点,并显式表达依赖关系:某些问题只有在上游答案确定后才有意义。

所以用户的每次回答不仅“填入答案”,还会:

这就是原文所说的:

Each round the user answers reshapes the tree

它把访谈从静态 questionnaire 升级成了动态规划过程。

4. frontier 是整份 skill 最精巧的抽象

原文把前沿定义为:

every decision whose prerequisites are already settled

也就是:当前所有前置条件已经满足、现在可以不靠猜测直接询问的节点集合。

这个抽象同时解决了两类失败:

失败 A:过早提问

如果问题 B 的答案依赖问题 A,就不能在同一轮让用户同时回答 A 和 B。否则用户只能猜测 A 的答案,再基于猜测回答 B。

原文明确规定:

belongs to a later round, not this one

失败 B:一次只问一个导致低效

只问单个问题虽然安全,却会造成无谓的来回。frontier 允许把彼此独立、前置条件均已满足的问题整批提出。

因此它不是“批量提问”或“逐个提问”二选一,而是:按依赖关系做最大安全并行化。

5. 每道问题都附推荐答案,避免把思考成本甩给用户

格式要求是:

❓ **Q1** - **<question title>**: <question body>

➡️ <your recommended answer>

agent 不只是主持人,还必须表明判断。推荐答案有三个作用:

  1. 给用户一个可反驳的具体起点;
  2. 暴露 agent 当前的理解和偏见;
  3. 避免用开放问题把全部分析工作推回用户。

用户仍拥有最终决策权,但 agent 必须先完成自己的思考。这比不断问“你想怎么做?”更有价值。

6. “事实归 agent,决策归用户”划分了责任边界

真实 skill 中最值得迁移的规则是:

Finding facts is your job, never the user's.

以及:

The decisions are the user's

它把两类不确定性拆开:

许多 agent 访谈失败,是因为它们让用户回答本可自行查证的事实;另一些则擅自替用户作价值决策。这两句话把边界切得很干净。

7. 子 agent 调研不会阻塞整轮

当某个问题依赖尚在查询的事实时,原文没有要求整个访谈暂停,而是说:

only the questions downstream of it wait

只有依赖调研结果的分支等待,前沿中的其他独立问题继续推进。这相当于在决策图上进行异步调度:局部阻塞,而不是全局阻塞。

8. 完成条件可验证,而不是“感觉问得差不多”

结束条件是:

when the frontier is empty

也就是说,所有可达分支均已处理,没有节点仍在等待确认。它还增加了一道用户确认闸门:

Do not act on it until the user confirms

这防止 agent 在最后一个问题刚答完时立即开始实现,却没有让用户确认整体理解是否正确。

9. 为什么要拆成 grill-megrilling

拆层带来三种价值:

但不能把“调用另一个 skill”一概视为套壳。只有入口不拥有任何主体流程、全部行为由一个实现 skill 承担时,这种拆层才成立。否则展开每个依赖会让报告无限递归,也会混淆当前 skill 自己的设计责任。

防失败机制与 trade-off

防失败机制

代价

可迁移到自己 Skill 写作中的原则

  1. 不要把固定问题清单当作需求澄清;用依赖图决定下一轮能问什么。
  2. 最大化安全并行:问整个 frontier,而不是盲目批量或机械逐题。
  3. 事实由 agent 查,价值取舍由用户定。
  4. 每个问题给推荐答案,让用户反驳具体判断。
  5. 定义可验证的完成条件,并在行动前设置用户确认闸门。
  6. 只对真正的纯套壳展开实现 skill;普通组合调用保持边界。

今日实践题

选一个你正在考虑的真实决策,画出 5–8 个决策节点。然后标出:

如果所有问题仍能平铺在同一张清单里,说明你还没有真正建出设计树。

Source & provenance
Repository path
skills/productivity/grill-me/SKILL.md
Generated
2026-08-10 21:09 Asia/Shanghai
Upstream commit
84fdeffd12f2ee307994d1eb6feb48173b6e0502
Source
View on GitHub