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
|
@@ -6,7 +6,7 @@ Calculate the next decimal phase number for urgent insertions.
|
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
# Get next decimal phase after phase 6
|
|
9
|
-
node ".
|
|
9
|
+
node ".pi/gsd/bin/gsd-tools.cjs" phase next-decimal 6
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
Output:
|
|
@@ -32,13 +32,13 @@ With existing decimals:
|
|
|
32
32
|
## Extract Values
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
DECIMAL_PHASE=$(node ".
|
|
36
|
-
BASE_PHASE=$(node ".
|
|
35
|
+
DECIMAL_PHASE=$(node ".pi/gsd/bin/gsd-tools.cjs" phase next-decimal "${AFTER_PHASE}" --pick next)
|
|
36
|
+
BASE_PHASE=$(node ".pi/gsd/bin/gsd-tools.cjs" phase next-decimal "${AFTER_PHASE}" --pick base_phase)
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
Or with --raw flag:
|
|
40
40
|
```bash
|
|
41
|
-
DECIMAL_PHASE=$(node ".
|
|
41
|
+
DECIMAL_PHASE=$(node ".pi/gsd/bin/gsd-tools.cjs" phase next-decimal "${AFTER_PHASE}" --raw)
|
|
42
42
|
# Returns just: 06.1
|
|
43
43
|
```
|
|
44
44
|
|
|
@@ -56,7 +56,7 @@ DECIMAL_PHASE=$(node ".agent/get-shit-done/bin/gsd-tools.cjs" phase next-decimal
|
|
|
56
56
|
Decimal phase directories use the full decimal number:
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
SLUG=$(node ".
|
|
59
|
+
SLUG=$(node ".pi/gsd/bin/gsd-tools.cjs" generate-slug "$DESCRIPTION" --raw)
|
|
60
60
|
PHASE_DIR=".planning/phases/${DECIMAL_PHASE}-${SLUG}"
|
|
61
61
|
mkdir -p "$PHASE_DIR"
|
|
62
62
|
```
|
|
@@ -51,7 +51,7 @@ Phases:
|
|
|
51
51
|
What to commit:
|
|
52
52
|
|
|
53
53
|
```bash
|
|
54
|
-
node ".
|
|
54
|
+
node ".pi/gsd/bin/gsd-tools.cjs" commit "docs: initialize [project-name] ([N] phases)" --files .planning/
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
</format>
|
|
@@ -133,7 +133,7 @@ SUMMARY: .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md
|
|
|
133
133
|
What to commit:
|
|
134
134
|
|
|
135
135
|
```bash
|
|
136
|
-
node ".
|
|
136
|
+
node ".pi/gsd/bin/gsd-tools.cjs" commit "docs({phase}-{plan}): complete [plan-name] plan" --files .planning/phases/XX-name/{phase}-{plan}-PLAN.md .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md .planning/STATE.md .planning/ROADMAP.md
|
|
137
137
|
```
|
|
138
138
|
|
|
139
139
|
**Note:** Code files NOT included - already committed per-task.
|
|
@@ -153,7 +153,7 @@ Current: [task name]
|
|
|
153
153
|
What to commit:
|
|
154
154
|
|
|
155
155
|
```bash
|
|
156
|
-
node ".
|
|
156
|
+
node ".pi/gsd/bin/gsd-tools.cjs" commit "wip: [phase-name] paused at task [X]/[Y]" --files .planning/
|
|
157
157
|
```
|
|
158
158
|
|
|
159
159
|
</format>
|
|
@@ -284,7 +284,7 @@ Set `commit_docs: false` so planning docs stay local and are not committed to an
|
|
|
284
284
|
Instead of the standard `commit` command, use `commit-to-subrepo` when `sub_repos` is configured:
|
|
285
285
|
|
|
286
286
|
```bash
|
|
287
|
-
node .
|
|
287
|
+
node .pi/gsd/bin/gsd-tools.cjs commit-to-subrepo "feat(02-01): add user API" \
|
|
288
288
|
--files backend/src/api/users.ts backend/src/types/user.ts frontend/src/components/UserForm.tsx
|
|
289
289
|
```
|
|
290
290
|
|
|
@@ -7,7 +7,7 @@ Commit planning artifacts using the gsd-tools CLI, which automatically checks `c
|
|
|
7
7
|
Always use `gsd-tools.cjs commit` for `.planning/` files - it handles `commit_docs` and gitignore checks automatically:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
node ".
|
|
10
|
+
node ".pi/gsd/bin/gsd-tools.cjs" commit "docs({scope}): {description}" --files .planning/STATE.md .planning/ROADMAP.md
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
The CLI will return `skipped` (with reason) if `commit_docs` is `false` or `.planning/` is gitignored. No manual conditional checks needed.
|
|
@@ -17,7 +17,7 @@ The CLI will return `skipped` (with reason) if `commit_docs` is `false` or `.pla
|
|
|
17
17
|
To fold `.planning/` file changes into the previous commit:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
node ".
|
|
20
|
+
node ".pi/gsd/bin/gsd-tools.cjs" commit "" --files .planning/codebase/*.md --amend
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
## Commit Message Patterns
|
|
@@ -12,7 +12,7 @@ Default: `balanced` if not set or config missing.
|
|
|
12
12
|
|
|
13
13
|
## Lookup Table
|
|
14
14
|
|
|
15
|
-
@.
|
|
15
|
+
@.pi/gsd/references/model-profiles.md
|
|
16
16
|
|
|
17
17
|
Look up the agent in the table for the resolved profile. Pass the model parameter to Task calls:
|
|
18
18
|
|
|
@@ -14,7 +14,7 @@ From `$ARGUMENTS`:
|
|
|
14
14
|
The `find-phase` command handles normalization and validation in one step:
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
PHASE_INFO=$(node ".
|
|
17
|
+
PHASE_INFO=$(node ".pi/gsd/bin/gsd-tools.cjs" find-phase "${PHASE}")
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
Returns JSON with:
|
|
@@ -45,7 +45,7 @@ fi
|
|
|
45
45
|
Use `roadmap get-phase` to validate phase exists:
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
|
-
PHASE_CHECK=$(node ".
|
|
48
|
+
PHASE_CHECK=$(node ".pi/gsd/bin/gsd-tools.cjs" roadmap get-phase "${PHASE}" --pick found)
|
|
49
49
|
if [ "$PHASE_CHECK" = "false" ]; then
|
|
50
50
|
echo "ERROR: Phase ${PHASE} not found in roadmap"
|
|
51
51
|
exit 1
|
|
@@ -57,5 +57,5 @@ fi
|
|
|
57
57
|
Use `find-phase` for directory lookup:
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
|
-
PHASE_DIR=$(node ".
|
|
60
|
+
PHASE_DIR=$(node ".pi/gsd/bin/gsd-tools.cjs" find-phase "${PHASE}" --raw)
|
|
61
61
|
```
|
|
@@ -42,15 +42,15 @@ Configuration options for `.planning/` directory behavior.
|
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
44
|
# Commit with automatic commit_docs + gitignore checks:
|
|
45
|
-
node ".
|
|
45
|
+
node ".pi/gsd/bin/gsd-tools.cjs" commit "docs: update state" --files .planning/STATE.md
|
|
46
46
|
|
|
47
47
|
# Load config via state load (returns JSON):
|
|
48
|
-
INIT=$(node ".
|
|
48
|
+
INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" state load)
|
|
49
49
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
50
50
|
# commit_docs is available in the JSON output
|
|
51
51
|
|
|
52
52
|
# Or use init commands which include commit_docs:
|
|
53
|
-
INIT=$(node ".
|
|
53
|
+
INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" init execute-phase "1")
|
|
54
54
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
55
55
|
# commit_docs is included in all init command outputs
|
|
56
56
|
```
|
|
@@ -60,7 +60,7 @@ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
|
60
60
|
**Commit via CLI (handles checks automatically):**
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
|
-
node ".
|
|
63
|
+
node ".pi/gsd/bin/gsd-tools.cjs" commit "docs: update state" --files .planning/STATE.md
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
The CLI checks `commit_docs` config and gitignore status internally - no manual conditionals needed.
|
|
@@ -148,14 +148,14 @@ To use uncommitted mode:
|
|
|
148
148
|
|
|
149
149
|
Use `init execute-phase` which returns all config as JSON:
|
|
150
150
|
```bash
|
|
151
|
-
INIT=$(node ".
|
|
151
|
+
INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" init execute-phase "1")
|
|
152
152
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
153
153
|
# JSON output includes: branching_strategy, phase_branch_template, milestone_branch_template
|
|
154
154
|
```
|
|
155
155
|
|
|
156
156
|
Or use `state load` for the config values:
|
|
157
157
|
```bash
|
|
158
|
-
INIT=$(node ".
|
|
158
|
+
INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" state load)
|
|
159
159
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
160
160
|
# Parse branching_strategy, phase_branch_template, milestone_branch_template from JSON
|
|
161
161
|
```
|
|
@@ -600,7 +600,7 @@ Some things can't be verified programmatically. Flag these for human testing:
|
|
|
600
600
|
|
|
601
601
|
For automation-first checkpoint patterns, server lifecycle management, CLI installation handling, and error recovery protocols, see:
|
|
602
602
|
|
|
603
|
-
**@.
|
|
603
|
+
**@.pi/gsd/references/checkpoints.md** → `<automation_reference>` section
|
|
604
604
|
|
|
605
605
|
Key principles:
|
|
606
606
|
- the agent sets up verification environment BEFORE presenting checkpoints
|
|
@@ -216,7 +216,7 @@ get-shit-done/
|
|
|
216
216
|
|
|
217
217
|
**New Workflow:**
|
|
218
218
|
- Implementation: `get-shit-done/workflows/{name}.md`
|
|
219
|
-
- Usage: Reference from command with `@.
|
|
219
|
+
- Usage: Reference from command with `@.pi/gsd/workflows/{name}.md`
|
|
220
220
|
|
|
221
221
|
**New Reference Document:**
|
|
222
222
|
- Implementation: `get-shit-done/references/{name}.md`
|
|
@@ -38,10 +38,10 @@ Output: [What artifacts will be created]
|
|
|
38
38
|
</objective>
|
|
39
39
|
|
|
40
40
|
<execution_context>
|
|
41
|
-
@.
|
|
42
|
-
@.
|
|
41
|
+
@.pi/gsd/workflows/execute-plan.md
|
|
42
|
+
@.pi/gsd/templates/summary.md
|
|
43
43
|
[If plan contains checkpoint tasks (type="checkpoint:*"), add:]
|
|
44
|
-
@.
|
|
44
|
+
@.pi/gsd/references/checkpoints.md
|
|
45
45
|
</execution_context>
|
|
46
46
|
|
|
47
47
|
<context>
|
|
@@ -85,7 +85,7 @@ Output: [What artifacts will be created]
|
|
|
85
85
|
<done>[Acceptance criteria]</done>
|
|
86
86
|
</task>
|
|
87
87
|
|
|
88
|
-
<!-- For checkpoint task examples and patterns, see @.
|
|
88
|
+
<!-- For checkpoint task examples and patterns, see @.pi/gsd/references/checkpoints.md -->
|
|
89
89
|
|
|
90
90
|
<task type="checkpoint:decision" gate="blocking">
|
|
91
91
|
<decision>[What needs deciding]</decision>
|
|
@@ -278,7 +278,7 @@ TDD features get dedicated plans with `type: tdd`.
|
|
|
278
278
|
→ Yes: Create a TDD plan
|
|
279
279
|
→ No: Standard task in standard plan
|
|
280
280
|
|
|
281
|
-
See `.
|
|
281
|
+
See `.pi/gsd/references/tdd.md` for TDD plan structure.
|
|
282
282
|
|
|
283
283
|
---
|
|
284
284
|
|
|
@@ -382,9 +382,9 @@ Output: Working dashboard component.
|
|
|
382
382
|
</objective>
|
|
383
383
|
|
|
384
384
|
<execution_context>
|
|
385
|
-
@.
|
|
386
|
-
@.
|
|
387
|
-
@.
|
|
385
|
+
@.pi/gsd/workflows/execute-plan.md
|
|
386
|
+
@.pi/gsd/templates/summary.md
|
|
387
|
+
@.pi/gsd/references/checkpoints.md
|
|
388
388
|
</execution_context>
|
|
389
389
|
|
|
390
390
|
<context>
|
|
@@ -540,7 +540,7 @@ user_setup:
|
|
|
540
540
|
|
|
541
541
|
**Result:** Execute-plan generates `{phase}-USER-SETUP.md` with checklist for the user.
|
|
542
542
|
|
|
543
|
-
See `.
|
|
543
|
+
See `.pi/gsd/templates/user-setup.md` for full schema and examples
|
|
544
544
|
|
|
545
545
|
---
|
|
546
546
|
|
|
@@ -607,4 +607,4 @@ Task completion ≠ Goal achievement. A task "create chat component" can complet
|
|
|
607
607
|
5. Gaps found → fix plans created → execute → re-verify
|
|
608
608
|
6. All must_haves pass → phase complete
|
|
609
609
|
|
|
610
|
-
See `.
|
|
610
|
+
See `.pi/gsd/workflows/verify-phase.md` for verification logic.
|
|
@@ -29,7 +29,7 @@ Exit.
|
|
|
29
29
|
Load phase operation context:
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
INIT=$(
|
|
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=$(
|
|
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=$(
|
|
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
|
-
|
|
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=$(
|
|
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=$(
|
|
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
|
-
|
|
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=$(
|
|
19
|
+
INIT=$(pi-gsd-tools init milestone-op)
|
|
20
20
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
21
|
-
AGENT_SKILLS_CHECKER=$(
|
|
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=$(
|
|
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
|
-
|
|
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=$(
|
|
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
|
-
|
|
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=$(
|
|
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=$(
|
|
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=$(
|
|
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=$(
|
|
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=$(
|
|
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=$(
|
|
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=$(
|
|
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=$(
|
|
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
|
-
|
|
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=$(
|
|
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=$(
|
|
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=$(
|
|
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=$(
|
|
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=$(
|
|
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=$(
|
|
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=$(
|
|
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
|
-
|
|
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=$(
|
|
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=$(
|
|
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
|
-
|
|
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
|
-
|
|
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=$(
|
|
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
|
-
|
|
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=$(
|
|
373
|
+
ARCHIVE=$(pi-gsd-tools milestone complete "v[X.Y]" --name "[Milestone Name]")
|
|
374
374
|
```
|
|
375
375
|
|
|
376
376
|
The CLI handles:
|
|
@@ -452,7 +452,7 @@ ls .planning/RETROSPECTIVE.md 2>/dev/null || true
|
|
|
452
452
|
|
|
453
453
|
**If exists:** Read the file, append new milestone section before the "## Cross-Milestone Trends" section.
|
|
454
454
|
|
|
455
|
-
**If doesn't exist:** Create from template at `.
|
|
455
|
+
**If doesn't exist:** Create from template at `.pi/gsd/templates/retrospective.md`.
|
|
456
456
|
|
|
457
457
|
**Gather retrospective data:**
|
|
458
458
|
|
|
@@ -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
|
-
|
|
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=$(
|
|
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
|
-
|
|
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=$(
|
|
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
|
-
|
|
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
|
|