pi-gsd 1.9.0 → 1.9.1
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/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/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 +20 -20
- 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=$(node ".
|
|
32
|
+
INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
48
|
+
RESULT=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
36
|
+
INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
300
|
+
node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
15
|
+
INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
87
|
+
slug=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
122
|
+
node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
19
|
+
INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" init milestone-op)
|
|
20
20
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
21
|
-
AGENT_SKILLS_CHECKER=$(node ".
|
|
21
|
+
AGENT_SKILLS_CHECKER=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
28
|
+
integration_checker_model=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
35
|
+
node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
49
|
+
PHASE_INFO=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
116
|
+
node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
144
|
+
NYQUIST_CONFIG=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
11
|
+
AUDIT=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
31
|
+
INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
62
|
+
ROADMAP=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
101
|
+
DETAIL=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
127
|
+
PHASE_STATE=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
143
|
+
SKIP_DISCUSS=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
155
|
+
DETAIL=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
207
|
+
node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
217
|
+
PHASE_STATE=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
227
|
+
PHASE_SECTION=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
236
|
+
UI_PHASE_CFG=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
286
|
+
PHASE_STATE=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
380
|
+
UI_REVIEW_CFG=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
412
|
+
PHASE_STATE=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
501
|
+
DETAIL=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
673
|
+
node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
692
|
+
ROADMAP=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
15
|
+
INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
158
|
+
node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
125
|
+
node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
45
|
+
ROADMAP=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
160
|
+
node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
373
|
+
ARCHIVE=$(node ".pi/gsd/bin/gsd-tools.cjs" 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
|
-
node ".
|
|
500
|
+
node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
534
|
+
INIT=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
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
|
|
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 ".
|
|
84
|
+
AGENT_SKILLS_DEBUGGER=$(node ".pi/gsd/bin/gsd-tools.cjs" 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 ".
|
|
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"
|
|
174
174
|
```
|
|
175
175
|
</step>
|
|
176
176
|
|