pi-gsd 1.9.0 → 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.
- package/.gsd/harnesses/pi/get-shit-done/references/decimal-phase-calculation.md +5 -5
- package/.gsd/harnesses/pi/get-shit-done/references/git-integration.md +4 -4
- package/.gsd/harnesses/pi/get-shit-done/references/git-planning-commit.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/references/model-profile-resolution.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/references/phase-argument-parsing.md +3 -3
- package/.gsd/harnesses/pi/get-shit-done/references/planning-config.md +6 -6
- package/.gsd/harnesses/pi/get-shit-done/references/verification-patterns.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/templates/codebase/structure.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/templates/phase-prompt.md +10 -10
- package/.gsd/harnesses/pi/get-shit-done/workflows/add-phase.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/add-tests.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/add-todo.md +3 -3
- package/.gsd/harnesses/pi/get-shit-done/workflows/audit-milestone.md +7 -7
- package/.gsd/harnesses/pi/get-shit-done/workflows/audit-uat.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/autonomous.md +16 -16
- package/.gsd/harnesses/pi/get-shit-done/workflows/check-todos.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/cleanup.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/complete-milestone.md +7 -7
- package/.gsd/harnesses/pi/get-shit-done/workflows/diagnose-issues.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/discovery-phase.md +5 -5
- package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase-assumptions.md +11 -11
- package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase.md +13 -13
- package/.gsd/harnesses/pi/get-shit-done/workflows/do.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/execute-phase.md +25 -25
- package/.gsd/harnesses/pi/get-shit-done/workflows/execute-plan.md +20 -20
- package/.gsd/harnesses/pi/get-shit-done/workflows/forensics.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/health.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/insert-phase.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/list-workspaces.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/manager.md +6 -6
- package/.gsd/harnesses/pi/get-shit-done/workflows/map-codebase.md +3 -3
- package/.gsd/harnesses/pi/get-shit-done/workflows/milestone-summary.md +3 -3
- package/.gsd/harnesses/pi/get-shit-done/workflows/new-milestone.md +9 -9
- package/.gsd/harnesses/pi/get-shit-done/workflows/new-project.md +19 -19
- package/.gsd/harnesses/pi/get-shit-done/workflows/new-workspace.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/next.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/pause-work.md +3 -3
- package/.gsd/harnesses/pi/get-shit-done/workflows/plan-milestone-gaps.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/plan-phase.md +17 -17
- package/.gsd/harnesses/pi/get-shit-done/workflows/plant-seed.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/profile-user.md +23 -23
- package/.gsd/harnesses/pi/get-shit-done/workflows/progress.md +10 -10
- package/.gsd/harnesses/pi/get-shit-done/workflows/quick.md +6 -6
- package/.gsd/harnesses/pi/get-shit-done/workflows/remove-phase.md +4 -4
- package/.gsd/harnesses/pi/get-shit-done/workflows/remove-workspace.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/research-phase.md +5 -5
- package/.gsd/harnesses/pi/get-shit-done/workflows/resume-project.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/review.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/settings.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/ship.md +5 -5
- package/.gsd/harnesses/pi/get-shit-done/workflows/stats.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/transition.md +6 -6
- package/.gsd/harnesses/pi/get-shit-done/workflows/ui-phase.md +13 -13
- package/.gsd/harnesses/pi/get-shit-done/workflows/ui-review.md +6 -6
- package/.gsd/harnesses/pi/get-shit-done/workflows/validate-phase.md +8 -8
- package/.gsd/harnesses/pi/get-shit-done/workflows/verify-phase.md +9 -9
- package/.gsd/harnesses/pi/get-shit-done/workflows/verify-work.md +7 -7
- package/package.json +1 -1
|
@@ -28,7 +28,7 @@ the agent's training data is 6-18 months stale. Always verify.
|
|
|
28
28
|
2. **Official docs** - When Context7 lacks coverage
|
|
29
29
|
3. **WebSearch LAST** - For comparisons and trends only
|
|
30
30
|
|
|
31
|
-
See .
|
|
31
|
+
See .pi/gsd/templates/discovery.md `<discovery_protocol>` for full protocol.
|
|
32
32
|
</source_hierarchy>
|
|
33
33
|
|
|
34
34
|
<process>
|
|
@@ -107,7 +107,7 @@ For: Choosing between options, new external integration.
|
|
|
107
107
|
|
|
108
108
|
5. **Cross-verify:** Any WebSearch finding → confirm with Context7/official docs.
|
|
109
109
|
|
|
110
|
-
6. **Create DISCOVERY.md** using .
|
|
110
|
+
6. **Create DISCOVERY.md** using .pi/gsd/templates/discovery.md structure:
|
|
111
111
|
|
|
112
112
|
- Summary with recommendation
|
|
113
113
|
- Key findings per option
|
|
@@ -126,7 +126,7 @@ For: Architectural decisions, novel problems, high-risk choices.
|
|
|
126
126
|
|
|
127
127
|
**Process:**
|
|
128
128
|
|
|
129
|
-
1. **Scope the discovery** using .
|
|
129
|
+
1. **Scope the discovery** using .pi/gsd/templates/discovery.md:
|
|
130
130
|
|
|
131
131
|
- Define clear scope
|
|
132
132
|
- Define include/exclude boundaries
|
|
@@ -160,7 +160,7 @@ For: Architectural decisions, novel problems, high-risk choices.
|
|
|
160
160
|
|
|
161
161
|
6. **Create comprehensive DISCOVERY.md:**
|
|
162
162
|
|
|
163
|
-
- Full structure from .
|
|
163
|
+
- Full structure from .pi/gsd/templates/discovery.md
|
|
164
164
|
- Quality report with source attribution
|
|
165
165
|
- Confidence by finding
|
|
166
166
|
- If LOW confidence on any critical finding → add validation checkpoints
|
|
@@ -184,7 +184,7 @@ Ask: What do we need to learn before we can plan this phase?
|
|
|
184
184
|
</step>
|
|
185
185
|
|
|
186
186
|
<step name="create_discovery_scope">
|
|
187
|
-
Use .
|
|
187
|
+
Use .pi/gsd/templates/discovery.md.
|
|
188
188
|
|
|
189
189
|
Include:
|
|
190
190
|
|
|
@@ -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=$(
|
|
67
|
+
INIT=$(pi-gsd-tools init phase-op "${PHASE}")
|
|
68
68
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
69
|
-
AGENT_SKILLS_ANALYZER=$(
|
|
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=$(
|
|
174
|
+
TODO_MATCHES=$(pi-gsd-tools todo match-phase "${PHASE_NUMBER}")
|
|
175
175
|
```
|
|
176
176
|
|
|
177
177
|
Parse JSON for: `todo_count`, `matches[]`.
|
|
@@ -218,7 +218,7 @@ keeps raw file contents out of the main context window, protecting token budget.
|
|
|
218
218
|
**Resolve calibration tier (if USER-PROFILE.md exists):**
|
|
219
219
|
|
|
220
220
|
```bash
|
|
221
|
-
PROFILE_PATH=".
|
|
221
|
+
PROFILE_PATH=".pi/gsd/USER-PROFILE.md"
|
|
222
222
|
```
|
|
223
223
|
|
|
224
224
|
If file exists at PROFILE_PATH:
|
|
@@ -530,7 +530,7 @@ Write file.
|
|
|
530
530
|
Commit phase context and discussion log:
|
|
531
531
|
|
|
532
532
|
```bash
|
|
533
|
-
|
|
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
|
-
|
|
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 ".agent/get-shit-done/bin/gsd-tools.cjs" state record-session \
|
|
|
548
548
|
Commit STATE.md:
|
|
549
549
|
|
|
550
550
|
```bash
|
|
551
|
-
|
|
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
|
-
|
|
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=$(
|
|
610
|
-
AUTO_CFG=$(
|
|
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
|
-
|
|
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=$(
|
|
135
|
+
INIT=$(pi-gsd-tools init phase-op "${PHASE}")
|
|
136
136
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
137
|
-
AGENT_SKILLS_ADVISOR=$(
|
|
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=$(
|
|
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`).
|
|
@@ -369,7 +369,7 @@ Check if advisor mode should activate:
|
|
|
369
369
|
|
|
370
370
|
1. Check for USER-PROFILE.md:
|
|
371
371
|
```bash
|
|
372
|
-
PROFILE_PATH=".
|
|
372
|
+
PROFILE_PATH=".pi/gsd/USER-PROFILE.md"
|
|
373
373
|
```
|
|
374
374
|
ADVISOR_MODE = file exists at PROFILE_PATH → true, otherwise → false
|
|
375
375
|
|
|
@@ -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=$(
|
|
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.
|
|
@@ -492,7 +492,7 @@ After user selects gray areas in present_gray_areas, spawn parallel research age
|
|
|
492
492
|
2. For EACH user-selected gray area, spawn a Task() in parallel:
|
|
493
493
|
|
|
494
494
|
Task(
|
|
495
|
-
prompt="First, read @.
|
|
495
|
+
prompt="First, read @.pi/gsd/agents/gsd-advisor-researcher.md for your role and instructions.
|
|
496
496
|
|
|
497
497
|
<gray_area>{area_name}: {area_description from gray area identification}</gray_area>
|
|
498
498
|
<phase_context>{phase_goal and description from ROADMAP.md}</phase_context>
|
|
@@ -936,7 +936,7 @@ Write file.
|
|
|
936
936
|
Commit phase context and discussion log:
|
|
937
937
|
|
|
938
938
|
```bash
|
|
939
|
-
|
|
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
|
-
|
|
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 ".agent/get-shit-done/bin/gsd-tools.cjs" state record-session \
|
|
|
954
954
|
Commit STATE.md:
|
|
955
955
|
|
|
956
956
|
```bash
|
|
957
|
-
|
|
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
|
-
|
|
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=$(
|
|
974
|
-
AUTO_CFG=$(
|
|
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
|
-
|
|
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=$(
|
|
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.
|
|
@@ -28,7 +28,7 @@ Read STATE.md before any operation to load project context.
|
|
|
28
28
|
</required_reading>
|
|
29
29
|
|
|
30
30
|
<available_agent_types>
|
|
31
|
-
These are the valid GSD subagent types registered in .
|
|
31
|
+
These are the valid GSD subagent types registered in .pi/gsd/agents/ (or equivalent for your runtime).
|
|
32
32
|
Always use the exact name from this list - do not fall back to 'general-purpose' or other built-in types:
|
|
33
33
|
|
|
34
34
|
- gsd-executor - Executes plan tasks, commits, creates SUMMARY.md
|
|
@@ -61,9 +61,9 @@ If `--wave` is absent, preserve the current behavior of executing all incomplete
|
|
|
61
61
|
Load all context in one call:
|
|
62
62
|
|
|
63
63
|
```bash
|
|
64
|
-
INIT=$(
|
|
64
|
+
INIT=$(pi-gsd-tools init execute-phase "${PHASE_ARG}")
|
|
65
65
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
66
|
-
AGENT_SKILLS=$(
|
|
66
|
+
AGENT_SKILLS=$(pi-gsd-tools agent-skills gsd-executor 2>/dev/null)
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
Parse JSON for: `executor_model`, `verifier_model`, `commit_docs`, `parallelization`, `branching_strategy`, `branch_name`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `plans`, `incomplete_plans`, `plan_count`, `incomplete_count`, `state_exists`, `roadmap_exists`, `phase_req_ids`.
|
|
@@ -86,7 +86,7 @@ inline path for each plan.
|
|
|
86
86
|
```bash
|
|
87
87
|
# REQUIRED: prevents stale auto-chain from previous --auto runs
|
|
88
88
|
if [[ ! "$ARGUMENTS" =~ --auto ]]; then
|
|
89
|
-
|
|
89
|
+
pi-gsd-tools config-set workflow._auto_chain_active false 2>/dev/null
|
|
90
90
|
fi
|
|
91
91
|
```
|
|
92
92
|
</step>
|
|
@@ -120,7 +120,7 @@ checkpoints between tasks. The user can review, modify, or redirect work at any
|
|
|
120
120
|
|
|
121
121
|
b. **If "Review first":** Read and display the full plan file. Ask again: Execute, Modify, Skip.
|
|
122
122
|
|
|
123
|
-
c. **If "Execute":** Read and follow `.
|
|
123
|
+
c. **If "Execute":** Read and follow `.pi/gsd/workflows/execute-plan.md` **inline**
|
|
124
124
|
(do NOT spawn a subagent). Execute tasks one at a time.
|
|
125
125
|
|
|
126
126
|
d. **After each task:** Pause briefly. If the user intervenes (types anything), stop and address
|
|
@@ -159,7 +159,7 @@ Report: "Found {plan_count} plans in {phase_dir} ({incomplete_count} incomplete)
|
|
|
159
159
|
|
|
160
160
|
**Update STATE.md for phase start:**
|
|
161
161
|
```bash
|
|
162
|
-
|
|
162
|
+
pi-gsd-tools state begin-phase --phase "${PHASE_NUMBER}" --name "${PHASE_NAME}" --plans "${PLAN_COUNT}"
|
|
163
163
|
```
|
|
164
164
|
This updates Status, Last Activity, Current focus, Current Position, and plan counts in STATE.md so frontmatter and body text reflect the active phase immediately.
|
|
165
165
|
</step>
|
|
@@ -168,7 +168,7 @@ This updates Status, Last Activity, Current focus, Current Position, and plan co
|
|
|
168
168
|
Load plan inventory with wave grouping in one call:
|
|
169
169
|
|
|
170
170
|
```bash
|
|
171
|
-
PLAN_INDEX=$(
|
|
171
|
+
PLAN_INDEX=$(pi-gsd-tools phase-plan-index "${PHASE_NUMBER}")
|
|
172
172
|
```
|
|
173
173
|
|
|
174
174
|
Parse JSON for: `phase`, `plans[]` (each with `id`, `wave`, `autonomous`, `objective`, `files_modified`, `task_count`, `has_summary`), `waves` (map of wave number → plan IDs), `incomplete`, `has_checkpoints`.
|
|
@@ -243,10 +243,10 @@ Execute each selected wave in sequence. Within a wave: parallel if `PARALLELIZAT
|
|
|
243
243
|
</parallel_execution>
|
|
244
244
|
|
|
245
245
|
<execution_context>
|
|
246
|
-
@.
|
|
247
|
-
@.
|
|
248
|
-
@.
|
|
249
|
-
@.
|
|
246
|
+
@.pi/gsd/workflows/execute-plan.md
|
|
247
|
+
@.pi/gsd/templates/summary.md
|
|
248
|
+
@.pi/gsd/references/checkpoints.md
|
|
249
|
+
@.pi/gsd/references/tdd.md
|
|
250
250
|
</execution_context>
|
|
251
251
|
|
|
252
252
|
<files_to_read>
|
|
@@ -348,7 +348,7 @@ Execute each selected wave in sequence. Within a wave: parallel if `PARALLELIZAT
|
|
|
348
348
|
|
|
349
349
|
Before spawning wave N+1, for each plan in the upcoming wave:
|
|
350
350
|
```bash
|
|
351
|
-
|
|
351
|
+
pi-gsd-tools verify key-links {phase_dir}/{plan}-PLAN.md
|
|
352
352
|
```
|
|
353
353
|
|
|
354
354
|
If any key-link from a PRIOR wave's artifact fails verification:
|
|
@@ -377,8 +377,8 @@ Plans with `autonomous: false` require user interaction.
|
|
|
377
377
|
|
|
378
378
|
Read auto-advance config (chain flag + user preference):
|
|
379
379
|
```bash
|
|
380
|
-
AUTO_CHAIN=$(
|
|
381
|
-
AUTO_CFG=$(
|
|
380
|
+
AUTO_CHAIN=$(pi-gsd-tools config-get workflow._auto_chain_active 2>/dev/null || echo "false")
|
|
381
|
+
AUTO_CFG=$(pi-gsd-tools config-get workflow.auto_advance 2>/dev/null || echo "false")
|
|
382
382
|
```
|
|
383
383
|
|
|
384
384
|
When executor returns a checkpoint AND (`AUTO_CHAIN` is `"true"` OR `AUTO_CFG` is `"true"`):
|
|
@@ -442,7 +442,7 @@ After all waves:
|
|
|
442
442
|
If `WAVE_FILTER` was used, re-run plan discovery after execution:
|
|
443
443
|
|
|
444
444
|
```bash
|
|
445
|
-
POST_PLAN_INDEX=$(
|
|
445
|
+
POST_PLAN_INDEX=$(pi-gsd-tools phase-plan-index "${PHASE_NUMBER}")
|
|
446
446
|
```
|
|
447
447
|
|
|
448
448
|
Apply the same "incomplete" filtering rules as earlier:
|
|
@@ -484,7 +484,7 @@ fi
|
|
|
484
484
|
|
|
485
485
|
**2. Find parent UAT file:**
|
|
486
486
|
```bash
|
|
487
|
-
PARENT_INFO=$(
|
|
487
|
+
PARENT_INFO=$(pi-gsd-tools find-phase "${PARENT_PHASE}" --raw)
|
|
488
488
|
# Extract directory from PARENT_INFO JSON, then find UAT file in that directory
|
|
489
489
|
```
|
|
490
490
|
|
|
@@ -515,7 +515,7 @@ mv .planning/debug/{slug}.md .planning/debug/resolved/
|
|
|
515
515
|
|
|
516
516
|
**6. Commit updated artifacts:**
|
|
517
517
|
```bash
|
|
518
|
-
|
|
518
|
+
pi-gsd-tools commit "docs(phase-${PARENT_PHASE}): resolve UAT gaps and debug sessions after ${PHASE_NUMBER} gap closure" --files .planning/phases/*${PARENT_PHASE}*/*-UAT.md .planning/debug/resolved/*.md
|
|
519
519
|
```
|
|
520
520
|
</step>
|
|
521
521
|
|
|
@@ -584,7 +584,7 @@ Use AskUserQuestion to present the options.
|
|
|
584
584
|
Verify phase achieved its GOAL, not just completed tasks.
|
|
585
585
|
|
|
586
586
|
```bash
|
|
587
|
-
VERIFIER_SKILLS=$(
|
|
587
|
+
VERIFIER_SKILLS=$(pi-gsd-tools agent-skills gsd-verifier 2>/dev/null)
|
|
588
588
|
```
|
|
589
589
|
|
|
590
590
|
```
|
|
@@ -654,7 +654,7 @@ blocked: 0
|
|
|
654
654
|
|
|
655
655
|
Commit the file:
|
|
656
656
|
```bash
|
|
657
|
-
|
|
657
|
+
pi-gsd-tools commit "test({phase_num}): persist human verification items as UAT" --files "{phase_dir}/{phase_num}-HUMAN-UAT.md"
|
|
658
658
|
```
|
|
659
659
|
|
|
660
660
|
**Step B: Present to user:**
|
|
@@ -703,7 +703,7 @@ Gap closure cycle: `/gsd-plan-phase {X} --gaps ${GSD_WS}` reads VERIFICATION.md
|
|
|
703
703
|
**Mark phase complete and update all tracking files:**
|
|
704
704
|
|
|
705
705
|
```bash
|
|
706
|
-
COMPLETION=$(
|
|
706
|
+
COMPLETION=$(pi-gsd-tools phase complete "${PHASE_NUMBER}")
|
|
707
707
|
```
|
|
708
708
|
|
|
709
709
|
The CLI handles:
|
|
@@ -726,7 +726,7 @@ These items are tracked and will appear in `/gsd-progress` and `/gsd-audit-uat`.
|
|
|
726
726
|
```
|
|
727
727
|
|
|
728
728
|
```bash
|
|
729
|
-
|
|
729
|
+
pi-gsd-tools commit "docs(phase-{X}): complete phase execution" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md {phase_dir}/*-VERIFICATION.md
|
|
730
730
|
```
|
|
731
731
|
</step>
|
|
732
732
|
|
|
@@ -746,7 +746,7 @@ PROJECT.md falls behind silently over multiple phases.
|
|
|
746
746
|
5. Commit the change:
|
|
747
747
|
|
|
748
748
|
```bash
|
|
749
|
-
|
|
749
|
+
pi-gsd-tools commit "docs(phase-{X}): evolve PROJECT.md after phase completion" --files .planning/PROJECT.md
|
|
750
750
|
```
|
|
751
751
|
|
|
752
752
|
**Skip this step if** `.planning/PROJECT.md` does not exist.
|
|
@@ -784,8 +784,8 @@ STOP. Do not proceed to auto-advance or transition.
|
|
|
784
784
|
1. Parse `--auto` flag from $ARGUMENTS
|
|
785
785
|
2. Read both the chain flag and user preference (chain flag already synced in init step):
|
|
786
786
|
```bash
|
|
787
|
-
AUTO_CHAIN=$(
|
|
788
|
-
AUTO_CFG=$(
|
|
787
|
+
AUTO_CHAIN=$(pi-gsd-tools config-get workflow._auto_chain_active 2>/dev/null || echo "false")
|
|
788
|
+
AUTO_CFG=$(pi-gsd-tools config-get workflow.auto_advance 2>/dev/null || echo "false")
|
|
789
789
|
```
|
|
790
790
|
|
|
791
791
|
**If `--auto` flag present OR `AUTO_CHAIN` is true OR `AUTO_CFG` is true (AND verification passed with no gaps):**
|
|
@@ -799,7 +799,7 @@ STOP. Do not proceed to auto-advance or transition.
|
|
|
799
799
|
|
|
800
800
|
Execute the transition workflow inline (do NOT use Task - orchestrator context is ~10-15%, transition needs phase completion data already in context):
|
|
801
801
|
|
|
802
|
-
Read and follow `.
|
|
802
|
+
Read and follow `.pi/gsd/workflows/transition.md`, passing through the `--auto` flag so it propagates to the next phase invocation.
|
|
803
803
|
|
|
804
804
|
**If none of `--auto`, `AUTO_CHAIN`, or `AUTO_CFG` is true:**
|
|
805
805
|
|
|
@@ -6,7 +6,7 @@ Execute a phase prompt (PLAN.md) and create the outcome summary (SUMMARY.md).
|
|
|
6
6
|
Read STATE.md before any operation to load project context.
|
|
7
7
|
Read config.json for planning behavior settings.
|
|
8
8
|
|
|
9
|
-
@.
|
|
9
|
+
@.pi/gsd/references/git-integration.md
|
|
10
10
|
</required_reading>
|
|
11
11
|
|
|
12
12
|
<available_agent_types>
|
|
@@ -20,7 +20,7 @@ Valid GSD subagent types (use exact names - do not fall back to 'general-purpose
|
|
|
20
20
|
Load execution context (paths only to minimize orchestrator context):
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
INIT=$(
|
|
23
|
+
INIT=$(pi-gsd-tools init execute-phase "${PHASE}")
|
|
24
24
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
25
25
|
```
|
|
26
26
|
|
|
@@ -130,7 +130,7 @@ This IS the execution instructions. Follow exactly. If plan references CONTEXT.m
|
|
|
130
130
|
|
|
131
131
|
<step name="previous_phase_check">
|
|
132
132
|
```bash
|
|
133
|
-
|
|
133
|
+
pi-gsd-tools phases list --type summaries --raw
|
|
134
134
|
# Extract the second-to-last summary from the JSON result
|
|
135
135
|
```
|
|
136
136
|
If previous SUMMARY has unresolved "Issues Encountered" or "Next Phase Readiness" blockers: AskUserQuestion(header="Previous Issues", options: "Proceed anyway" | "Address first" | "Review previous").
|
|
@@ -231,7 +231,7 @@ For `type: tdd` plans - RED-GREEN-REFACTOR:
|
|
|
231
231
|
|
|
232
232
|
Errors: RED doesn't fail → investigate test/existing feature. GREEN doesn't pass → debug, iterate. REFACTOR breaks → undo.
|
|
233
233
|
|
|
234
|
-
See `.
|
|
234
|
+
See `.pi/gsd/references/tdd.md` for structure.
|
|
235
235
|
</tdd_plan_execution>
|
|
236
236
|
|
|
237
237
|
<precommit_failure_handling>
|
|
@@ -285,7 +285,7 @@ git add src/types/user.ts
|
|
|
285
285
|
**Sub-repos mode:** If `sub_repos` is configured (non-empty array from init context), use `commit-to-subrepo` instead of standard git commit. This routes files to their correct sub-repo based on path prefix.
|
|
286
286
|
|
|
287
287
|
```bash
|
|
288
|
-
|
|
288
|
+
pi-gsd-tools commit-to-subrepo "{type}({phase}-{plan}): {description}" --files file1 file2 ...
|
|
289
289
|
```
|
|
290
290
|
|
|
291
291
|
The command groups files by sub-repo prefix and commits atomically to each. Returns JSON: `{ committed: true, repos: { "backend": { hash: "abc", files: [...] }, ... } }`.
|
|
@@ -325,7 +325,7 @@ Display: `CHECKPOINT: [Type]` box → Progress {X}/{Y} → Task name → type-sp
|
|
|
325
325
|
|
|
326
326
|
After response: verify if specified. Pass → continue. Fail → inform, wait. WAIT for user - do NOT hallucinate completion.
|
|
327
327
|
|
|
328
|
-
See .
|
|
328
|
+
See .pi/gsd/references/checkpoints.md for details.
|
|
329
329
|
</step>
|
|
330
330
|
|
|
331
331
|
<step name="checkpoint_return_for_orchestrator">
|
|
@@ -341,10 +341,10 @@ If verification fails:
|
|
|
341
341
|
|
|
342
342
|
**Check if node repair is enabled** (default: on):
|
|
343
343
|
```bash
|
|
344
|
-
NODE_REPAIR=$(
|
|
344
|
+
NODE_REPAIR=$(pi-gsd-tools config-get workflow.node_repair 2>/dev/null || echo "true")
|
|
345
345
|
```
|
|
346
346
|
|
|
347
|
-
If `NODE_REPAIR` is `true`: invoke `@./.
|
|
347
|
+
If `NODE_REPAIR` is `true`: invoke `@./.pi/gsd/workflows/node-repair.md` with:
|
|
348
348
|
- FAILED_TASK: task number, name, done-criteria
|
|
349
349
|
- ERROR: expected vs actual result
|
|
350
350
|
- PLAN_CONTEXT: adjacent task names + phase goal
|
|
@@ -378,11 +378,11 @@ fi
|
|
|
378
378
|
grep -A 50 "^user_setup:" .planning/phases/XX-name/{phase}-{plan}-PLAN.md | head -50
|
|
379
379
|
```
|
|
380
380
|
|
|
381
|
-
If user_setup exists: create `{phase}-USER-SETUP.md` using template `.
|
|
381
|
+
If user_setup exists: create `{phase}-USER-SETUP.md` using template `.pi/gsd/templates/user-setup.md`. Per service: env vars table, account setup checklist, dashboard config, local dev notes, verification commands. Status "Incomplete". Set `USER_SETUP_CREATED=true`. If empty/missing: skip.
|
|
382
382
|
</step>
|
|
383
383
|
|
|
384
384
|
<step name="create_summary">
|
|
385
|
-
Create `{phase}-{plan}-SUMMARY.md` at `.planning/phases/XX-name/`. Use `.
|
|
385
|
+
Create `{phase}-{plan}-SUMMARY.md` at `.planning/phases/XX-name/`. Use `.pi/gsd/templates/summary.md`.
|
|
386
386
|
|
|
387
387
|
**Frontmatter:** phase, plan, subsystem, tags | requires/provides/affects | tech-stack.added/patterns | key-files.created/modified | key-decisions | requirements-completed (**MUST** copy `requirements` array from PLAN.md frontmatter verbatim) | duration ($DURATION), completed ($PLAN_END_TIME date).
|
|
388
388
|
|
|
@@ -400,13 +400,13 @@ Update STATE.md using gsd-tools:
|
|
|
400
400
|
|
|
401
401
|
```bash
|
|
402
402
|
# Advance plan counter (handles last-plan edge case)
|
|
403
|
-
|
|
403
|
+
pi-gsd-tools state advance-plan
|
|
404
404
|
|
|
405
405
|
# Recalculate progress bar from disk state
|
|
406
|
-
|
|
406
|
+
pi-gsd-tools state update-progress
|
|
407
407
|
|
|
408
408
|
# Record execution metrics
|
|
409
|
-
|
|
409
|
+
pi-gsd-tools state record-metric \
|
|
410
410
|
--phase "${PHASE}" --plan "${PLAN}" --duration "${DURATION}" \
|
|
411
411
|
--tasks "${TASK_COUNT}" --files "${FILE_COUNT}"
|
|
412
412
|
```
|
|
@@ -418,11 +418,11 @@ From SUMMARY: Extract decisions and add to STATE.md:
|
|
|
418
418
|
```bash
|
|
419
419
|
# Add each decision from SUMMARY key-decisions
|
|
420
420
|
# Prefer file inputs for shell-safe text (preserves `$`, `*`, etc. exactly)
|
|
421
|
-
|
|
421
|
+
pi-gsd-tools state add-decision \
|
|
422
422
|
--phase "${PHASE}" --summary-file "${DECISION_TEXT_FILE}" --rationale-file "${RATIONALE_FILE}"
|
|
423
423
|
|
|
424
424
|
# Add blockers if any found
|
|
425
|
-
|
|
425
|
+
pi-gsd-tools state add-blocker --text-file "${BLOCKER_TEXT_FILE}"
|
|
426
426
|
```
|
|
427
427
|
</step>
|
|
428
428
|
|
|
@@ -430,7 +430,7 @@ node ".agent/get-shit-done/bin/gsd-tools.cjs" state add-blocker --text-file "${B
|
|
|
430
430
|
Update session info using gsd-tools:
|
|
431
431
|
|
|
432
432
|
```bash
|
|
433
|
-
|
|
433
|
+
pi-gsd-tools state record-session \
|
|
434
434
|
--stopped-at "Completed ${PHASE}-${PLAN}-PLAN.md" \
|
|
435
435
|
--resume-file "None"
|
|
436
436
|
```
|
|
@@ -444,7 +444,7 @@ If SUMMARY "Issues Encountered" ≠ "None": yolo → log and continue. Interacti
|
|
|
444
444
|
|
|
445
445
|
<step name="update_roadmap">
|
|
446
446
|
```bash
|
|
447
|
-
|
|
447
|
+
pi-gsd-tools roadmap update-plan-progress "${PHASE}"
|
|
448
448
|
```
|
|
449
449
|
Counts PLAN vs SUMMARY files on disk. Updates progress table row with correct count and status (`In Progress` or `Complete` with date).
|
|
450
450
|
</step>
|
|
@@ -453,7 +453,7 @@ Counts PLAN vs SUMMARY files on disk. Updates progress table row with correct co
|
|
|
453
453
|
Mark completed requirements from the PLAN.md frontmatter `requirements:` field:
|
|
454
454
|
|
|
455
455
|
```bash
|
|
456
|
-
|
|
456
|
+
pi-gsd-tools requirements mark-complete ${REQ_IDS}
|
|
457
457
|
```
|
|
458
458
|
|
|
459
459
|
Extract requirement IDs from the plan's frontmatter (e.g., `requirements: [AUTH-01, AUTH-02]`). If no requirements field, skip.
|
|
@@ -463,7 +463,7 @@ Extract requirement IDs from the plan's frontmatter (e.g., `requirements: [AUTH-
|
|
|
463
463
|
Task code already committed per-task. Commit plan metadata:
|
|
464
464
|
|
|
465
465
|
```bash
|
|
466
|
-
|
|
466
|
+
pi-gsd-tools commit "docs({phase}-{plan}): complete [plan-name] plan" --files .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md .planning/STATE.md .planning/ROADMAP.md .planning/REQUIREMENTS.md
|
|
467
467
|
```
|
|
468
468
|
</step>
|
|
469
469
|
|
|
@@ -478,7 +478,7 @@ git diff --name-only ${FIRST_TASK}^..HEAD 2>/dev/null || true
|
|
|
478
478
|
Update only structural changes: new src/ dir → STRUCTURE.md | deps → STACK.md | file pattern → CONVENTIONS.md | API client → INTEGRATIONS.md | config → STACK.md | renamed → update paths. Skip code-only/bugfix/content changes.
|
|
479
479
|
|
|
480
480
|
```bash
|
|
481
|
-
|
|
481
|
+
pi-gsd-tools commit "" --files .planning/codebase/*.md --amend
|
|
482
482
|
```
|
|
483
483
|
</step>
|
|
484
484
|
|
|
@@ -259,7 +259,7 @@ gh issue create \
|
|
|
259
259
|
## Step 8: Update STATE.md
|
|
260
260
|
|
|
261
261
|
```bash
|
|
262
|
-
gsd-tools
|
|
262
|
+
pi-gsd-tools state record-session \
|
|
263
263
|
--stopped-at "Forensic investigation complete" \
|
|
264
264
|
--resume-file ".planning/forensics/report-{timestamp}.md"
|
|
265
265
|
```
|
|
@@ -25,7 +25,7 @@ fi
|
|
|
25
25
|
**Run health validation:**
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
|
|
28
|
+
pi-gsd-tools validate health $REPAIR_FLAG
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
Parse JSON output:
|
|
@@ -112,7 +112,7 @@ If yes, re-run with --repair flag and display results.
|
|
|
112
112
|
Re-run health check without --repair to confirm issues are resolved:
|
|
113
113
|
|
|
114
114
|
```bash
|
|
115
|
-
|
|
115
|
+
pi-gsd-tools validate health
|
|
116
116
|
```
|
|
117
117
|
|
|
118
118
|
Report final status.
|
|
@@ -34,7 +34,7 @@ Validate first argument is an integer.
|
|
|
34
34
|
Load phase operation context:
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
INIT=$(
|
|
37
|
+
INIT=$(pi-gsd-tools init phase-op "${after_phase}")
|
|
38
38
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
39
39
|
```
|
|
40
40
|
|
|
@@ -49,7 +49,7 @@ Exit.
|
|
|
49
49
|
**Delegate the phase insertion to gsd-tools:**
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
|
-
RESULT=$(
|
|
52
|
+
RESULT=$(pi-gsd-tools phase insert "${after_phase}" "${description}")
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
The CLI handles:
|
|
@@ -11,7 +11,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
11
11
|
## 1. Setup
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
INIT=$(
|
|
14
|
+
INIT=$(pi-gsd-tools init list-workspaces)
|
|
15
15
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
16
16
|
```
|
|
17
17
|
|