fix(roadmap): accept ## and ### phase headers, detect malformed ROADMAPs (#598, #599)

- Parser now accepts both `## Phase X:` and `### Phase X:` headers
- `roadmap get-phase` detects when phases exist in summary list but
  missing detail sections, returns `error: 'malformed_roadmap'`
- `roadmap analyze` returns `missing_phase_details` array
- Updated gsd-roadmapper instructions with explicit format requirements
- Added 2 tests for new functionality (77 total, all passing)

Closes #598, closes #599

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Lex Christopherson
2026-02-15 08:38:54 -06:00
parent d86385887a
commit 7b140c2dd2
3 changed files with 129 additions and 21 deletions

View File

@@ -286,12 +286,46 @@ After roadmap creation, REQUIREMENTS.md gets updated with phase mappings:
## ROADMAP.md Structure
Use template from `~/.claude/get-shit-done/templates/roadmap.md`.
**CRITICAL: ROADMAP.md requires TWO phase representations. Both are mandatory.**
Key sections:
- Overview (2-3 sentences)
- Phases with Goal, Dependencies, Requirements, Success Criteria
- Progress table
### 1. Summary Checklist (under `## Phases`)
```markdown
- [ ] **Phase 1: Name** - One-line description
- [ ] **Phase 2: Name** - One-line description
- [ ] **Phase 3: Name** - One-line description
```
### 2. Detail Sections (under `## Phase Details`)
```markdown
### Phase 1: Name
**Goal**: What this phase delivers
**Depends on**: Nothing (first phase)
**Requirements**: REQ-01, REQ-02
**Success Criteria** (what must be TRUE):
1. Observable behavior from user perspective
2. Observable behavior from user perspective
**Plans**: TBD
### Phase 2: Name
**Goal**: What this phase delivers
**Depends on**: Phase 1
...
```
**The `### Phase X:` headers are parsed by downstream tools.** If you only write the summary checklist, phase lookups will fail.
### 3. Progress Table
```markdown
| Phase | Plans Complete | Status | Completed |
|-------|----------------|--------|-----------|
| 1. Name | 0/3 | Not started | - |
| 2. Name | 0/2 | Not started | - |
```
Reference full template: `~/.claude/get-shit-done/templates/roadmap.md`
## STATE.md Structure