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
|
# 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.
|
Open questions define the ending condition for the grill session.
|
||||||
Blocked questions track known decisions with unsettled prerequisites.
|
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
|
## Run the interview
|
||||||
|
|
||||||
1. Investigate first.
|
1. Prepare the grill.
|
||||||
Read the conversation, files, and docs that can settle facts or reveal constraints.
|
Read the conversation, files, and docs that can settle facts or reveal constraints.
|
||||||
Resolve factual questions yourself when tools can answer them.
|
Resolve factual questions yourself when tools can answer them.
|
||||||
Do not ask the user for facts you can find.
|
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.
|
2. Start the interview.
|
||||||
Map the decisions needed to finish the grill session.
|
Show `Open questions:` and `Blocked questions:` in short form.
|
||||||
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.
|
Include titles only, not full question bodies.
|
||||||
Format each item with the markers from [Open-question accounting](#open-question-accounting).
|
Use Markdown list items in both sections.
|
||||||
Then ask the first numbered question in the same turn.
|
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.
|
Finish when the interview has started with exactly one numbered question.
|
||||||
|
|
||||||
4. Run the question loop.
|
3. Process the answer.
|
||||||
Show the Open questions and Blocked questions sections on every active grill turn.
|
Account for the user's answer before asking another question.
|
||||||
Ask one numbered question at a time.
|
Resolve, update, remove, unblock, or add questions as the answer requires.
|
||||||
Apply [Question format](#question-format) to each question.
|
Use `- [ ]` for unchanged unresolved questions.
|
||||||
Wait for the user's answer.
|
Use `- [+]` for questions added by the latest answer.
|
||||||
Apply [Open-question accounting](#open-question-accounting) before asking again.
|
Use `- [u]` for questions updated by the latest answer.
|
||||||
Resolve newly answerable facts yourself before asking again.
|
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.
|
4. Ask the next question.
|
||||||
Stop when the open-question list is empty.
|
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.
|
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.
|
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.
|
Finish when the summary is delivered or grill is explicitly paused.
|
||||||
|
|
||||||
## 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.
|
|
||||||
|
|
||||||
## Turn endings
|
## Turn endings
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user