From a71bbac67e02c8ccfaafdbdc9907b628fd47ff59 Mon Sep 17 00:00:00 2001 From: alexion Date: Tue, 8 Sep 2026 11:51:25 -0400 Subject: [PATCH] feat(skills): add grill skill Add a monorepo-owned grill skill and enable it at the repository root. Remove stale craft-skill guidance that conflicted with pull-request follow-up commits. --- .pi/skills/grill | 1 + src/skills/craft-skill/SKILL.md | 1 - src/skills/grill/SKILL.md | 124 ++++++++++++++++++++++++++++++++ 3 files changed, 125 insertions(+), 1 deletion(-) create mode 120000 .pi/skills/grill create mode 100644 src/skills/grill/SKILL.md diff --git a/.pi/skills/grill b/.pi/skills/grill new file mode 120000 index 0000000..2806aae --- /dev/null +++ b/.pi/skills/grill @@ -0,0 +1 @@ +../../src/skills/grill \ No newline at end of file diff --git a/src/skills/craft-skill/SKILL.md b/src/skills/craft-skill/SKILL.md index c504cc5..656b4b2 100644 --- a/src/skills/craft-skill/SKILL.md +++ b/src/skills/craft-skill/SKILL.md @@ -112,6 +112,5 @@ Finish when one branch matches the user's requested change. 3. Report the result. List every changed path. State whether you enabled the skill or only authored it. - Do not stage or commit unless the user requested it. Finish when the user can review the exact files changed. diff --git a/src/skills/grill/SKILL.md b/src/skills/grill/SKILL.md new file mode 100644 index 0000000..e36f144 --- /dev/null +++ b/src/skills/grill/SKILL.md @@ -0,0 +1,124 @@ +--- +name: grill +description: Stress-test a plan, decision, or design through a one-question-at-a-time interview. Use when the user asks to grill, stress-test, pressure-test, challenge, interrogate, or poke holes in a plan. +--- + +# grill + +Interview the user until the session has no open questions. +Open questions define the ending condition for the grill session. +Blocked questions track known decisions with unsettled prerequisites. + +Do not begin implementation during or after grill without an explicit user instruction. +A completed grill summary is not an instruction to build. + +## Run the interview + +1. Investigate first. + Read the conversation, files, and docs that can settle facts or reveal constraints. + Resolve factual questions yourself when tools can answer them. + Do not ask the user for facts you can find. + + Finish when known facts, constraints, and unresolved decisions are visible. + +2. Build the open-question list. + Map the decisions needed to finish the grill session. + Include known dependent questions as blocked questions. + + Finish when the list contains every known required question. + +3. Start the session. + Present the Open questions and Blocked questions sections in short form. + Include titles only, not full question bodies. + Format each item with the markers from [Open-question accounting](#open-question-accounting). + Then ask the first numbered question in the same turn. + + Finish when the interview has started with exactly one numbered question. + +4. Run the question loop. + Show the Open questions and Blocked questions sections on every active grill turn. + Ask one numbered question at a time. + Apply [Question format](#question-format) to each question. + Wait for the user's answer. + Apply [Open-question accounting](#open-question-accounting) before asking again. + Resolve newly answerable facts yourself before asking again. + + Finish when the answer is accounted for and the turn ends with a numbered question, summary, or pause statement. + +5. Close the interview. + Stop when the open-question list is empty. + Output a concise summary of every decision reached. + Include optional follow-up questions that were not added to the open-question list. + Do not act on the summary unless the user gives a new implementation instruction. + + Finish when the summary is delivered and grill waits. + +## Question format + +End each active grill turn with exactly one numbered question. +Give concrete options with trade-offs. +Give a recommendation and rationale. + +Probe vague words, overloaded terms, and hidden assumptions. +Use concrete scenarios to test concept boundaries and edge cases. +When code contradicts the user's claim, quote both the claim and the code behavior. + +## Open-question accounting + +Show ready questions under `Open questions:`. +Show questions with unsettled prerequisites under `Blocked questions:`. +Use Markdown list items in both sections. +Indent cause notes by two spaces under the changed question. +Do not nest questions under other questions. + +Use the bracket marker to show item changes on the current turn: + +- `- [ ]` for unchanged unresolved questions +- `- [+]` for questions added by the latest answer +- `- [u]` for questions updated by the latest answer +- `- [x]` for questions resolved by the latest answer +- `- [-]` for questions removed by the latest answer + +Keep `- [ ]` items visible every turn. +Show `- [+]`, `- [u]`, `- [x]`, and `- [-]` for one turn only. +After that turn, keep an updated question visible as `- [ ]`. +After that turn, remove resolved and removed questions from the visible list. + +When a blocked question becomes ready, move it to `Open questions:` with `- [u]` for one turn. +Do not use `- [+]` for unblocked questions because they are not new. + +Add questions only when the latest answer directly causes them. +When the user extends scope instead of answering, account for the new question before pursuing it. +Do not add optional follow-up questions to the open-question list. +Put optional follow-up questions in the final summary instead. + +Include a cause note for each `- [+]`, `- [u]`, and `- [-]` change. +Use this format: + +```md +Open questions: + +- [u] Copyleft preference + Cause: The `src/skills/` exception leaves the rest of the monorepo under the root license. + +Blocked questions: + +- [+] Patent explicitness + Cause: Your answer made patent terms relevant to the license choice. +``` + +Preserve agent judgment when the user reframes or invalidates a question. +Show the resulting list change instead of following a rigid reframe algorithm. + +When the user catches incorrect open-question handling, briefly explain the error. +Then show the corrected open-question list. + +## Turn endings + +While grill is active, every assistant turn must end with exactly one of these items: + +- the next numbered question +- the final decision summary +- a plain statement that grill is paused because the user changed tasks + +If the turn includes a correction, file edit, apology, or explanation, still end with the next numbered question.