pi-gsd 1.9.1 → 1.9.2

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 (48) hide show
  1. package/.gsd/harnesses/pi/get-shit-done/workflows/add-phase.md +2 -2
  2. package/.gsd/harnesses/pi/get-shit-done/workflows/add-tests.md +2 -2
  3. package/.gsd/harnesses/pi/get-shit-done/workflows/add-todo.md +3 -3
  4. package/.gsd/harnesses/pi/get-shit-done/workflows/audit-milestone.md +7 -7
  5. package/.gsd/harnesses/pi/get-shit-done/workflows/audit-uat.md +1 -1
  6. package/.gsd/harnesses/pi/get-shit-done/workflows/autonomous.md +16 -16
  7. package/.gsd/harnesses/pi/get-shit-done/workflows/check-todos.md +2 -2
  8. package/.gsd/harnesses/pi/get-shit-done/workflows/cleanup.md +1 -1
  9. package/.gsd/harnesses/pi/get-shit-done/workflows/complete-milestone.md +6 -6
  10. package/.gsd/harnesses/pi/get-shit-done/workflows/diagnose-issues.md +2 -2
  11. package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase-assumptions.md +10 -10
  12. package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase.md +11 -11
  13. package/.gsd/harnesses/pi/get-shit-done/workflows/do.md +1 -1
  14. package/.gsd/harnesses/pi/get-shit-done/workflows/execute-phase.md +18 -18
  15. package/.gsd/harnesses/pi/get-shit-done/workflows/execute-plan.md +14 -14
  16. package/.gsd/harnesses/pi/get-shit-done/workflows/forensics.md +1 -1
  17. package/.gsd/harnesses/pi/get-shit-done/workflows/health.md +2 -2
  18. package/.gsd/harnesses/pi/get-shit-done/workflows/insert-phase.md +2 -2
  19. package/.gsd/harnesses/pi/get-shit-done/workflows/list-workspaces.md +1 -1
  20. package/.gsd/harnesses/pi/get-shit-done/workflows/manager.md +4 -4
  21. package/.gsd/harnesses/pi/get-shit-done/workflows/map-codebase.md +3 -3
  22. package/.gsd/harnesses/pi/get-shit-done/workflows/milestone-summary.md +3 -3
  23. package/.gsd/harnesses/pi/get-shit-done/workflows/new-milestone.md +7 -7
  24. package/.gsd/harnesses/pi/get-shit-done/workflows/new-project.md +14 -14
  25. package/.gsd/harnesses/pi/get-shit-done/workflows/new-workspace.md +1 -1
  26. package/.gsd/harnesses/pi/get-shit-done/workflows/next.md +1 -1
  27. package/.gsd/harnesses/pi/get-shit-done/workflows/pause-work.md +3 -3
  28. package/.gsd/harnesses/pi/get-shit-done/workflows/plan-milestone-gaps.md +2 -2
  29. package/.gsd/harnesses/pi/get-shit-done/workflows/plan-phase.md +15 -15
  30. package/.gsd/harnesses/pi/get-shit-done/workflows/plant-seed.md +1 -1
  31. package/.gsd/harnesses/pi/get-shit-done/workflows/profile-user.md +11 -11
  32. package/.gsd/harnesses/pi/get-shit-done/workflows/progress.md +10 -10
  33. package/.gsd/harnesses/pi/get-shit-done/workflows/quick.md +6 -6
  34. package/.gsd/harnesses/pi/get-shit-done/workflows/remove-phase.md +4 -4
  35. package/.gsd/harnesses/pi/get-shit-done/workflows/remove-workspace.md +1 -1
  36. package/.gsd/harnesses/pi/get-shit-done/workflows/research-phase.md +3 -3
  37. package/.gsd/harnesses/pi/get-shit-done/workflows/resume-project.md +1 -1
  38. package/.gsd/harnesses/pi/get-shit-done/workflows/review.md +2 -2
  39. package/.gsd/harnesses/pi/get-shit-done/workflows/settings.md +2 -2
  40. package/.gsd/harnesses/pi/get-shit-done/workflows/ship.md +5 -5
  41. package/.gsd/harnesses/pi/get-shit-done/workflows/stats.md +1 -1
  42. package/.gsd/harnesses/pi/get-shit-done/workflows/transition.md +6 -6
  43. package/.gsd/harnesses/pi/get-shit-done/workflows/ui-phase.md +9 -9
  44. package/.gsd/harnesses/pi/get-shit-done/workflows/ui-review.md +4 -4
  45. package/.gsd/harnesses/pi/get-shit-done/workflows/validate-phase.md +5 -5
  46. package/.gsd/harnesses/pi/get-shit-done/workflows/verify-phase.md +6 -6
  47. package/.gsd/harnesses/pi/get-shit-done/workflows/verify-work.md +5 -5
  48. package/package.json +1 -1
@@ -29,7 +29,7 @@ Exit.
29
29
  Load phase operation context:
30
30
 
31
31
  ```bash
32
- INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" init phase-op "0")
32
+ INIT=$(pi-gsd-tools init phase-op "0")
33
33
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
34
34
  ```
35
35
 
@@ -45,7 +45,7 @@ Exit.
45
45
  **Delegate the phase addition to gsd-tools:**
46
46
 
47
47
  ```bash
48
- RESULT=$(node ".pi/gsd/bin/gsd-tools.cjs" phase add "${description}")
48
+ RESULT=$(pi-gsd-tools phase add "${description}")
49
49
  ```
50
50
 
51
51
  The CLI handles:
@@ -33,7 +33,7 @@ Exit.
33
33
  Load phase operation context:
34
34
 
35
35
  ```bash
36
- INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" init phase-op "${PHASE_ARG}")
36
+ INIT=$(pi-gsd-tools init phase-op "${PHASE_ARG}")
37
37
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
38
38
  ```
39
39
 
@@ -297,7 +297,7 @@ Create a test coverage report and present to user:
297
297
 
298
298
  Record test generation in project state:
299
299
  ```bash
300
- node ".pi/gsd/bin/gsd-tools.cjs" state-snapshot
300
+ pi-gsd-tools state-snapshot
301
301
  ```
302
302
 
303
303
  If there are passing tests to commit:
@@ -12,7 +12,7 @@ Read all files referenced by the invoking prompt's execution_context before star
12
12
  Load todo context:
13
13
 
14
14
  ```bash
15
- INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" init todos)
15
+ INIT=$(pi-gsd-tools init todos)
16
16
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
17
17
  ```
18
18
 
@@ -84,7 +84,7 @@ Use values from init context: `timestamp` and `date` are already available.
84
84
 
85
85
  Generate slug for the title:
86
86
  ```bash
87
- slug=$(node ".pi/gsd/bin/gsd-tools.cjs" generate-slug "$title" --raw)
87
+ slug=$(pi-gsd-tools generate-slug "$title" --raw)
88
88
  ```
89
89
 
90
90
  Write to `.planning/todos/pending/${date}-${slug}.md`:
@@ -119,7 +119,7 @@ If `.planning/STATE.md` exists:
119
119
  Commit the todo and any updated state:
120
120
 
121
121
  ```bash
122
- node ".pi/gsd/bin/gsd-tools.cjs" commit "docs: capture todo - [title]" --files .planning/todos/pending/[filename] .planning/STATE.md
122
+ pi-gsd-tools commit "docs: capture todo - [title]" --files .planning/todos/pending/[filename] .planning/STATE.md
123
123
  ```
124
124
 
125
125
  Tool respects `commit_docs` config and gitignore automatically.
@@ -16,23 +16,23 @@ Valid GSD subagent types (use exact names - do not fall back to 'general-purpose
16
16
  ## 0. Initialize Milestone Context
17
17
 
18
18
  ```bash
19
- INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" init milestone-op)
19
+ INIT=$(pi-gsd-tools init milestone-op)
20
20
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
21
- AGENT_SKILLS_CHECKER=$(node ".pi/gsd/bin/gsd-tools.cjs" agent-skills gsd-integration-checker 2>/dev/null)
21
+ AGENT_SKILLS_CHECKER=$(pi-gsd-tools agent-skills gsd-integration-checker 2>/dev/null)
22
22
  ```
23
23
 
24
24
  Extract from init JSON: `milestone_version`, `milestone_name`, `phase_count`, `completed_phases`, `commit_docs`.
25
25
 
26
26
  Resolve integration checker model:
27
27
  ```bash
28
- integration_checker_model=$(node ".pi/gsd/bin/gsd-tools.cjs" resolve-model gsd-integration-checker --raw)
28
+ integration_checker_model=$(pi-gsd-tools resolve-model gsd-integration-checker --raw)
29
29
  ```
30
30
 
31
31
  ## 1. Determine Milestone Scope
32
32
 
33
33
  ```bash
34
34
  # Get phases in milestone (sorted numerically, handles decimals)
35
- node ".pi/gsd/bin/gsd-tools.cjs" phases list
35
+ pi-gsd-tools phases list
36
36
  ```
37
37
 
38
38
  - Parse version from arguments or detect current from ROADMAP.md
@@ -46,7 +46,7 @@ For each phase directory, read the VERIFICATION.md:
46
46
 
47
47
  ```bash
48
48
  # For each phase, use find-phase to resolve the directory (handles archived phases)
49
- PHASE_INFO=$(node ".pi/gsd/bin/gsd-tools.cjs" find-phase 01 --raw)
49
+ PHASE_INFO=$(pi-gsd-tools find-phase 01 --raw)
50
50
  # Extract directory from JSON, then read VERIFICATION.md from that directory
51
51
  # Repeat for each phase number from ROADMAP.md
52
52
  ```
@@ -113,7 +113,7 @@ For each phase's SUMMARY.md, extract `requirements-completed` from YAML frontmat
113
113
  ```bash
114
114
  for summary in .planning/phases/*-*/*-SUMMARY.md; do
115
115
  [ -e "$summary" ] || continue
116
- node ".pi/gsd/bin/gsd-tools.cjs" summary-extract "$summary" --fields requirements_completed --pick requirements_completed
116
+ pi-gsd-tools summary-extract "$summary" --fields requirements_completed --pick requirements_completed
117
117
  done
118
118
  ```
119
119
 
@@ -141,7 +141,7 @@ For each REQ-ID, determine status using all three sources:
141
141
  Skip if `workflow.nyquist_validation` is explicitly `false` (absent = enabled).
142
142
 
143
143
  ```bash
144
- NYQUIST_CONFIG=$(node ".pi/gsd/bin/gsd-tools.cjs" config-get workflow.nyquist_validation --raw 2>/dev/null)
144
+ NYQUIST_CONFIG=$(pi-gsd-tools config-get workflow.nyquist_validation --raw 2>/dev/null)
145
145
  ```
146
146
 
147
147
  If `false`: skip entirely.
@@ -8,7 +8,7 @@ Cross-phase audit of all UAT and verification files. Finds every outstanding ite
8
8
  Run the CLI audit:
9
9
 
10
10
  ```bash
11
- AUDIT=$(node ".pi/gsd/bin/gsd-tools.cjs" audit-uat --raw)
11
+ AUDIT=$(pi-gsd-tools audit-uat --raw)
12
12
  ```
13
13
 
14
14
  Parse JSON for `results` array and `summary` object.
@@ -28,7 +28,7 @@ fi
28
28
  Bootstrap via milestone-level init:
29
29
 
30
30
  ```bash
31
- INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" init milestone-op)
31
+ INIT=$(pi-gsd-tools init milestone-op)
32
32
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
33
33
  ```
34
34
 
@@ -59,7 +59,7 @@ If `FROM_PHASE` is set, display: `Starting from phase ${FROM_PHASE}`
59
59
  Run phase discovery:
60
60
 
61
61
  ```bash
62
- ROADMAP=$(node ".pi/gsd/bin/gsd-tools.cjs" roadmap analyze)
62
+ ROADMAP=$(pi-gsd-tools roadmap analyze)
63
63
  ```
64
64
 
65
65
  Parse the JSON `phases` array.
@@ -98,7 +98,7 @@ Exit cleanly.
98
98
  **Fetch details for each phase:**
99
99
 
100
100
  ```bash
101
- DETAIL=$(node ".pi/gsd/bin/gsd-tools.cjs" roadmap get-phase ${PHASE_NUM})
101
+ DETAIL=$(pi-gsd-tools roadmap get-phase ${PHASE_NUM})
102
102
  ```
103
103
 
104
104
  Extract `phase_name`, `goal`, `success_criteria` from each. Store for use in execute_phase and transition messages.
@@ -124,7 +124,7 @@ Where N = current phase number (from the ROADMAP, e.g., 6), T = total milestone
124
124
  Check if CONTEXT.md already exists for this phase:
125
125
 
126
126
  ```bash
127
- PHASE_STATE=$(node ".pi/gsd/bin/gsd-tools.cjs" init phase-op ${PHASE_NUM})
127
+ PHASE_STATE=$(pi-gsd-tools init phase-op ${PHASE_NUM})
128
128
  ```
129
129
 
130
130
  Parse `has_context` from JSON.
@@ -140,7 +140,7 @@ Proceed to 3b.
140
140
  **If has_context is false:** Check if discuss is disabled via settings:
141
141
 
142
142
  ```bash
143
- SKIP_DISCUSS=$(node ".pi/gsd/bin/gsd-tools.cjs" config-get workflow.skip_discuss 2>/dev/null || echo "false")
143
+ SKIP_DISCUSS=$(pi-gsd-tools config-get workflow.skip_discuss 2>/dev/null || echo "false")
144
144
  ```
145
145
 
146
146
  **If SKIP_DISCUSS is `true`:** Skip discuss entirely - the ROADMAP phase description is the spec. Display:
@@ -152,7 +152,7 @@ Phase ${PHASE_NUM}: Discuss skipped (workflow.skip_discuss=true) - using ROADMAP
152
152
  Write a minimal CONTEXT.md so downstream plan-phase has valid input. Get phase details:
153
153
 
154
154
  ```bash
155
- DETAIL=$(node ".pi/gsd/bin/gsd-tools.cjs" roadmap get-phase ${PHASE_NUM})
155
+ DETAIL=$(pi-gsd-tools roadmap get-phase ${PHASE_NUM})
156
156
  ```
157
157
 
158
158
  Extract `goal` and `requirements` from JSON. Write `${phase_dir}/${padded_phase}-CONTEXT.md` with:
@@ -204,7 +204,7 @@ None - discuss phase skipped.
204
204
  Commit the minimal context:
205
205
 
206
206
  ```bash
207
- node ".pi/gsd/bin/gsd-tools.cjs" commit "docs(${PADDED_PHASE}): auto-generated context (discuss skipped)" --files "${phase_dir}/${padded_phase}-CONTEXT.md"
207
+ pi-gsd-tools commit "docs(${PADDED_PHASE}): auto-generated context (discuss skipped)" --files "${phase_dir}/${padded_phase}-CONTEXT.md"
208
208
  ```
209
209
 
210
210
  Proceed to 3b.
@@ -214,7 +214,7 @@ Proceed to 3b.
214
214
  After smart_discuss completes, verify context was written:
215
215
 
216
216
  ```bash
217
- PHASE_STATE=$(node ".pi/gsd/bin/gsd-tools.cjs" init phase-op ${PHASE_NUM})
217
+ PHASE_STATE=$(pi-gsd-tools init phase-op ${PHASE_NUM})
218
218
  ```
219
219
 
220
220
  Check `has_context`. If false → go to handle_blocker: "Smart discuss for phase ${PHASE_NUM} did not produce CONTEXT.md."
@@ -224,7 +224,7 @@ Check `has_context`. If false → go to handle_blocker: "Smart discuss for phase
224
224
  Check if this phase has frontend indicators and whether a UI-SPEC already exists:
225
225
 
226
226
  ```bash
227
- PHASE_SECTION=$(node ".pi/gsd/bin/gsd-tools.cjs" roadmap get-phase ${PHASE_NUM} 2>/dev/null)
227
+ PHASE_SECTION=$(pi-gsd-tools roadmap get-phase ${PHASE_NUM} 2>/dev/null)
228
228
  echo "$PHASE_SECTION" | grep -iE "UI|interface|frontend|component|layout|page|screen|view|form|dashboard|widget" > /dev/null 2>&1
229
229
  HAS_UI=$?
230
230
  UI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-UI-SPEC.md 2>/dev/null | head -1)
@@ -233,7 +233,7 @@ UI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-UI-SPEC.md 2>/dev/null | head -1)
233
233
  Check if UI phase workflow is enabled:
234
234
 
235
235
  ```bash
236
- UI_PHASE_CFG=$(node ".pi/gsd/bin/gsd-tools.cjs" config-get workflow.ui_phase 2>/dev/null || echo "true")
236
+ UI_PHASE_CFG=$(pi-gsd-tools config-get workflow.ui_phase 2>/dev/null || echo "true")
237
237
  ```
238
238
 
239
239
  **If `HAS_UI` is 0 (frontend indicators found) AND `UI_SPEC_FILE` is empty (no UI-SPEC exists) AND `UI_PHASE_CFG` is not `false`:**
@@ -283,7 +283,7 @@ VERIFY_STATUS=$(grep "^status:" "${PHASE_DIR}"/*-VERIFICATION.md 2>/dev/null | h
283
283
  Where `PHASE_DIR` comes from the `init phase-op` call already made in step 3a. If the variable is not in scope, re-fetch:
284
284
 
285
285
  ```bash
286
- PHASE_STATE=$(node ".pi/gsd/bin/gsd-tools.cjs" init phase-op ${PHASE_NUM})
286
+ PHASE_STATE=$(pi-gsd-tools init phase-op ${PHASE_NUM})
287
287
  ```
288
288
 
289
289
  Parse `phase_dir` from the JSON.
@@ -377,7 +377,7 @@ UI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-UI-SPEC.md 2>/dev/null | head -1)
377
377
  Check if UI review is enabled:
378
378
 
379
379
  ```bash
380
- UI_REVIEW_CFG=$(node ".pi/gsd/bin/gsd-tools.cjs" config-get workflow.ui_review 2>/dev/null || echo "true")
380
+ UI_REVIEW_CFG=$(pi-gsd-tools config-get workflow.ui_review 2>/dev/null || echo "true")
381
381
  ```
382
382
 
383
383
  **If `UI_SPEC_FILE` is not empty AND `UI_REVIEW_CFG` is not `false`:**
@@ -409,7 +409,7 @@ Run smart discuss for the current phase. Proposes grey area answers in batch tab
409
409
  **Inputs:** `PHASE_NUM` from execute_phase. Run init to get phase paths:
410
410
 
411
411
  ```bash
412
- PHASE_STATE=$(node ".pi/gsd/bin/gsd-tools.cjs" init phase-op ${PHASE_NUM})
412
+ PHASE_STATE=$(pi-gsd-tools init phase-op ${PHASE_NUM})
413
413
  ```
414
414
 
415
415
  Parse from JSON: `phase_dir`, `phase_slug`, `padded_phase`, `phase_name`.
@@ -498,7 +498,7 @@ Read the 3-5 most relevant files to understand existing patterns.
498
498
  **Get phase details:**
499
499
 
500
500
  ```bash
501
- DETAIL=$(node ".pi/gsd/bin/gsd-tools.cjs" roadmap get-phase ${PHASE_NUM})
501
+ DETAIL=$(pi-gsd-tools roadmap get-phase ${PHASE_NUM})
502
502
  ```
503
503
 
504
504
  Extract `goal`, `requirements`, `success_criteria` from the JSON response.
@@ -670,7 +670,7 @@ Write the file.
670
670
  **Commit:**
671
671
 
672
672
  ```bash
673
- node ".pi/gsd/bin/gsd-tools.cjs" commit "docs(${PADDED_PHASE}): smart discuss context" --files "${phase_dir}/${padded_phase}-CONTEXT.md"
673
+ pi-gsd-tools commit "docs(${PADDED_PHASE}): smart discuss context" --files "${phase_dir}/${padded_phase}-CONTEXT.md"
674
674
  ```
675
675
 
676
676
  Display confirmation:
@@ -689,7 +689,7 @@ Decisions captured: {count} across {area_count} areas
689
689
  After each phase completes, re-read ROADMAP.md to catch phases inserted mid-execution (decimal phases like 5.1):
690
690
 
691
691
  ```bash
692
- ROADMAP=$(node ".pi/gsd/bin/gsd-tools.cjs" roadmap analyze)
692
+ ROADMAP=$(pi-gsd-tools roadmap analyze)
693
693
  ```
694
694
 
695
695
  Re-filter incomplete phases using the same logic as discover_phases:
@@ -12,7 +12,7 @@ Read all files referenced by the invoking prompt's execution_context before star
12
12
  Load todo context:
13
13
 
14
14
  ```bash
15
- INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" init todos)
15
+ INIT=$(pi-gsd-tools init todos)
16
16
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
17
17
  ```
18
18
 
@@ -155,7 +155,7 @@ If todo was moved to done/, commit the change:
155
155
 
156
156
  ```bash
157
157
  git rm --cached .planning/todos/pending/[filename] 2>/dev/null || true
158
- node ".pi/gsd/bin/gsd-tools.cjs" commit "docs: start work on todo - [title]" --files .planning/todos/done/[filename] .planning/STATE.md
158
+ pi-gsd-tools commit "docs: start work on todo - [title]" --files .planning/todos/done/[filename] .planning/STATE.md
159
159
  ```
160
160
 
161
161
  Tool respects `commit_docs` config and gitignore automatically.
@@ -122,7 +122,7 @@ Repeat for all milestones in the cleanup set.
122
122
  Commit the changes:
123
123
 
124
124
  ```bash
125
- node ".pi/gsd/bin/gsd-tools.cjs" commit "chore: archive phase directories from completed milestones" --files .planning/milestones/ .planning/phases/
125
+ pi-gsd-tools commit "chore: archive phase directories from completed milestones" --files .planning/milestones/ .planning/phases/
126
126
  ```
127
127
 
128
128
  </step>
@@ -42,7 +42,7 @@ When a milestone completes:
42
42
  **Use `roadmap analyze` for comprehensive readiness check:**
43
43
 
44
44
  ```bash
45
- ROADMAP=$(node ".pi/gsd/bin/gsd-tools.cjs" roadmap analyze)
45
+ ROADMAP=$(pi-gsd-tools roadmap analyze)
46
46
  ```
47
47
 
48
48
  This returns all phases with plan/summary counts and disk status. Use this to verify:
@@ -157,7 +157,7 @@ Extract one-liners from SUMMARY.md files using summary-extract:
157
157
  # For each phase in milestone, extract one-liner
158
158
  for summary in .planning/phases/*-*/*-SUMMARY.md; do
159
159
  [ -e "$summary" ] || continue
160
- node ".pi/gsd/bin/gsd-tools.cjs" summary-extract "$summary" --fields one_liner --pick one_liner
160
+ pi-gsd-tools summary-extract "$summary" --fields one_liner --pick one_liner
161
161
  done
162
162
  ```
163
163
 
@@ -370,7 +370,7 @@ Update `.planning/ROADMAP.md` - group completed milestone phases:
370
370
  **Delegate archival to gsd-tools:**
371
371
 
372
372
  ```bash
373
- ARCHIVE=$(node ".pi/gsd/bin/gsd-tools.cjs" milestone complete "v[X.Y]" --name "[Milestone Name]")
373
+ ARCHIVE=$(pi-gsd-tools milestone complete "v[X.Y]" --name "[Milestone Name]")
374
374
  ```
375
375
 
376
376
  The CLI handles:
@@ -497,7 +497,7 @@ If the "## Cross-Milestone Trends" section exists, update the tables with new da
497
497
 
498
498
  **Commit:**
499
499
  ```bash
500
- node ".pi/gsd/bin/gsd-tools.cjs" commit "docs: update retrospective for v${VERSION}" --files .planning/RETROSPECTIVE.md
500
+ pi-gsd-tools commit "docs: update retrospective for v${VERSION}" --files .planning/RETROSPECTIVE.md
501
501
  ```
502
502
 
503
503
  </step>
@@ -531,7 +531,7 @@ Check branching strategy and offer merge options.
531
531
  Use `init milestone-op` for context, or load config directly:
532
532
 
533
533
  ```bash
534
- INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" init execute-phase "1")
534
+ INIT=$(pi-gsd-tools init execute-phase "1")
535
535
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
536
536
  ```
537
537
 
@@ -680,7 +680,7 @@ git push origin v[X.Y]
680
680
  Commit milestone completion.
681
681
 
682
682
  ```bash
683
- node ".pi/gsd/bin/gsd-tools.cjs" commit "chore: complete v[X.Y] milestone" --files .planning/milestones/v[X.Y]-ROADMAP.md .planning/milestones/v[X.Y]-REQUIREMENTS.md .planning/milestones/v[X.Y]-MILESTONE-AUDIT.md .planning/MILESTONES.md .planning/PROJECT.md .planning/STATE.md
683
+ pi-gsd-tools commit "chore: complete v[X.Y] milestone" --files .planning/milestones/v[X.Y]-ROADMAP.md .planning/milestones/v[X.Y]-REQUIREMENTS.md .planning/milestones/v[X.Y]-MILESTONE-AUDIT.md .planning/MILESTONES.md .planning/PROJECT.md .planning/STATE.md
684
684
  ```
685
685
  ```
686
686
 
@@ -81,7 +81,7 @@ This runs in parallel - all gaps investigated simultaneously.
81
81
  **Load agent skills:**
82
82
 
83
83
  ```bash
84
- AGENT_SKILLS_DEBUGGER=$(node ".pi/gsd/bin/gsd-tools.cjs" agent-skills gsd-debugger 2>/dev/null)
84
+ AGENT_SKILLS_DEBUGGER=$(pi-gsd-tools agent-skills gsd-debugger 2>/dev/null)
85
85
  ```
86
86
 
87
87
  **Spawn debug agents in parallel:**
@@ -170,7 +170,7 @@ Update status in frontmatter to "diagnosed".
170
170
 
171
171
  Commit the updated UAT.md:
172
172
  ```bash
173
- node ".pi/gsd/bin/gsd-tools.cjs" commit "docs({phase_num}): add root causes from diagnosis" --files ".planning/phases/XX-name/{phase_num}-UAT.md"
173
+ pi-gsd-tools commit "docs({phase_num}): add root causes from diagnosis" --files ".planning/phases/XX-name/{phase_num}-UAT.md"
174
174
  ```
175
175
  </step>
176
176
 
@@ -64,9 +64,9 @@ plain-text numbered list and ask the user to type their choice number.
64
64
  Phase number from argument (required).
65
65
 
66
66
  ```bash
67
- INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" init phase-op "${PHASE}")
67
+ INIT=$(pi-gsd-tools init phase-op "${PHASE}")
68
68
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
69
- AGENT_SKILLS_ANALYZER=$(node ".pi/gsd/bin/gsd-tools.cjs" agent-skills gsd-assumptions-analyzer 2>/dev/null)
69
+ AGENT_SKILLS_ANALYZER=$(pi-gsd-tools agent-skills gsd-assumptions-analyzer 2>/dev/null)
70
70
  ```
71
71
 
72
72
  Parse JSON for: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`,
@@ -171,7 +171,7 @@ Structure the extracted information for use in assumption generation.
171
171
  Check if any pending todos are relevant to this phase's scope.
172
172
 
173
173
  ```bash
174
- TODO_MATCHES=$(node ".pi/gsd/bin/gsd-tools.cjs" todo match-phase "${PHASE_NUMBER}")
174
+ TODO_MATCHES=$(pi-gsd-tools todo match-phase "${PHASE_NUMBER}")
175
175
  ```
176
176
 
177
177
  Parse JSON for: `todo_count`, `matches[]`.
@@ -530,7 +530,7 @@ Write file.
530
530
  Commit phase context and discussion log:
531
531
 
532
532
  ```bash
533
- node ".pi/gsd/bin/gsd-tools.cjs" commit "docs(${padded_phase}): capture phase context (assumptions mode)" --files "${phase_dir}/${padded_phase}-CONTEXT.md" "${phase_dir}/${padded_phase}-DISCUSSION-LOG.md"
533
+ pi-gsd-tools commit "docs(${padded_phase}): capture phase context (assumptions mode)" --files "${phase_dir}/${padded_phase}-CONTEXT.md" "${phase_dir}/${padded_phase}-DISCUSSION-LOG.md"
534
534
  ```
535
535
 
536
536
  Confirm: "Committed: docs(${padded_phase}): capture phase context (assumptions mode)"
@@ -540,7 +540,7 @@ Confirm: "Committed: docs(${padded_phase}): capture phase context (assumptions m
540
540
  Update STATE.md with session info:
541
541
 
542
542
  ```bash
543
- node ".pi/gsd/bin/gsd-tools.cjs" state record-session \
543
+ pi-gsd-tools state record-session \
544
544
  --stopped-at "Phase ${PHASE} context gathered (assumptions mode)" \
545
545
  --resume-file "${phase_dir}/${padded_phase}-CONTEXT.md"
546
546
  ```
@@ -548,7 +548,7 @@ node ".pi/gsd/bin/gsd-tools.cjs" state record-session \
548
548
  Commit STATE.md:
549
549
 
550
550
  ```bash
551
- node ".pi/gsd/bin/gsd-tools.cjs" commit "docs(state): record phase ${PHASE} context session" --files .planning/STATE.md
551
+ pi-gsd-tools commit "docs(state): record phase ${PHASE} context session" --files .planning/STATE.md
552
552
  ```
553
553
  </step>
554
554
 
@@ -601,18 +601,18 @@ Check for auto-advance trigger:
601
601
  2. Sync chain flag:
602
602
  ```bash
603
603
  if [[ ! "$ARGUMENTS" =~ --auto ]]; then
604
- node ".pi/gsd/bin/gsd-tools.cjs" config-set workflow._auto_chain_active false 2>/dev/null
604
+ pi-gsd-tools config-set workflow._auto_chain_active false 2>/dev/null
605
605
  fi
606
606
  ```
607
607
  3. Read chain flag and user preference:
608
608
  ```bash
609
- AUTO_CHAIN=$(node ".pi/gsd/bin/gsd-tools.cjs" config-get workflow._auto_chain_active 2>/dev/null || echo "false")
610
- AUTO_CFG=$(node ".pi/gsd/bin/gsd-tools.cjs" config-get workflow.auto_advance 2>/dev/null || echo "false")
609
+ AUTO_CHAIN=$(pi-gsd-tools config-get workflow._auto_chain_active 2>/dev/null || echo "false")
610
+ AUTO_CFG=$(pi-gsd-tools config-get workflow.auto_advance 2>/dev/null || echo "false")
611
611
  ```
612
612
 
613
613
  **If `--auto` flag present AND `AUTO_CHAIN` is not true:**
614
614
  ```bash
615
- node ".pi/gsd/bin/gsd-tools.cjs" config-set workflow._auto_chain_active true
615
+ pi-gsd-tools config-set workflow._auto_chain_active true
616
616
  ```
617
617
 
618
618
  **If `--auto` flag present OR `AUTO_CHAIN` is true OR `AUTO_CFG` is true:**
@@ -132,9 +132,9 @@ Text mode applies to ALL workflows in the session, not just discuss-phase.
132
132
  Phase number from argument (required).
133
133
 
134
134
  ```bash
135
- INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" init phase-op "${PHASE}")
135
+ INIT=$(pi-gsd-tools init phase-op "${PHASE}")
136
136
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
137
- AGENT_SKILLS_ADVISOR=$(node ".pi/gsd/bin/gsd-tools.cjs" agent-skills gsd-advisor 2>/dev/null)
137
+ AGENT_SKILLS_ADVISOR=$(pi-gsd-tools agent-skills gsd-advisor 2>/dev/null)
138
138
  ```
139
139
 
140
140
  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`.
@@ -260,7 +260,7 @@ Check if any pending todos are relevant to this phase's scope. Surfaces backlog
260
260
 
261
261
  **Load and match todos:**
262
262
  ```bash
263
- TODO_MATCHES=$(node ".pi/gsd/bin/gsd-tools.cjs" todo match-phase "${PHASE_NUMBER}")
263
+ TODO_MATCHES=$(pi-gsd-tools todo match-phase "${PHASE_NUMBER}")
264
264
  ```
265
265
 
266
266
  Parse JSON for: `todo_count`, `matches[]` (each with `file`, `title`, `area`, `score`, `reasons`).
@@ -385,7 +385,7 @@ Check if advisor mode should activate:
385
385
 
386
386
  3. Resolve model for advisor agents:
387
387
  ```bash
388
- ADVISOR_MODEL=$(node ".pi/gsd/bin/gsd-tools.cjs" resolve-model gsd-advisor-researcher --raw)
388
+ ADVISOR_MODEL=$(pi-gsd-tools resolve-model gsd-advisor-researcher --raw)
389
389
  ```
390
390
 
391
391
  If ADVISOR_MODE is false, skip all advisor-specific steps - workflow proceeds with existing conversational flow unchanged.
@@ -936,7 +936,7 @@ Write file.
936
936
  Commit phase context and discussion log:
937
937
 
938
938
  ```bash
939
- node ".pi/gsd/bin/gsd-tools.cjs" commit "docs(${padded_phase}): capture phase context" --files "${phase_dir}/${padded_phase}-CONTEXT.md" "${phase_dir}/${padded_phase}-DISCUSSION-LOG.md"
939
+ pi-gsd-tools commit "docs(${padded_phase}): capture phase context" --files "${phase_dir}/${padded_phase}-CONTEXT.md" "${phase_dir}/${padded_phase}-DISCUSSION-LOG.md"
940
940
  ```
941
941
 
942
942
  Confirm: "Committed: docs(${padded_phase}): capture phase context"
@@ -946,7 +946,7 @@ Confirm: "Committed: docs(${padded_phase}): capture phase context"
946
946
  Update STATE.md with session info:
947
947
 
948
948
  ```bash
949
- node ".pi/gsd/bin/gsd-tools.cjs" state record-session \
949
+ pi-gsd-tools state record-session \
950
950
  --stopped-at "Phase ${PHASE} context gathered" \
951
951
  --resume-file "${phase_dir}/${padded_phase}-CONTEXT.md"
952
952
  ```
@@ -954,7 +954,7 @@ node ".pi/gsd/bin/gsd-tools.cjs" state record-session \
954
954
  Commit STATE.md:
955
955
 
956
956
  ```bash
957
- node ".pi/gsd/bin/gsd-tools.cjs" commit "docs(state): record phase ${PHASE} context session" --files .planning/STATE.md
957
+ pi-gsd-tools commit "docs(state): record phase ${PHASE} context session" --files .planning/STATE.md
958
958
  ```
959
959
  </step>
960
960
 
@@ -965,18 +965,18 @@ Check for auto-advance trigger:
965
965
  2. **Sync chain flag with intent** - if user invoked manually (no `--auto`), clear the ephemeral chain flag from any previous interrupted `--auto` chain. This does NOT touch `workflow.auto_advance` (the user's persistent settings preference):
966
966
  ```bash
967
967
  if [[ ! "$ARGUMENTS" =~ --auto ]]; then
968
- node ".pi/gsd/bin/gsd-tools.cjs" config-set workflow._auto_chain_active false 2>/dev/null
968
+ pi-gsd-tools config-set workflow._auto_chain_active false 2>/dev/null
969
969
  fi
970
970
  ```
971
971
  3. Read both the chain flag and user preference:
972
972
  ```bash
973
- AUTO_CHAIN=$(node ".pi/gsd/bin/gsd-tools.cjs" config-get workflow._auto_chain_active 2>/dev/null || echo "false")
974
- AUTO_CFG=$(node ".pi/gsd/bin/gsd-tools.cjs" config-get workflow.auto_advance 2>/dev/null || echo "false")
973
+ AUTO_CHAIN=$(pi-gsd-tools config-get workflow._auto_chain_active 2>/dev/null || echo "false")
974
+ AUTO_CFG=$(pi-gsd-tools config-get workflow.auto_advance 2>/dev/null || echo "false")
975
975
  ```
976
976
 
977
977
  **If `--auto` flag present AND `AUTO_CHAIN` is not true:** Persist chain flag to config (handles direct `--auto` usage without new-project):
978
978
  ```bash
979
- node ".pi/gsd/bin/gsd-tools.cjs" config-set workflow._auto_chain_active true
979
+ pi-gsd-tools config-set workflow._auto_chain_active true
980
980
  ```
981
981
 
982
982
  **If `--auto` flag present OR `AUTO_CHAIN` is true OR `AUTO_CFG` is true:**
@@ -24,7 +24,7 @@ Wait for response before continuing.
24
24
  **Check if project exists.**
25
25
 
26
26
  ```bash
27
- INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" state load 2>/dev/null)
27
+ INIT=$(pi-gsd-tools state load 2>/dev/null)
28
28
  ```
29
29
 
30
30
  Track whether `.planning/` exists - some routes require it, others don't.