Status: CONCEPT / PROPOSAL — not yet battle-tested. Looking for feedback, not asking for merge.
This describes a planning layer we are currently prototyping on top of the Starter Kit's existing /mdd workflow. It works well for us so far on one real project, but several pieces (auto-status updates, multi-edition flow, mid-flight roadmap rewrites) are still open. Sharing it here as food for thought. Feedback, pushback, and counter-proposals very welcome.
(Would normally post this in GitHub Discussions, but Discussions are not enabled on the repo — happy to move it there if you'd like to turn them on.)
Context
We use the Starter Kit for medium-to-large projects (currently a test-management / analytics tool for SAP S/4HANA rollouts, among others). For a single feature, /mdd is great — document the feature, write test skeletons, implement TDD, verify. That holds up as long as you already know which feature you're tackling.
The moment a project is bigger than one feature (greenfield, or a significant new module inside an existing system), two levels above /mdd are missing:
- How do you decompose a spec into meaningful releases?
- How do you decompose a release into features?
This proposal adds those two levels as approval-gated, top-down planning, designed to prevent thrashing (no redesigns after code already exists) and to force a demonstrable checkpoint at every step.
The three levels at a glance
| Level |
Skill |
Artifact |
Scope |
| Initiative |
/plan-initiative |
.mdd/roadmap.md (new or extended) |
Decomposes a spec into 2–6 Waves with a demo-state each |
| Wave |
/plan-wave <wave-slug> |
Updates the same .mdd/roadmap.md |
Decomposes one wave into 2–8 features with optional research topics |
| Feature |
/mdd (existing) |
.mdd/docs/<NN>-<feature-name>.md + tests + code |
Doc-first, TDD, live verification |
Each level stops at the end and waits for approval — there is no auto-handoff to the next level.
Core concept: Demo-State
The load-bearing idea is a demo-state per wave — one sentence describing what a user can manually perform at the end of the wave. Example:
"User signs up, logs in, sees an empty dashboard."
Consequences:
- Waves are vertical slices (end-to-end), not horizontal layers ("all DBs first, all APIs second"). Every wave is releasable / demo-able on its own.
- The demo-state is the single acceptance criterion for wave completion — no fuzzy "Wave 2 is mostly done".
- The next wave may only start once the previous wave's demo-state has been manually verified. This is a real gate, not a nice-to-have.
Workflow (happy path)
Spec / requirements
↓
/plan-initiative
→ .mdd/roadmap.md with 2–6 waves, demo-states, open product questions
↓ [user approval + open product questions answered]
↓
/plan-wave wave-1
→ same file: wave 1 flipped to "active", features added, demo-state sharpened
↓ [user approval]
↓
/mdd (per feature)
→ .mdd/docs/NN-<feature>.md → test skeletons → build plan → TDD → verify
↓ [wave-1 demo verified manually → status "complete"]
↓
/plan-wave wave-2 ...
Gates (deliberately hard to skip)
- Open product questions before Wave 1.
/plan-initiative collects everything the team must decide before kickoff (tech stack, auth model, hosting, data sources, stakeholder roles). /plan-wave wave-1 explicitly asks whether those are answered before feature decomposition.
- Predecessor wave complete.
/plan-wave wave-N reads .mdd/roadmap.md — if the wave that wave-N depends on is still planned or active, it stops and quotes the unmet demo-state back at the user.
- Feature impact analysis (Phase 2 of
/mdd). Mandatory gate at feature level — trace data flow, grep all usages of touched code, check app-wide consistency, before any doc or code is written.
Artifact structure
.mdd/roadmap.md (single source of truth for the top two levels)
# Roadmap: <ProjectName>
## Open product questions (before Wave 1)
- [ ] Auth model? (SSO vs. custom login)
- [ ] Database? (Supabase vs. self-hosted Postgres)
## Wave 1: Auth foundation
**Status:** active
**Demo-state:** User signs up, logs in, sees an empty dashboard.
**Depends on:** none
### Features
- [ ] auth-signup — signup flow with email verification
- Research: none
- [ ] auth-login — login + session handling
- Depends on: auth-signup
- Research: none
- [ ] dashboard-shell — empty dashboard layout
- Research: which routing pattern to use?
## Wave 2: User management
**Status:** planned
**Demo-state:** Admin creates a user, user list shows all created users.
**Depends on:** Wave 1 (login works)
### Features
_Filled in via `/plan-wave wave-2` when the wave starts._
Status values: planned → active → complete.
.mdd/docs/<NN>-<feature>.md (per feature, existing)
Frontmatter includes, among others: id, title, wave: <wave-slug> (optional — enables future auto-update of roadmap status when all features of a wave are complete), depends_on, source_files, test_files, known_issues.
Skill responsibilities (deliberately narrow)
/plan-initiative does not
- Name features (→ wave level)
- Pick file paths / code structure (→ feature level)
- Make tech decisions (→ parks them as open product questions)
- Auto-proceed to
/plan-wave (always stop + approval)
/plan-wave does not
- Implement anything
- Write feature MDD docs (→
/mdd)
- Invent research topics to fill the field — if nothing's open, it reads
none
- Start the wave if its predecessor is not yet
complete
/mdd does not (existing rules)
- Write or code before Phase 2 (impact analysis) passes
- Move past the MDD doc without user approval
- Treat green unit tests as "done" — Definition of Done is happy path against real services
Why this split (the non-obvious parts)
- Lazy refinement.
/plan-initiative does not break waves down into features — that only happens when the wave actually starts. Otherwise you plan three months ahead for something you'll rethink anyway by the time wave 2 kicks off.
- Approval gates instead of automation. Between every level there's a deliberate stop. In longer chains (Initiative → Wave → Feature → Code), every auto-handoff carries the risk that a misunderstanding propagates three levels deep before the user intervenes.
- Demo-state as a semantic gate. Instead of steering by story points / velocity / burndown, steering happens via demo-state: either the wave is manually demoable, or it isn't done. No shades of grey.
- One file (
.mdd/roadmap.md) for the upper hierarchy. No separate folder per wave or per initiative — one document where status and structure grow together. Benefit: the whole project plan is visible and diffable on one page.
What we have not sharply solved yet (honest open points)
- Auto-status update of waves. The
wave: field in feature frontmatter is defined, but we don't yet have tooling that flips the wave status to complete when all its features are complete. Currently manual.
- Multi-edition projects. The
edition: Both | Frontend | Backend field exists, but we have no workflow for projects that need two editions in parallel (e.g. OSS + Enterprise).
- Cross-wave feature dependencies. We currently model dependencies within a wave and between waves, not from a feature in wave 3 back onto a feature in wave 1. We haven't needed it so far because vertical slicing catches most of it — but it's a known gap.
- Retro integration.
/retro exists, but there is no automatic link between wave completion and retro trigger.
- Roadmap migration for mid-flight changes. If wave 2 reveals that waves 3 and 4 need reshaping, there is no clean flow for it. Today: re-run
/plan-initiative, merge manually.
Possible integration points for the Starter Kit (concrete suggestions)
- Treat
plan-initiative, plan-wave, mdd as a trio in the README — each skill loses context when documented in isolation.
- Ship
.mdd/roadmap.md as a template with an empty example and a comment block explaining the three status values.
- Optionally a
/mdd-wave-status check that scans all wave: <x> features for a given slug and flips the wave status when they're all complete.
- In the
/new-project flow, ask: "Is this a single-feature project or a multi-wave project?" — and only in the second case suggest /plan-initiative.
Happy to turn any of this into a PR if a direction sounds useful to you. For now: does this shape of the problem resonate? Would love your thoughts on the gates (especially whether the demo-state-as-gate is too rigid in practice), the "one file" vs. "folder per wave" tradeoff, and whether the open points above are things you'd want solved before this lands in the kit or after.
Context
We use the Starter Kit for medium-to-large projects (currently a test-management / analytics tool for SAP S/4HANA rollouts, among others). For a single feature,
/mddis great — document the feature, write test skeletons, implement TDD, verify. That holds up as long as you already know which feature you're tackling.The moment a project is bigger than one feature (greenfield, or a significant new module inside an existing system), two levels above
/mddare missing:This proposal adds those two levels as approval-gated, top-down planning, designed to prevent thrashing (no redesigns after code already exists) and to force a demonstrable checkpoint at every step.
The three levels at a glance
/plan-initiative.mdd/roadmap.md(new or extended)/plan-wave <wave-slug>.mdd/roadmap.md/mdd(existing).mdd/docs/<NN>-<feature-name>.md+ tests + codeEach level stops at the end and waits for approval — there is no auto-handoff to the next level.
Core concept: Demo-State
The load-bearing idea is a demo-state per wave — one sentence describing what a user can manually perform at the end of the wave. Example:
Consequences:
Workflow (happy path)
Gates (deliberately hard to skip)
/plan-initiativecollects everything the team must decide before kickoff (tech stack, auth model, hosting, data sources, stakeholder roles)./plan-wave wave-1explicitly asks whether those are answered before feature decomposition./plan-wave wave-Nreads.mdd/roadmap.md— if the wave that wave-N depends on is stillplannedoractive, it stops and quotes the unmet demo-state back at the user./mdd). Mandatory gate at feature level — trace data flow, grep all usages of touched code, check app-wide consistency, before any doc or code is written.Artifact structure
.mdd/roadmap.md(single source of truth for the top two levels)Status values:
planned→active→complete..mdd/docs/<NN>-<feature>.md(per feature, existing)Frontmatter includes, among others:
id,title,wave: <wave-slug>(optional — enables future auto-update of roadmap status when all features of a wave arecomplete),depends_on,source_files,test_files,known_issues.Skill responsibilities (deliberately narrow)
/plan-initiativedoes not/plan-wave(always stop + approval)/plan-wavedoes not/mdd)nonecomplete/mdddoes not (existing rules)Why this split (the non-obvious parts)
/plan-initiativedoes not break waves down into features — that only happens when the wave actually starts. Otherwise you plan three months ahead for something you'll rethink anyway by the time wave 2 kicks off..mdd/roadmap.md) for the upper hierarchy. No separate folder per wave or per initiative — one document where status and structure grow together. Benefit: the whole project plan is visible and diffable on one page.What we have not sharply solved yet (honest open points)
wave:field in feature frontmatter is defined, but we don't yet have tooling that flips the wave status tocompletewhen all its features arecomplete. Currently manual.edition: Both | Frontend | Backendfield exists, but we have no workflow for projects that need two editions in parallel (e.g. OSS + Enterprise)./retroexists, but there is no automatic link between wave completion and retro trigger./plan-initiative, merge manually.Possible integration points for the Starter Kit (concrete suggestions)
plan-initiative,plan-wave,mddas a trio in the README — each skill loses context when documented in isolation..mdd/roadmap.mdas a template with an empty example and a comment block explaining the three status values./mdd-wave-statuscheck that scans allwave: <x>features for a given slug and flips the wave status when they're allcomplete./new-projectflow, ask: "Is this a single-feature project or a multi-wave project?" — and only in the second case suggest/plan-initiative.Happy to turn any of this into a PR if a direction sounds useful to you. For now: does this shape of the problem resonate? Would love your thoughts on the gates (especially whether the demo-state-as-gate is too rigid in practice), the "one file" vs. "folder per wave" tradeoff, and whether the open points above are things you'd want solved before this lands in the kit or after.