refactor(skills): make grill a strict workflow
This commit is contained in:
@@ -5,7 +5,7 @@ description: Stress-test a plan, decision, or design through a one-question-at-a
|
||||
|
||||
# grill
|
||||
|
||||
Interview the user until the session has no open questions.
|
||||
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.
|
||||
|
||||
@@ -14,106 +14,76 @@ A completed grill summary is not an instruction to build.
|
||||
|
||||
## Run the interview
|
||||
|
||||
1. Investigate first.
|
||||
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 known facts, constraints, and unresolved decisions are visible.
|
||||
Finish when both sections contain every known required question.
|
||||
|
||||
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.
|
||||
2. Start the interview.
|
||||
Show `Open questions:` and `Blocked questions:` 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.
|
||||
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.
|
||||
|
||||
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.
|
||||
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 the answer is accounted for and the turn ends with a numbered question, summary, or pause statement.
|
||||
Finish when every list change has an explicit marker and required cause note.
|
||||
|
||||
5. Close the interview.
|
||||
Stop when the open-question list is empty.
|
||||
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.
|
||||
|
||||
Finish when the turn ends with one numbered question, summary, or pause statement.
|
||||
|
||||
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 the open-question list.
|
||||
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.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
## 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.
|
||||
Finish when the summary is delivered or grill is explicitly paused.
|
||||
|
||||
## Turn endings
|
||||
|
||||
|
||||
Reference in New Issue
Block a user