Rehearse
Interview relentlessly about every aspect of a plan to reach shared understanding, walk down each branch of the design tree, and resolve dependencies between decisions. Update domain documentation inline as terminology and architectural decisions crystallize.
Pre-flight
{{WORKSPACE}} = workspace root. Resolve once per session and reuse: git rev-parse --show-toplevel; fall back to cwd outside a git repo.
- Before your first write, read
{{WORKSPACE}}/{{MAESTRO_CONFIG}}/references/conventions.md — statuses, retries, artifact paths, and file ownership are defined there and are binding.
- Working folder:
{{WORKSPACE}}
- Target folders:
{{WORKSPACE}}/knowledge/ (you should only modify files in this folder)
- Required input: Plan or feature description to rehearse
References
Read reference specs on-demand when the workflow requires them — do NOT read all upfront.
Always needed
Contexts: Read {{WORKSPACE}}/{{MAESTRO_CONFIG}}/references/contexts.md — for glossary format (rehearse reads and writes {{WORKSPACE}}/knowledge/contexts.md)
On-demand (read only when needed)
ADRs: Read {{WORKSPACE}}/{{MAESTRO_CONFIG}}/references/adrs.md — only when an architectural decision meets ADR criteria during the interview (3 criteria already inlined in workflow step 8). Read for the ADR format template at that moment.
Cross-references
For how references relate to each other, see {{WORKSPACE}}/{{MAESTRO_CONFIG}}/references/references-map.md.
Validation
- If required input is missing, abort with error
Core Workflow
Phase 0: Setup
- Explore the codebase and
{{WORKSPACE}}/knowledge/ folder to understand the current domain language and existing documentation
Phase 1: Interview Process
- Codebase Exploration: If a question can be answered by exploring the codebase, explore the codebase instead of asking
- Terminology Challenge: When the user uses a term that conflicts with the existing language in
{{WORKSPACE}}/knowledge/contexts.md (if it exists), call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?"
- Language Sharpening: When the user uses vague or overloaded terms, propose a precise canonical term. "You're saying 'account' — do you mean the Customer or the User? Those are different things"
- Scenario Testing: When domain relationships are being discussed, stress-test them with specific scenarios. Invent scenarios that probe edge cases and force the user to be precise about the boundaries between concepts
- Code Verification: When the user states how something works, check whether the code agrees. If you find a contradiction, surface it: "Your code cancels entire Orders, but you just said partial cancellation is possible — which is right?"
- Inline Documentation Updates: When a term is resolved, update
{{WORKSPACE}}/knowledge/contexts.md right there. Don't batch these up — capture them as they happen. Follow the format specified in the Contexts specification
- ADR Creation: Only offer to create an
ADR in {{WORKSPACE}}/knowledge/adrs/ when the criteria in the ADRs specification are met (hard to reverse, surprising without context, result of real trade-off). Follow the format specified in the ADRs specification
Documentation Constraints
- Contexts (
{{WORKSPACE}}/knowledge/contexts.md) should be totally devoid of implementation details. Do not treat it as a spec, a scratch pad, or a repository for implementation decisions. It is a glossary and nothing else
Quality Checklist
Before completing:
Execution
Use the plan or feature description from the invocation, then proceed with Phase 0: Setup.
1---2name: rehearse3description: Rehearse - stress-test a plan against the project's domain model by challenging assumptions, sharpening terminology, and updating contexts/ADRs inline; invoked via "/rehearse <plan or feature>" to refine language before orchestrate or after compose flags ambiguity4---56# Rehearse78Interview relentlessly about every aspect of a plan to reach shared understanding, walk down each branch of the design tree, and resolve dependencies between decisions. Update domain documentation inline as terminology and architectural decisions crystallize.910## Pre-flight1112- `{{WORKSPACE}}` = workspace root. Resolve once per session and reuse: `git rev-parse --show-toplevel`; fall back to cwd outside a git repo.13- Before your first write, read `{{WORKSPACE}}/{{MAESTRO_CONFIG}}/references/conventions.md` — statuses, retries, artifact paths, and file ownership are defined there and are binding.14- Working folder: `{{WORKSPACE}}`15- Target folders: `{{WORKSPACE}}/knowledge/` (you should only modify files in this folder)16- Required input: Plan or feature description to rehearse1718## References1920Read reference specs on-demand when the workflow requires them — do NOT read all upfront.2122### Always needed23- **`Contexts`:** Read `{{WORKSPACE}}/{{MAESTRO_CONFIG}}/references/contexts.md` — for glossary format (rehearse reads and writes `{{WORKSPACE}}/knowledge/contexts.md`)2425### On-demand (read only when needed)26- **`ADRs`:** Read `{{WORKSPACE}}/{{MAESTRO_CONFIG}}/references/adrs.md` — only when an architectural decision meets ADR criteria during the interview (3 criteria already inlined in workflow step 8). Read for the ADR format template at that moment.2728### Cross-references29For how references relate to each other, see `{{WORKSPACE}}/{{MAESTRO_CONFIG}}/references/references-map.md`.3031## Validation3233- If required input is missing, abort with error3435## Core Workflow3637### Phase 0: Setup38391. Explore the codebase and `{{WORKSPACE}}/knowledge/` folder to understand the current domain language and existing documentation4041### Phase 1: Interview Process42432. **Codebase Exploration:** If a question can be answered by exploring the codebase, explore the codebase instead of asking443. **Terminology Challenge:** When the user uses a term that conflicts with the existing language in `{{WORKSPACE}}/knowledge/contexts.md` (if it exists), call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?"454. **Language Sharpening:** When the user uses vague or overloaded terms, propose a precise canonical term. "You're saying 'account' — do you mean the Customer or the User? Those are different things"465. **Scenario Testing:** When domain relationships are being discussed, stress-test them with specific scenarios. Invent scenarios that probe edge cases and force the user to be precise about the boundaries between concepts476. **Code Verification:** When the user states how something works, check whether the code agrees. If you find a contradiction, surface it: "Your code cancels entire Orders, but you just said partial cancellation is possible — which is right?"487. **Inline Documentation Updates:** When a term is resolved, update `{{WORKSPACE}}/knowledge/contexts.md` right there. Don't batch these up — capture them as they happen. Follow the format specified in the `Contexts` specification498. **ADR Creation:** Only offer to create an `ADR` in `{{WORKSPACE}}/knowledge/adrs/` when the criteria in the `ADRs` specification are met (hard to reverse, surprising without context, result of real trade-off). Follow the format specified in the `ADRs` specification5051## Documentation Constraints5253- **Contexts** (`{{WORKSPACE}}/knowledge/contexts.md`) should be totally devoid of implementation details. Do not treat it as a spec, a scratch pad, or a repository for implementation decisions. It is a glossary and nothing else5455## Quality Checklist5657Before completing:5859- [ ] Every resolved term was written to `contexts.md` immediately, not batched60- [ ] Every ADR offered met all three criteria (hard to reverse, surprising without context, real trade-off)61- [ ] User wording captured verbatim for edited definitions and rationales62- [ ] `contexts.md` contains zero implementation details6364## Execution6566Use the plan or feature description from the invocation, then proceed with Phase 0: Setup.