pi-gsd 2.0.21 → 2.0.23

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 (70) hide show
  1. package/.gsd/harnesses/pi/get-shit-done/agents/gsd-codebase-mapper.md +13 -13
  2. package/.gsd/harnesses/pi/get-shit-done/agents/gsd-debugger.md +37 -37
  3. package/.gsd/harnesses/pi/get-shit-done/agents/gsd-executor.md +8 -8
  4. package/.gsd/harnesses/pi/get-shit-done/agents/gsd-nyquist-auditor.md +31 -31
  5. package/.gsd/harnesses/pi/get-shit-done/agents/gsd-phase-researcher.md +85 -85
  6. package/.gsd/harnesses/pi/get-shit-done/agents/gsd-plan-checker.md +32 -32
  7. package/.gsd/harnesses/pi/get-shit-done/agents/gsd-planner.md +108 -108
  8. package/.gsd/harnesses/pi/get-shit-done/agents/gsd-project-researcher.md +76 -76
  9. package/.gsd/harnesses/pi/get-shit-done/agents/gsd-research-synthesizer.md +16 -16
  10. package/.gsd/harnesses/pi/get-shit-done/agents/gsd-roadmapper.md +39 -39
  11. package/.gsd/harnesses/pi/get-shit-done/agents/gsd-ui-auditor.md +24 -24
  12. package/.gsd/harnesses/pi/get-shit-done/agents/gsd-ui-checker.md +21 -21
  13. package/.gsd/harnesses/pi/get-shit-done/agents/gsd-ui-researcher.md +35 -35
  14. package/.gsd/harnesses/pi/get-shit-done/agents/gsd-verifier.md +30 -30
  15. package/.gsd/harnesses/pi/get-shit-done/references/continuation-format.md +11 -11
  16. package/.gsd/harnesses/pi/get-shit-done/references/ui-brand.md +1 -1
  17. package/.gsd/harnesses/pi/get-shit-done/templates/DEBUG.md +4 -4
  18. package/.gsd/harnesses/pi/get-shit-done/templates/UAT.md +1 -1
  19. package/.gsd/harnesses/pi/get-shit-done/workflows/add-backlog.md +132 -0
  20. package/.gsd/harnesses/pi/get-shit-done/workflows/add-phase.md +36 -68
  21. package/.gsd/harnesses/pi/get-shit-done/workflows/audit-milestone.md +3 -3
  22. package/.gsd/harnesses/pi/get-shit-done/workflows/complete-milestone.md +1 -1
  23. package/.gsd/harnesses/pi/get-shit-done/workflows/debug.md +250 -0
  24. package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase-assumptions.md +1 -1
  25. package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase.md +2 -2
  26. package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase.md.bak +2 -2
  27. package/.gsd/harnesses/pi/get-shit-done/workflows/execute-phase.md +5 -2
  28. package/.gsd/harnesses/pi/get-shit-done/workflows/execute-phase.md.bak +2 -2
  29. package/.gsd/harnesses/pi/get-shit-done/workflows/execute-plan.md +1 -1
  30. package/.gsd/harnesses/pi/get-shit-done/workflows/help.md +5 -5
  31. package/.gsd/harnesses/pi/get-shit-done/workflows/insert-phase.md +1 -1
  32. package/.gsd/harnesses/pi/get-shit-done/workflows/list-phase-assumptions.md +78 -30
  33. package/.gsd/harnesses/pi/get-shit-done/workflows/map-codebase.md +1 -1
  34. package/.gsd/harnesses/pi/get-shit-done/workflows/new-milestone.md +1 -1
  35. package/.gsd/harnesses/pi/get-shit-done/workflows/new-milestone.md.bak +1 -1
  36. package/.gsd/harnesses/pi/get-shit-done/workflows/new-project.md +2 -2
  37. package/.gsd/harnesses/pi/get-shit-done/workflows/new-project.md.bak +2 -2
  38. package/.gsd/harnesses/pi/get-shit-done/workflows/plan-milestone-gaps.md +1 -1
  39. package/.gsd/harnesses/pi/get-shit-done/workflows/plan-phase.md +5 -1
  40. package/.gsd/harnesses/pi/get-shit-done/workflows/plan-phase.md.bak +1 -1
  41. package/.gsd/harnesses/pi/get-shit-done/workflows/progress.md +10 -10
  42. package/.gsd/harnesses/pi/get-shit-done/workflows/resume-project.md +2 -2
  43. package/.gsd/harnesses/pi/get-shit-done/workflows/review-backlog.md +219 -0
  44. package/.gsd/harnesses/pi/get-shit-done/workflows/session-report.md +47 -0
  45. package/.gsd/harnesses/pi/get-shit-done/workflows/set-profile.md +135 -0
  46. package/.gsd/harnesses/pi/get-shit-done/workflows/settings.md +1 -1
  47. package/.gsd/harnesses/pi/get-shit-done/workflows/thread.md +213 -0
  48. package/.gsd/harnesses/pi/get-shit-done/workflows/transition.md +3 -3
  49. package/.gsd/harnesses/pi/get-shit-done/workflows/ui-phase.md +3 -2
  50. package/.gsd/harnesses/pi/get-shit-done/workflows/ui-review.md +1 -1
  51. package/.gsd/harnesses/pi/get-shit-done/workflows/validate-phase.md +1 -1
  52. package/.gsd/harnesses/pi/get-shit-done/workflows/verify-work.md +1 -1
  53. package/.gsd/harnesses/pi/get-shit-done/workflows/workstreams.md +215 -0
  54. package/.gsd/harnesses/pi/gsd-file-manifest.json +1 -1
  55. package/.gsd/harnesses/pi/hooks/gsd-context-monitor.js +102 -102
  56. package/.gsd/harnesses/pi/hooks/gsd-statusline.js +2 -2
  57. package/.gsd/harnesses/pi/hooks/gsd-workflow-guard.js +65 -65
  58. package/README.md +1 -1
  59. package/dist/pi-gsd-hooks.js +33 -6
  60. package/dist/pi-gsd-tools.js +87 -76
  61. package/package.json +1 -1
  62. package/prompts/gsd-add-backlog.md +2 -0
  63. package/prompts/gsd-complete-milestone.md +2 -0
  64. package/prompts/gsd-debug.md +2 -0
  65. package/prompts/gsd-list-phase-assumptions.md +1 -1
  66. package/prompts/gsd-research-phase.md +2 -0
  67. package/prompts/gsd-review-backlog.md +2 -0
  68. package/prompts/gsd-set-profile.md +2 -0
  69. package/prompts/gsd-thread.md +2 -0
  70. package/prompts/gsd-workstreams.md +2 -0
@@ -0,0 +1,135 @@
1
+ <gsd-version v="1.12.4" />
2
+
3
+ <gsd-arguments>
4
+ <settings>
5
+ <keep-extra-args />
6
+ </settings>
7
+ <arg name="profile" type="string" optional />
8
+ </gsd-arguments>
9
+
10
+ <gsd-execute>
11
+ <display msg="Loading model profile config..." />
12
+ <shell command="pi-gsd-tools">
13
+ <args>
14
+ <arg string="config-get" />
15
+ <arg string="workflow" />
16
+ <arg string="--raw" />
17
+ </args>
18
+ <outs>
19
+ <suppress-errors />
20
+ <out type="string" name="workflow-config" />
21
+ </outs>
22
+ </shell>
23
+ <json-parse src="workflow-config" out="current-profile" path="$.model_profile" />
24
+ </gsd-execute>
25
+
26
+ ## Profile Context (pre-injected by WXP)
27
+
28
+ **Requested profile:** <gsd-paste name="profile" />
29
+
30
+ **Current profile:** <gsd-paste name="current-profile" />
31
+
32
+ **Full workflow config:**
33
+ <gsd-paste name="workflow-config" />
34
+
35
+ ---
36
+
37
+ <purpose>
38
+ Set the active model profile, controlling which Claude model each GSD agent uses.
39
+ One command replaces the full /gsd-settings flow for the common case of switching profiles.
40
+
41
+ Profiles: `quality` | `balanced` | `budget` | `inherit`
42
+ </purpose>
43
+
44
+ <profile_reference>
45
+
46
+ | Profile | Planner | Executor | Researcher | Verifier | Use when |
47
+ |---------|---------|---------|------------|---------|---------|
48
+ | `quality` | opus | opus | opus | sonnet | Critical architecture, quota available |
49
+ | `balanced` | opus | sonnet | sonnet | sonnet | Normal development (default) |
50
+ | `budget` | sonnet | sonnet | haiku | haiku | Conserving quota, high-volume work |
51
+ | `inherit` | inherit | inherit | inherit | inherit | OpenRouter / local models / session switching |
52
+
53
+ </profile_reference>
54
+
55
+ <process>
56
+
57
+ <step name="resolve_profile">
58
+ <!-- Profile arg and current config pre-injected above via WXP -->
59
+
60
+ **If `profile` is empty (no argument provided):**
61
+
62
+ Show current profile and available options:
63
+
64
+ ```
65
+ ## Current Model Profile
66
+
67
+ Active: {current-profile || "balanced (default)"}
68
+
69
+ Available profiles:
70
+ quality - Opus everywhere (highest quality, highest cost)
71
+ balanced - Opus for planning, Sonnet for execution (recommended)
72
+ budget - Sonnet/Haiku mix (lowest cost)
73
+ inherit - Use the current session model for all agents
74
+
75
+ Usage: /gsd-set-profile <profile>
76
+
77
+ To configure individual agents and other settings: /gsd-settings
78
+ ```
79
+
80
+ Exit (display only, no changes).
81
+ </step>
82
+
83
+ <step name="validate_profile">
84
+ Validate that the provided `profile` value is one of: `quality`, `balanced`, `budget`, `inherit`.
85
+
86
+ **If invalid:**
87
+ ```
88
+ Error: Unknown profile '{profile}'.
89
+
90
+ Valid profiles: quality, balanced, budget, inherit
91
+
92
+ Example: /gsd-set-profile balanced
93
+ ```
94
+ Exit.
95
+ </step>
96
+
97
+ <step name="apply_profile">
98
+ Apply the profile:
99
+
100
+ ```bash
101
+ pi-gsd-tools config-set-model-profile {profile}
102
+ ```
103
+
104
+ This updates `.planning/config.json` with the new model profile.
105
+ </step>
106
+
107
+ <step name="confirm">
108
+ ```
109
+ ✓ Model profile set to: {profile}
110
+
111
+ {profile description}
112
+
113
+ Planner: {model}
114
+ Executor: {model}
115
+ Researcher: {model}
116
+ Verifier: {model}
117
+
118
+ To configure more options: /gsd-settings
119
+ ```
120
+
121
+ Where "profile description" maps:
122
+ - `quality` → "Maximum reasoning power. Opus for all decision-making agents."
123
+ - `balanced` → "Smart allocation. Opus for planning, Sonnet for execution and verification."
124
+ - `budget` → "Minimal Opus usage. Sonnet for writing, Haiku for research and verification."
125
+ - `inherit` → "Follow the current session model. Required for non-Anthropic providers."
126
+ </step>
127
+
128
+ </process>
129
+
130
+ <success_criteria>
131
+ - [ ] Profile validated against allowed values
132
+ - [ ] .planning/config.json updated with new profile
133
+ - [ ] Confirmation shows per-agent model assignments
134
+ - [ ] Link to /gsd-settings for advanced configuration
135
+ </success_criteria>
@@ -105,7 +105,7 @@ AskUserQuestion([
105
105
  header: "Auto",
106
106
  multiSelect: false,
107
107
  options: [
108
- { label: "No (Recommended)", description: "Manual /clear + paste between stages" },
108
+ { label: "No (Recommended)", description: "Manual /new + paste between stages" },
109
109
  { label: "Yes", description: "Chain stages via Task() subagents (same isolation)" }
110
110
  ]
111
111
  },
@@ -0,0 +1,213 @@
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 thread context..." />
13
+ <shell command="pi-gsd-tools">
14
+ <args>
15
+ <arg string="state" />
16
+ <arg string="json" />
17
+ <arg string="--raw" />
18
+ </args>
19
+ <outs>
20
+ <suppress-errors />
21
+ <out type="string" name="state" />
22
+ </outs>
23
+ </shell>
24
+ <shell command="pi-gsd-tools">
25
+ <args>
26
+ <arg string="current-timestamp" />
27
+ <arg string="--raw" />
28
+ </args>
29
+ <outs>
30
+ <out type="string" name="timestamp" />
31
+ </outs>
32
+ </shell>
33
+ </gsd-execute>
34
+
35
+ ## Thread Context (pre-injected by WXP)
36
+
37
+ **Subcommand:** <gsd-paste name="subcommand" />
38
+ **Name:** <gsd-paste name="name" />
39
+ **Timestamp:** <gsd-paste name="timestamp" />
40
+
41
+ **State:**
42
+ <gsd-paste name="state" />
43
+
44
+ ---
45
+
46
+ <purpose>
47
+ Manage context threads — saved conversation checkpoints that can be resumed later.
48
+ A thread is a snapshot of the current agent context (active phase, decisions, blockers) that
49
+ survives `/clear` and can be handed off between sessions.
50
+
51
+ Subcommands: list, new [name], switch &lt;name&gt;
52
+ </purpose>
53
+
54
+ <process>
55
+
56
+ <step name="route">
57
+ <!-- Context pre-injected above via WXP -->
58
+
59
+ Parse `subcommand` and `name` from injected variables.
60
+
61
+ Route by subcommand:
62
+ - `list` (or empty) → **list_threads**
63
+ - `new [name]` → **new_thread**
64
+ - `switch <name>` → **switch_thread**
65
+ - Unknown → show help
66
+ </step>
67
+
68
+ <step name="list_threads">
69
+ Scan for thread files:
70
+
71
+ ```bash
72
+ ls .planning/threads/*.md 2>/dev/null || echo "no threads"
73
+ ```
74
+
75
+ **If no threads exist:**
76
+ ```
77
+ No saved threads.
78
+
79
+ Create one to preserve context across /clear:
80
+ /gsd-thread new <optional-name>
81
+ ```
82
+ Exit.
83
+
84
+ **If threads found:**
85
+
86
+ For each thread file, read frontmatter and display:
87
+ ```
88
+ ## Context Threads
89
+
90
+ | Name | Phase | Created | Summary |
91
+ |------|-------|---------|---------|
92
+ | {name} | {phase} | {date} | {one-line} |
93
+
94
+ ---
95
+ Switch to a thread: /gsd-thread switch <name>
96
+ Create a new thread: /gsd-thread new [name]
97
+ ```
98
+ </step>
99
+
100
+ <step name="new_thread">
101
+ Capture the current context as a named thread.
102
+
103
+ **Resolve name:**
104
+ - If `name` is provided, use it
105
+ - Otherwise generate from state: `{phase-slug}-{date}` (e.g., `auth-2025-01-15`)
106
+
107
+ **Ensure directory:**
108
+ ```bash
109
+ mkdir -p .planning/threads
110
+ ```
111
+
112
+ **Collect current context from state JSON:**
113
+ - `current_phase` + `phase_name`
114
+ - `milestone`
115
+ - `last_activity`
116
+ - Recent decisions (last 3 from STATE.md decisions table)
117
+ - Active blockers
118
+
119
+ **Write `.planning/threads/{name}.md`:**
120
+ ```markdown
121
+ ---
122
+ name: {name}
123
+ created: {timestamp}
124
+ phase: {current_phase}
125
+ phase_name: {phase_name}
126
+ milestone: {milestone}
127
+ status: active
128
+ ---
129
+
130
+ ## Thread: {name}
131
+
132
+ **Saved:** {timestamp}
133
+ **Phase:** {current_phase}: {phase_name}
134
+ **Milestone:** {milestone}
135
+
136
+ ## Context Snapshot
137
+
138
+ {Summary of what's in progress: what was being worked on, key decisions made, any open questions}
139
+
140
+ ## State at Save
141
+
142
+ [Key fields from STATE.md: current position, last activity, blockers]
143
+
144
+ ## Resume Instructions
145
+
146
+ To resume this thread:
147
+ 1. `/clear` - start fresh context
148
+ 2. `/gsd-thread switch {name}` - restore this thread's context
149
+ 3. `/gsd-resume-work` - re-orient with full project state
150
+ ```
151
+
152
+ **Commit:**
153
+ ```bash
154
+ pi-gsd-tools commit "docs: save context thread '{name}'" --files .planning/threads/{name}.md
155
+ ```
156
+
157
+ **Confirm:**
158
+ ```
159
+ ✓ Thread saved: {name}
160
+
161
+ Phase: {current_phase}: {phase_name}
162
+ File: .planning/threads/{name}.md
163
+
164
+ Safe to /clear. Resume with: /gsd-thread switch {name}
165
+ ```
166
+ </step>
167
+
168
+ <step name="switch_thread">
169
+ **Require `name`:** If empty, list available threads and ask user to choose.
170
+
171
+ ```bash
172
+ cat .planning/threads/{name}.md 2>/dev/null || echo "Thread '{name}' not found."
173
+ ```
174
+
175
+ **If not found:**
176
+ ```
177
+ Thread '{name}' not found.
178
+ Available: [list]
179
+ ```
180
+ Exit.
181
+
182
+ **If found:**
183
+
184
+ Read the thread file and display its full context:
185
+ ```
186
+ ## Restoring Thread: {name}
187
+
188
+ **Saved:** {created}
189
+ **Phase:** {phase}: {phase_name}
190
+
191
+ [Display the Context Snapshot section verbatim]
192
+
193
+ ---
194
+ Thread context restored. Continuing from saved state.
195
+
196
+ Next:
197
+ - /gsd-execute-phase {phase} - continue executing
198
+ - /gsd-plan-phase {phase} - re-plan if context changed
199
+ - /gsd-resume-work - full project orientation
200
+ ```
201
+
202
+ Mark the thread as resumed by updating its frontmatter `status: resumed` and adding a `resumed:` timestamp field.
203
+ </step>
204
+
205
+ </process>
206
+
207
+ <success_criteria>
208
+ - [ ] Subcommand routed correctly
209
+ - [ ] list: shows all saved threads with phase context
210
+ - [ ] new: saves full state snapshot to .planning/threads/
211
+ - [ ] switch: displays saved context and marks thread resumed
212
+ - [ ] Thread files committed to git
213
+ </success_criteria>
@@ -539,7 +539,7 @@ Exit skill and invoke SlashCommand("/gsd-discuss-phase [X+1] --auto ${GSD_WS}")
539
539
 
540
540
  `/gsd-discuss-phase [X+1] ${GSD_WS}` - gather context and clarify approach
541
541
 
542
- <sub>`/clear` first → fresh context window</sub>
542
+ <sub>`/new` first → fresh context window</sub>
543
543
 
544
544
  ---
545
545
 
@@ -564,7 +564,7 @@ Exit skill and invoke SlashCommand("/gsd-discuss-phase [X+1] --auto ${GSD_WS}")
564
564
 
565
565
  `/gsd-plan-phase [X+1] ${GSD_WS}`
566
566
 
567
- <sub>`/clear` first → fresh context window</sub>
567
+ <sub>`/new` first → fresh context window</sub>
568
568
 
569
569
  ---
570
570
 
@@ -674,7 +674,7 @@ Exit skill and invoke SlashCommand("/gsd-complete-milestone {version} ${GSD_WS}"
674
674
 
675
675
  `/gsd-complete-milestone {version} ${GSD_WS}`
676
676
 
677
- <sub>`/clear` first → fresh context window</sub>
677
+ <sub>`/new` first → fresh context window</sub>
678
678
 
679
679
  ---
680
680
 
@@ -1,4 +1,4 @@
1
- <gsd-version v="1.12.4" />
1
+ <gsd-version v="1.12.5" />
2
2
 
3
3
  <gsd-arguments>
4
4
  <settings><keep-extra-args /></settings>
@@ -10,6 +10,7 @@
10
10
  <args>
11
11
  <arg string="init" />
12
12
  <arg string="plan-phase" />
13
+ <arg name="phase" wrap='"' />
13
14
  </args>
14
15
  <outs>
15
16
  <out type="string" name="init" />
@@ -346,7 +347,7 @@ Dimensions: 6/6 passed
346
347
 
347
348
  `/gsd-plan-phase {N}`
348
349
 
349
- <sub>/clear first → fresh context window</sub>
350
+ <sub>/new first → fresh context window</sub>
350
351
 
351
352
  ───────────────────────────────────────────────────────────────
352
353
  ```
@@ -213,7 +213,7 @@ Full review: {path to UI-REVIEW.md}
213
213
  - `/gsd-verify-work {N}` - UAT testing
214
214
  - `/gsd-plan-phase {N+1}` - plan next phase
215
215
 
216
- <sub>/clear first → fresh context window</sub>
216
+ <sub>/new first → fresh context window</sub>
217
217
 
218
218
  ───────────────────────────────────────────────────────────────
219
219
  ```
@@ -227,7 +227,7 @@ GSD > PHASE {N} VALIDATED (PARTIAL)
227
227
  ▶ Retry: /gsd-validate-phase {N} ${GSD_WS}
228
228
  ```
229
229
 
230
- Display `/clear` reminder.
230
+ Display `/new` reminder.
231
231
 
232
232
  </process>
233
233
 
@@ -635,7 +635,7 @@ Plans verified and ready for execution.
635
635
 
636
636
  **Execute fixes** - run fix plans
637
637
 
638
- `/clear` then `/gsd-execute-phase {phase} --gaps-only`
638
+ `/new` then `/gsd-execute-phase {phase} --gaps-only`
639
639
 
640
640
  ───────────────────────────────────────────────────────────────
641
641
  ```
@@ -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",