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..2811337 --- /dev/null +++ b/src/skills/grill/SKILL.md @@ -0,0 +1,88 @@ +--- +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 or blocked 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. Prepare the grill. + 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. + Build the required-question set from the known plan or idea. + Put ready questions under `Open questions:`. + Put known questions with unsettled prerequisites under `Blocked questions:`. + + Finish when both sections contain every known required question. + +2. Start the interview. + Show `Open questions:` and `Blocked questions:` in short form. + Include titles only, not full question bodies. + Use Markdown list items in both sections. + Mark each initial item with `- [ ]`. + Ask exactly one numbered question in the same turn. + The question title must match an item under `Open questions:`. + + Finish when the interview has started with exactly one numbered question. + +3. Process the answer. + Account for the user's answer before asking another question. + Resolve, update, remove, unblock, or add questions as the answer requires. + Use `- [ ]` for unchanged unresolved questions. + Use `- [+]` for questions added by the latest answer. + Use `- [u]` for questions updated by the latest answer. + Use `- [x]` for questions resolved by the latest answer. + Use `- [-]` for questions removed by the latest answer. + Include a cause note for each `- [+]`, `- [u]`, and `- [-]` change. + Indent cause notes by two spaces under the changed question. + 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. + Move unblocked questions from `Blocked questions:` to `Open questions:` with `- [u]`. + 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 either section. + Put optional follow-up questions in the final summary instead. + Resolve newly answerable facts yourself. + + Finish when every list change has an explicit marker and required cause note. + +4. Ask the next question. + Show `Open questions:` and `Blocked questions:` on every active grill turn. + Keep `- [ ]` items visible every turn. + Preserve agent judgment when the user reframes or invalidates a question. + Show the resulting list change instead of following a rigid reframe algorithm. + If the user catches incorrect accounting, briefly explain the error. + Then show the corrected question sections. + Ask exactly one numbered question when `Open questions:` contains an unresolved item. + The question title must match an item currently shown under `Open questions:`. + Give concrete options with trade-offs. + Label options with `A.`, `B.`, `C.`, and later letters. + Use the same labels in the recommendation. + 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. + If the turn includes a correction, file edit, apology, or explanation, still end with the next numbered question. + + Finish when the turn ends with the next numbered question. + +5. Close or pause. + Close when `Open questions:` and `Blocked questions:` are empty. + Output a concise summary of every decision reached. + Include optional follow-up questions that were not added to either section. + Do not act on the summary unless the user gives a new implementation instruction. + If the user changes tasks, state that grill is paused. + End the turn with the final decision summary or the pause statement. + + Finish when the summary is delivered or grill is explicitly paused.