gsd-antigravity-kit 2.0.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/.agent/skills/gsd/SKILL.md +26 -4
  2. package/.agent/skills/gsd/VERSION +1 -1
  3. package/.agent/skills/gsd/assets/templates/AI-SPEC.md +246 -0
  4. package/.agent/skills/gsd/assets/templates/DEBUG.md +7 -2
  5. package/.agent/skills/gsd/assets/templates/config.json +56 -48
  6. package/.agent/skills/gsd/assets/templates/research.md +40 -0
  7. package/.agent/skills/gsd/assets/templates/spec.md +307 -0
  8. package/.agent/skills/gsd/assets/templates/state.md +8 -0
  9. package/.agent/skills/gsd/bin/gsd-tools.cjs +212 -11
  10. package/.agent/skills/gsd/bin/help-manifest.json +8 -2
  11. package/.agent/skills/gsd/bin/hooks/gsd-check-update-worker.js +108 -0
  12. package/.agent/skills/gsd/bin/hooks/gsd-check-update.js +14 -89
  13. package/.agent/skills/gsd/bin/hooks/gsd-context-monitor.js +34 -5
  14. package/.agent/skills/gsd/bin/hooks/gsd-phase-boundary.sh +1 -0
  15. package/.agent/skills/gsd/bin/hooks/gsd-prompt-guard.js +1 -1
  16. package/.agent/skills/gsd/bin/hooks/gsd-read-guard.js +6 -1
  17. package/.agent/skills/gsd/bin/hooks/gsd-session-state.sh +1 -0
  18. package/.agent/skills/gsd/bin/hooks/gsd-statusline.js +150 -16
  19. package/.agent/skills/gsd/bin/hooks/gsd-validate-commit.sh +1 -0
  20. package/.agent/skills/gsd/bin/hooks/gsd-workflow-guard.js +1 -1
  21. package/.agent/skills/gsd/bin/lib/audit.cjs +757 -0
  22. package/.agent/skills/gsd/bin/lib/commands.cjs +17 -7
  23. package/.agent/skills/gsd/bin/lib/config.cjs +66 -20
  24. package/.agent/skills/gsd/bin/lib/core.cjs +212 -12
  25. package/.agent/skills/gsd/bin/lib/frontmatter.cjs +6 -8
  26. package/.agent/skills/gsd/bin/lib/graphify.cjs +494 -0
  27. package/.agent/skills/gsd/bin/lib/gsd2-import.cjs +511 -0
  28. package/.agent/skills/gsd/bin/lib/init.cjs +371 -18
  29. package/.agent/skills/gsd/bin/lib/intel.cjs +9 -30
  30. package/.agent/skills/gsd/bin/lib/milestone.cjs +18 -17
  31. package/.agent/skills/gsd/bin/lib/model-profiles.cjs +1 -0
  32. package/.agent/skills/gsd/bin/lib/phase.cjs +225 -98
  33. package/.agent/skills/gsd/bin/lib/profile-output.cjs +17 -5
  34. package/.agent/skills/gsd/bin/lib/roadmap.cjs +12 -5
  35. package/.agent/skills/gsd/bin/lib/state.cjs +394 -129
  36. package/.agent/skills/gsd/bin/lib/template.cjs +8 -4
  37. package/.agent/skills/gsd/bin/lib/uat.cjs +2 -1
  38. package/.agent/skills/gsd/bin/lib/verify.cjs +111 -42
  39. package/.agent/skills/gsd/migration_report.md +2 -2
  40. package/.agent/skills/gsd/references/agents/gsd-advisor-researcher.md +23 -0
  41. package/.agent/skills/gsd/references/agents/gsd-ai-researcher.md +133 -0
  42. package/.agent/skills/gsd/references/agents/gsd-code-fixer.md +11 -10
  43. package/.agent/skills/gsd/references/agents/gsd-code-reviewer.md +2 -2
  44. package/.agent/skills/gsd/references/agents/gsd-codebase-mapper.md +13 -2
  45. package/.agent/skills/gsd/references/agents/gsd-debug-session-manager.md +314 -0
  46. package/.agent/skills/gsd/references/agents/gsd-debugger.md +147 -76
  47. package/.agent/skills/gsd/references/agents/gsd-doc-verifier.md +1 -1
  48. package/.agent/skills/gsd/references/agents/gsd-doc-writer.md +615 -602
  49. package/.agent/skills/gsd/references/agents/gsd-domain-researcher.md +153 -0
  50. package/.agent/skills/gsd/references/agents/gsd-eval-auditor.md +175 -0
  51. package/.agent/skills/gsd/references/agents/gsd-eval-planner.md +154 -0
  52. package/.agent/skills/gsd/references/agents/gsd-executor.md +108 -38
  53. package/.agent/skills/gsd/references/agents/gsd-framework-selector.md +160 -0
  54. package/.agent/skills/gsd/references/agents/gsd-integration-checker.md +454 -443
  55. package/.agent/skills/gsd/references/agents/gsd-intel-updater.md +40 -20
  56. package/.agent/skills/gsd/references/agents/gsd-nyquist-auditor.md +187 -176
  57. package/.agent/skills/gsd/references/agents/gsd-pattern-mapper.md +335 -0
  58. package/.agent/skills/gsd/references/agents/gsd-phase-researcher.md +112 -13
  59. package/.agent/skills/gsd/references/agents/gsd-plan-checker.md +104 -10
  60. package/.agent/skills/gsd/references/agents/gsd-planner.md +125 -167
  61. package/.agent/skills/gsd/references/agents/gsd-project-researcher.md +25 -2
  62. package/.agent/skills/gsd/references/agents/gsd-research-synthesizer.md +3 -3
  63. package/.agent/skills/gsd/references/agents/gsd-roadmapper.md +12 -1
  64. package/.agent/skills/gsd/references/agents/gsd-security-auditor.md +139 -128
  65. package/.agent/skills/gsd/references/agents/gsd-ui-auditor.md +3 -3
  66. package/.agent/skills/gsd/references/agents/gsd-ui-checker.md +11 -2
  67. package/.agent/skills/gsd/references/agents/gsd-ui-researcher.md +27 -4
  68. package/.agent/skills/gsd/references/agents/gsd-verifier.md +13 -19
  69. package/.agent/skills/gsd/references/commands/atomic/add-todo.md +2 -2
  70. package/.agent/skills/gsd/references/commands/atomic/check-todos.md +2 -2
  71. package/.agent/skills/gsd/references/commands/atomic/cleanup.md +2 -2
  72. package/.agent/skills/gsd/references/commands/atomic/do.md +2 -2
  73. package/.agent/skills/gsd/references/commands/atomic/help.md +2 -2
  74. package/.agent/skills/gsd/references/commands/atomic/join-discord.md +2 -2
  75. package/.agent/skills/gsd/references/commands/atomic/note.md +2 -2
  76. package/.agent/skills/gsd/references/commands/atomic/session-report.md +2 -2
  77. package/.agent/skills/gsd/references/commands/atomic/ship.md +2 -2
  78. package/.agent/skills/gsd/references/commands/atomic/stats.md +2 -2
  79. package/.agent/skills/gsd/references/commands/atomic/thread.md +141 -41
  80. package/.agent/skills/gsd/references/commands/atomic/undo.md +2 -2
  81. package/.agent/skills/gsd/references/commands/milestone/add-backlog.md +15 -12
  82. package/.agent/skills/gsd/references/commands/milestone/audit-milestone.md +2 -2
  83. package/.agent/skills/gsd/references/commands/milestone/complete-milestone.md +2 -2
  84. package/.agent/skills/gsd/references/commands/milestone/milestone-summary.md +2 -2
  85. package/.agent/skills/gsd/references/commands/milestone/new-milestone.md +2 -2
  86. package/.agent/skills/gsd/references/commands/milestone/plan-milestone-gaps.md +2 -2
  87. package/.agent/skills/gsd/references/commands/milestone/plant-seed.md +2 -2
  88. package/.agent/skills/gsd/references/commands/milestone/review-backlog.md +4 -4
  89. package/.agent/skills/gsd/references/commands/misc/ai-integration-phase.md +38 -0
  90. package/.agent/skills/gsd/references/commands/misc/audit-fix.md +2 -2
  91. package/.agent/skills/gsd/references/commands/misc/audit-uat.md +2 -2
  92. package/.agent/skills/gsd/references/commands/misc/eval-review.md +34 -0
  93. package/.agent/skills/gsd/references/commands/misc/extract_learnings.md +24 -0
  94. package/.agent/skills/gsd/references/commands/misc/from-gsd2.md +49 -0
  95. package/.agent/skills/gsd/references/commands/misc/graphify.md +203 -0
  96. package/.agent/skills/gsd/references/commands/misc/inbox.md +40 -0
  97. package/.agent/skills/gsd/references/commands/misc/next.md +5 -3
  98. package/.agent/skills/gsd/references/commands/misc/progress.md +4 -3
  99. package/.agent/skills/gsd/references/commands/misc/sketch-wrap-up.md +33 -0
  100. package/.agent/skills/gsd/references/commands/misc/sketch.md +47 -0
  101. package/.agent/skills/gsd/references/commands/misc/spec-phase.md +64 -0
  102. package/.agent/skills/gsd/references/commands/misc/spike-wrap-up.md +33 -0
  103. package/.agent/skills/gsd/references/commands/misc/spike.md +43 -0
  104. package/.agent/skills/gsd/references/commands/misc/verify-work.md +2 -2
  105. package/.agent/skills/gsd/references/commands/phase/add-phase.md +2 -2
  106. package/.agent/skills/gsd/references/commands/phase/add-tests.md +2 -2
  107. package/.agent/skills/gsd/references/commands/phase/discuss-phase.md +5 -5
  108. package/.agent/skills/gsd/references/commands/phase/execute-phase.md +4 -4
  109. package/.agent/skills/gsd/references/commands/phase/insert-phase.md +2 -2
  110. package/.agent/skills/gsd/references/commands/phase/list-phase-assumptions.md +2 -2
  111. package/.agent/skills/gsd/references/commands/phase/plan-phase.md +3 -3
  112. package/.agent/skills/gsd/references/commands/phase/remove-phase.md +2 -2
  113. package/.agent/skills/gsd/references/commands/phase/research-phase.md +5 -5
  114. package/.agent/skills/gsd/references/commands/phase/secure-phase.md +2 -2
  115. package/.agent/skills/gsd/references/commands/phase/ui-phase.md +2 -2
  116. package/.agent/skills/gsd/references/commands/phase/ui-review.md +2 -2
  117. package/.agent/skills/gsd/references/commands/phase/validate-phase.md +2 -2
  118. package/.agent/skills/gsd/references/commands/phase/workstreams.md +9 -9
  119. package/.agent/skills/gsd/references/commands/project/analyze-dependencies.md +2 -2
  120. package/.agent/skills/gsd/references/commands/project/explore.md +2 -2
  121. package/.agent/skills/gsd/references/commands/project/import.md +2 -2
  122. package/.agent/skills/gsd/references/commands/project/intel.md +10 -10
  123. package/.agent/skills/gsd/references/commands/project/list-workspaces.md +2 -2
  124. package/.agent/skills/gsd/references/commands/project/map-codebase.md +2 -2
  125. package/.agent/skills/gsd/references/commands/project/new-project.md +2 -2
  126. package/.agent/skills/gsd/references/commands/project/new-workspace.md +2 -2
  127. package/.agent/skills/gsd/references/commands/project/remove-workspace.md +2 -2
  128. package/.agent/skills/gsd/references/commands/project/scan.md +2 -2
  129. package/.agent/skills/gsd/references/commands/system/autonomous.md +4 -3
  130. package/.agent/skills/gsd/references/commands/system/code-review-fix.md +3 -3
  131. package/.agent/skills/gsd/references/commands/system/code-review.md +3 -3
  132. package/.agent/skills/gsd/references/commands/system/debug.md +177 -100
  133. package/.agent/skills/gsd/references/commands/system/docs-update.md +2 -2
  134. package/.agent/skills/gsd/references/commands/system/fast.md +2 -2
  135. package/.agent/skills/gsd/references/commands/system/forensics.md +2 -2
  136. package/.agent/skills/gsd/references/commands/system/gsd-tools.md +153 -6
  137. package/.agent/skills/gsd/references/commands/system/health.md +2 -2
  138. package/.agent/skills/gsd/references/commands/system/manager.md +3 -3
  139. package/.agent/skills/gsd/references/commands/system/pause-work.md +2 -2
  140. package/.agent/skills/gsd/references/commands/system/pr-branch.md +2 -2
  141. package/.agent/skills/gsd/references/commands/system/profile-user.md +2 -2
  142. package/.agent/skills/gsd/references/commands/system/quick.md +127 -3
  143. package/.agent/skills/gsd/references/commands/system/reapply-patches.md +45 -6
  144. package/.agent/skills/gsd/references/commands/system/resume-work.md +2 -2
  145. package/.agent/skills/gsd/references/commands/system/review.md +6 -4
  146. package/.agent/skills/gsd/references/commands/system/set-profile.md +3 -3
  147. package/.agent/skills/gsd/references/commands/system/settings.md +2 -2
  148. package/.agent/skills/gsd/references/commands/system/update.md +2 -2
  149. package/.agent/skills/gsd/references/docs/ai-evals.md +156 -0
  150. package/.agent/skills/gsd/references/docs/ai-frameworks.md +186 -0
  151. package/.agent/skills/gsd/references/docs/artifact-types.md +18 -0
  152. package/.agent/skills/gsd/references/docs/autonomous-smart-discuss.md +277 -0
  153. package/.agent/skills/gsd/references/docs/checkpoints.md +30 -0
  154. package/.agent/skills/gsd/references/docs/common-bug-patterns.md +49 -49
  155. package/.agent/skills/gsd/references/docs/continuation-format.md +11 -7
  156. package/.agent/skills/gsd/references/docs/debugger-philosophy.md +76 -0
  157. package/.agent/skills/gsd/references/docs/decimal-phase-calculation.md +64 -64
  158. package/.agent/skills/gsd/references/docs/executor-examples.md +110 -0
  159. package/.agent/skills/gsd/references/docs/git-integration.md +4 -4
  160. package/.agent/skills/gsd/references/docs/git-planning-commit.md +40 -38
  161. package/.agent/skills/gsd/references/docs/ios-scaffold.md +123 -0
  162. package/.agent/skills/gsd/references/docs/mandatory-initial-read.md +2 -0
  163. package/.agent/skills/gsd/references/docs/phase-argument-parsing.md +61 -61
  164. package/.agent/skills/gsd/references/docs/planner-antipatterns.md +89 -0
  165. package/.agent/skills/gsd/references/docs/planner-revision.md +87 -87
  166. package/.agent/skills/gsd/references/docs/planner-source-audit.md +73 -0
  167. package/.agent/skills/gsd/references/docs/planning-config.md +33 -8
  168. package/.agent/skills/gsd/references/docs/project-skills-discovery.md +19 -0
  169. package/.agent/skills/gsd/references/docs/sketch-interactivity.md +41 -0
  170. package/.agent/skills/gsd/references/docs/sketch-theme-system.md +94 -0
  171. package/.agent/skills/gsd/references/docs/sketch-tooling.md +45 -0
  172. package/.agent/skills/gsd/references/docs/sketch-variant-patterns.md +81 -0
  173. package/.agent/skills/gsd/references/docs/tdd.md +67 -0
  174. package/.agent/skills/gsd/references/docs/universal-anti-patterns.md +5 -0
  175. package/.agent/skills/gsd/references/docs/workstream-flag.md +11 -11
  176. package/.agent/skills/gsd/references/mapping.md +1 -1
  177. package/.agent/skills/gsd/references/workflows/add-phase.md +112 -112
  178. package/.agent/skills/gsd/references/workflows/add-tests.md +6 -3
  179. package/.agent/skills/gsd/references/workflows/add-todo.md +5 -3
  180. package/.agent/skills/gsd/references/workflows/ai-integration-phase.md +284 -0
  181. package/.agent/skills/gsd/references/workflows/audit-fix.md +157 -157
  182. package/.agent/skills/gsd/references/workflows/audit-milestone.md +340 -340
  183. package/.agent/skills/gsd/references/workflows/audit-uat.md +109 -109
  184. package/.agent/skills/gsd/references/workflows/autonomous.md +20 -288
  185. package/.agent/skills/gsd/references/workflows/check-todos.md +4 -2
  186. package/.agent/skills/gsd/references/workflows/cleanup.md +3 -1
  187. package/.agent/skills/gsd/references/workflows/code-review-fix.md +497 -497
  188. package/.agent/skills/gsd/references/workflows/code-review.md +515 -515
  189. package/.agent/skills/gsd/references/workflows/complete-milestone.md +97 -24
  190. package/.agent/skills/gsd/references/workflows/diagnose-issues.md +238 -238
  191. package/.agent/skills/gsd/references/workflows/discovery-phase.md +2 -0
  192. package/.agent/skills/gsd/references/workflows/discuss-phase-assumptions.md +11 -11
  193. package/.agent/skills/gsd/references/workflows/discuss-phase.md +143 -19
  194. package/.agent/skills/gsd/references/workflows/do.md +8 -2
  195. package/.agent/skills/gsd/references/workflows/docs-update.md +5 -3
  196. package/.agent/skills/gsd/references/workflows/eval-review.md +155 -0
  197. package/.agent/skills/gsd/references/workflows/execute-phase.md +338 -54
  198. package/.agent/skills/gsd/references/workflows/execute-plan.md +80 -104
  199. package/.agent/skills/gsd/references/workflows/explore.md +3 -1
  200. package/.agent/skills/gsd/references/workflows/extract_learnings.md +232 -0
  201. package/.agent/skills/gsd/references/workflows/forensics.md +3 -3
  202. package/.agent/skills/gsd/references/workflows/health.md +2 -2
  203. package/.agent/skills/gsd/references/workflows/help.md +59 -1
  204. package/.agent/skills/gsd/references/workflows/import.md +3 -1
  205. package/.agent/skills/gsd/references/workflows/inbox.md +387 -384
  206. package/.agent/skills/gsd/references/workflows/insert-phase.md +130 -130
  207. package/.agent/skills/gsd/references/workflows/list-workspaces.md +56 -56
  208. package/.agent/skills/gsd/references/workflows/manager.md +5 -3
  209. package/.agent/skills/gsd/references/workflows/map-codebase.md +19 -5
  210. package/.agent/skills/gsd/references/workflows/milestone-summary.md +6 -6
  211. package/.agent/skills/gsd/references/workflows/new-milestone.md +63 -9
  212. package/.agent/skills/gsd/references/workflows/new-project.md +126 -22
  213. package/.agent/skills/gsd/references/workflows/new-workspace.md +6 -4
  214. package/.agent/skills/gsd/references/workflows/next.md +220 -153
  215. package/.agent/skills/gsd/references/workflows/note.md +2 -0
  216. package/.agent/skills/gsd/references/workflows/pause-work.md +11 -7
  217. package/.agent/skills/gsd/references/workflows/plan-milestone-gaps.md +273 -273
  218. package/.agent/skills/gsd/references/workflows/plan-phase.md +281 -62
  219. package/.agent/skills/gsd/references/workflows/plant-seed.md +4 -1
  220. package/.agent/skills/gsd/references/workflows/pr-branch.md +41 -13
  221. package/.agent/skills/gsd/references/workflows/profile-user.md +15 -13
  222. package/.agent/skills/gsd/references/workflows/progress.md +133 -21
  223. package/.agent/skills/gsd/references/workflows/quick.md +67 -27
  224. package/.agent/skills/gsd/references/workflows/remove-phase.md +155 -155
  225. package/.agent/skills/gsd/references/workflows/remove-workspace.md +4 -2
  226. package/.agent/skills/gsd/references/workflows/research-phase.md +3 -3
  227. package/.agent/skills/gsd/references/workflows/resume-project.md +3 -3
  228. package/.agent/skills/gsd/references/workflows/review.md +71 -8
  229. package/.agent/skills/gsd/references/workflows/scan.md +102 -102
  230. package/.agent/skills/gsd/references/workflows/secure-phase.md +7 -5
  231. package/.agent/skills/gsd/references/workflows/settings.md +24 -7
  232. package/.agent/skills/gsd/references/workflows/ship.md +71 -6
  233. package/.agent/skills/gsd/references/workflows/sketch-wrap-up.md +283 -0
  234. package/.agent/skills/gsd/references/workflows/sketch.md +263 -0
  235. package/.agent/skills/gsd/references/workflows/spec-phase.md +262 -0
  236. package/.agent/skills/gsd/references/workflows/spike-wrap-up.md +273 -0
  237. package/.agent/skills/gsd/references/workflows/spike.md +270 -0
  238. package/.agent/skills/gsd/references/workflows/stats.md +60 -60
  239. package/.agent/skills/gsd/references/workflows/transition.md +671 -671
  240. package/.agent/skills/gsd/references/workflows/ui-phase.md +33 -12
  241. package/.agent/skills/gsd/references/workflows/ui-review.md +6 -4
  242. package/.agent/skills/gsd/references/workflows/undo.md +3 -1
  243. package/.agent/skills/gsd/references/workflows/update.md +113 -2
  244. package/.agent/skills/gsd/references/workflows/validate-phase.md +7 -5
  245. package/.agent/skills/gsd/references/workflows/verify-phase.md +93 -10
  246. package/.agent/skills/gsd/references/workflows/verify-work.md +50 -10
  247. package/.agent/skills/gsd-converter/references/mapping.md +1 -1
  248. package/.agent/skills/gsd-converter/scripts/convert.py +36 -17
  249. package/.agent/skills/gsd-converter/scripts/regression_test.py +68 -33
  250. package/README.md +3 -2
  251. package/package.json +1 -1
@@ -36,8 +36,13 @@ Parse `$ARGUMENTS` for:
36
36
  - `--research` flag → store `$RESEARCH_MODE=true`
37
37
  - Remaining text → use as `$DESCRIPTION` if non-empty
38
38
 
39
+ After parsing, normalize: if `$DISCUSS_MODE` and `$RESEARCH_MODE` and `$VALIDATE_MODE` are all true, set `$FULL_MODE=true`. This ensures `--discuss --research --validate` is treated identically to `--full`.
40
+
39
41
  If `$DESCRIPTION` is empty after parsing, prompt user interactively:
40
42
 
43
+
44
+ **Text mode (`workflow.text_mode: true` in config or `--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS` OR `text_mode` from init JSON is `true`. When TEXT_MODE is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for non-Antigravity runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available.
45
+
41
46
  ```
42
47
  AskUserQuestion(
43
48
  header: "Quick Task",
@@ -61,15 +66,6 @@ If `$FULL_MODE` (all phases enabled — `--full` or all granular flags):
61
66
  ◆ Discussion + research + plan checking + verification enabled
62
67
  ```
63
68
 
64
- If `$DISCUSS_MODE` and `$RESEARCH_MODE` and `$VALIDATE_MODE` (no `$FULL_MODE` — composed granularly):
65
- ```
66
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
67
- GSD ► QUICK TASK (DISCUSS + RESEARCH + VALIDATE)
68
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
69
-
70
- ◆ Discussion + research + plan checking + verification enabled
71
- ```
72
-
73
69
  If `$DISCUSS_MODE` and `$VALIDATE_MODE` (no research):
74
70
  ```
75
71
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@@ -129,18 +125,40 @@ If `$VALIDATE_MODE` only:
129
125
  **Step 2: Initialize**
130
126
 
131
127
  ```bash
132
- .agent/skills/gsd/bin/gsd-tools.cjs" init quick "$DESCRIPTION")
128
+ if ! command -v gsd-sdk &>/dev/null; then
129
+ echo "⚠ gsd-sdk not found in PATH — /gsd-quick requires it."
130
+ echo ""
131
+ echo "Install the GSD SDK:"
132
+ echo " npm install -g @gsd-build/sdk"
133
+ echo ""
134
+ echo "Or update GSD to get the latest packages:"
135
+ echo " /gsd-update"
136
+ exit 1
137
+ fi
138
+ ```
139
+
140
+ ```bash
141
+ INIT=$(gsd-sdk query init.quick "$DESCRIPTION")
133
142
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
134
- .agent/skills/gsd/bin/gsd-tools.cjs" agent-skills gsd-planner 2>/dev/null)
135
- .agent/skills/gsd/bin/gsd-tools.cjs" agent-skills gsd-executor 2>/dev/null)
136
- .agent/skills/gsd/bin/gsd-tools.cjs" agent-skills gsd-checker 2>/dev/null)
137
- .agent/skills/gsd/bin/gsd-tools.cjs" agent-skills gsd-verifier 2>/dev/null)
143
+ AGENT_SKILLS_PLANNER=$(gsd-sdk query agent-skills gsd-planner 2>/dev/null)
144
+ AGENT_SKILLS_EXECUTOR=$(gsd-sdk query agent-skills gsd-executor 2>/dev/null)
145
+ AGENT_SKILLS_CHECKER=$(gsd-sdk query agent-skills gsd-checker 2>/dev/null)
146
+ AGENT_SKILLS_VERIFIER=$(gsd-sdk query agent-skills gsd-verifier 2>/dev/null)
138
147
  ```
139
148
 
140
149
  Parse JSON for: `planner_model`, `executor_model`, `checker_model`, `verifier_model`, `commit_docs`, `branch_name`, `quick_id`, `slug`, `date`, `timestamp`, `quick_dir`, `task_dir`, `roadmap_exists`, `planning_exists`.
141
150
 
142
151
  ```bash
143
- .agent/skills/gsd/bin/gsd-tools.cjs" config-get workflow.use_worktrees 2>/dev/null || echo "true")
152
+ USE_WORKTREES=$(gsd-sdk query config-get workflow.use_worktrees 2>/dev/null || echo "true")
153
+ ```
154
+
155
+ If the project uses git submodules, worktree isolation is skipped:
156
+
157
+ ```bash
158
+ if [ -f .gitmodules ]; then
159
+ echo "[worktree] Submodule project detected (.gitmodules exists) — falling back to sequential execution"
160
+ USE_WORKTREES=false
161
+ fi
144
162
  ```
145
163
 
146
164
  **If `roadmap_exists` is false:** Error — Quick mode requires an active project with ROADMAP.md. Run `/gsd-new-project` first.
@@ -567,8 +585,10 @@ ${USE_WORKTREES !== "false" ? `
567
585
  <worktree_branch_check>
568
586
  FIRST ACTION before any other work: verify this worktree branch is based on the correct commit.
569
587
  Run: git merge-base HEAD ${EXPECTED_BASE}
570
- If the result differs from ${EXPECTED_BASE}, run: git reset --soft ${EXPECTED_BASE}
571
- This corrects a known issue on Windows where EnterWorktree creates branches from main instead of the feature branch HEAD.
588
+ If the result differs from ${EXPECTED_BASE}, hard-reset to the correct base (safe — runs before any agent work):
589
+ git reset --hard ${EXPECTED_BASE}
590
+ Then verify: if [ "$(git rev-parse HEAD)" != "${EXPECTED_BASE}" ]; then echo "ERROR: Could not correct worktree base"; exit 1; fi
591
+ This corrects a known issue where EnterWorktree creates branches from main instead of the feature branch HEAD (affects all platforms).
572
592
  </worktree_branch_check>
573
593
  ` : ''}
574
594
 
@@ -608,16 +628,27 @@ After executor returns:
608
628
  # Backup STATE.md and ROADMAP.md before merge (main always wins)
609
629
  STATE_BACKUP=$(mktemp)
610
630
  ROADMAP_BACKUP=$(mktemp)
611
- git show HEAD:.planning/STATE.md > "$STATE_BACKUP" 2>/dev/null || true
612
- git show HEAD:.planning/ROADMAP.md > "$ROADMAP_BACKUP" 2>/dev/null || true
631
+ [ -f .planning/STATE.md ] && cp .planning/STATE.md "$STATE_BACKUP" || true
632
+ [ -f .planning/ROADMAP.md ] && cp .planning/ROADMAP.md "$ROADMAP_BACKUP" || true
613
633
 
614
634
  # Snapshot files on main to detect resurrections
615
635
  PRE_MERGE_FILES=$(git ls-files .planning/)
616
636
 
617
- git merge "$WT_BRANCH" --no-edit -m "chore: merge quick task worktree ($WT_BRANCH)" 2>&1 || {
618
- echo "⚠ Merge conflict resolve manually"
637
+ # Pre-merge deletion guard: block merges that delete tracked .planning/ files
638
+ DELETIONS=$(git diff --diff-filter=D --name-only HEAD..."$WT_BRANCH" 2>/dev/null || true)
639
+ if [ -n "$DELETIONS" ]; then
640
+ echo "BLOCKED: Worktree branch $WT_BRANCH contains file deletions: $DELETIONS"
641
+ echo "Review these deletions before merging. If intentional, remove this guard and re-run."
619
642
  rm -f "$STATE_BACKUP" "$ROADMAP_BACKUP"
620
643
  continue
644
+ fi
645
+
646
+ git merge "$WT_BRANCH" --no-ff --no-edit -m "chore: merge quick task worktree ($WT_BRANCH)" 2>&1 || {
647
+ echo "⚠ Merge conflict from worktree $WT_BRANCH — resolve manually"
648
+ echo " STATE.md backup: $STATE_BACKUP"
649
+ echo " ROADMAP.md backup: $ROADMAP_BACKUP"
650
+ echo " Restore with: cp \$STATE_BACKUP .planning/STATE.md && cp \$ROADMAP_BACKUP .planning/ROADMAP.md"
651
+ break
621
652
  }
622
653
 
623
654
  # Restore orchestrator-owned files
@@ -625,7 +656,7 @@ After executor returns:
625
656
  if [ -s "$ROADMAP_BACKUP" ]; then cp "$ROADMAP_BACKUP" .planning/ROADMAP.md; fi
626
657
  rm -f "$STATE_BACKUP" "$ROADMAP_BACKUP"
627
658
 
628
- # Remove files deleted on main but re-added by worktree
659
+ # Remove files deleted on main but re-added by worktree (--no-ff guarantees a merge commit so HEAD~1 is reliable)
629
660
  DELETED_FILES=$(git diff --diff-filter=A --name-only HEAD~1 -- .planning/ 2>/dev/null || true)
630
661
  for RESURRECTED in $DELETED_FILES; do
631
662
  if ! echo "$PRE_MERGE_FILES" | grep -qxF "$RESURRECTED"; then
@@ -635,13 +666,22 @@ After executor returns:
635
666
 
636
667
  if ! git diff --quiet .planning/STATE.md .planning/ROADMAP.md 2>/dev/null || \
637
668
  [ -n "$DELETED_FILES" ]; then
638
- .agent/skills/gsd/bin/gsd-tools.cjs" config-get commit_docs 2>/dev/null || echo "true")
669
+ COMMIT_DOCS=$(gsd-sdk query config-get commit_docs 2>/dev/null || echo "true")
639
670
  if [ "$COMMIT_DOCS" != "false" ]; then
640
671
  git add .planning/STATE.md .planning/ROADMAP.md 2>/dev/null || true
641
672
  git commit --amend --no-edit 2>/dev/null || true
642
673
  fi
643
674
  fi
644
675
 
676
+ # Safety net: rescue uncommitted SUMMARY.md before worktree removal (#2296, mirrors #2070)
677
+ UNCOMMITTED_SUMMARY=$(git -C "$WT" ls-files --modified --others --exclude-standard -- "*SUMMARY.md" 2>/dev/null || true)
678
+ if [ -n "$UNCOMMITTED_SUMMARY" ]; then
679
+ echo "⚠ SUMMARY.md was not committed by executor — committing now to prevent data loss"
680
+ git -C "$WT" add -- "*SUMMARY.md" 2>/dev/null || true
681
+ git -C "$WT" commit --no-verify -m "docs(recovery): rescue uncommitted SUMMARY.md before worktree removal (#2070)" 2>/dev/null || true
682
+ git merge "$WT_BRANCH" --no-edit -m "chore: merge rescued SUMMARY.md from executor worktree ($WT_BRANCH)" 2>/dev/null || true
683
+ fi
684
+
645
685
  git worktree remove "$WT" --force 2>/dev/null || true
646
686
  git branch -D "$WT_BRANCH" 2>/dev/null || true
647
687
  fi
@@ -666,7 +706,7 @@ Skip this step entirely if `$FULL_MODE` is false.
666
706
 
667
707
  **Config gate:**
668
708
  ```bash
669
- .agent/skills/gsd/bin/gsd-tools.cjs" config-get workflow.code_review 2>/dev/null || echo "true")
709
+ CODE_REVIEW_ENABLED=$(gsd-sdk query config-get workflow.code_review 2>/dev/null || echo "true")
670
710
  ```
671
711
  If `"false"`, skip with message "Code review skipped (workflow.code_review=false)".
672
712
 
@@ -813,7 +853,7 @@ Use Edit tool to make these changes atomically
813
853
 
814
854
  **Step 8: Final commit and completion**
815
855
 
816
- Stage and commit quick task artifacts. This step MUST always run — even if the executor already committed some files (e.g. when running without worktree isolation). The `gsd-tools commit` command handles already-committed files gracefully.
856
+ Stage and commit quick task artifacts. This step MUST always run — even if the executor already committed some files (e.g. when running without worktree isolation). The `gsd-sdk query commit` command (or legacy `gsd-tools.cjs` commit) handles already-committed files gracefully.
817
857
 
818
858
  Build file list:
819
859
  - `${QUICK_DIR}/${quick_id}-PLAN.md`
@@ -827,14 +867,14 @@ Build file list:
827
867
  # Explicitly stage all artifacts before commit — PLAN.md may be untracked
828
868
  # if the executor ran without worktree isolation and committed docs early
829
869
  # Filter .planning/ files from staging if commit_docs is disabled (#1783)
830
- .agent/skills/gsd/bin/gsd-tools.cjs" config-get commit_docs 2>/dev/null || echo "true")
870
+ COMMIT_DOCS=$(gsd-sdk query config-get commit_docs 2>/dev/null || echo "true")
831
871
  if [ "$COMMIT_DOCS" = "false" ]; then
832
872
  file_list_filtered=$(echo "${file_list}" | tr ' ' '\n' | grep -v '^\.planning/' | tr '\n' ' ')
833
873
  git add ${file_list_filtered} 2>/dev/null
834
874
  else
835
875
  git add ${file_list} 2>/dev/null
836
876
  fi
837
- .agent/skills/gsd/bin/gsd-tools.cjs" commit "docs(quick-${quick_id}): ${DESCRIPTION}" --files ${file_list}
877
+ gsd-sdk query commit "docs(quick-${quick_id}): ${DESCRIPTION}" ${file_list}
838
878
  ```
839
879
 
840
880
  Get final commit hash:
@@ -1,155 +1,155 @@
1
- <purpose>
2
- Remove an unstarted future phase from the project roadmap, delete its directory, renumber all subsequent phases to maintain a clean linear sequence, and commit the change. The git commit serves as the historical record of removal.
3
- </purpose>
4
-
5
- <required_reading>
6
- Read all files referenced by the invoking prompt's execution_context before starting.
7
- </required_reading>
8
-
9
- <process>
10
-
11
- <step name="parse_arguments">
12
- Parse the command arguments:
13
- - Argument is the phase number to remove (integer or decimal)
14
- - Example: `/gsd-remove-phase 17` → phase = 17
15
- - Example: `/gsd-remove-phase 16.1` → phase = 16.1
16
-
17
- If no argument provided:
18
-
19
- ```
20
- ERROR: Phase number required
21
- Usage: /gsd-remove-phase <phase-number>
22
- Example: /gsd-remove-phase 17
23
- ```
24
-
25
- Exit.
26
- </step>
27
-
28
- <step name="init_context">
29
- Load phase operation context:
30
-
31
- ```bash
32
- .agent/skills/gsd/bin/gsd-tools.cjs" init phase-op "${target}")
33
- if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
34
- ```
35
-
36
- Extract: `phase_found`, `phase_dir`, `phase_number`, `commit_docs`, `roadmap_exists`.
37
-
38
- Also read STATE.md and ROADMAP.md content for parsing current position.
39
- </step>
40
-
41
- <step name="validate_future_phase">
42
- Verify the phase is a future phase (not started):
43
-
44
- 1. Compare target phase to current phase from STATE.md
45
- 2. Target must be > current phase number
46
-
47
- If target <= current phase:
48
-
49
- ```
50
- ERROR: Cannot remove Phase {target}
51
-
52
- Only future phases can be removed:
53
- - Current phase: {current}
54
- - Phase {target} is current or completed
55
-
56
- To abandon current work, use /gsd-pause-work instead.
57
- ```
58
-
59
- Exit.
60
- </step>
61
-
62
- <step name="confirm_removal">
63
- Present removal summary and confirm:
64
-
65
- ```
66
- Removing Phase {target}: {Name}
67
-
68
- This will:
69
- - Delete: .planning/phases/{target}-{slug}/
70
- - Renumber all subsequent phases
71
- - Update: ROADMAP.md, STATE.md
72
-
73
- Proceed? (y/n)
74
- ```
75
-
76
- Wait for confirmation.
77
- </step>
78
-
79
- <step name="execute_removal">
80
- **Delegate the entire removal operation to gsd-tools:**
81
-
82
- ```bash
83
- .agent/skills/gsd/bin/gsd-tools.cjs" phase remove "${target}")
84
- ```
85
-
86
- If the phase has executed plans (SUMMARY.md files), gsd-tools will error. Use `--force` only if the user confirms:
87
-
88
- ```bash
89
- .agent/skills/gsd/bin/gsd-tools.cjs" phase remove "${target}" --force)
90
- ```
91
-
92
- The CLI handles:
93
- - Deleting the phase directory
94
- - Renumbering all subsequent directories (in reverse order to avoid conflicts)
95
- - Renaming all files inside renumbered directories (PLAN.md, SUMMARY.md, etc.)
96
- - Updating ROADMAP.md (removing section, renumbering all phase references, updating dependencies)
97
- - Updating STATE.md (decrementing phase count)
98
-
99
- Extract from result: `removed`, `directory_deleted`, `renamed_directories`, `renamed_files`, `roadmap_updated`, `state_updated`.
100
- </step>
101
-
102
- <step name="commit">
103
- Stage and commit the removal:
104
-
105
- ```bash
106
- .agent/skills/gsd/bin/gsd-tools.cjs" commit "chore: remove phase {target} ({original-phase-name})" --files .planning/
107
- ```
108
-
109
- The commit message preserves the historical record of what was removed.
110
- </step>
111
-
112
- <step name="completion">
113
- Present completion summary:
114
-
115
- ```
116
- Phase {target} ({original-name}) removed.
117
-
118
- Changes:
119
- - Deleted: .planning/phases/{target}-{slug}/
120
- - Renumbered: {N} directories and {M} files
121
- - Updated: ROADMAP.md, STATE.md
122
- - Committed: chore: remove phase {target} ({original-name})
123
-
124
- ---
125
-
126
- ## What's Next
127
-
128
- Would you like to:
129
- - `/gsd-progress` — see updated roadmap status
130
- - Continue with current phase
131
- - Review roadmap
132
-
133
- ---
134
- ```
135
- </step>
136
-
137
- </process>
138
-
139
- <anti_patterns>
140
-
141
- - Don't remove completed phases (have SUMMARY.md files) without --force
142
- - Don't remove current or past phases
143
- - Don't manually renumber — use `gsd-tools phase remove` which handles all renumbering
144
- - Don't add "removed phase" notes to STATE.md — git commit is the record
145
- - Don't modify completed phase directories
146
- </anti_patterns>
147
-
148
- <success_criteria>
149
- Phase removal is complete when:
150
-
151
- - [ ] Target phase validated as future/unstarted
152
- - [ ] `gsd-tools phase remove` executed successfully
153
- - [ ] Changes committed with descriptive message
154
- - [ ] User informed of changes
155
- </success_criteria>
1
+ <purpose>
2
+ Remove an unstarted future phase from the project roadmap, delete its directory, renumber all subsequent phases to maintain a clean linear sequence, and commit the change. The git commit serves as the historical record of removal.
3
+ </purpose>
4
+
5
+ <required_reading>
6
+ Read all files referenced by the invoking prompt's execution_context before starting.
7
+ </required_reading>
8
+
9
+ <process>
10
+
11
+ <step name="parse_arguments">
12
+ Parse the command arguments:
13
+ - Argument is the phase number to remove (integer or decimal)
14
+ - Example: `/gsd-remove-phase 17` → phase = 17
15
+ - Example: `/gsd-remove-phase 16.1` → phase = 16.1
16
+
17
+ If no argument provided:
18
+
19
+ ```
20
+ ERROR: Phase number required
21
+ Usage: /gsd-remove-phase <phase-number>
22
+ Example: /gsd-remove-phase 17
23
+ ```
24
+
25
+ Exit.
26
+ </step>
27
+
28
+ <step name="init_context">
29
+ Load phase operation context:
30
+
31
+ ```bash
32
+ INIT=$(gsd-sdk query init.phase-op "${target}")
33
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
34
+ ```
35
+
36
+ Extract: `phase_found`, `phase_dir`, `phase_number`, `commit_docs`, `roadmap_exists`.
37
+
38
+ Also read STATE.md and ROADMAP.md content for parsing current position.
39
+ </step>
40
+
41
+ <step name="validate_future_phase">
42
+ Verify the phase is a future phase (not started):
43
+
44
+ 1. Compare target phase to current phase from STATE.md
45
+ 2. Target must be > current phase number
46
+
47
+ If target <= current phase:
48
+
49
+ ```
50
+ ERROR: Cannot remove Phase {target}
51
+
52
+ Only future phases can be removed:
53
+ - Current phase: {current}
54
+ - Phase {target} is current or completed
55
+
56
+ To abandon current work, use /gsd-pause-work instead.
57
+ ```
58
+
59
+ Exit.
60
+ </step>
61
+
62
+ <step name="confirm_removal">
63
+ Present removal summary and confirm:
64
+
65
+ ```
66
+ Removing Phase {target}: {Name}
67
+
68
+ This will:
69
+ - Delete: .planning/phases/{target}-{slug}/
70
+ - Renumber all subsequent phases
71
+ - Update: ROADMAP.md, STATE.md
72
+
73
+ Proceed? (y/n)
74
+ ```
75
+
76
+ Wait for confirmation.
77
+ </step>
78
+
79
+ <step name="execute_removal">
80
+ **Delegate the entire removal operation to `gsd-sdk query phase.remove`:**
81
+
82
+ ```bash
83
+ RESULT=$(gsd-sdk query phase.remove "${target}")
84
+ ```
85
+
86
+ If the phase has executed plans (SUMMARY.md files), the CLI will error. Use `--force` only if the user confirms:
87
+
88
+ ```bash
89
+ RESULT=$(gsd-sdk query phase.remove "${target}" --force)
90
+ ```
91
+
92
+ The CLI handles:
93
+ - Deleting the phase directory
94
+ - Renumbering all subsequent directories (in reverse order to avoid conflicts)
95
+ - Renaming all files inside renumbered directories (PLAN.md, SUMMARY.md, etc.)
96
+ - Updating ROADMAP.md (removing section, renumbering all phase references, updating dependencies)
97
+ - Updating STATE.md (decrementing phase count)
98
+
99
+ Extract from result: `removed`, `directory_deleted`, `renamed_directories`, `renamed_files`, `roadmap_updated`, `state_updated`.
100
+ </step>
101
+
102
+ <step name="commit">
103
+ Stage and commit the removal:
104
+
105
+ ```bash
106
+ gsd-sdk query commit "chore: remove phase {target} ({original-phase-name})" .planning/
107
+ ```
108
+
109
+ The commit message preserves the historical record of what was removed.
110
+ </step>
111
+
112
+ <step name="completion">
113
+ Present completion summary:
114
+
115
+ ```
116
+ Phase {target} ({original-name}) removed.
117
+
118
+ Changes:
119
+ - Deleted: .planning/phases/{target}-{slug}/
120
+ - Renumbered: {N} directories and {M} files
121
+ - Updated: ROADMAP.md, STATE.md
122
+ - Committed: chore: remove phase {target} ({original-name})
123
+
124
+ ---
125
+
126
+ ## What's Next
127
+
128
+ Would you like to:
129
+ - `/gsd-progress` — see updated roadmap status
130
+ - Continue with current phase
131
+ - Review roadmap
132
+
133
+ ---
134
+ ```
135
+ </step>
136
+
137
+ </process>
138
+
139
+ <anti_patterns>
140
+
141
+ - Don't remove completed phases (have SUMMARY.md files) without --force
142
+ - Don't remove current or past phases
143
+ - Don't manually renumber — use `gsd-sdk query phase.remove` which handles all renumbering
144
+ - Don't add "removed phase" notes to STATE.md — git commit is the record
145
+ - Don't modify completed phase directories
146
+ </anti_patterns>
147
+
148
+ <success_criteria>
149
+ Phase removal is complete when:
150
+
151
+ - [ ] Target phase validated as future/unstarted
152
+ - [ ] `gsd-sdk query phase.remove` executed successfully
153
+ - [ ] Changes committed with descriptive message
154
+ - [ ] User informed of changes
155
+ </success_criteria>
@@ -13,7 +13,7 @@ Read all files referenced by the invoking prompt's execution_context before star
13
13
  Extract workspace name from $ARGUMENTS.
14
14
 
15
15
  ```bash
16
- .agent/skills/gsd/bin/gsd-tools.cjs" init remove-workspace "$WORKSPACE_NAME")
16
+ INIT=$(gsd-sdk query init.remove-workspace "$WORKSPACE_NAME")
17
17
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
18
18
  ```
19
19
 
@@ -23,6 +23,8 @@ Parse JSON for: `workspace_name`, `workspace_path`, `has_manifest`, `strategy`,
23
23
 
24
24
  First run `/gsd-list-workspaces` to show available workspaces, then ask:
25
25
 
26
+
27
+ **Text mode (`workflow.text_mode: true` in config or `--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS` OR `text_mode` from init JSON is `true`. When TEXT_MODE is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for non-Antigravity runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available.
26
28
  Use AskUserQuestion:
27
29
  - header: "Remove Workspace"
28
30
  - question: "Which workspace do you want to remove?"
@@ -41,7 +43,7 @@ Cannot remove workspace "$WORKSPACE_NAME" — the following repos have uncommitt
41
43
  - repo2
42
44
 
43
45
  Commit or stash changes in these repos before removing the workspace:
44
- cd $WORKSPACE_PATH/repo1
46
+ cd "$WORKSPACE_PATH/repo1"
45
47
  git stash # or git commit
46
48
  ```
47
49
 
@@ -23,7 +23,7 @@ Resolve model for:
23
23
  @references/docs/phase-argument-parsing.md
24
24
 
25
25
  ```bash
26
- .agent/skills/gsd/bin/gsd-tools.cjs" roadmap get-phase "${PHASE}")
26
+ PHASE_INFO=$(gsd-sdk query roadmap.get-phase "${PHASE}")
27
27
  ```
28
28
 
29
29
  If `found` is false: Error and exit.
@@ -39,10 +39,10 @@ If exists: Offer update/view/skip options.
39
39
  ## Step 3: Gather Phase Context
40
40
 
41
41
  ```bash
42
- .agent/skills/gsd/bin/gsd-tools.cjs" init phase-op "${PHASE}")
42
+ INIT=$(gsd-sdk query init.phase-op "${PHASE}")
43
43
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
44
44
  # Extract: phase_dir, padded_phase, phase_number, state_path, requirements_path, context_path
45
- .agent/skills/gsd/bin/gsd-tools.cjs" agent-skills gsd-researcher 2>/dev/null)
45
+ AGENT_SKILLS_RESEARCHER=$(gsd-sdk query agent-skills gsd-researcher 2>/dev/null)
46
46
  ```
47
47
 
48
48
  ## Step 4: Spawn Researcher
@@ -20,7 +20,7 @@ Instantly restore full project context so "Where were we?" has an immediate, com
20
20
  Load all context in one call:
21
21
 
22
22
  ```bash
23
- .agent/skills/gsd/bin/gsd-tools.cjs" init resume)
23
+ INIT=$(gsd-sdk query init.resume)
24
24
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
25
25
  ```
26
26
 
@@ -231,7 +231,7 @@ Based on user selection, route to appropriate workflow:
231
231
  ```
232
232
  ---
233
233
 
234
- ## ▶ Next Up
234
+ ## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
235
235
 
236
236
  **{phase}-{plan}: [Plan Name]** — [objective from PLAN.md]
237
237
 
@@ -245,7 +245,7 @@ Based on user selection, route to appropriate workflow:
245
245
  ```
246
246
  ---
247
247
 
248
- ## ▶ Next Up
248
+ ## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
249
249
 
250
250
  **Phase [N]: [Name]** — [Goal from ROADMAP.md]
251
251