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.
- package/.gsd/harnesses/pi/get-shit-done/agents/gsd-codebase-mapper.md +13 -13
- package/.gsd/harnesses/pi/get-shit-done/agents/gsd-debugger.md +37 -37
- package/.gsd/harnesses/pi/get-shit-done/agents/gsd-executor.md +8 -8
- package/.gsd/harnesses/pi/get-shit-done/agents/gsd-nyquist-auditor.md +31 -31
- package/.gsd/harnesses/pi/get-shit-done/agents/gsd-phase-researcher.md +85 -85
- package/.gsd/harnesses/pi/get-shit-done/agents/gsd-plan-checker.md +32 -32
- package/.gsd/harnesses/pi/get-shit-done/agents/gsd-planner.md +108 -108
- package/.gsd/harnesses/pi/get-shit-done/agents/gsd-project-researcher.md +76 -76
- package/.gsd/harnesses/pi/get-shit-done/agents/gsd-research-synthesizer.md +16 -16
- package/.gsd/harnesses/pi/get-shit-done/agents/gsd-roadmapper.md +39 -39
- package/.gsd/harnesses/pi/get-shit-done/agents/gsd-ui-auditor.md +24 -24
- package/.gsd/harnesses/pi/get-shit-done/agents/gsd-ui-checker.md +21 -21
- package/.gsd/harnesses/pi/get-shit-done/agents/gsd-ui-researcher.md +35 -35
- package/.gsd/harnesses/pi/get-shit-done/agents/gsd-verifier.md +30 -30
- package/.gsd/harnesses/pi/get-shit-done/references/continuation-format.md +11 -11
- package/.gsd/harnesses/pi/get-shit-done/references/ui-brand.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/templates/DEBUG.md +4 -4
- package/.gsd/harnesses/pi/get-shit-done/templates/UAT.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/add-backlog.md +132 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/add-phase.md +36 -68
- package/.gsd/harnesses/pi/get-shit-done/workflows/audit-milestone.md +3 -3
- package/.gsd/harnesses/pi/get-shit-done/workflows/complete-milestone.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/debug.md +250 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase-assumptions.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/discuss-phase.md.bak +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/execute-phase.md +5 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/execute-phase.md.bak +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/execute-plan.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/help.md +5 -5
- package/.gsd/harnesses/pi/get-shit-done/workflows/insert-phase.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/list-phase-assumptions.md +78 -30
- package/.gsd/harnesses/pi/get-shit-done/workflows/map-codebase.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/new-milestone.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/new-milestone.md.bak +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/new-project.md +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/new-project.md.bak +2 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/plan-milestone-gaps.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/plan-phase.md +5 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/plan-phase.md.bak +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/progress.md +10 -10
- package/.gsd/harnesses/pi/get-shit-done/workflows/resume-project.md +2 -2
- 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/settings.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/thread.md +213 -0
- package/.gsd/harnesses/pi/get-shit-done/workflows/transition.md +3 -3
- package/.gsd/harnesses/pi/get-shit-done/workflows/ui-phase.md +3 -2
- package/.gsd/harnesses/pi/get-shit-done/workflows/ui-review.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/validate-phase.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/verify-work.md +1 -1
- package/.gsd/harnesses/pi/get-shit-done/workflows/workstreams.md +215 -0
- package/.gsd/harnesses/pi/gsd-file-manifest.json +1 -1
- package/.gsd/harnesses/pi/hooks/gsd-context-monitor.js +102 -102
- package/.gsd/harnesses/pi/hooks/gsd-statusline.js +2 -2
- package/.gsd/harnesses/pi/hooks/gsd-workflow-guard.js +65 -65
- package/README.md +1 -1
- package/dist/pi-gsd-hooks.js +33 -6
- package/dist/pi-gsd-tools.js +87 -76
- package/package.json +1 -1
- 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,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 /
|
|
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 <name>
|
|
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>`/
|
|
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>`/
|
|
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>`/
|
|
677
|
+
<sub>`/new` first → fresh context window</sub>
|
|
678
678
|
|
|
679
679
|
---
|
|
680
680
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<gsd-version v="1.12.
|
|
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>/
|
|
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>/
|
|
216
|
+
<sub>/new first → fresh context window</sub>
|
|
217
217
|
|
|
218
218
|
───────────────────────────────────────────────────────────────
|
|
219
219
|
```
|
|
@@ -635,7 +635,7 @@ Plans verified and ready for execution.
|
|
|
635
635
|
|
|
636
636
|
**Execute fixes** - run fix plans
|
|
637
637
|
|
|
638
|
-
`/
|
|
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 <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",
|