feat(handoffs): include project identity in all Next Up blocks (#1948) (#2287)

* feat(handoffs): include project identity in all Next Up blocks

Adds project_code and project_title to withProjectRoot() and updates
all 30 Next Up headings across 18 workflow files to include
[PROJECT_CODE] PROJECT_TITLE suffix for multi-project clarity.

Closes #1948

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(review): add withProjectRoot tests and fix placeholder syntax (#1951)

Address code review feedback:
- Add 4 tests for project_code/project_title injection in withProjectRoot()
- Fix inconsistent placeholder syntax in continuation-format.md canonical
  template (bare-brace → shell-dollar to match variant examples)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(phase): preserve zero-padded prefix in renameDecimalPhases

Captures the zero-padded prefix (e.g. "06" from "06.3-slug") with
(0*${baseInt}) so renamed directories keep their original format
(06.2-slug) instead of stripping padding (6.2-slug).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Brandon Higgins <brandonscotthiggins@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Tom Boucher
2026-04-15 16:43:02 -04:00
committed by GitHub
parent 779bd1a383
commit 55877d372f
22 changed files with 143 additions and 40 deletions

View File

@@ -83,7 +83,7 @@ Roadmap updated: .planning/ROADMAP.md
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Phase {N}: {description}**

View File

@@ -315,7 +315,7 @@ Present next steps:
```
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
{if bugs discovered:}
**Fix discovered bugs:** `/gsd-quick fix the {N} test failures discovered in phase ${phase_number}`

View File

@@ -225,7 +225,7 @@ All requirements covered. Cross-phase integration verified. E2E flows complete.
───────────────────────────────────────────────────────────────
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Complete milestone** — archive and tag
@@ -270,7 +270,7 @@ Phases needing validation: run `/gsd-validate-phase {N}` for each flagged phase.
───────────────────────────────────────────────────────────────
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Plan gap closure** — create phases to complete milestone

View File

@@ -780,7 +780,7 @@ Tag: v[X.Y]
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Start Next Milestone** — questioning → research → requirements → roadmap

View File

@@ -593,7 +593,7 @@ Created: .planning/phases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Phase ${PHASE}: {phase_name}** — {Goal from ROADMAP.md}

View File

@@ -1038,7 +1038,7 @@ Created: .planning/phases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Phase ${PHASE}: [Name]** — [Goal from ROADMAP.md]

View File

@@ -1335,7 +1335,7 @@ Items saved to `{phase_num}-HUMAN-UAT.md` — they will appear in `/gsd-progress
{Gap summaries from VERIFICATION.md}
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
`/clear` then:

View File

@@ -345,7 +345,7 @@ Created .planning/codebase/:
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Initialize project** — use codebase context for planning

View File

@@ -514,7 +514,7 @@ node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" commit "docs: create milest
**[N] phases** | **[X] requirements** | Ready to build ✓
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Phase [N]: [Phase Name]** — [Goal]

View File

@@ -1192,7 +1192,7 @@ PHASE1_HAS_UI=$(echo "$PHASE1_SECTION" | grep -qi "UI hint.*yes" && echo "true"
```
───────────────────────────────────────────────────────────────
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Phase 1: [Phase Name]** — [Goal from ROADMAP.md]
@@ -1214,7 +1214,7 @@ PHASE1_HAS_UI=$(echo "$PHASE1_SECTION" | grep -qi "UI hint.*yes" && echo "true"
```
───────────────────────────────────────────────────────────────
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Phase 1: [Phase Name]** — [Goal from ROADMAP.md]

View File

@@ -159,7 +159,7 @@ node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" commit "docs(roadmap): add
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Plan first gap closure phase**

View File

@@ -1228,7 +1228,7 @@ Verification: {Passed | Passed with override | Skipped}
───────────────────────────────────────────────────────────────
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Execute Phase {X}** — run all {N} plans

View File

@@ -211,7 +211,7 @@ Read its `<objective>` section.
```
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**{phase}-{plan}: [Plan Name]** — [objective summary from PLAN.md]
@@ -240,7 +240,7 @@ PHASE_HAS_UI=$(echo "$PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true" ||
```
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Phase {N}: {Name}** — {Goal from ROADMAP.md}
<sub>✓ Context gathered, ready to plan</sub>
@@ -257,7 +257,7 @@ PHASE_HAS_UI=$(echo "$PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true" ||
```
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Phase {N}: {Name}** — {Goal from ROADMAP.md}
@@ -280,7 +280,7 @@ PHASE_HAS_UI=$(echo "$PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true" ||
```
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Phase {N}: {Name}** — {Goal from ROADMAP.md}
@@ -388,7 +388,7 @@ NEXT_HAS_UI=$(echo "$NEXT_PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true
## ✓ Phase {Z} Complete
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Phase {Z+1}: {Name}** — {Goal from ROADMAP.md}
@@ -413,7 +413,7 @@ NEXT_HAS_UI=$(echo "$NEXT_PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true
## ✓ Phase {Z} Complete
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Phase {Z+1}: {Name}** — {Goal from ROADMAP.md}
@@ -441,7 +441,7 @@ NEXT_HAS_UI=$(echo "$NEXT_PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true
All {N} phases finished!
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Complete Milestone** — archive and prepare for next
@@ -472,7 +472,7 @@ Read MILESTONES.md to find the last completed milestone version.
Ready to plan the next milestone.
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Start Next Milestone** — questioning → research → requirements → roadmap

View File

@@ -231,7 +231,7 @@ Based on user selection, route to appropriate workflow:
```
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**{phase}-{plan}: [Plan Name]** — [objective from PLAN.md]
@@ -245,7 +245,7 @@ Based on user selection, route to appropriate workflow:
```
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Phase [N]: [Name]** — [Goal from ROADMAP.md]

View File

@@ -471,7 +471,7 @@ Exit skill and invoke SlashCommand("/gsd-discuss-phase [X+1] --auto ${GSD_WS}")
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Phase [X+1]: [Name]** — [Goal from ROADMAP.md]
@@ -495,7 +495,7 @@ Exit skill and invoke SlashCommand("/gsd-discuss-phase [X+1] --auto ${GSD_WS}")
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Phase [X+1]: [Name]** — [Goal from ROADMAP.md]
<sub>✓ Context gathered, ready to plan</sub>
@@ -606,7 +606,7 @@ Exit skill and invoke SlashCommand("/gsd-complete-milestone {version} ${GSD_WS}"
---
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Complete Milestone {version}** — archive and prepare for next

View File

@@ -261,7 +261,7 @@ Dimensions: 6/6 passed
───────────────────────────────────────────────────────────────
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
{If CONTEXT.md exists for this phase:}
**Plan Phase {N}** — planner will use UI-SPEC.md as design context

View File

@@ -279,7 +279,7 @@ Show next steps:
```
───────────────────────────────────────────────────────────────
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Review state** — verify project is in expected state after revert

View File

@@ -676,7 +676,7 @@ Plans verified and ready for execution.
───────────────────────────────────────────────────────────────
## ▶ Next Up
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
**Execute fixes** — run fix plans