Files
command-center/agent/skills/grilling/SKILL.md
T
Frank cedef97c99 feat(grilling): omp-aware interview redesign, absorb ask-etiquette law
Rewritten per grilling-on-grilling (2026-10-18, all branches settled via
ask rounds): ask tool is the default round vehicle (one artefact per
question, recommended:0 = bare-yes semantics, hybrid boundary ask-default
/ prose-exception); todo as visible decision tree (phase=branch, blocked
reasons) + durable local://grilling-state.md ledger surviving the
Esc-aborts-the-run path; scout=environment facts (spawn-before-ask,
exclusive concurrency), web_search=world facts, inline=cheap lookups;
completion gate = summary + one closing ask, then distilled decisions
land in omp-docs/log.md via branch -> PR.

Absorbs managed skill one-decision-per-ask-question (Frank's choice;
reworded: ideas heavily encouraged via own atomic question, ban is on
smuggling into option text only). Managed skill deleted here; heartbeat
drops it from the live tree.
2026-10-18 18:58:23 -07:00

4.2 KiB
Raw Blame History

name, description
name description
grilling 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.

Authored override. Extracted 2026-10-18 from mattpocock/skills (identical to upstream at extraction) into the command-center repo so Frank can customize it. Removed from the skills CLI global store (~/.agents/.skill-lock.json pruned) so skills update -g never resurrects a duplicate. omp-aware redesign same day; absorbed the one-decision-per-ask-question managed skill. Edits to this file are repo prose: branch → PR → Frank OK.

Interview the user relentlessly until you reach a shared understanding. 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. A question whose answer depends on an unsettled fact or another open question belongs to a later round, not this one. Ask the whole frontier in one round, then wait.

The round: ask is the default vehicle

Every frontier decision that fits 2–5 options goes through the ask tool - one question per decision, recommended: 0 (the recommended answer is always option 0; the user's single Enter is the bare "yes" that accepts it). Prose in chat is the exception, reserved for genuinely open narrative ("walk me through the deploy flow") - never as buttons.

Per-question discipline (absorbed law, was the one-decision-per-ask-question managed skill):

  • One question decides exactly one artefact. Name it before sending; two names → split. A round may carry many single-artefact questions; a question may not.
  • Shared plumbing is not grounds for merging: two products sharing an endpoint, service, or build step are still two questions.
  • Ideas are heavily encouraged - the interviewer's own idea gets its own atomic question like any other. What is banned is smuggling an unasked-for artefact into another question's option text ("...and also X" in a label or preview).
  • Option wording derives from the user's stated goal, never from your scaffolding (todo text, table rows, runbook headings).
  • multi: true for pick-many; preview for code/config evidence (renders as markdown); header for the branch chip.

Fallback: a harness without ask degrades to the classic text round - ❓ **Q1** - **title**: body / ➡️ recommendation, worded so a bare "yes" accepts every recommendation.

Dialog mechanics you must respect: ask is exclusive - spawn scouts before the ask call in the same message or they stall behind the dialog. The dialog cannot be interrupted by arriving facts; results land between rounds. Esc aborts the whole run with no post-cancel turn - the durable ledger is the safety net. Questions are spoken aloud when speech is enabled.

The ledger: todo is the tree, local:// is the save-file

  • todo: phase = design-tree branch, task text = the decision ("<decision> - via: <parent>" carries the edge; todo has no edges). pending = frontier, block with a one-line reason = waiting on a fact or an open decision (the HUD stays visible while anything is blocked), done = settled. unblock the moment its prerequisite settles.
  • write local://grilling-state.md at the end of every round: the tree with each decision's verdict + one-line rationale. This is the only thing that survives an Esc-abort - keep it current.

Facts are yours; decisions are the user's

  • Environment facts (filesystem, repo, live config): task + scout, one batch, one scout per fact-cluster; on this box at most 3 run at once, so cluster rather than spray.
  • Outside-world facts: call web_search directly - no spawn hop.
  • Cheap lookups: read/grep inline.
  • Only the main session may ask; every spawn carries the exact facts to return.

Completion

Frontier empty and nothing blocked → write the settled-decisions summary from the ledger, then one closing ask: "Shared understanding reached - proceed?" Nothing executes before that yes. After it: distill the settled decisions into an omp-docs/log.md work-log entry through the normal branch → PR path, and refresh the ledger file to final form.