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.
Files changed (28) hide show
  1. package/.gsd/harnesses/pi/get-shit-done/workflows/add-backlog.md +132 -0
  2. package/.gsd/harnesses/pi/get-shit-done/workflows/debug.md +250 -0
  3. package/.gsd/harnesses/pi/get-shit-done/workflows/do.md +11 -0
  4. package/.gsd/harnesses/pi/get-shit-done/workflows/execute-phase.md +3 -0
  5. package/.gsd/harnesses/pi/get-shit-done/workflows/list-phase-assumptions.md +78 -30
  6. package/.gsd/harnesses/pi/get-shit-done/workflows/next.md +11 -0
  7. package/.gsd/harnesses/pi/get-shit-done/workflows/plan-phase.md +4 -0
  8. package/.gsd/harnesses/pi/get-shit-done/workflows/progress.md +11 -0
  9. package/.gsd/harnesses/pi/get-shit-done/workflows/review-backlog.md +219 -0
  10. package/.gsd/harnesses/pi/get-shit-done/workflows/session-report.md +47 -0
  11. package/.gsd/harnesses/pi/get-shit-done/workflows/set-profile.md +135 -0
  12. package/.gsd/harnesses/pi/get-shit-done/workflows/thread.md +213 -0
  13. package/.gsd/harnesses/pi/get-shit-done/workflows/transition.md +11 -0
  14. package/.gsd/harnesses/pi/get-shit-done/workflows/ui-phase.md +2 -1
  15. package/.gsd/harnesses/pi/get-shit-done/workflows/workstreams.md +215 -0
  16. package/.gsd/harnesses/pi/gsd-file-manifest.json +1 -1
  17. package/dist/pi-gsd-hooks.js +2 -2
  18. package/dist/pi-gsd-tools.js +77 -77
  19. package/package.json +2 -2
  20. package/prompts/gsd-add-backlog.md +2 -0
  21. package/prompts/gsd-complete-milestone.md +2 -0
  22. package/prompts/gsd-debug.md +2 -0
  23. package/prompts/gsd-list-phase-assumptions.md +1 -1
  24. package/prompts/gsd-research-phase.md +2 -0
  25. package/prompts/gsd-review-backlog.md +2 -0
  26. package/prompts/gsd-set-profile.md +2 -0
  27. package/prompts/gsd-thread.md +2 -0
  28. 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 &lt;name&gt;, switch &lt;name&gt;, status [name], complete &lt;name&gt;
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": "5e3cccd0b2b868174fafd8cbba638b0d40b917fd0ebb9b0029dc0ebc1b25e8f0",
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",
@@ -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}`;