diff --git a/agents/gsd-roadmapper.md b/agents/gsd-roadmapper.md index 9ba54e2d4..0b1f18a49 100644 --- a/agents/gsd-roadmapper.md +++ b/agents/gsd-roadmapper.md @@ -325,6 +325,35 @@ After roadmap creation, REQUIREMENTS.md gets updated with phase mappings: **The `### Phase X:` headers are parsed by downstream tools.** If you only write the summary checklist, phase lookups will fail. +### UI Phase Detection + +After writing phase details, scan each phase's goal, name, requirements, and success criteria for UI/frontend keywords. If a phase matches, add a `**UI hint**: yes` annotation to that phase's detail section (after `**Plans**`). + +**Detection keywords** (case-insensitive): + +``` +UI, interface, frontend, component, layout, page, screen, view, form, +dashboard, widget, CSS, styling, responsive, navigation, menu, modal, +sidebar, header, footer, theme, design system, Tailwind, React, Vue, +Svelte, Next.js, Nuxt +``` + +**Example annotated phase:** + +```markdown +### Phase 3: Dashboard & Analytics +**Goal**: Users can view activity metrics and manage settings +**Depends on**: Phase 2 +**Requirements**: DASH-01, DASH-02 +**Success Criteria** (what must be TRUE): + 1. User can view a dashboard with key metrics + 2. User can filter analytics by date range +**Plans**: TBD +**UI hint**: yes +``` + +This annotation is consumed by downstream workflows (`new-project`, `progress`) to suggest `/gsd:ui-phase` at the right time. Phases without UI indicators omit the annotation entirely. + ### 3. Progress Table ```markdown diff --git a/get-shit-done/workflows/new-project.md b/get-shit-done/workflows/new-project.md index 3ff69bb69..10dda7452 100644 --- a/get-shit-done/workflows/new-project.md +++ b/get-shit-done/workflows/new-project.md @@ -1131,6 +1131,37 @@ Exit skill and invoke SlashCommand("/gsd:discuss-phase 1 --auto") **If interactive mode:** +Check if Phase 1 has UI indicators (look for `**UI hint**: yes` in Phase 1 detail section of ROADMAP.md): + +```bash +PHASE1_SECTION=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" roadmap get-phase 1 2>/dev/null) +PHASE1_HAS_UI=$(echo "$PHASE1_SECTION" | grep -qi "UI hint.*yes" && echo "true" || echo "false") +``` + +**If Phase 1 has UI (`PHASE1_HAS_UI` is `true`):** + +``` +─────────────────────────────────────────────────────────────── + +## ▶ Next Up + +**Phase 1: [Phase Name]** — [Goal from ROADMAP.md] + +/gsd:discuss-phase 1 — gather context and clarify approach + +/clear first → fresh context window + +--- + +**Also available:** +- /gsd:ui-phase 1 — generate UI design contract (recommended for frontend phases) +- /gsd:plan-phase 1 — skip discussion, plan directly + +─────────────────────────────────────────────────────────────── +``` + +**If Phase 1 has no UI:** + ``` ─────────────────────────────────────────────────────────────── diff --git a/get-shit-done/workflows/progress.md b/get-shit-done/workflows/progress.md index 58b7a8ca9..318811457 100644 --- a/get-shit-done/workflows/progress.md +++ b/get-shit-done/workflows/progress.md @@ -228,6 +228,13 @@ Read its `` section. Check if `{phase_num}-CONTEXT.md` exists in phase directory. +Check if current phase has UI indicators: + +```bash +PHASE_SECTION=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" roadmap get-phase "${CURRENT_PHASE}" 2>/dev/null) +PHASE_HAS_UI=$(echo "$PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true" || echo "false") +``` + **If CONTEXT.md exists:** ``` @@ -245,7 +252,30 @@ Check if `{phase_num}-CONTEXT.md` exists in phase directory. --- ``` -**If CONTEXT.md does NOT exist:** +**If CONTEXT.md does NOT exist AND phase has UI (`PHASE_HAS_UI` is `true`):** + +``` +--- + +## ▶ Next Up + +**Phase {N}: {Name}** — {Goal from ROADMAP.md} + +`/gsd:discuss-phase {phase}` — gather context and clarify approach + +`/clear` first → fresh context window + +--- + +**Also available:** +- `/gsd:ui-phase {phase}` — generate UI design contract (recommended for frontend phases) +- `/gsd:plan-phase {phase}` — skip discussion, plan directly +- `/gsd:list-phase-assumptions {phase}` — see Claude's assumptions + +--- +``` + +**If CONTEXT.md does NOT exist AND phase has no UI:** ``` --- @@ -344,6 +374,40 @@ State: "Current phase is {X}. Milestone has {N} phases (highest: {Y})." Read ROADMAP.md to get the next phase's name and goal. +Check if next phase has UI indicators: + +```bash +NEXT_PHASE_SECTION=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" roadmap get-phase "$((Z+1))" 2>/dev/null) +NEXT_HAS_UI=$(echo "$NEXT_PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true" || echo "false") +``` + +**If next phase has UI (`NEXT_HAS_UI` is `true`):** + +``` +--- + +## ✓ Phase {Z} Complete + +## ▶ Next Up + +**Phase {Z+1}: {Name}** — {Goal from ROADMAP.md} + +`/gsd:discuss-phase {Z+1}` — gather context and clarify approach + +`/clear` first → fresh context window + +--- + +**Also available:** +- `/gsd:ui-phase {Z+1}` — generate UI design contract (recommended for frontend phases) +- `/gsd:plan-phase {Z+1}` — skip discussion, plan directly +- `/gsd:verify-work {Z}` — user acceptance test before continuing + +--- +``` + +**If next phase has no UI:** + ``` ---