Interrogate an OpenSpec change until its requirements, design, specs, and tasks
tell one coherent story. Challenge terminology against project docs and code,
sharpen vague language, and probe boundaries with concrete scenarios.
Hard Rules
- Ask exactly one user-facing question at a time and wait for the answer. State
why the decision matters and recommend an answer when one is defensible.
- Inspect local evidence instead of asking questions it can answer.
- Only user-confirmed decisions may become normative. Repository facts provide
context; assistant recommendations remain
OPEN until confirmed.
- During a phase, update only working state. Batch-write formal artifacts after
the user confirms that the phase can close.
- Do not implement application code or edit
CONTEXT.md or ADRs. Edit only the
target change's OpenSpec artifacts.
- Answer side questions directly, then return to the current branch unless the
answer changes the decision tree.
Locate And Inspect The Change
Accept a change id, a reference such as "this change," or a partial change idea.
If the target is unclear, run:
openspec list --json
Use the only active change automatically. If several exist, ask which one; if
none exist, ask whether to create a change or refine a proposal.
Before grilling, run:
openspec status --change "<change-id>" --json
Read the change's proposal.md, design.md, tasks.md, and
specs/**/spec.md, plus relevant existing specs, referenced docs or ADRs, named
code paths, and validation commands. Before creating a missing artifact, get
its current template and rules:
openspec instructions <artifact-id> --change "<change-id>" --json
Do not copy instruction metadata into artifacts.
Working State
Maintain three views of the same discussion:
- Change map: outcome, actors, scope and non-goals, capability deltas,
scenarios, design commitments, tasks, validation, contradictions, and risks.
- Panorama: a compact visible phase/progress/current-branch view. Show it
before the first question, before ordinary questions in compact form, and
redraw it when the decision tree changes materially.
- Decision ledger: confirmed, deferred, open, rejected, and superseded
branches. For sessions likely to span turns, persist it as
decision-log.md inside the change.
For each material decision, record its normalized meaning, rationale when
important, exclusions, phase, and affected artifacts. Qualified acceptance
confirms only the accepted portion. When corrected, mark the old decision
SUPERSEDED and reconcile anything that inherited it.
Keep a downstream-impact queue in the ledger or plan. Recording an impact does
not authorize an early formal write.
Phase Transaction
Run every phase as one transaction:
- Discover: inspect evidence and map the phase's branches.
- Discuss: ask one question at a time; update only the map, panorama,
ledger, plan, and impact queue. Keep formal artifacts frozen.
- Close: summarize confirmed decisions, exclusions, deferrals, and risks;
ask one focused question to confirm phase closure.
- Commit: re-read the ledger and batch-write every affected artifact that
can express the confirmed decisions without inventing a later decision.
- Validate: inspect the diff and run the cheapest relevant OpenSpec check.
Do not infer closure from silence or a topic change. Intermediate validation may
report missing downstream artifacts or queued inconsistencies; do not update
later content merely to make validation green early.
If a later phase exposes a missing or changed upstream decision, pause, reopen
the upstream phase, confirm and commit it, then resume. Fix transcription and
formatting errors directly; reopen a phase when a fix needs a product decision.
If the user explicitly requests an early artifact write, treat it as a
provisional snapshot, label it accordingly, and reconcile it at phase close.
Phase Guide
| Phase |
Resolve |
Batch-write at close |
| Requirements |
Actor, outcome, defaults, scope/non-goals, compatibility, constraints, important failure behavior |
proposal.md and directly entailed spec requirements/scenarios; queue design and task impacts |
| Design |
Ownership/source of truth, flows, interfaces/versioning, state, authorization/audit, failure/degraded behavior, migration/rollback, alternatives |
design.md and specs whose observable behavior changed; queue task impacts |
| Specs |
Precise behavioral requirements with observable positive, negative, conflict, and degraded scenarios where material |
All affected specs/<capability>/spec.md files |
| Tasks |
Dependency-ordered implementation, tests, docs, migration, and validation work justified by committed artifacts |
tasks.md |
| Final Sweep |
Cross-artifact fidelity and consistency; no new product decisions |
Consistency and transcription fixes only |
Specs describe what the system shall do, not implementation. Tasks must cover
confirmed behavior without expanding scope. Create missing capability specs
only after reading their OpenSpec instructions.
For changes spanning agents and platform runtime, read
references/interaction-contracts.md
before completing Design.
Commit Fidelity
At each phase commit:
- Apply confirmed decisions wherever they can be expressed without resolving an
unconfirmed downstream choice.
- Keep deferred or proposed content in the ledger unless an explicit formal
open-questions section helps readers without disguising a blocker.
- Compare the diff with the ledger, reject added behavior, mark applied impacts
resolved, and queue newly discovered impacts.
Final Validation
Before finishing:
Confirm all phases are closed and the impact queue is empty.
Re-read the ledger and every artifact. Check terminology, requirement and
scenario alignment, design rationale, task justification, compatibility,
migration, rollback, authorization, failure behavior, and validation.
Search for deprecated terms, pseudo-states, removed tools, or stale
capability claims.
Run, fix artifact issues, and run again:
openspec validate "<change-id>"
openspec status --change "<change-id>"
Finish with the change id/location, artifacts updated, key confirmed decisions,
open questions, and validation result. Do not declare completion while an open
question blocks coherent artifacts.
1---2name: grill-with-change3description: Stress-test and refine an OpenSpec change through one-question-at-a-time, phase-gated discussion and batched write-back. Use when the user wants to interrogate, complete, or improve a change while preserving decision fidelity across proposal.md, design.md, specs, and tasks.md.4---56Interrogate an OpenSpec change until its requirements, design, specs, and tasks7tell one coherent story. Challenge terminology against project docs and code,8sharpen vague language, and probe boundaries with concrete scenarios.910## Hard Rules1112- Ask exactly one user-facing question at a time and wait for the answer. State13 why the decision matters and recommend an answer when one is defensible.14- Inspect local evidence instead of asking questions it can answer.15- Only user-confirmed decisions may become normative. Repository facts provide16 context; assistant recommendations remain `OPEN` until confirmed.17- During a phase, update only working state. Batch-write formal artifacts after18 the user confirms that the phase can close.19- Do not implement application code or edit `CONTEXT.md` or ADRs. Edit only the20 target change's OpenSpec artifacts.21- Answer side questions directly, then return to the current branch unless the22 answer changes the decision tree.2324## Locate And Inspect The Change2526Accept a change id, a reference such as "this change," or a partial change idea.27If the target is unclear, run:2829```bash30openspec list --json31```3233Use the only active change automatically. If several exist, ask which one; if34none exist, ask whether to create a change or refine a proposal.3536Before grilling, run:3738```bash39openspec status --change "<change-id>" --json40```4142Read the change's `proposal.md`, `design.md`, `tasks.md`, and43`specs/**/spec.md`, plus relevant existing specs, referenced docs or ADRs, named44code paths, and validation commands. Before creating a missing artifact, get45its current template and rules:4647```bash48openspec instructions <artifact-id> --change "<change-id>" --json49```5051Do not copy instruction metadata into artifacts.5253## Working State5455Maintain three views of the same discussion:5657- **Change map:** outcome, actors, scope and non-goals, capability deltas,58 scenarios, design commitments, tasks, validation, contradictions, and risks.59- **Panorama:** a compact visible phase/progress/current-branch view. Show it60 before the first question, before ordinary questions in compact form, and61 redraw it when the decision tree changes materially.62- **Decision ledger:** confirmed, deferred, open, rejected, and superseded63 branches. For sessions likely to span turns, persist it as64 `decision-log.md` inside the change.6566For each material decision, record its normalized meaning, rationale when67important, exclusions, phase, and affected artifacts. Qualified acceptance68confirms only the accepted portion. When corrected, mark the old decision69`SUPERSEDED` and reconcile anything that inherited it.7071Keep a downstream-impact queue in the ledger or plan. Recording an impact does72not authorize an early formal write.7374## Phase Transaction7576Run every phase as one transaction:77781. **Discover:** inspect evidence and map the phase's branches.792. **Discuss:** ask one question at a time; update only the map, panorama,80 ledger, plan, and impact queue. Keep formal artifacts frozen.813. **Close:** summarize confirmed decisions, exclusions, deferrals, and risks;82 ask one focused question to confirm phase closure.834. **Commit:** re-read the ledger and batch-write every affected artifact that84 can express the confirmed decisions without inventing a later decision.855. **Validate:** inspect the diff and run the cheapest relevant OpenSpec check.8687Do not infer closure from silence or a topic change. Intermediate validation may88report missing downstream artifacts or queued inconsistencies; do not update89later content merely to make validation green early.9091If a later phase exposes a missing or changed upstream decision, pause, reopen92the upstream phase, confirm and commit it, then resume. Fix transcription and93formatting errors directly; reopen a phase when a fix needs a product decision.9495If the user explicitly requests an early artifact write, treat it as a96provisional snapshot, label it accordingly, and reconcile it at phase close.9798## Phase Guide99100| Phase | Resolve | Batch-write at close |101| --- | --- | --- |102| Requirements | Actor, outcome, defaults, scope/non-goals, compatibility, constraints, important failure behavior | `proposal.md` and directly entailed spec requirements/scenarios; queue design and task impacts |103| Design | Ownership/source of truth, flows, interfaces/versioning, state, authorization/audit, failure/degraded behavior, migration/rollback, alternatives | `design.md` and specs whose observable behavior changed; queue task impacts |104| Specs | Precise behavioral requirements with observable positive, negative, conflict, and degraded scenarios where material | All affected `specs/<capability>/spec.md` files |105| Tasks | Dependency-ordered implementation, tests, docs, migration, and validation work justified by committed artifacts | `tasks.md` |106| Final Sweep | Cross-artifact fidelity and consistency; no new product decisions | Consistency and transcription fixes only |107108Specs describe what the system shall do, not implementation. Tasks must cover109confirmed behavior without expanding scope. Create missing capability specs110only after reading their OpenSpec instructions.111112For changes spanning agents and platform runtime, read113[references/interaction-contracts.md](references/interaction-contracts.md)114before completing Design.115116## Commit Fidelity117118At each phase commit:119120- Apply confirmed decisions wherever they can be expressed without resolving an121 unconfirmed downstream choice.122- Keep deferred or proposed content in the ledger unless an explicit formal123 open-questions section helps readers without disguising a blocker.124- Compare the diff with the ledger, reject added behavior, mark applied impacts125 resolved, and queue newly discovered impacts.126127## Final Validation128129Before finishing:1301311. Confirm all phases are closed and the impact queue is empty.1322. Re-read the ledger and every artifact. Check terminology, requirement and133 scenario alignment, design rationale, task justification, compatibility,134 migration, rollback, authorization, failure behavior, and validation.1353. Search for deprecated terms, pseudo-states, removed tools, or stale136 capability claims.1374. Run, fix artifact issues, and run again:138139 ```bash140 openspec validate "<change-id>"141 openspec status --change "<change-id>"142 ```143144Finish with the change id/location, artifacts updated, key confirmed decisions,145open questions, and validation result. Do not declare completion while an open146question blocks coherent artifacts.