pi-gsd 2.0.20 → 2.0.22
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/workflows/add-backlog.md +132 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/debug.md +250 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/do.md +11 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/execute-phase.md +3 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/list-phase-assumptions.md +78 -30
- package/.gsd/harnesses/pi/get-shit-done/workflows/next.md +11 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/plan-phase.md +4 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/progress.md +11 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/review-backlog.md +219 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/session-report.md +47 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/set-profile.md +135 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/thread.md +213 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/transition.md +11 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/ui-phase.md +2 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/workstreams.md +215 -0
- package/.gsd/harnesses/pi/gsd-file-manifest.json +1 -1
- package/dist/pi-gsd-hooks.js +2 -2
- package/dist/pi-gsd-tools.js +77 -77
- package/package.json +2 -2
- package/prompts/gsd-add-backlog.md +2 -0
- package/prompts/gsd-complete-milestone.md +2 -0
- package/prompts/gsd-debug.md +2 -0
- package/prompts/gsd-list-phase-assumptions.md +1 -1
- package/prompts/gsd-research-phase.md +2 -0
- package/prompts/gsd-review-backlog.md +2 -0
- package/prompts/gsd-set-profile.md +2 -0
- package/prompts/gsd-thread.md +2 -0
- package/prompts/gsd-workstreams.md +2 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
<gsd-version v="1.12.4" />
|
|
2
|
+
|
|
3
|
+
<gsd-arguments>
|
|
4
|
+
<settings>
|
|
5
|
+
<keep-extra-args />
|
|
6
|
+
</settings>
|
|
7
|
+
<arg name="subcommand" type="string" optional />
|
|
8
|
+
<arg name="name" type="string" optional />
|
|
9
|
+
</gsd-arguments>
|
|
10
|
+
|
|
11
|
+
<gsd-execute>
|
|
12
|
+
<display msg="Loading workstream state..." />
|
|
13
|
+
<shell command="pi-gsd-tools">
|
|
14
|
+
<args>
|
|
15
|
+
<arg string="workstream" />
|
|
16
|
+
<arg string="list" />
|
|
17
|
+
<arg string="--raw" />
|
|
18
|
+
</args>
|
|
19
|
+
<outs>
|
|
20
|
+
<suppress-errors />
|
|
21
|
+
<out type="string" name="ws-list" />
|
|
22
|
+
</outs>
|
|
23
|
+
</shell>
|
|
24
|
+
<shell command="pi-gsd-tools">
|
|
25
|
+
<args>
|
|
26
|
+
<arg string="workstream" />
|
|
27
|
+
<arg string="get" />
|
|
28
|
+
<arg string="--raw" />
|
|
29
|
+
</args>
|
|
30
|
+
<outs>
|
|
31
|
+
<suppress-errors />
|
|
32
|
+
<out type="string" name="ws-active" />
|
|
33
|
+
</outs>
|
|
34
|
+
</shell>
|
|
35
|
+
<shell command="pi-gsd-tools">
|
|
36
|
+
<args>
|
|
37
|
+
<arg string="state" />
|
|
38
|
+
<arg string="json" />
|
|
39
|
+
<arg string="--raw" />
|
|
40
|
+
</args>
|
|
41
|
+
<outs>
|
|
42
|
+
<suppress-errors />
|
|
43
|
+
<out type="string" name="state" />
|
|
44
|
+
</outs>
|
|
45
|
+
</shell>
|
|
46
|
+
</gsd-execute>
|
|
47
|
+
|
|
48
|
+
## Workstream Context (pre-injected by WXP)
|
|
49
|
+
|
|
50
|
+
**Subcommand:** <gsd-paste name="subcommand" />
|
|
51
|
+
**Name:** <gsd-paste name="name" />
|
|
52
|
+
|
|
53
|
+
**Active workstream:** <gsd-paste name="ws-active" />
|
|
54
|
+
|
|
55
|
+
**Workstream list:**
|
|
56
|
+
<gsd-paste name="ws-list" />
|
|
57
|
+
|
|
58
|
+
**State:**
|
|
59
|
+
<gsd-paste name="state" />
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
<purpose>
|
|
64
|
+
Manage GSD workstreams — isolated parallel tracks of work within a project.
|
|
65
|
+
Each workstream has its own ROADMAP.md, STATE.md, and phase history.
|
|
66
|
+
|
|
67
|
+
Subcommands: list, create <name>, switch <name>, status [name], complete <name>
|
|
68
|
+
</purpose>
|
|
69
|
+
|
|
70
|
+
<process>
|
|
71
|
+
|
|
72
|
+
<step name="route">
|
|
73
|
+
<!-- Context pre-injected above via WXP -->
|
|
74
|
+
|
|
75
|
+
Parse `subcommand` and `name` from injected variables.
|
|
76
|
+
|
|
77
|
+
**Route by subcommand:**
|
|
78
|
+
|
|
79
|
+
| Subcommand | Action |
|
|
80
|
+
|------------|--------|
|
|
81
|
+
| `list` (or empty) | → **list_workstreams** |
|
|
82
|
+
| `create <name>` | → **create_workstream** |
|
|
83
|
+
| `switch <name>` | → **switch_workstream** |
|
|
84
|
+
| `status [name]` | → **show_status** |
|
|
85
|
+
| `complete <name>` | → **complete_workstream** |
|
|
86
|
+
|
|
87
|
+
**If subcommand is unrecognised:** Show help (see offer_help step).
|
|
88
|
+
</step>
|
|
89
|
+
|
|
90
|
+
<step name="list_workstreams">
|
|
91
|
+
<!-- ws-list and ws-active are pre-injected -->
|
|
92
|
+
|
|
93
|
+
Parse `ws-list` JSON for workstream entries. Display:
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
## Workstreams
|
|
97
|
+
|
|
98
|
+
Active: {ws-active || "(none — on main planning root)"}
|
|
99
|
+
|
|
100
|
+
| Name | Status | Phases | Progress |
|
|
101
|
+
|------|--------|--------|---------|
|
|
102
|
+
| {name} | {active|inactive} | {phase_count} | {pct}% |
|
|
103
|
+
| ... | ... | ... | ... |
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
/gsd-workstreams create <name> - create a new workstream
|
|
107
|
+
/gsd-workstreams switch <name> - switch to a workstream
|
|
108
|
+
/gsd-workstreams status <name> - detailed workstream status
|
|
109
|
+
/gsd-workstreams complete <name> - close a workstream
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**If no workstreams exist:**
|
|
113
|
+
```
|
|
114
|
+
No workstreams yet. You're working in the main planning root.
|
|
115
|
+
|
|
116
|
+
Create a workstream to isolate parallel work:
|
|
117
|
+
/gsd-workstreams create <name>
|
|
118
|
+
```
|
|
119
|
+
</step>
|
|
120
|
+
|
|
121
|
+
<step name="create_workstream">
|
|
122
|
+
**Require `name`:**
|
|
123
|
+
If `name` is empty, ask: "Workstream name? (lowercase, no spaces — e.g. mobile-app, api-v2)"
|
|
124
|
+
|
|
125
|
+
Validate: lowercase alphanumeric with hyphens/underscores only.
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
pi-gsd-tools workstream create {name}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Confirm:
|
|
132
|
+
```
|
|
133
|
+
✓ Workstream '{name}' created
|
|
134
|
+
|
|
135
|
+
To switch to it: /gsd-workstreams switch {name}
|
|
136
|
+
```
|
|
137
|
+
</step>
|
|
138
|
+
|
|
139
|
+
<step name="switch_workstream">
|
|
140
|
+
**Require `name`:** If empty, list available workstreams and ask user to choose.
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
pi-gsd-tools workstream set {name}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Confirm:
|
|
147
|
+
```
|
|
148
|
+
✓ Switched to workstream: {name}
|
|
149
|
+
|
|
150
|
+
All subsequent GSD commands will operate within this workstream.
|
|
151
|
+
To return to main: /gsd-workstreams switch main
|
|
152
|
+
```
|
|
153
|
+
</step>
|
|
154
|
+
|
|
155
|
+
<step name="show_status">
|
|
156
|
+
**Target:** `name` if provided, otherwise the active workstream.
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
pi-gsd-tools workstream status {name}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Display the full status output including phase progress, open todos, and blockers.
|
|
163
|
+
</step>
|
|
164
|
+
|
|
165
|
+
<step name="complete_workstream">
|
|
166
|
+
**Require `name`:** If empty, ask which workstream to complete.
|
|
167
|
+
|
|
168
|
+
Confirm before completing:
|
|
169
|
+
```
|
|
170
|
+
Complete workstream '{name}'?
|
|
171
|
+
|
|
172
|
+
This will:
|
|
173
|
+
- Mark all phases as complete
|
|
174
|
+
- Archive the workstream planning files
|
|
175
|
+
|
|
176
|
+
Continue? (yes / no)
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
If yes:
|
|
180
|
+
```bash
|
|
181
|
+
pi-gsd-tools workstream complete {name}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Confirm:
|
|
185
|
+
```
|
|
186
|
+
✓ Workstream '{name}' completed and archived.
|
|
187
|
+
```
|
|
188
|
+
</step>
|
|
189
|
+
|
|
190
|
+
<step name="offer_help">
|
|
191
|
+
```
|
|
192
|
+
## /gsd-workstreams
|
|
193
|
+
|
|
194
|
+
Manage parallel tracks of work within a project.
|
|
195
|
+
|
|
196
|
+
Usage:
|
|
197
|
+
/gsd-workstreams - list all workstreams
|
|
198
|
+
/gsd-workstreams create <name> - create a new workstream
|
|
199
|
+
/gsd-workstreams switch <name> - activate a workstream
|
|
200
|
+
/gsd-workstreams status [name] - show workstream details
|
|
201
|
+
/gsd-workstreams complete <name> - close a finished workstream
|
|
202
|
+
|
|
203
|
+
Current: {ws-active || "main planning root"}
|
|
204
|
+
```
|
|
205
|
+
</step>
|
|
206
|
+
|
|
207
|
+
</process>
|
|
208
|
+
|
|
209
|
+
<success_criteria>
|
|
210
|
+
- [ ] Active workstream pre-injected (no runtime read needed)
|
|
211
|
+
- [ ] Workstream list pre-injected
|
|
212
|
+
- [ ] Subcommand routed correctly
|
|
213
|
+
- [ ] Each action calls the appropriate CLI command
|
|
214
|
+
- [ ] Confirmations displayed after mutations
|
|
215
|
+
</success_criteria>
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
"get-shit-done/workflows/ship.md": "1057dbd67b07b420b11adaea9c63a1a7c29ca01c33e8f9d2e8eba8fc61b2e3f7",
|
|
130
130
|
"get-shit-done/workflows/stats.md": "cbb11eec34f93399e7cc5cf7a19746f11448e840a38c0316688ef8be6ad7e7bf",
|
|
131
131
|
"get-shit-done/workflows/transition.md": "15b767cabdc476782cdad7d3b9081e3d599316455a76d44866d66e1bb78e1db0",
|
|
132
|
-
"get-shit-done/workflows/ui-phase.md": "
|
|
132
|
+
"get-shit-done/workflows/ui-phase.md": "e7bd715dc7e2d5d113f52c7b3816023af130c5b9d23762d64e5c11aee07dbe83",
|
|
133
133
|
"get-shit-done/workflows/ui-review.md": "6e99be78108e16ef325442692667d77d864759ffe8f6379a8f4ec011964999b3",
|
|
134
134
|
"get-shit-done/workflows/update.md": "01371fe2bdda4aa84d3dc1dff7ab4f016d5b6b6411d99e8b7c6a38aadf0d53e1",
|
|
135
135
|
"get-shit-done/workflows/validate-phase.md": "a60a09bb99161270b3dbc5539f0b93a8436747ebca56ba2dfa75f937e0e53261",
|
package/dist/pi-gsd-hooks.js
CHANGED
|
@@ -1251,7 +1251,7 @@ Run: pi-gsd-tools harness update [y|n|pick|diff]`,
|
|
|
1251
1251
|
" \u2192 /gsd-complete-milestone Archive and start next"
|
|
1252
1252
|
];
|
|
1253
1253
|
}
|
|
1254
|
-
const next = pending[0];
|
|
1254
|
+
const next = pending.find((p) => p.status === "In Progress") ?? pending.find((p) => p.status === "Planned") ?? pending[0];
|
|
1255
1255
|
const n = next.number;
|
|
1256
1256
|
const lines = [` \u23F3 Phase ${n}: ${cap(next.name)}`];
|
|
1257
1257
|
if (next.plans === 0) {
|
|
@@ -1368,7 +1368,7 @@ Run: pi-gsd-tools harness update [y|n|pick|diff]`,
|
|
|
1368
1368
|
const nextCommand = (phases) => {
|
|
1369
1369
|
const pending = phases.filter((p) => p.status !== "Complete");
|
|
1370
1370
|
if (pending.length === 0) return "/gsd-audit-milestone";
|
|
1371
|
-
const next = pending[0];
|
|
1371
|
+
const next = pending.find((p) => p.status === "In Progress") ?? pending.find((p) => p.status === "Planned") ?? pending[0];
|
|
1372
1372
|
const n = next.number;
|
|
1373
1373
|
if (next.plans === 0) return `/gsd-discuss-phase ${n}`;
|
|
1374
1374
|
if (next.summaries < next.plans) return `/gsd-execute-phase ${n}`;
|