pi-gsd 2.0.23 → 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 (214) hide show
  1. package/dist/pi-gsd-hooks.js +5 -5
  2. package/dist/pi-gsd-tools.js +38 -38
  3. package/gsd/hooks/gsd-context-monitor.js +164 -0
  4. package/gsd/hooks/gsd-prompt-guard.js +99 -0
  5. package/gsd/hooks/gsd-workflow-guard.js +98 -0
  6. package/gsd/prompts/gsd-discuss-milestone.md +7 -0
  7. package/gsd/templates/milestone-context.md +231 -0
  8. package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/complete-milestone.md +7 -1
  9. package/gsd/workflows/discuss-milestone.md +467 -0
  10. package/package.json +4 -5
  11. package/scripts/postinstall.js +129 -332
  12. package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase.md.bak +0 -1049
  13. package/.gsd/harnesses/pi/get-shit-done/workflows/execute-phase.md.bak +0 -846
  14. package/.gsd/harnesses/pi/get-shit-done/workflows/new-milestone.md.bak +0 -486
  15. package/.gsd/harnesses/pi/get-shit-done/workflows/new-project.md.bak +0 -1250
  16. package/.gsd/harnesses/pi/get-shit-done/workflows/plan-phase.md.bak +0 -859
  17. package/.gsd/harnesses/pi/gsd-file-manifest.json +0 -219
  18. package/.gsd/harnesses/pi/hooks/gsd-context-monitor.js +0 -159
  19. package/.gsd/harnesses/pi/hooks/gsd-prompt-guard.js +0 -99
  20. package/.gsd/harnesses/pi/hooks/gsd-workflow-guard.js +0 -97
  21. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/VERSION +0 -0
  22. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-advisor-researcher.md +0 -0
  23. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-assumptions-analyzer.md +0 -0
  24. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-codebase-mapper.md +0 -0
  25. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-debugger.md +0 -0
  26. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-executor.md +0 -0
  27. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-integration-checker.md +0 -0
  28. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-nyquist-auditor.md +0 -0
  29. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-phase-researcher.md +0 -0
  30. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-plan-checker.md +0 -0
  31. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-planner.md +0 -0
  32. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-project-researcher.md +0 -0
  33. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-research-synthesizer.md +0 -0
  34. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-roadmapper.md +0 -0
  35. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-ui-auditor.md +0 -0
  36. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-ui-checker.md +0 -0
  37. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-ui-researcher.md +0 -0
  38. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-user-profiler.md +0 -0
  39. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/agents/gsd-verifier.md +0 -0
  40. /package/{.gsd/harnesses/pi → gsd}/hooks/gsd-check-update.js +0 -0
  41. /package/{.gsd/harnesses/pi → gsd}/hooks/gsd-statusline.js +0 -0
  42. /package/{prompts → gsd/prompts}/gsd-add-backlog.md +0 -0
  43. /package/{prompts → gsd/prompts}/gsd-add-phase.md +0 -0
  44. /package/{prompts → gsd/prompts}/gsd-add-tests.md +0 -0
  45. /package/{prompts → gsd/prompts}/gsd-add-todo.md +0 -0
  46. /package/{prompts → gsd/prompts}/gsd-audit-milestone.md +0 -0
  47. /package/{prompts → gsd/prompts}/gsd-audit-uat.md +0 -0
  48. /package/{prompts → gsd/prompts}/gsd-autonomous.md +0 -0
  49. /package/{prompts → gsd/prompts}/gsd-check-todos.md +0 -0
  50. /package/{prompts → gsd/prompts}/gsd-cleanup.md +0 -0
  51. /package/{prompts → gsd/prompts}/gsd-complete-milestone.md +0 -0
  52. /package/{prompts → gsd/prompts}/gsd-debug.md +0 -0
  53. /package/{prompts → gsd/prompts}/gsd-discuss-phase.md +0 -0
  54. /package/{prompts → gsd/prompts}/gsd-do.md +0 -0
  55. /package/{prompts → gsd/prompts}/gsd-execute-milestone.md +0 -0
  56. /package/{prompts → gsd/prompts}/gsd-execute-phase.md +0 -0
  57. /package/{prompts → gsd/prompts}/gsd-fast.md +0 -0
  58. /package/{prompts → gsd/prompts}/gsd-forensics.md +0 -0
  59. /package/{prompts → gsd/prompts}/gsd-insert-phase.md +0 -0
  60. /package/{prompts → gsd/prompts}/gsd-join-discord.md +0 -0
  61. /package/{prompts → gsd/prompts}/gsd-list-phase-assumptions.md +0 -0
  62. /package/{prompts → gsd/prompts}/gsd-list-workspaces.md +0 -0
  63. /package/{prompts → gsd/prompts}/gsd-manager.md +0 -0
  64. /package/{prompts → gsd/prompts}/gsd-map-codebase.md +0 -0
  65. /package/{prompts → gsd/prompts}/gsd-milestone-summary.md +0 -0
  66. /package/{prompts → gsd/prompts}/gsd-new-milestone.md +0 -0
  67. /package/{prompts → gsd/prompts}/gsd-new-project.md +0 -0
  68. /package/{prompts → gsd/prompts}/gsd-new-workspace.md +0 -0
  69. /package/{prompts → gsd/prompts}/gsd-note.md +0 -0
  70. /package/{prompts → gsd/prompts}/gsd-pause-work.md +0 -0
  71. /package/{prompts → gsd/prompts}/gsd-plan-milestone-gaps.md +0 -0
  72. /package/{prompts → gsd/prompts}/gsd-plan-milestone.md +0 -0
  73. /package/{prompts → gsd/prompts}/gsd-plan-phase.md +0 -0
  74. /package/{prompts → gsd/prompts}/gsd-plant-seed.md +0 -0
  75. /package/{prompts → gsd/prompts}/gsd-pr-branch.md +0 -0
  76. /package/{prompts → gsd/prompts}/gsd-profile-user.md +0 -0
  77. /package/{prompts → gsd/prompts}/gsd-quick.md +0 -0
  78. /package/{prompts → gsd/prompts}/gsd-reapply-patches.md +0 -0
  79. /package/{prompts → gsd/prompts}/gsd-remove-phase.md +0 -0
  80. /package/{prompts → gsd/prompts}/gsd-remove-workspace.md +0 -0
  81. /package/{prompts → gsd/prompts}/gsd-research-phase.md +0 -0
  82. /package/{prompts → gsd/prompts}/gsd-resume-work.md +0 -0
  83. /package/{prompts → gsd/prompts}/gsd-review-backlog.md +0 -0
  84. /package/{prompts → gsd/prompts}/gsd-review.md +0 -0
  85. /package/{prompts → gsd/prompts}/gsd-session-report.md +0 -0
  86. /package/{prompts → gsd/prompts}/gsd-set-profile.md +0 -0
  87. /package/{prompts → gsd/prompts}/gsd-settings.md +0 -0
  88. /package/{prompts → gsd/prompts}/gsd-ship.md +0 -0
  89. /package/{prompts → gsd/prompts}/gsd-thread.md +0 -0
  90. /package/{prompts → gsd/prompts}/gsd-ui-phase.md +0 -0
  91. /package/{prompts → gsd/prompts}/gsd-ui-review.md +0 -0
  92. /package/{prompts → gsd/prompts}/gsd-validate-phase.md +0 -0
  93. /package/{prompts → gsd/prompts}/gsd-verify-work.md +0 -0
  94. /package/{prompts → gsd/prompts}/gsd-workstreams.md +0 -0
  95. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/checkpoints.md +0 -0
  96. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/continuation-format.md +0 -0
  97. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/decimal-phase-calculation.md +0 -0
  98. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/git-integration.md +0 -0
  99. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/git-planning-commit.md +0 -0
  100. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/model-profile-resolution.md +0 -0
  101. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/model-profiles.md +0 -0
  102. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/phase-argument-parsing.md +0 -0
  103. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/planning-config.md +0 -0
  104. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/questioning.md +0 -0
  105. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/tdd.md +0 -0
  106. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/ui-brand.md +0 -0
  107. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/user-profiling.md +0 -0
  108. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/verification-patterns.md +0 -0
  109. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/references/workstream-flag.md +0 -0
  110. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/DEBUG.md +0 -0
  111. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/UAT.md +0 -0
  112. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/UI-SPEC.md +0 -0
  113. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/VALIDATION.md +0 -0
  114. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/claude-md.md +0 -0
  115. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/codebase/architecture.md +0 -0
  116. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/codebase/concerns.md +0 -0
  117. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/codebase/conventions.md +0 -0
  118. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/codebase/integrations.md +0 -0
  119. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/codebase/stack.md +0 -0
  120. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/codebase/structure.md +0 -0
  121. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/codebase/testing.md +0 -0
  122. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/config.json +0 -0
  123. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/context.md +0 -0
  124. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/continue-here.md +0 -0
  125. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/copilot-instructions.md +0 -0
  126. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/debug-subagent-prompt.md +0 -0
  127. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/dev-preferences.md +0 -0
  128. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/discovery.md +0 -0
  129. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/discussion-log.md +0 -0
  130. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/milestone-archive.md +0 -0
  131. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/milestone.md +0 -0
  132. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/phase-prompt.md +0 -0
  133. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/planner-subagent-prompt.md +0 -0
  134. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/project.md +0 -0
  135. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/requirements.md +0 -0
  136. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/research-project/ARCHITECTURE.md +0 -0
  137. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/research-project/FEATURES.md +0 -0
  138. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/research-project/PITFALLS.md +0 -0
  139. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/research-project/STACK.md +0 -0
  140. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/research-project/SUMMARY.md +0 -0
  141. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/research.md +0 -0
  142. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/retrospective.md +0 -0
  143. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/roadmap.md +0 -0
  144. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/state.md +0 -0
  145. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/summary-complex.md +0 -0
  146. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/summary-minimal.md +0 -0
  147. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/summary-standard.md +0 -0
  148. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/summary.md +0 -0
  149. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/user-profile.md +0 -0
  150. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/user-setup.md +0 -0
  151. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/templates/verification-report.md +0 -0
  152. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/add-backlog.md +0 -0
  153. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/add-phase.md +0 -0
  154. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/add-tests.md +0 -0
  155. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/add-todo.md +0 -0
  156. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/audit-milestone.md +0 -0
  157. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/audit-uat.md +0 -0
  158. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/autonomous.md +0 -0
  159. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/check-todos.md +0 -0
  160. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/cleanup.md +0 -0
  161. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/debug.md +0 -0
  162. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/diagnose-issues.md +0 -0
  163. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/discovery-phase.md +0 -0
  164. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/discuss-phase-assumptions.md +0 -0
  165. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/discuss-phase.md +0 -0
  166. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/do.md +0 -0
  167. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/execute-milestone.md +0 -0
  168. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/execute-phase.md +0 -0
  169. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/execute-plan.md +0 -0
  170. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/fast.md +0 -0
  171. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/forensics.md +0 -0
  172. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/health.md +0 -0
  173. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/help.md +0 -0
  174. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/insert-phase.md +0 -0
  175. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/list-phase-assumptions.md +0 -0
  176. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/list-workspaces.md +0 -0
  177. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/manager.md +0 -0
  178. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/map-codebase.md +0 -0
  179. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/milestone-summary.md +0 -0
  180. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/new-milestone.md +0 -0
  181. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/new-project.md +0 -0
  182. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/new-workspace.md +0 -0
  183. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/next.md +0 -0
  184. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/node-repair.md +0 -0
  185. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/note.md +0 -0
  186. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/pause-work.md +0 -0
  187. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/plan-milestone-gaps.md +0 -0
  188. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/plan-milestone.md +0 -0
  189. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/plan-phase.md +0 -0
  190. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/plant-seed.md +0 -0
  191. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/pr-branch.md +0 -0
  192. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/profile-user.md +0 -0
  193. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/progress.md +0 -0
  194. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/quick.md +0 -0
  195. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/remove-phase.md +0 -0
  196. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/remove-workspace.md +0 -0
  197. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/research-phase.md +0 -0
  198. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/resume-project.md +0 -0
  199. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/review-backlog.md +0 -0
  200. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/review.md +0 -0
  201. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/session-report.md +0 -0
  202. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/set-profile.md +0 -0
  203. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/settings.md +0 -0
  204. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/ship.md +0 -0
  205. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/stats.md +0 -0
  206. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/thread.md +0 -0
  207. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/transition.md +0 -0
  208. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/ui-phase.md +0 -0
  209. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/ui-review.md +0 -0
  210. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/update.md +0 -0
  211. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/validate-phase.md +0 -0
  212. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/verify-phase.md +0 -0
  213. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/verify-work.md +0 -0
  214. /package/{.gsd/harnesses/pi/get-shit-done → gsd}/workflows/workstreams.md +0 -0
@@ -0,0 +1,467 @@
1
+ <gsd-version v="2.0.24" />
2
+
3
+ <gsd-arguments>
4
+ <settings>
5
+ <keep-extra-args />
6
+ </settings>
7
+ <arg name="auto" type="flag" flag="--auto" optional />
8
+ </gsd-arguments>
9
+
10
+ <gsd-execute>
11
+ <shell command="pi-gsd-tools">
12
+ <args>
13
+ <arg string="init" />
14
+ <arg string="milestone-op" />
15
+ </args>
16
+ <outs>
17
+ <out type="string" name="init" />
18
+ </outs>
19
+ </shell>
20
+ <shell command="pi-gsd-tools">
21
+ <args>
22
+ <arg string="state" />
23
+ <arg string="json" />
24
+ <arg string="--raw" />
25
+ </args>
26
+ <outs>
27
+ <suppress-errors />
28
+ <out type="string" name="state" />
29
+ </outs>
30
+ </shell>
31
+ <shell command="pi-gsd-tools">
32
+ <args>
33
+ <arg string="roadmap" />
34
+ <arg string="analyze" />
35
+ <arg string="--raw" />
36
+ </args>
37
+ <outs>
38
+ <suppress-errors />
39
+ <out type="string" name="roadmap" />
40
+ </outs>
41
+ </shell>
42
+ </gsd-execute>
43
+
44
+ ## Context (pre-injected)
45
+
46
+ **Init:**
47
+ <gsd-paste name="init" />
48
+
49
+ **Project State:**
50
+ <gsd-paste name="state" />
51
+
52
+ **Current Roadmap:**
53
+ <gsd-paste name="roadmap" />
54
+
55
+ ---
56
+
57
+ <purpose>
58
+ Crystallize what the next milestone should deliver before starting the planning machinery. You are a thinking partner — a PM who knows what shipped, asks smart questions, and helps the user clarify product scope before committing to a roadmap.
59
+
60
+ Output: `.planning/MILESTONE-CONTEXT.md`, consumed by /gsd-new-milestone.
61
+
62
+ Optional step — /gsd-new-milestone works without it. The value is separating the "what do we build?" conversation from the requirements and roadmapping machinery.
63
+ </purpose>
64
+
65
+ <philosophy>
66
+ **User = product owner. Agent = PM/advisor.**
67
+
68
+ The user knows:
69
+ - What users are struggling with
70
+ - What the next logical product step is
71
+ - What MUST ship vs nice-to-have
72
+ - Any hard constraints (tech, team, timeline)
73
+
74
+ The user doesn't need to define:
75
+ - How to structure phases (that's the roadmapper)
76
+ - Implementation approach (that's research + discuss-phase)
77
+ - Which requirements to write (that's new-milestone)
78
+
79
+ Your job: help the user articulate a clear, scoped milestone intent that new-milestone can turn into requirements and a roadmap.
80
+ </philosophy>
81
+
82
+ <scope_guardrail>
83
+ **Product-level only.** This discussion is about WHAT the milestone delivers, not HOW.
84
+
85
+ **Allowed:**
86
+ - "Should we tackle X or defer it?"
87
+ - "What's the must-have vs nice-to-have split?"
88
+ - "Any hard constraints for this cycle?"
89
+ - "How will we know this milestone is done?"
90
+
91
+ **Not here:**
92
+ - "Should we use Redis or Postgres for this?"
93
+ - "Which architecture pattern?"
94
+ - "How should we structure the phases?"
95
+
96
+ If the user goes implementation-level, redirect:
97
+ ```
98
+ "That's a planning question — /gsd-new-milestone and /gsd-discuss-phase will handle it.
99
+ For now: do you want [capability] in scope for this milestone?"
100
+ ```
101
+ </scope_guardrail>
102
+
103
+ <answer_validation>
104
+ After every AskUserQuestion call, check if the response is empty or whitespace-only. If so:
105
+ 1. Retry once with the same parameters
106
+ 2. If still empty, present options as a plain-text numbered list
107
+
108
+ **Text mode (`workflow.text_mode: true` or `--text` flag):**
109
+ Replace ALL AskUserQuestion calls with plain-text numbered lists. User types a number.
110
+ Required for Claude Code remote sessions where TUI menus don't forward.
111
+ </answer_validation>
112
+
113
+ <process>
114
+
115
+ ## 1. Initialize
116
+
117
+ <!-- Context pre-injected above via WXP -->
118
+
119
+ Parse init JSON for: `commit_docs`, `context_window`, `milestone_version`, `milestone_name`, `last_completed_milestone`, `roadmap_exists`, `state_exists`.
120
+
121
+ **If `state_exists` is false:**
122
+ ```
123
+ No .planning/ directory found. Set up a project first:
124
+
125
+ /gsd-new-project
126
+ ```
127
+ Exit workflow.
128
+
129
+ Read project files:
130
+ ```bash
131
+ cat .planning/PROJECT.md 2>/dev/null || true
132
+ cat .planning/MILESTONES.md 2>/dev/null || true
133
+ ```
134
+
135
+ Extract from PROJECT.md: project name, core value, non-negotiables, target users.
136
+ Extract from MILESTONES.md: what shipped in completed milestones (summaries, not full detail).
137
+
138
+ **Read text mode config:**
139
+ ```bash
140
+ TEXT_MODE=$(pi-gsd-tools config-get workflow.text_mode 2>/dev/null || echo "false")
141
+ ```
142
+ Enable text mode if `--text` in $ARGUMENTS OR `TEXT_MODE` is `true`.
143
+
144
+ ## 2. Check Existing MILESTONE-CONTEXT.md
145
+
146
+ ```bash
147
+ test -f .planning/MILESTONE-CONTEXT.md && echo "exists" || echo "absent"
148
+ ```
149
+
150
+ **If exists:**
151
+
152
+ **If `--auto`:** Load existing content, continue to step 3 to refresh it. Log: `[auto] Existing MILESTONE-CONTEXT.md found — refreshing.`
153
+
154
+ **Otherwise,** use AskUserQuestion:
155
+ - header: "Context exists"
156
+ - question: "MILESTONE-CONTEXT.md already exists. What do you want to do?"
157
+ - options:
158
+ - "Update it" — Revise and improve existing context
159
+ - "View it" — Show current content, then decide
160
+ - "Skip" — Use as-is, go straight to /gsd-new-milestone
161
+
162
+ If "View": display file contents, then re-ask "Update it" / "Skip".
163
+ If "Skip": display `Next: /gsd-new-milestone` and exit.
164
+ If "Update": load existing content, continue to step 3.
165
+
166
+ **If absent:** Continue to step 3.
167
+
168
+ ## 3. Retrospective Framing
169
+
170
+ Sets the context for "what's next" based on what shipped.
171
+
172
+ **If `last_completed_milestone` is not null:**
173
+
174
+ Read the matching section in `.planning/MILESTONES.md` for `last_completed_milestone.version`.
175
+
176
+ Display (no user input needed):
177
+ ```
178
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
179
+ Last milestone: [version] — [name]
180
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
181
+ [2-3 sentence summary of what shipped from MILESTONES.md]
182
+ ```
183
+
184
+ Then ask ONE freeform question (plain text, NOT AskUserQuestion):
185
+
186
+ > "What feedback or signals are shaping what you want to build next?"
187
+
188
+ Wait for response. Use the answer to seed the scope discussion. Do not ask follow-ups from this — carry the insight forward.
189
+
190
+ **If `--auto`:** Skip retrospective question. Read STATE.md accumulated context for any signals.
191
+
192
+ **If no completed milestones:** Skip retrospective entirely. Continue to step 4.
193
+
194
+ ## 4. Gather Milestone Intent
195
+
196
+ Open question to surface rough direction before structuring.
197
+
198
+ Ask (plain text, NOT AskUserQuestion):
199
+
200
+ > "What do you want this milestone to deliver? Give me the rough picture — we'll tighten the scope next."
201
+
202
+ Wait for response. Parse it for:
203
+ - Feature/capability mentions → candidates for scope-in
204
+ - Exclusions or "not yet" signals → candidates for scope-out
205
+ - Urgency or priority cues
206
+ - Any constraints mentioned in passing
207
+
208
+ Reflect back in 2-3 sentences:
209
+ ```
210
+ "So the core of this milestone is [X]. You also mentioned [Y],
211
+ and [Z] sounds like a natural boundary. Is that the right picture?"
212
+ ```
213
+
214
+ If they confirm: proceed to step 5 with extracted candidates.
215
+ If they adjust: incorporate and reflect again. Max 2 loops, then proceed.
216
+
217
+ **If `--auto`:** Skip reflection loop. Extract candidates from the intent statement directly and proceed.
218
+
219
+ ## 5. Scope Discussion
220
+
221
+ Turn the rough intent into a clear in/out split.
222
+
223
+ **Build candidate list** from:
224
+ - Step 4's response (feature/capability mentions)
225
+ - STATE.md accumulated context (pending items, blockers noted)
226
+ - MILESTONES.md "Future Requirements" or deferred items from last milestone
227
+ - Any items in `.planning/REQUIREMENTS.md` marked Out of Scope that might be reconsidered
228
+
229
+ Group related candidates into clusters (2-4 features per cluster). Present one cluster at a time.
230
+
231
+ **For each cluster:**
232
+
233
+ If text mode: present as numbered list with multi-select.
234
+ Otherwise use AskUserQuestion (multiSelect: true):
235
+ - header: "Scope: [cluster]" (max 12 chars)
236
+ - question: "Which of these belong in this milestone?"
237
+ - options: each candidate with a 1-line description
238
+
239
+ After all clusters, show a running tally:
240
+ ```
241
+ Scoped in: [N] capabilities
242
+ Deferred: [M] capabilities
243
+ ```
244
+
245
+ **Explicit exclusions** — after clusters are done:
246
+
247
+ If text mode: ask as plain-text.
248
+ Otherwise use AskUserQuestion:
249
+ - header: "Out of scope"
250
+ - question: "Anything to explicitly exclude — even if it seems related?"
251
+ - options:
252
+ - "Nothing to add — the scope list covers it"
253
+ - "Yes, I want to explicitly exclude something"
254
+
255
+ If "Yes": ask them to name it (plain text). Capture with reason.
256
+
257
+ **If `--auto`:** Include everything mentioned in step 4's intent or with a clear priority signal. Exclude only items the user explicitly flagged as "not now" or "next milestone".
258
+
259
+ ## 6. Constraints
260
+
261
+ Anything that bounds how this milestone must be shaped.
262
+
263
+ If text mode: present as numbered multi-select list.
264
+ Otherwise use AskUserQuestion (multiSelect: true):
265
+ - header: "Constraints"
266
+ - question: "Any hard constraints for this milestone?"
267
+ - options:
268
+ - "No breaking changes — existing integrations must keep working"
269
+ - "No new external dependencies"
270
+ - "Must maintain backwards compatibility with existing data"
271
+ - "Performance budget — no regressions on key metrics"
272
+ - "None — this milestone is unconstrained"
273
+ - "Other — let me describe it"
274
+
275
+ If "Other": ask plain text, record result.
276
+
277
+ **If `--auto`:** Default to "None" unless PROJECT.md or STATE.md explicitly mentions active constraints.
278
+
279
+ ## 7. Success Definition
280
+
281
+ How does "done" look from the outside?
282
+
283
+ Ask (plain text, NOT AskUserQuestion):
284
+
285
+ > "Finish this sentence: this milestone is a success when users can ___."
286
+
287
+ Wait for response. Parse 1-3 observable outcomes.
288
+
289
+ If the response is vague ("when everything works", "when it's polished"), prompt once:
290
+
291
+ > "What's a concrete user action that proves it — something you could demo?"
292
+
293
+ Capture outcomes. If they list more than 3, keep the 3 most concrete and user-observable.
294
+
295
+ **If `--auto`:** Derive success outcomes from scoped capabilities — "user can [primary action]" for each major in-scope cluster.
296
+
297
+ ## 8. Open Questions
298
+
299
+ Surface anything that needs resolving in new-milestone or early research — not as a blocker, but as a signal.
300
+
301
+ Ask (plain text):
302
+
303
+ > "Any open questions or risks you want the planning session to address early?"
304
+
305
+ If they say "no" or give nothing: record "None — scope is clear."
306
+ If they give questions: capture them for the MILESTONE-CONTEXT.md open_questions section.
307
+
308
+ **If `--auto`:** Skip. Default to "None."
309
+
310
+ ## 9. Write MILESTONE-CONTEXT.md
311
+
312
+ Write to `.planning/MILESTONE-CONTEXT.md`:
313
+
314
+ ```markdown
315
+ # Milestone Context
316
+
317
+ **Gathered:** [ISO date]
318
+ **Status:** Ready for /gsd-new-milestone
319
+
320
+ <milestone_goal>
321
+ ## Goal
322
+
323
+ [One sentence distilled from step 4 — what this milestone delivers for users]
324
+
325
+ </milestone_goal>
326
+
327
+ <scope>
328
+ ## Scope
329
+
330
+ ### In this milestone
331
+
332
+ [For each scoped-in capability, in priority order:]
333
+ - **[Capability name]**: [1-line description of what it means for users]
334
+
335
+ ### Explicitly out of scope
336
+
337
+ [For each explicit exclusion:]
338
+ - **[Capability name]**: [reason — "deferred to next milestone", "separate product area", etc.]
339
+
340
+ [If no explicit exclusions: "No explicit exclusions — boundary is the in-scope list above"]
341
+
342
+ </scope>
343
+
344
+ <constraints>
345
+ ## Constraints
346
+
347
+ [For each constraint from step 6:]
348
+ - [Constraint statement]
349
+
350
+ [If none: "None — unconstrained milestone"]
351
+
352
+ </constraints>
353
+
354
+ <success>
355
+ ## Success Definition
356
+
357
+ This milestone is successful when:
358
+ - [Observable user outcome 1]
359
+ - [Observable user outcome 2]
360
+ [- [Observable user outcome 3] — only if genuinely distinct]
361
+
362
+ </success>
363
+
364
+ <open_questions>
365
+ ## Open Questions for Planning
366
+
367
+ [Questions from step 8 that new-milestone or early research should address:]
368
+ - [Question]
369
+
370
+ [If none: "None — scope is clear"]
371
+
372
+ </open_questions>
373
+
374
+ ---
375
+
376
+ *Milestone context gathered: [date]*
377
+ *Run /gsd-new-milestone to start planning*
378
+ ```
379
+
380
+ ## 10. Commit
381
+
382
+ ```bash
383
+ pi-gsd-tools commit "docs: capture milestone context" --files .planning/MILESTONE-CONTEXT.md
384
+ ```
385
+
386
+ If `commit_docs` is false: skip commit silently.
387
+
388
+ ## 11. Present Summary and Next Steps
389
+
390
+ ```
391
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
392
+ GSD ► MILESTONE CONTEXT CAPTURED ✓
393
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
394
+
395
+ **Goal:** [one sentence from context file]
396
+
397
+ **In scope ([N] capabilities):**
398
+ [bullet list]
399
+
400
+ **Constraints:** [list or "none"]
401
+ **Success:** [first observable outcome]
402
+
403
+ ───────────────────────────────────────────────────────────────
404
+
405
+ ## ▶ Next Up
406
+
407
+ **Start milestone planning** — requirements, research, roadmap
408
+
409
+ `/gsd-new-milestone`
410
+
411
+ <sub>`/new` first → fresh context window</sub>
412
+
413
+ ───────────────────────────────────────────────────────────────
414
+ ```
415
+
416
+ ## 12. Auto-Advance
417
+
418
+ 1. Parse `--auto` flag from $ARGUMENTS.
419
+ 2. Sync chain flag with intent — clear if not in `--auto` run:
420
+ ```bash
421
+ if [[ ! "$ARGUMENTS" =~ --auto ]]; then
422
+ pi-gsd-tools config-set workflow._auto_chain_active false 2>/dev/null
423
+ fi
424
+ ```
425
+ 3. Read chain flag and config:
426
+ ```bash
427
+ AUTO_CHAIN=$(pi-gsd-tools config-get workflow._auto_chain_active 2>/dev/null || echo "false")
428
+ AUTO_CFG=$(pi-gsd-tools config-get workflow.auto_advance 2>/dev/null || echo "false")
429
+ ```
430
+
431
+ **If `--auto` OR `AUTO_CHAIN` is true OR `AUTO_CFG` is true:**
432
+
433
+ Display:
434
+ ```
435
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
436
+ GSD ► AUTO-ADVANCING TO NEW-MILESTONE
437
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
438
+
439
+ Context captured. Launching new-milestone...
440
+ ```
441
+
442
+ Launch:
443
+ ```
444
+ Skill(skill="gsd-new-milestone", args="--auto ${GSD_WS}")
445
+ ```
446
+
447
+ Handle return:
448
+ - **MILESTONE INITIALIZED** → Display success banner, done.
449
+ - **CHECKPOINT / BLOCKED** → Stop chain, show: `Continue: /gsd-new-milestone ${GSD_WS}`
450
+
451
+ **If not auto:** Step 11 already shown. Done.
452
+
453
+ </process>
454
+
455
+ <success_criteria>
456
+ - [ ] .planning/ exists (state_exists check)
457
+ - [ ] Existing MILESTONE-CONTEXT.md handled (update/view/skip)
458
+ - [ ] Last completed milestone surfaced for retrospective framing
459
+ - [ ] Milestone intent gathered via open conversation
460
+ - [ ] Scope in/out defined per capability cluster
461
+ - [ ] Hard constraints captured
462
+ - [ ] Success definition captured as observable user outcomes
463
+ - [ ] Open questions captured for planning session
464
+ - [ ] MILESTONE-CONTEXT.md written to .planning/
465
+ - [ ] Committed (if commit_docs)
466
+ - [ ] User knows next step: /gsd-new-milestone
467
+ </success_criteria>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-gsd",
3
- "version": "2.0.23",
3
+ "version": "2.1.0",
4
4
  "description": "Get Shit Done - Unofficial port of the renowned AI-native project-planning spec-driven toolkit",
5
5
  "main": "dist/pi-gsd-tools.js",
6
6
  "bin": {
@@ -20,12 +20,11 @@
20
20
  "lint": "eslint src/ --ext .ts"
21
21
  },
22
22
  "files": [
23
+ "gsd",
23
24
  "dist",
24
25
  "scripts/postinstall.js",
25
- ".gsd/harnesses",
26
26
  "README.md",
27
- "LICENSE",
28
- "prompts"
27
+ "LICENSE"
29
28
  ],
30
29
  "engines": {
31
30
  "node": ">=18.0.0"
@@ -64,7 +63,7 @@
64
63
  "./dist/pi-gsd-hooks.js"
65
64
  ],
66
65
  "prompts": [
67
- "./prompts"
66
+ "./gsd/prompts"
68
67
  ]
69
68
  },
70
69
  "dependencies": {