pi-gsd 2.0.5 → 2.0.6

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 (46) hide show
  1. package/.gsd/harnesses/pi/get-shit-done/workflows/add-phase.md +1 -1
  2. package/.gsd/harnesses/pi/get-shit-done/workflows/add-tests.md +1 -1
  3. package/.gsd/harnesses/pi/get-shit-done/workflows/add-todo.md +1 -1
  4. package/.gsd/harnesses/pi/get-shit-done/workflows/audit-milestone.md +1 -1
  5. package/.gsd/harnesses/pi/get-shit-done/workflows/autonomous.md +6 -6
  6. package/.gsd/harnesses/pi/get-shit-done/workflows/check-todos.md +1 -1
  7. package/.gsd/harnesses/pi/get-shit-done/workflows/complete-milestone.md +2 -2
  8. package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase-assumptions.md +1 -1
  9. package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase.md +1 -1
  10. package/.gsd/harnesses/pi/get-shit-done/workflows/do.md +1 -1
  11. package/.gsd/harnesses/pi/get-shit-done/workflows/execute-milestone.md +38 -38
  12. package/.gsd/harnesses/pi/get-shit-done/workflows/execute-plan.md +1 -1
  13. package/.gsd/harnesses/pi/get-shit-done/workflows/insert-phase.md +1 -1
  14. package/.gsd/harnesses/pi/get-shit-done/workflows/list-workspaces.md +1 -1
  15. package/.gsd/harnesses/pi/get-shit-done/workflows/manager.md +2 -2
  16. package/.gsd/harnesses/pi/get-shit-done/workflows/map-codebase.md +1 -1
  17. package/.gsd/harnesses/pi/get-shit-done/workflows/milestone-summary.md +1 -1
  18. package/.gsd/harnesses/pi/get-shit-done/workflows/new-milestone.md +1 -1
  19. package/.gsd/harnesses/pi/get-shit-done/workflows/new-project.md +1 -1
  20. package/.gsd/harnesses/pi/get-shit-done/workflows/new-workspace.md +1 -1
  21. package/.gsd/harnesses/pi/get-shit-done/workflows/pause-work.md +1 -1
  22. package/.gsd/harnesses/pi/get-shit-done/workflows/plan-milestone.md +8 -8
  23. package/.gsd/harnesses/pi/get-shit-done/workflows/progress.md +1 -1
  24. package/.gsd/harnesses/pi/get-shit-done/workflows/quick.md +1 -1
  25. package/.gsd/harnesses/pi/get-shit-done/workflows/remove-phase.md +1 -1
  26. package/.gsd/harnesses/pi/get-shit-done/workflows/remove-workspace.md +1 -1
  27. package/.gsd/harnesses/pi/get-shit-done/workflows/research-phase.md +1 -1
  28. package/.gsd/harnesses/pi/get-shit-done/workflows/resume-project.md +1 -1
  29. package/.gsd/harnesses/pi/get-shit-done/workflows/review.md +1 -1
  30. package/.gsd/harnesses/pi/get-shit-done/workflows/settings.md +1 -1
  31. package/.gsd/harnesses/pi/get-shit-done/workflows/ship.md +1 -1
  32. package/.gsd/harnesses/pi/get-shit-done/workflows/ui-phase.md +1 -1
  33. package/.gsd/harnesses/pi/get-shit-done/workflows/ui-review.md +1 -1
  34. package/.gsd/harnesses/pi/get-shit-done/workflows/validate-phase.md +1 -1
  35. package/.gsd/harnesses/pi/get-shit-done/workflows/verify-phase.md +1 -1
  36. package/.gsd/harnesses/pi/get-shit-done/workflows/verify-work.md +1 -1
  37. package/README.md +60 -60
  38. package/dist/pi-gsd-hooks.js +4 -4
  39. package/dist/pi-gsd-tools.js +2 -2
  40. package/package.json +2 -2
  41. package/prompts/gsd-discuss-phase.md +1 -1
  42. package/prompts/gsd-execute-phase.md +1 -1
  43. package/prompts/gsd-plan-phase.md +1 -1
  44. package/prompts/gsd-quick.md +1 -1
  45. package/prompts/gsd-verify-work.md +1 -1
  46. package/scripts/postinstall.js +323 -323
@@ -86,7 +86,7 @@ Exit.
86
86
  <step name="init_context">
87
87
  Load phase operation context:
88
88
 
89
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
89
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
90
90
 
91
91
  Check `roadmap_exists` from init JSON. If false:
92
92
  ```
@@ -100,7 +100,7 @@ Exit.
100
100
  <step name="init_context">
101
101
  Load phase operation context:
102
102
 
103
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
103
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
104
104
 
105
105
  Extract from init JSON: `phase_dir`, `phase_number`, `phase_name`.
106
106
 
@@ -40,7 +40,7 @@ Read all files referenced by the invoking prompt's execution_context before star
40
40
  <step name="init_context">
41
41
  Load todo context:
42
42
 
43
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
43
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
44
44
 
45
45
  Extract from init JSON: `commit_docs`, `date`, `timestamp`, `todo_count`, `todos`, `pending_dir`, `todos_dir_exists`.
46
46
 
@@ -77,7 +77,7 @@
77
77
 
78
78
  ## 0. Initialize Milestone Context
79
79
 
80
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
80
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
81
81
 
82
82
  Extract from init JSON: `milestone_version`, `milestone_name`, `phase_count`, `completed_phases`, `commit_docs`.
83
83
 
@@ -66,7 +66,7 @@
66
66
  </shell>
67
67
  </then>
68
68
  </if>
69
- <!-- SET _auto_chain_active when chain starts cleared by chain completion/pause, not by absence of --auto -->
69
+ <!-- SET _auto_chain_active when chain starts - cleared by chain completion/pause, not by absence of --auto -->
70
70
  <shell command="pi-gsd-tools">
71
71
  <args>
72
72
  <arg string="config-set" />
@@ -108,7 +108,7 @@ Read all files referenced by the invoking prompt's execution_context before star
108
108
 
109
109
  Parse `$ARGUMENTS` for `--from N` flag:
110
110
 
111
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
111
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
112
112
 
113
113
  Parse JSON for: `milestone_version`, `milestone_name`, `phase_count`, `completed_phases`, `roadmap_exists`, `state_exists`, `commit_docs`.
114
114
 
@@ -136,7 +136,7 @@ If `FROM_PHASE` is set, display: `Starting from phase ${FROM_PHASE}`
136
136
 
137
137
  Run phase discovery:
138
138
 
139
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
139
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
140
140
 
141
141
  Parse `has_context` from JSON.
142
142
 
@@ -150,7 +150,7 @@ Proceed to 3b.
150
150
 
151
151
  **If has_context is false:** Check if discuss is disabled via settings:
152
152
 
153
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
153
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
154
154
 
155
155
  Check `has_context`. If false → go to handle_blocker: "Smart discuss for phase ${PHASE_NUM} did not produce CONTEXT.md."
156
156
 
@@ -158,7 +158,7 @@ Check `has_context`. If false → go to handle_blocker: "Smart discuss for phase
158
158
 
159
159
  Check if this phase has frontend indicators and whether a UI-SPEC already exists:
160
160
 
161
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
161
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
162
162
 
163
163
  Parse `phase_dir` from the JSON.
164
164
 
@@ -219,7 +219,7 @@ Skill(skill="gsd-execute-phase", args="${PHASE_NUM} --no-transition")
219
219
  ```
220
220
 
221
221
  Re-read verification status:
222
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
222
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
223
223
 
224
224
  Parse from JSON: `phase_dir`, `phase_slug`, `padded_phase`, `phase_name`.
225
225
 
@@ -77,7 +77,7 @@ Read all files referenced by the invoking prompt's execution_context before star
77
77
  <step name="init_context">
78
78
  Load todo context:
79
79
 
80
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
80
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
81
81
 
82
82
  Extract from init JSON: `todo_count`, `todos`, `pending_dir`.
83
83
 
@@ -28,7 +28,7 @@
28
28
  <out type="string" name="state" />
29
29
  </outs>
30
30
  </shell>
31
- <!-- CLEAR _auto_chain_active chain ends here -->
31
+ <!-- CLEAR _auto_chain_active - chain ends here -->
32
32
  <shell command="pi-gsd-tools">
33
33
  <args>
34
34
  <arg string="config-set" />
@@ -55,7 +55,7 @@
55
55
 
56
56
  **Use `roadmap analyze` for comprehensive readiness check:**
57
57
 
58
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
58
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
59
59
 
60
60
  Extract `branching_strategy`, `phase_branch_template`, `milestone_branch_template`, and `commit_docs` from init JSON.
61
61
 
@@ -142,7 +142,7 @@ plain-text numbered list and ask the user to type their choice number.
142
142
  <step name="initialize" priority="first">
143
143
  Phase number from argument (required).
144
144
 
145
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
145
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
146
146
 
147
147
  Parse JSON for: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`,
148
148
  `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `has_verification`,
@@ -173,7 +173,7 @@ Text mode applies to ALL workflows in the session, not just discuss-phase.
173
173
  <step name="initialize" priority="first">
174
174
  Phase number from argument (required).
175
175
 
176
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
176
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
177
177
 
178
178
  Parse JSON for: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `has_verification`, `plan_count`, `roadmap_exists`, `planning_exists`.
179
179
 
@@ -52,7 +52,7 @@ Wait for response before continuing.
52
52
  <step name="check_project">
53
53
  **Check if project exists.**
54
54
 
55
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
55
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
56
56
 
57
57
  Track whether `.planning/` exists - some routes require it, others don't.
58
58
  </step>
@@ -82,14 +82,14 @@ If no: warn once, proceed on current branch.
82
82
 
83
83
  ---
84
84
 
85
- ## Mode Selection (step 1 always second)
85
+ ## Mode Selection (step 1 - always second)
86
86
 
87
87
  Ask the user ONE binary question:
88
88
 
89
89
  > **"How should I behave when I hit a doubt, error, or scope deviation?"**
90
90
  >
91
- > - **Interactive** Stop and ask me; I'll guide you through it
92
- > - **Silent** Try to self-correct; only surface unrecoverable blockers
91
+ > - **Interactive** - Stop and ask me; I'll guide you through it
92
+ > - **Silent** - Try to self-correct; only surface unrecoverable blockers
93
93
 
94
94
  Store as `MODE` (interactive | silent). Do not ask again.
95
95
 
@@ -120,10 +120,10 @@ Read:
120
120
 
121
121
  Prompt (internal): *"Does executing this phase risk implementing anything not covered by active requirements, or conflict with what previous phases delivered? Rate: low / medium / high. One sentence reason."*
122
122
 
123
- - **low** continue silently
124
- - **medium** log in scope-log, continue
125
- - **high + interactive** surface to user, ask: proceed / adjust phase goal / stop
126
- - **high + silent** log prominently, continue, include in final report
123
+ - **low** - continue silently
124
+ - **medium** - log in scope-log, continue
125
+ - **high + interactive** - surface to user, ask: proceed / adjust phase goal / stop
126
+ - **high + silent** - log prominently, continue, include in final report
127
127
 
128
128
  ### B. Execute Phase
129
129
 
@@ -136,14 +136,14 @@ Skill(skill="gsd-execute-phase", args="${N}")
136
136
  Read new SUMMARY.md files from the phase directory.
137
137
 
138
138
  Check:
139
- 1. **Undelivered must-haves** PLAN.md `must_haves` entries absent from SUMMARY
140
- 2. **Scope creep** files modified that are outside this phase's stated scope
141
- 3. **Requirement drift** work done that has no matching REQUIREMENTS entry
139
+ 1. **Undelivered must-haves** - PLAN.md `must_haves` entries absent from SUMMARY
140
+ 2. **Scope creep** - files modified that are outside this phase's stated scope
141
+ 3. **Requirement drift** - work done that has no matching REQUIREMENTS entry
142
142
 
143
143
  Classify result as `SCOPE_STATUS`:
144
- - **clean** continue
145
- - **drift** log + warn, continue
146
- - **violation** trigger recovery (see §F)
144
+ - **clean** - continue
145
+ - **drift** - log + warn, continue
146
+ - **violation** - trigger recovery (see §F)
147
147
 
148
148
  ### D. Verify
149
149
 
@@ -156,12 +156,12 @@ Default threshold: **80%**. Override with `--uat-threshold N`.
156
156
 
157
157
  ### E. Gate Check
158
158
 
159
- | Condition | Interactive | Silent |
160
- |-----------|-------------|--------|
161
- | UAT pass rate < threshold | Ask: fix gaps now or continue? | → Recovery loop |
162
- | Context remaining < 20% | Warn, ask: stop or continue? | → Write HANDOFF, stop |
163
- | SCOPE_STATUS = violation | Surface details, ask | → Recovery loop |
164
- | All gates pass | Continue to checkpoint | Continue to checkpoint |
159
+ | Condition | Interactive | Silent |
160
+ | ------------------------- | ------------------------------ | ---------------------- |
161
+ | UAT pass rate < threshold | Ask: fix gaps now or continue? | → Recovery loop |
162
+ | Context remaining < 20% | Warn, ask: stop or continue? | → Write HANDOFF, stop |
163
+ | SCOPE_STATUS = violation | Surface details, ask | → Recovery loop |
164
+ | All gates pass | Continue to checkpoint | Continue to checkpoint |
165
165
 
166
166
  ### F. Recovery Loop
167
167
 
@@ -177,7 +177,7 @@ When triggered:
177
177
  - Silent: write HANDOFF files (see §G), stop
178
178
  ```
179
179
 
180
- ### G. Hard Stop HANDOFF Files
180
+ ### G. Hard Stop - HANDOFF Files
181
181
 
182
182
  On unrecoverable stop, write two files matching original GSD pause-work convention:
183
183
 
@@ -232,11 +232,11 @@ pi-gsd-tools state update last_activity $(date -u +%Y-%m-%d)
232
232
  pi-gsd-tools commit "chore: complete phase ${N}" --files .planning/
233
233
  ```
234
234
 
235
- Announce: `✓ Phase ${N} complete UAT: ${pass_rate}% Scope: ${scope_status}`
235
+ Announce: `✓ Phase ${N} complete - UAT: ${pass_rate}% Scope: ${scope_status}`
236
236
 
237
237
  ---
238
238
 
239
- ## After All Phases Mode Split
239
+ ## After All Phases - Mode Split
240
240
 
241
241
  ### Interactive mode
242
242
 
@@ -257,7 +257,7 @@ Stop. The user owns the audit decision.
257
257
 
258
258
  ---
259
259
 
260
- ### Silent mode Auto Lifecycle
260
+ ### Silent mode - Auto Lifecycle
261
261
 
262
262
  Only in silent mode. Display transition banner:
263
263
  ```
@@ -273,19 +273,19 @@ Read config once:
273
273
  - `config.workflow.auto_retry_tech_debt_budget` (default: `1`)
274
274
 
275
275
  Initialise accumulators (persist across the outer loop):
276
- - `gaps_store = []` unsatisfied requirements not yet resolved
277
- - `debt_store = []` tech debt items not yet resolved
278
- - `gaps_phases_tried = []` inserted phases attempted for gap closure
279
- - `debt_phases_tried = []` inserted phases attempted for debt resolution
276
+ - `gaps_store = []` - unsatisfied requirements not yet resolved
277
+ - `debt_store = []` - tech debt items not yet resolved
278
+ - `gaps_phases_tried = []` - inserted phases attempted for gap closure
279
+ - `debt_phases_tried = []` - inserted phases attempted for debt resolution
280
280
  - `outer_cycles = 0`
281
281
 
282
282
  ---
283
283
 
284
- #### OUTER LOOP Full audit cycle
284
+ #### OUTER LOOP - Full audit cycle
285
285
 
286
286
  `LABEL: outer_loop`
287
287
 
288
- **Step A Full audit**
288
+ **Step A - Full audit**
289
289
 
290
290
  ```
291
291
  Skill(skill="gsd-audit-milestone")
@@ -294,14 +294,14 @@ Skill(skill="gsd-audit-milestone")
294
294
  If no result / malformed → Write HANDOFF (§G), stop.
295
295
 
296
296
  Extract from audit result:
297
- - `current_gaps[]` unsatisfied requirement IDs + affected phase numbers
298
- - `current_debt[]` tech debt items + affected phase numbers
297
+ - `current_gaps[]` - unsatisfied requirement IDs + affected phase numbers
298
+ - `current_debt[]` - tech debt items + affected phase numbers
299
299
 
300
300
  If both empty → AUDIT PASSED. Proceed to Step D (complete).
301
301
 
302
302
  ---
303
303
 
304
- **Step B Gap closure loop** (only if `current_gaps` non-empty)
304
+ **Step B - Gap closure loop** (only if `current_gaps` non-empty)
305
305
 
306
306
  If `auto_retry_audit = false`: add `current_gaps` to `gaps_store`, skip to Step C.
307
307
 
@@ -317,7 +317,7 @@ While `current_gaps` non-empty and `auto_retry_audit_budget > 0`:
317
317
  4. Execute it:
318
318
  Skill(skill="gsd-execute-phase", args="${new_phase}")
319
319
  5. Track: append new_phase to gaps_phases_tried
320
- 6. Targeted re-audit affected phases only:
320
+ 6. Targeted re-audit - affected phases only:
321
321
  Skill(skill="gsd-audit-milestone", args="--phases ${gap_affected_phases}")
322
322
  7. Re-read current_gaps from result
323
323
  - Resolved? current_gaps = [], break loop
@@ -331,7 +331,7 @@ After loop:
331
331
 
332
332
  ---
333
333
 
334
- **Step C Tech debt loop** (only if `current_debt` non-empty)
334
+ **Step C - Tech debt loop** (only if `current_debt` non-empty)
335
335
 
336
336
  If `auto_retry_tech_debt = false`: add `current_debt` to `debt_store`, skip to final gate.
337
337
 
@@ -347,7 +347,7 @@ While `current_debt` non-empty and `auto_retry_tech_debt_budget > 0`:
347
347
  4. Execute it:
348
348
  Skill(skill="gsd-execute-phase", args="${new_phase}")
349
349
  5. Track: append new_phase to debt_phases_tried
350
- 6. Targeted re-audit affected phases only:
350
+ 6. Targeted re-audit - affected phases only:
351
351
  Skill(skill="gsd-audit-milestone", args="--phases ${debt_affected_phases}")
352
352
  7. Re-read current_debt from result
353
353
  - Resolved? current_debt = [], break loop
@@ -375,7 +375,7 @@ If anything remains in stores:
375
375
 
376
376
  ---
377
377
 
378
- #### Step D Complete Milestone
378
+ #### Step D - Complete Milestone
379
379
 
380
380
  ```
381
381
  Skill(skill="gsd-complete-milestone", args="${milestone_version}")
@@ -387,7 +387,7 @@ ls .planning/milestones/v${milestone_version}-ROADMAP.md 2>/dev/null || true
387
387
  ```
388
388
  If absent → Write HANDOFF, stop. Message: "complete-milestone did not produce archive files."
389
389
 
390
- #### Step E Cleanup
390
+ #### Step E - Cleanup
391
391
 
392
392
  ```
393
393
  Skill(skill="gsd-cleanup")
@@ -420,7 +420,7 @@ If no: leave the worktree open. Tell the user how to merge manually.
420
420
  GSD ► EXECUTE-MILESTONE ▸ COMPLETE 🎉
421
421
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
422
422
 
423
- Milestone: ${milestone_version} ${milestone_name}
423
+ Milestone: ${milestone_version} - ${milestone_name}
424
424
  Phases: ${done}/${total} complete
425
425
  Avg UAT: ${avg_uat}%
426
426
  Lifecycle: audit ✅ → complete ✅ → cleanup ✅
@@ -59,7 +59,7 @@
59
59
  <step name="init_context" priority="first">
60
60
  Load execution context (paths only to minimize orchestrator context):
61
61
 
62
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
62
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
63
63
 
64
64
  Extract from init JSON: `executor_model`, `commit_docs`, `sub_repos`, `phase_dir`, `phase_number`, `plans`, `summaries`, `incomplete_plans`, `state_path`, `config_path`.
65
65
 
@@ -94,7 +94,7 @@ Validate first argument is an integer.
94
94
  <step name="init_context">
95
95
  Load phase operation context:
96
96
 
97
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
97
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
98
98
 
99
99
  Check `roadmap_exists` from init JSON. If false:
100
100
  ```
@@ -60,7 +60,7 @@ Read all files referenced by the invoking prompt's execution_context before star
60
60
 
61
61
  ## 1. Setup
62
62
 
63
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
63
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
64
64
 
65
65
  Parse JSON for: `workspace_base`, `workspaces`, `workspace_count`.
66
66
 
@@ -97,7 +97,7 @@ Read all files referenced by the invoking prompt's execution_context before star
97
97
 
98
98
  Bootstrap via manager init:
99
99
 
100
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
100
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
101
101
 
102
102
  Parse JSON for: `milestone_version`, `milestone_name`, `phase_count`, `completed_count`, `in_progress_count`, `phases`, `recommended_actions`, `all_complete`, `waiting_signal`.
103
103
 
@@ -128,7 +128,7 @@ Proceed to dashboard step.
128
128
 
129
129
  **Every time this step is reached**, re-read state from disk to pick up changes from background agents:
130
130
 
131
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
131
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
132
132
 
133
133
  Parse the full JSON. Build the dashboard display.
134
134
 
@@ -69,7 +69,7 @@ Documents are reference material for the agent when planning/executing. Always i
69
69
  <step name="init_context" priority="first">
70
70
  Load codebase mapping context:
71
71
 
72
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
72
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
73
73
 
74
74
  Extract from init JSON: `mapper_model`, `commit_docs`, `codebase_dir`, `existing_maps`, `has_maps`, `codebase_dir_exists`.
75
75
  </step>
@@ -72,7 +72,7 @@ Designed for team onboarding - a new contributor can read the output and underst
72
72
 
73
73
  ## Step 1: Resolve Version
74
74
 
75
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
75
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
76
76
 
77
77
  This returns phase metadata. For each phase in the milestone scope:
78
78
 
@@ -177,7 +177,7 @@ Keep Accumulated Context section from previous milestone.
177
177
 
178
178
  Delete MILESTONE-CONTEXT.md if exists (consumed).
179
179
 
180
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
180
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
181
181
 
182
182
  Extract from init JSON: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `research_enabled`, `current_milestone`, `project_exists`, `roadmap_exists`, `latest_completed_milestone`, `phase_dir_count`, `phase_archive_path`.
183
183
 
@@ -98,7 +98,7 @@ The document should describe what you want to build.
98
98
 
99
99
  **MANDATORY FIRST STEP - Execute these checks before ANY user interaction:**
100
100
 
101
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
101
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
102
102
 
103
103
  Parse JSON for: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `project_exists`, `has_codebase_map`, `planning_exists`, `has_existing_code`, `has_package_file`, `is_brownfield`, `needs_codebase_map`, `has_git`, `project_path`.
104
104
 
@@ -66,7 +66,7 @@ Read all files referenced by the invoking prompt's execution_context before star
66
66
 
67
67
  **MANDATORY FIRST STEP - Execute init command:**
68
68
 
69
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
69
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
70
70
 
71
71
  Parse JSON for: `default_workspace_base`, `child_repos`, `child_repo_count`, `worktree_available`, `is_git_repo`, `cwd_repo_name`, `project_root`.
72
72
 
@@ -26,7 +26,7 @@
26
26
  <out type="string" name="timestamp" />
27
27
  </outs>
28
28
  </shell>
29
- <!-- CLEAR _auto_chain_active chain ends here -->
29
+ <!-- CLEAR _auto_chain_active - chain ends here -->
30
30
  <shell command="pi-gsd-tools">
31
31
  <args>
32
32
  <arg string="config-set" />
@@ -44,14 +44,14 @@ Plan all unplanned phases in the current milestone in a single orchestrated sess
44
44
 
45
45
  ---
46
46
 
47
- ## Mode Selection (step 0 always first)
47
+ ## Mode Selection (step 0 - always first)
48
48
 
49
49
  Ask the user ONE binary question:
50
50
 
51
51
  > **"Should I ask you questions during planning, or plan everything silently and flag doubts at the end?"**
52
52
  >
53
- > - **Interactive** I'll ask targeted questions per phase when I hit real ambiguity
54
- > - **Silent** Plan autonomously; collect flags for review at the end
53
+ > - **Interactive** - I'll ask targeted questions per phase when I hit real ambiguity
54
+ > - **Silent** - Plan autonomously; collect flags for review at the end
55
55
 
56
56
  Store the answer as `MODE` (interactive | silent). Do not ask again.
57
57
 
@@ -80,10 +80,10 @@ Read `.planning/REQUIREMENTS.md` and the phase entry from ROADMAP.md (goal + suc
80
80
  Ask internally: *"Does executing this phase risk implementing anything not covered by active requirements, or conflict with what previous phases were meant to deliver?"*
81
81
 
82
82
  Classify risk:
83
- - **low** continue silently
84
- - **medium** log in scope-notes, continue
85
- - **high + interactive** surface to user before proceeding, ask whether to adjust or continue
86
- - **high + silent** log prominently, continue, surface in final summary
83
+ - **low** - continue silently
84
+ - **medium** - log in scope-notes, continue
85
+ - **high + interactive** - surface to user before proceeding, ask whether to adjust or continue
86
+ - **high + silent** - log prominently, continue, surface in final summary
87
87
 
88
88
  ### 2. Plan the Phase
89
89
 
@@ -101,7 +101,7 @@ After each phase plan is committed:
101
101
  pi-gsd-tools state update current_phase ${N}
102
102
  ```
103
103
 
104
- Announce: `✓ Phase ${N} planned ${plan_count} plan(s) created`
104
+ Announce: `✓ Phase ${N} planned - ${plan_count} plan(s) created`
105
105
 
106
106
  Check context remaining. If < 25%: stop immediately, emit summary of planned vs remaining phases, suggest `/gsd-plan-milestone --from ${next_unplanned}` to continue.
107
107
 
@@ -62,7 +62,7 @@ Read all files referenced by the invoking prompt's execution_context before star
62
62
  <step name="init_context">
63
63
  **Load progress context (paths only):**
64
64
 
65
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
65
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
66
66
 
67
67
  Extract from init JSON: `project_exists`, `roadmap_exists`, `state_exists`, `phases`, `current_phase`, `next_phase`, `milestone_version`, `completed_count`, `phase_count`, `paused_at`, `state_path`, `roadmap_path`, `project_path`, `config_path`.
68
68
 
@@ -189,7 +189,7 @@ If `$FULL_MODE` only:
189
189
 
190
190
  **Step 2: Initialize**
191
191
 
192
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
192
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
193
193
 
194
194
  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`.
195
195
 
@@ -93,7 +93,7 @@ Exit.
93
93
  <step name="init_context">
94
94
  Load phase operation context:
95
95
 
96
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
96
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
97
97
 
98
98
  Extract: `phase_found`, `phase_dir`, `phase_number`, `commit_docs`, `roadmap_exists`.
99
99
 
@@ -66,7 +66,7 @@ Read all files referenced by the invoking prompt's execution_context before star
66
66
 
67
67
  Extract workspace name from $ARGUMENTS.
68
68
 
69
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
69
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
70
70
 
71
71
  Parse JSON for: `workspace_name`, `workspace_path`, `has_manifest`, `strategy`, `repos`, `repo_count`, `dirty_repos`, `has_dirty_repos`.
72
72
 
@@ -100,7 +100,7 @@ Resolve model for:
100
100
 
101
101
  @.pi/gsd/references/phase-argument-parsing.md
102
102
 
103
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
103
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
104
104
 
105
105
  ## Step 4: Spawn Researcher
106
106
 
@@ -84,7 +84,7 @@ Instantly restore full project context so "Where were we?" has an immediate, com
84
84
  <step name="initialize">
85
85
  Load all context in one call:
86
86
 
87
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
87
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
88
88
 
89
89
  Parse JSON for: `state_exists`, `roadmap_exists`, `project_exists`, `planning_exists`, `has_interrupted_agent`, `interrupted_agent_id`, `commit_docs`.
90
90
 
@@ -78,7 +78,7 @@ A plan that survives review from 2-3 independent AI systems is more robust.
78
78
  <step name="detect_clis">
79
79
  Check which AI CLIs are available on the system:
80
80
 
81
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
81
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
82
82
 
83
83
  Read from init: `phase_dir`, `phase_number`, `padded_phase`.
84
84
 
@@ -37,7 +37,7 @@ Read all files referenced by the invoking prompt's execution_context before star
37
37
  <step name="ensure_and_load_config">
38
38
  Ensure config exists and load current state:
39
39
 
40
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
40
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
41
41
 
42
42
  Creates `.planning/config.json` with defaults if missing and loads current config values.
43
43
  </step>
@@ -51,7 +51,7 @@ Read all files referenced by the invoking prompt's execution_context before star
51
51
  <step name="initialize">
52
52
  Parse arguments and load project state:
53
53
 
54
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
54
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
55
55
 
56
56
  Parse from init JSON: `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `padded_phase`, `commit_docs`.
57
57
 
@@ -108,7 +108,7 @@ Valid GSD subagent types (use exact names - do not fall back to 'general-purpose
108
108
 
109
109
  ## 1. Initialize
110
110
 
111
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
111
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
112
112
 
113
113
  Parse JSON for: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_context`, `has_research`, `commit_docs`.
114
114
 
@@ -94,7 +94,7 @@ Valid GSD subagent types (use exact names - do not fall back to 'general-purpose
94
94
 
95
95
  ## 0. Initialize
96
96
 
97
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
97
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
98
98
 
99
99
  Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `commit_docs`.
100
100
 
@@ -92,7 +92,7 @@
92
92
 
93
93
  ## 0. Initialize
94
94
 
95
- <!-- Context pre-injected above via WXP variables available via <gsd-paste name="..."> -->
95
+ <!-- Context pre-injected above via WXP - variables available via <gsd-paste name="..."> -->
96
96
 
97
97
  Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`.
98
98