gsd-code-first 1.0.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 (238) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja-JP.md +834 -0
  3. package/README.ko-KR.md +823 -0
  4. package/README.md +937 -0
  5. package/README.pt-BR.md +452 -0
  6. package/README.zh-CN.md +800 -0
  7. package/agents/gsd-advisor-researcher.md +104 -0
  8. package/agents/gsd-annotator.md +148 -0
  9. package/agents/gsd-arc-executor.md +537 -0
  10. package/agents/gsd-arc-planner.md +374 -0
  11. package/agents/gsd-assumptions-analyzer.md +105 -0
  12. package/agents/gsd-code-planner.md +155 -0
  13. package/agents/gsd-codebase-mapper.md +770 -0
  14. package/agents/gsd-debugger.md +1373 -0
  15. package/agents/gsd-executor.md +509 -0
  16. package/agents/gsd-integration-checker.md +443 -0
  17. package/agents/gsd-nyquist-auditor.md +176 -0
  18. package/agents/gsd-phase-researcher.md +698 -0
  19. package/agents/gsd-plan-checker.md +773 -0
  20. package/agents/gsd-planner.md +1354 -0
  21. package/agents/gsd-project-researcher.md +654 -0
  22. package/agents/gsd-prototyper.md +161 -0
  23. package/agents/gsd-research-synthesizer.md +247 -0
  24. package/agents/gsd-roadmapper.md +679 -0
  25. package/agents/gsd-ui-auditor.md +439 -0
  26. package/agents/gsd-ui-checker.md +300 -0
  27. package/agents/gsd-ui-researcher.md +357 -0
  28. package/agents/gsd-user-profiler.md +171 -0
  29. package/agents/gsd-verifier.md +700 -0
  30. package/bin/install.js +5009 -0
  31. package/commands/gsd/add-backlog.md +76 -0
  32. package/commands/gsd/add-phase.md +43 -0
  33. package/commands/gsd/add-tests.md +41 -0
  34. package/commands/gsd/add-todo.md +47 -0
  35. package/commands/gsd/annotate.md +54 -0
  36. package/commands/gsd/audit-milestone.md +36 -0
  37. package/commands/gsd/audit-uat.md +24 -0
  38. package/commands/gsd/autonomous.md +41 -0
  39. package/commands/gsd/check-todos.md +45 -0
  40. package/commands/gsd/cleanup.md +18 -0
  41. package/commands/gsd/complete-milestone.md +136 -0
  42. package/commands/gsd/debug.md +173 -0
  43. package/commands/gsd/deep-plan.md +52 -0
  44. package/commands/gsd/discuss-phase.md +64 -0
  45. package/commands/gsd/do.md +30 -0
  46. package/commands/gsd/execute-phase.md +59 -0
  47. package/commands/gsd/extract-plan.md +35 -0
  48. package/commands/gsd/fast.md +30 -0
  49. package/commands/gsd/forensics.md +56 -0
  50. package/commands/gsd/health.md +22 -0
  51. package/commands/gsd/help.md +22 -0
  52. package/commands/gsd/insert-phase.md +32 -0
  53. package/commands/gsd/iterate.md +124 -0
  54. package/commands/gsd/join-discord.md +18 -0
  55. package/commands/gsd/list-phase-assumptions.md +46 -0
  56. package/commands/gsd/list-workspaces.md +19 -0
  57. package/commands/gsd/manager.md +39 -0
  58. package/commands/gsd/map-codebase.md +71 -0
  59. package/commands/gsd/milestone-summary.md +51 -0
  60. package/commands/gsd/new-milestone.md +44 -0
  61. package/commands/gsd/new-project.md +42 -0
  62. package/commands/gsd/new-workspace.md +44 -0
  63. package/commands/gsd/next.md +24 -0
  64. package/commands/gsd/note.md +34 -0
  65. package/commands/gsd/pause-work.md +38 -0
  66. package/commands/gsd/plan-milestone-gaps.md +34 -0
  67. package/commands/gsd/plan-phase.md +47 -0
  68. package/commands/gsd/plant-seed.md +28 -0
  69. package/commands/gsd/pr-branch.md +25 -0
  70. package/commands/gsd/profile-user.md +46 -0
  71. package/commands/gsd/progress.md +24 -0
  72. package/commands/gsd/prototype.md +56 -0
  73. package/commands/gsd/quick.md +47 -0
  74. package/commands/gsd/reapply-patches.md +123 -0
  75. package/commands/gsd/remove-phase.md +31 -0
  76. package/commands/gsd/remove-workspace.md +26 -0
  77. package/commands/gsd/research-phase.md +195 -0
  78. package/commands/gsd/resume-work.md +40 -0
  79. package/commands/gsd/review-backlog.md +61 -0
  80. package/commands/gsd/review.md +37 -0
  81. package/commands/gsd/session-report.md +19 -0
  82. package/commands/gsd/set-mode.md +41 -0
  83. package/commands/gsd/set-profile.md +12 -0
  84. package/commands/gsd/settings.md +36 -0
  85. package/commands/gsd/ship.md +23 -0
  86. package/commands/gsd/stats.md +18 -0
  87. package/commands/gsd/thread.md +127 -0
  88. package/commands/gsd/ui-phase.md +34 -0
  89. package/commands/gsd/ui-review.md +32 -0
  90. package/commands/gsd/update.md +37 -0
  91. package/commands/gsd/validate-phase.md +35 -0
  92. package/commands/gsd/verify-work.md +38 -0
  93. package/commands/gsd/workstreams.md +63 -0
  94. package/get-shit-done/bin/gsd-tools.cjs +946 -0
  95. package/get-shit-done/bin/lib/arc-scanner.cjs +341 -0
  96. package/get-shit-done/bin/lib/commands.cjs +959 -0
  97. package/get-shit-done/bin/lib/config.cjs +466 -0
  98. package/get-shit-done/bin/lib/core.cjs +1230 -0
  99. package/get-shit-done/bin/lib/frontmatter.cjs +336 -0
  100. package/get-shit-done/bin/lib/init.cjs +1442 -0
  101. package/get-shit-done/bin/lib/milestone.cjs +252 -0
  102. package/get-shit-done/bin/lib/model-profiles.cjs +68 -0
  103. package/get-shit-done/bin/lib/phase.cjs +888 -0
  104. package/get-shit-done/bin/lib/profile-output.cjs +952 -0
  105. package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
  106. package/get-shit-done/bin/lib/roadmap.cjs +329 -0
  107. package/get-shit-done/bin/lib/security.cjs +382 -0
  108. package/get-shit-done/bin/lib/state.cjs +1031 -0
  109. package/get-shit-done/bin/lib/template.cjs +222 -0
  110. package/get-shit-done/bin/lib/uat.cjs +282 -0
  111. package/get-shit-done/bin/lib/verify.cjs +888 -0
  112. package/get-shit-done/bin/lib/workstream.cjs +491 -0
  113. package/get-shit-done/commands/gsd/workstreams.md +63 -0
  114. package/get-shit-done/references/arc-standard.md +315 -0
  115. package/get-shit-done/references/checkpoints.md +778 -0
  116. package/get-shit-done/references/continuation-format.md +249 -0
  117. package/get-shit-done/references/decimal-phase-calculation.md +64 -0
  118. package/get-shit-done/references/git-integration.md +295 -0
  119. package/get-shit-done/references/git-planning-commit.md +38 -0
  120. package/get-shit-done/references/model-profile-resolution.md +36 -0
  121. package/get-shit-done/references/model-profiles.md +139 -0
  122. package/get-shit-done/references/phase-argument-parsing.md +61 -0
  123. package/get-shit-done/references/planning-config.md +202 -0
  124. package/get-shit-done/references/questioning.md +162 -0
  125. package/get-shit-done/references/tdd.md +263 -0
  126. package/get-shit-done/references/ui-brand.md +160 -0
  127. package/get-shit-done/references/user-profiling.md +681 -0
  128. package/get-shit-done/references/verification-patterns.md +612 -0
  129. package/get-shit-done/references/workstream-flag.md +58 -0
  130. package/get-shit-done/templates/DEBUG.md +164 -0
  131. package/get-shit-done/templates/UAT.md +265 -0
  132. package/get-shit-done/templates/UI-SPEC.md +100 -0
  133. package/get-shit-done/templates/VALIDATION.md +76 -0
  134. package/get-shit-done/templates/claude-md.md +122 -0
  135. package/get-shit-done/templates/codebase/architecture.md +255 -0
  136. package/get-shit-done/templates/codebase/concerns.md +310 -0
  137. package/get-shit-done/templates/codebase/conventions.md +307 -0
  138. package/get-shit-done/templates/codebase/integrations.md +280 -0
  139. package/get-shit-done/templates/codebase/stack.md +186 -0
  140. package/get-shit-done/templates/codebase/structure.md +285 -0
  141. package/get-shit-done/templates/codebase/testing.md +480 -0
  142. package/get-shit-done/templates/config.json +44 -0
  143. package/get-shit-done/templates/context.md +352 -0
  144. package/get-shit-done/templates/continue-here.md +78 -0
  145. package/get-shit-done/templates/copilot-instructions.md +7 -0
  146. package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
  147. package/get-shit-done/templates/dev-preferences.md +21 -0
  148. package/get-shit-done/templates/discovery.md +146 -0
  149. package/get-shit-done/templates/discussion-log.md +63 -0
  150. package/get-shit-done/templates/milestone-archive.md +123 -0
  151. package/get-shit-done/templates/milestone.md +115 -0
  152. package/get-shit-done/templates/phase-prompt.md +610 -0
  153. package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
  154. package/get-shit-done/templates/project.md +186 -0
  155. package/get-shit-done/templates/requirements.md +231 -0
  156. package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
  157. package/get-shit-done/templates/research-project/FEATURES.md +147 -0
  158. package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
  159. package/get-shit-done/templates/research-project/STACK.md +120 -0
  160. package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
  161. package/get-shit-done/templates/research.md +552 -0
  162. package/get-shit-done/templates/retrospective.md +54 -0
  163. package/get-shit-done/templates/roadmap.md +202 -0
  164. package/get-shit-done/templates/state.md +176 -0
  165. package/get-shit-done/templates/summary-complex.md +59 -0
  166. package/get-shit-done/templates/summary-minimal.md +41 -0
  167. package/get-shit-done/templates/summary-standard.md +48 -0
  168. package/get-shit-done/templates/summary.md +248 -0
  169. package/get-shit-done/templates/user-profile.md +146 -0
  170. package/get-shit-done/templates/user-setup.md +311 -0
  171. package/get-shit-done/templates/verification-report.md +322 -0
  172. package/get-shit-done/workflows/add-phase.md +112 -0
  173. package/get-shit-done/workflows/add-tests.md +351 -0
  174. package/get-shit-done/workflows/add-todo.md +158 -0
  175. package/get-shit-done/workflows/audit-milestone.md +340 -0
  176. package/get-shit-done/workflows/audit-uat.md +109 -0
  177. package/get-shit-done/workflows/autonomous.md +891 -0
  178. package/get-shit-done/workflows/check-todos.md +177 -0
  179. package/get-shit-done/workflows/cleanup.md +152 -0
  180. package/get-shit-done/workflows/complete-milestone.md +767 -0
  181. package/get-shit-done/workflows/diagnose-issues.md +231 -0
  182. package/get-shit-done/workflows/discovery-phase.md +289 -0
  183. package/get-shit-done/workflows/discuss-phase-assumptions.md +653 -0
  184. package/get-shit-done/workflows/discuss-phase.md +1049 -0
  185. package/get-shit-done/workflows/do.md +104 -0
  186. package/get-shit-done/workflows/execute-phase.md +846 -0
  187. package/get-shit-done/workflows/execute-plan.md +514 -0
  188. package/get-shit-done/workflows/fast.md +105 -0
  189. package/get-shit-done/workflows/forensics.md +265 -0
  190. package/get-shit-done/workflows/health.md +181 -0
  191. package/get-shit-done/workflows/help.md +634 -0
  192. package/get-shit-done/workflows/insert-phase.md +130 -0
  193. package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
  194. package/get-shit-done/workflows/list-workspaces.md +56 -0
  195. package/get-shit-done/workflows/manager.md +362 -0
  196. package/get-shit-done/workflows/map-codebase.md +377 -0
  197. package/get-shit-done/workflows/milestone-summary.md +223 -0
  198. package/get-shit-done/workflows/new-milestone.md +486 -0
  199. package/get-shit-done/workflows/new-project.md +1250 -0
  200. package/get-shit-done/workflows/new-workspace.md +237 -0
  201. package/get-shit-done/workflows/next.md +97 -0
  202. package/get-shit-done/workflows/node-repair.md +92 -0
  203. package/get-shit-done/workflows/note.md +156 -0
  204. package/get-shit-done/workflows/pause-work.md +176 -0
  205. package/get-shit-done/workflows/plan-milestone-gaps.md +273 -0
  206. package/get-shit-done/workflows/plan-phase.md +859 -0
  207. package/get-shit-done/workflows/plant-seed.md +169 -0
  208. package/get-shit-done/workflows/pr-branch.md +129 -0
  209. package/get-shit-done/workflows/profile-user.md +450 -0
  210. package/get-shit-done/workflows/progress.md +507 -0
  211. package/get-shit-done/workflows/quick.md +757 -0
  212. package/get-shit-done/workflows/remove-phase.md +155 -0
  213. package/get-shit-done/workflows/remove-workspace.md +90 -0
  214. package/get-shit-done/workflows/research-phase.md +82 -0
  215. package/get-shit-done/workflows/resume-project.md +326 -0
  216. package/get-shit-done/workflows/review.md +228 -0
  217. package/get-shit-done/workflows/session-report.md +146 -0
  218. package/get-shit-done/workflows/settings.md +283 -0
  219. package/get-shit-done/workflows/ship.md +228 -0
  220. package/get-shit-done/workflows/stats.md +60 -0
  221. package/get-shit-done/workflows/transition.md +671 -0
  222. package/get-shit-done/workflows/ui-phase.md +302 -0
  223. package/get-shit-done/workflows/ui-review.md +165 -0
  224. package/get-shit-done/workflows/update.md +323 -0
  225. package/get-shit-done/workflows/validate-phase.md +174 -0
  226. package/get-shit-done/workflows/verify-phase.md +254 -0
  227. package/get-shit-done/workflows/verify-work.md +637 -0
  228. package/hooks/dist/gsd-check-update.js +114 -0
  229. package/hooks/dist/gsd-context-monitor.js +156 -0
  230. package/hooks/dist/gsd-prompt-guard.js +96 -0
  231. package/hooks/dist/gsd-statusline.js +119 -0
  232. package/hooks/dist/gsd-workflow-guard.js +94 -0
  233. package/package.json +52 -0
  234. package/scripts/base64-scan.sh +262 -0
  235. package/scripts/build-hooks.js +82 -0
  236. package/scripts/prompt-injection-scan.sh +198 -0
  237. package/scripts/run-tests.cjs +29 -0
  238. package/scripts/secret-scan.sh +227 -0
@@ -0,0 +1,228 @@
1
+ <purpose>
2
+ Create a pull request from completed phase/milestone work, generate a rich PR body from planning artifacts, optionally run code review, and prepare for merge. Closes the plan → execute → verify → ship loop.
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="initialize">
12
+ Parse arguments and load project state:
13
+
14
+ ```bash
15
+ INIT=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" init phase-op "${PHASE_ARG}")
16
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
17
+ ```
18
+
19
+ Parse from init JSON: `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `padded_phase`, `commit_docs`.
20
+
21
+ Also load config for branching strategy:
22
+ ```bash
23
+ CONFIG=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state load)
24
+ ```
25
+
26
+ Extract: `branching_strategy`, `branch_name`.
27
+ </step>
28
+
29
+ <step name="preflight_checks">
30
+ Verify the work is ready to ship:
31
+
32
+ 1. **Verification passed?**
33
+ ```bash
34
+ VERIFICATION=$(cat ${PHASE_DIR}/*-VERIFICATION.md 2>/dev/null)
35
+ ```
36
+ Check for `status: passed` or `status: human_needed` (with human approval).
37
+ If no VERIFICATION.md or status is `gaps_found`: warn and ask user to confirm.
38
+
39
+ 2. **Clean working tree?**
40
+ ```bash
41
+ git status --short
42
+ ```
43
+ If uncommitted changes exist: ask user to commit or stash first.
44
+
45
+ 3. **On correct branch?**
46
+ ```bash
47
+ CURRENT_BRANCH=$(git branch --show-current)
48
+ ```
49
+ If on `main`/`master`: warn — should be on a feature branch.
50
+ If branching_strategy is `none`: offer to create a branch now.
51
+
52
+ 4. **Remote configured?**
53
+ ```bash
54
+ git remote -v | head -2
55
+ ```
56
+ Detect `origin` remote. If no remote: error — can't create PR.
57
+
58
+ 5. **`gh` CLI available?**
59
+ ```bash
60
+ which gh && gh auth status 2>&1
61
+ ```
62
+ If `gh` not found or not authenticated: provide setup instructions and exit.
63
+ </step>
64
+
65
+ <step name="push_branch">
66
+ Push the current branch to remote:
67
+
68
+ ```bash
69
+ git push origin ${CURRENT_BRANCH} 2>&1
70
+ ```
71
+
72
+ If push fails (e.g., no upstream): set upstream:
73
+ ```bash
74
+ git push --set-upstream origin ${CURRENT_BRANCH} 2>&1
75
+ ```
76
+
77
+ Report: "Pushed `{branch}` to origin ({commit_count} commits ahead of main)"
78
+ </step>
79
+
80
+ <step name="generate_pr_body">
81
+ Auto-generate a rich PR body from planning artifacts:
82
+
83
+ **1. Title:**
84
+ ```
85
+ Phase {phase_number}: {phase_name}
86
+ ```
87
+ Or for milestone: `Milestone {version}: {name}`
88
+
89
+ **2. Summary section:**
90
+ Read ROADMAP.md for phase goal. Read VERIFICATION.md for verification status.
91
+
92
+ ```markdown
93
+ ## Summary
94
+
95
+ **Phase {N}: {Name}**
96
+ **Goal:** {goal from ROADMAP.md}
97
+ **Status:** Verified ✓
98
+
99
+ {One paragraph synthesized from SUMMARY.md files — what was built}
100
+ ```
101
+
102
+ **3. Changes section:**
103
+ For each SUMMARY.md in the phase directory:
104
+ ```markdown
105
+ ## Changes
106
+
107
+ ### Plan {plan_id}: {plan_name}
108
+ {one_liner from SUMMARY.md frontmatter}
109
+
110
+ **Key files:**
111
+ {key-files.created and key-files.modified from SUMMARY.md frontmatter}
112
+ ```
113
+
114
+ **4. Requirements section:**
115
+ ```markdown
116
+ ## Requirements Addressed
117
+
118
+ {REQ-IDs from plan frontmatter, linked to REQUIREMENTS.md descriptions}
119
+ ```
120
+
121
+ **5. Testing section:**
122
+ ```markdown
123
+ ## Verification
124
+
125
+ - [x] Automated verification: {pass/fail from VERIFICATION.md}
126
+ - {human verification items from VERIFICATION.md, if any}
127
+ ```
128
+
129
+ **6. Decisions section:**
130
+ ```markdown
131
+ ## Key Decisions
132
+
133
+ {Decisions from STATE.md accumulated context relevant to this phase}
134
+ ```
135
+ </step>
136
+
137
+ <step name="create_pr">
138
+ Create the PR using the generated body:
139
+
140
+ ```bash
141
+ gh pr create \
142
+ --title "Phase ${PHASE_NUMBER}: ${PHASE_NAME}" \
143
+ --body "${PR_BODY}" \
144
+ --base main
145
+ ```
146
+
147
+ If `--draft` flag was passed: add `--draft`.
148
+
149
+ Report: "PR #{number} created: {url}"
150
+ </step>
151
+
152
+ <step name="optional_review">
153
+ Ask if user wants to trigger a code review:
154
+
155
+ ```
156
+ AskUserQuestion:
157
+ question: "PR created. Run a code review before merge?"
158
+ options:
159
+ - label: "Skip review"
160
+ description: "PR is ready — merge when CI passes"
161
+ - label: "Self-review"
162
+ description: "I'll review the diff in the PR myself"
163
+ - label: "Request review"
164
+ description: "Request review from a teammate"
165
+ ```
166
+
167
+ **If "Request review":**
168
+ ```bash
169
+ gh pr edit ${PR_NUMBER} --add-reviewer "${REVIEWER}"
170
+ ```
171
+
172
+ **If "Self-review":**
173
+ Report the PR URL and suggest: "Review the diff at {url}/files"
174
+ </step>
175
+
176
+ <step name="track_shipping">
177
+ Update STATE.md to reflect the shipping action:
178
+
179
+ ```bash
180
+ node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state update "Last Activity" "$(date +%Y-%m-%d)"
181
+ node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state update "Status" "Phase ${PHASE_NUMBER} shipped — PR #${PR_NUMBER}"
182
+ ```
183
+
184
+ If `commit_docs` is true:
185
+ ```bash
186
+ node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" commit "docs(${padded_phase}): ship phase ${PHASE_NUMBER} — PR #${PR_NUMBER}" --files .planning/STATE.md
187
+ ```
188
+ </step>
189
+
190
+ <step name="report">
191
+ ```
192
+ ───────────────────────────────────────────────────────────────
193
+
194
+ ## ✓ Phase {X}: {Name} — Shipped
195
+
196
+ PR: #{number} ({url})
197
+ Branch: {branch} → main
198
+ Commits: {count}
199
+ Verification: ✓ Passed
200
+ Requirements: {N} REQ-IDs addressed
201
+
202
+ Next steps:
203
+ - Review/approve PR
204
+ - Merge when CI passes
205
+ - /gsd:complete-milestone (if last phase in milestone)
206
+ - /gsd:progress (to see what's next)
207
+
208
+ ───────────────────────────────────────────────────────────────
209
+ ```
210
+ </step>
211
+
212
+ </process>
213
+
214
+ <offer_next>
215
+ After shipping:
216
+
217
+ - /gsd:complete-milestone — if all phases in milestone are done
218
+ - /gsd:progress — see overall project state
219
+ - /gsd:execute-phase {next} — continue to next phase
220
+ </offer_next>
221
+
222
+ <success_criteria>
223
+ - [ ] Preflight checks passed (verification, clean tree, branch, remote, gh)
224
+ - [ ] Branch pushed to remote
225
+ - [ ] PR created with rich auto-generated body
226
+ - [ ] STATE.md updated with shipping status
227
+ - [ ] User knows PR number and next steps
228
+ </success_criteria>
@@ -0,0 +1,60 @@
1
+ <purpose>
2
+ Display comprehensive project statistics including phases, plans, requirements, git metrics, and timeline.
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="gather_stats">
12
+ Gather project statistics:
13
+
14
+ ```bash
15
+ STATS=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" stats json)
16
+ if [[ "$STATS" == @file:* ]]; then STATS=$(cat "${STATS#@file:}"); fi
17
+ ```
18
+
19
+ Extract fields from JSON: `milestone_version`, `milestone_name`, `phases`, `phases_completed`, `phases_total`, `total_plans`, `total_summaries`, `percent`, `plan_percent`, `requirements_total`, `requirements_complete`, `git_commits`, `git_first_commit_date`, `last_activity`.
20
+ </step>
21
+
22
+ <step name="present_stats">
23
+ Present to the user with this format:
24
+
25
+ ```
26
+ # 📊 Project Statistics — {milestone_version} {milestone_name}
27
+
28
+ ## Progress
29
+ [████████░░] X/Y phases (Z%)
30
+
31
+ ## Plans
32
+ X/Y plans complete (Z%)
33
+
34
+ ## Phases
35
+ | Phase | Name | Plans | Completed | Status |
36
+ |-------|------|-------|-----------|--------|
37
+ | ... | ... | ... | ... | ... |
38
+
39
+ ## Requirements
40
+ ✅ X/Y requirements complete
41
+
42
+ ## Git
43
+ - **Commits:** N
44
+ - **Started:** YYYY-MM-DD
45
+ - **Last activity:** YYYY-MM-DD
46
+
47
+ ## Timeline
48
+ - **Project age:** N days
49
+ ```
50
+
51
+ If no `.planning/` directory exists, inform the user to run `/gsd:new-project` first.
52
+ </step>
53
+
54
+ </process>
55
+
56
+ <success_criteria>
57
+ - [ ] Statistics gathered from project state
58
+ - [ ] Results formatted clearly
59
+ - [ ] Displayed to user
60
+ </success_criteria>