pi-gsd 2.0.21 → 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.
@@ -0,0 +1,132 @@
1
+ <gsd-version v="1.12.4" />
2
+
3
+ <gsd-arguments>
4
+ <settings>
5
+ <keep-extra-args />
6
+ </settings>
7
+ <arg name="idea" type="string" optional />
8
+ </gsd-arguments>
9
+
10
+ <gsd-execute>
11
+ <display msg="Loading backlog context..." />
12
+ <shell command="pi-gsd-tools">
13
+ <args>
14
+ <arg string="state" />
15
+ <arg string="json" />
16
+ <arg string="--raw" />
17
+ </args>
18
+ <outs>
19
+ <suppress-errors />
20
+ <out type="string" name="state" />
21
+ </outs>
22
+ </shell>
23
+ <shell command="pi-gsd-tools">
24
+ <args>
25
+ <arg string="roadmap" />
26
+ <arg string="analyze" />
27
+ <arg string="--raw" />
28
+ </args>
29
+ <outs>
30
+ <suppress-errors />
31
+ <out type="string" name="roadmap" />
32
+ </outs>
33
+ </shell>
34
+ <shell command="pi-gsd-tools">
35
+ <args>
36
+ <arg string="current-timestamp" />
37
+ <arg string="--raw" />
38
+ </args>
39
+ <outs>
40
+ <out type="string" name="timestamp" />
41
+ </outs>
42
+ </shell>
43
+ </gsd-execute>
44
+
45
+ ## Backlog Context (pre-injected by WXP)
46
+
47
+ **Idea:** <gsd-paste name="idea" />
48
+
49
+ **Timestamp:** <gsd-paste name="timestamp" />
50
+
51
+ **State:**
52
+ <gsd-paste name="state" />
53
+
54
+ **Roadmap Analysis:**
55
+ <gsd-paste name="roadmap" />
56
+
57
+ ---
58
+
59
+ <purpose>
60
+ Park an idea as a backlog entry (999.x numbered phase) in ROADMAP.md. Zero friction — one command captures an idea without interrupting current work. The idea sits in the backlog until promoted by `/gsd-review-backlog`.
61
+ </purpose>
62
+
63
+ <process>
64
+
65
+ <step name="validate_context">
66
+ <!-- State, roadmap, and idea pre-injected above via WXP -->
67
+
68
+ Check that `.planning/ROADMAP.md` exists (from `state` JSON field `roadmap_exists`).
69
+
70
+ **If roadmap missing:**
71
+ ```
72
+ Error: No ROADMAP.md found. Run /gsd-new-project or /gsd-new-milestone first.
73
+ ```
74
+ Exit.
75
+
76
+ **If idea is empty (no $ARGUMENTS):**
77
+ Ask the user: "What's the idea? (one sentence description)"
78
+ Use the response as `idea`.
79
+ </step>
80
+
81
+ <step name="find_next_slot">
82
+ From the roadmap analysis JSON, extract the `phases` array. Find all phases where `phase_number` starts with `999` (e.g., `999.1`, `999.2`).
83
+
84
+ Compute next backlog number:
85
+ - If no 999.x entries exist → use `999.1`
86
+ - Otherwise → use `999.(max_decimal + 1)`, e.g., if `999.3` exists → `999.4`
87
+
88
+ Set `BACKLOG_NUM` = next available 999.x slot.
89
+ </step>
90
+
91
+ <step name="add_entry">
92
+ Append to `.planning/ROADMAP.md` under a `## Backlog` section (create the section if missing):
93
+
94
+ ```markdown
95
+ - [ ] **Phase {BACKLOG_NUM}**: {idea}
96
+ ```
97
+
98
+ Use the roadmap `roadmap add-phase` command if available, or append directly:
99
+
100
+ ```bash
101
+ pi-gsd-tools roadmap add-phase "{BACKLOG_NUM}" "{idea}" --raw
102
+ ```
103
+
104
+ If the CLI command fails or is unavailable, append manually to ROADMAP.md.
105
+ </step>
106
+
107
+ <step name="commit">
108
+ ```bash
109
+ pi-gsd-tools commit "docs: add backlog entry {BACKLOG_NUM} - {idea_slug}" --files .planning/ROADMAP.md
110
+ ```
111
+ </step>
112
+
113
+ <step name="confirm">
114
+ ```
115
+ ✓ Backlog entry added
116
+
117
+ Phase {BACKLOG_NUM}: {idea}
118
+
119
+ ---
120
+
121
+ Review and promote backlog: /gsd-review-backlog
122
+ ```
123
+ </step>
124
+
125
+ </process>
126
+
127
+ <success_criteria>
128
+ - [ ] ROADMAP.md has new 999.x entry
129
+ - [ ] 999.x number is sequential (no gaps or duplicates)
130
+ - [ ] Entry committed to git
131
+ - [ ] User sees confirmation with the assigned phase number
132
+ </success_criteria>
@@ -0,0 +1,250 @@
1
+ <gsd-version v="1.12.4" />
2
+
3
+ <gsd-arguments>
4
+ <settings>
5
+ <keep-extra-args />
6
+ </settings>
7
+ <arg name="description" type="string" optional />
8
+ </gsd-arguments>
9
+
10
+ <gsd-execute>
11
+ <display msg="Loading debug context..." />
12
+ <shell command="pi-gsd-tools">
13
+ <args>
14
+ <arg string="state" />
15
+ <arg string="json" />
16
+ <arg string="--raw" />
17
+ </args>
18
+ <outs>
19
+ <suppress-errors />
20
+ <out type="string" name="state" />
21
+ </outs>
22
+ </shell>
23
+ <shell command="pi-gsd-tools">
24
+ <args>
25
+ <arg string="current-timestamp" />
26
+ <arg string="--raw" />
27
+ </args>
28
+ <outs>
29
+ <out type="string" name="timestamp" />
30
+ </outs>
31
+ </shell>
32
+ <shell command="pi-gsd-tools">
33
+ <args>
34
+ <arg string="agent-skills" />
35
+ <arg string="gsd-debugger" />
36
+ </args>
37
+ <outs>
38
+ <suppress-errors />
39
+ <out type="string" name="agent-skills-debugger" />
40
+ </outs>
41
+ </shell>
42
+ </gsd-execute>
43
+
44
+ ## Debug Context (pre-injected by WXP)
45
+
46
+ **Problem:** <gsd-paste name="description" />
47
+
48
+ **Timestamp:** <gsd-paste name="timestamp" />
49
+
50
+ **Project State:**
51
+ <gsd-paste name="state" />
52
+
53
+ **Debugger Skills:**
54
+ <gsd-paste name="agent-skills-debugger" />
55
+
56
+ ---
57
+
58
+ <purpose>
59
+ Systematic debugging session. Diagnoses failures, errors, and unexpected behavior using structured root-cause analysis. Spawns gsd-debugger with full project context for focused investigation.
60
+
61
+ For post-mortem investigation of completed phases, use `/gsd-forensics` instead.
62
+ </purpose>
63
+
64
+ <available_agent_types>
65
+ Valid GSD subagent types (use exact names - do not fall back to 'general-purpose'):
66
+ - gsd-debugger - Diagnoses and fixes issues
67
+ </available_agent_types>
68
+
69
+ <process>
70
+
71
+ <step name="gather_context">
72
+ <!-- State, timestamp, and description pre-injected above via WXP -->
73
+
74
+ Load current phase context:
75
+
76
+ ```bash
77
+ PHASE_INFO=$(pi-gsd-tools roadmap analyze --raw 2>/dev/null || echo "{}")
78
+ ```
79
+
80
+ Extract from state JSON:
81
+ - `current_phase` - what's being worked on
82
+ - `last_activity` - when was the last change
83
+ - `milestone` - current milestone name
84
+
85
+ If `description` is empty, ask the user:
86
+ ```
87
+ What's broken? Describe the symptom in one sentence:
88
+ (e.g. "auth tokens expire immediately", "build fails with missing module", "tests pass locally but fail in CI")
89
+ ```
90
+ Store response as `description`.
91
+ </step>
92
+
93
+ <step name="classify_issue">
94
+ Classify the issue from the description:
95
+
96
+ | Symptom pattern | Issue type |
97
+ |----------------|------------|
98
+ | Error/exception message | `runtime_error` |
99
+ | Test failures | `test_failure` |
100
+ | Build/compile error | `build_error` |
101
+ | Wrong behavior (no error) | `logic_error` |
102
+ | Performance problem | `performance` |
103
+ | Integration failure | `integration` |
104
+ | Unclear | `unknown` |
105
+
106
+ Set `ISSUE_TYPE`.
107
+ </step>
108
+
109
+ <step name="spawn_debugger">
110
+ Display banner:
111
+ ```
112
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
113
+ GSD ► DEBUG SESSION
114
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
115
+
116
+ Issue: {description}
117
+ Type: {ISSUE_TYPE}
118
+ Phase: {current_phase || "not set"}
119
+
120
+ ◆ Spawning debugger...
121
+ ```
122
+
123
+ Resolve model:
124
+ ```bash
125
+ DEBUGGER_MODEL=$(pi-gsd-tools resolve-model gsd-debugger --raw 2>/dev/null || echo "")
126
+ ```
127
+
128
+ Debug prompt:
129
+ ```markdown
130
+ <objective>
131
+ Debug the following issue in this project:
132
+ {description}
133
+
134
+ Issue type: {ISSUE_TYPE}
135
+ Current phase: {current_phase}
136
+ Milestone: {milestone}
137
+ </objective>
138
+
139
+ <files_to_read>
140
+ - .planning/STATE.md (Project state and recent decisions)
141
+ - .planning/ROADMAP.md (Phase context)
142
+ - ./GEMINI.md or ./CLAUDE.md (Project-specific guidelines, if exists)
143
+ </files_to_read>
144
+
145
+ ${AGENT_SKILLS_DEBUGGER}
146
+
147
+ <investigation_protocol>
148
+ 1. Reproduce: Identify the minimal steps to trigger the issue
149
+ 2. Isolate: Narrow down to the failing component/file/function
150
+ 3. Root cause: Identify WHY it fails, not just WHERE
151
+ 4. Fix: Implement the smallest change that solves the root cause
152
+ 5. Verify: Confirm the fix works and doesn't introduce regressions
153
+
154
+ Always check:
155
+ - Recent commits (git log --oneline -10) for what changed
156
+ - Related files for mismatched interfaces or broken contracts
157
+ - Test suite for existing coverage that should have caught this
158
+ </investigation_protocol>
159
+
160
+ <output_format>
161
+ ## DEBUG COMPLETE
162
+
163
+ **Root cause:** [one sentence]
164
+ **Fix applied:** [what was changed]
165
+ **Files modified:** [list]
166
+ **Verification:** [how to confirm it's fixed]
167
+
168
+ OR
169
+
170
+ ## DEBUG BLOCKED
171
+
172
+ **Investigated:** [what was tried]
173
+ **Blocker:** [what additional info is needed]
174
+ **Next step:** [what the human should provide or check]
175
+ </output_format>
176
+ ```
177
+
178
+ ```
179
+ Task(
180
+ prompt=debug_prompt,
181
+ subagent_type="gsd-debugger",
182
+ model="{DEBUGGER_MODEL}",
183
+ description="Debug: {description}"
184
+ )
185
+ ```
186
+ </step>
187
+
188
+ <step name="handle_return">
189
+ **`## DEBUG COMPLETE`:**
190
+
191
+ Display root cause, fix, and verification steps. Offer:
192
+ ```
193
+ 1. Capture as todo (/gsd-add-todo) - if fix not yet applied
194
+ 2. Continue with current phase (/gsd-execute-phase)
195
+ 3. Done
196
+ ```
197
+
198
+ **`## DEBUG BLOCKED`:**
199
+
200
+ Display blocker and next steps. Offer:
201
+ ```
202
+ 1. Provide additional context and retry
203
+ 2. Try forensics mode (/gsd-forensics) - deeper investigation
204
+ 3. Capture as todo and investigate later
205
+ ```
206
+ </step>
207
+
208
+ <step name="persist_session">
209
+ If the debug session produced a fix or useful findings, offer to save:
210
+
211
+ ```bash
212
+ mkdir -p .planning/debug
213
+ ```
214
+
215
+ Write `.planning/debug/{YYYY-MM-DD}-{slug}.md`:
216
+ ```markdown
217
+ ---
218
+ created: {timestamp}
219
+ issue: {description}
220
+ type: {ISSUE_TYPE}
221
+ phase: {current_phase}
222
+ status: {resolved|blocked}
223
+ ---
224
+
225
+ ## Root Cause
226
+ {root cause summary}
227
+
228
+ ## Fix
229
+ {what was changed}
230
+
231
+ ## Verification
232
+ {how to confirm}
233
+ ```
234
+
235
+ Commit:
236
+ ```bash
237
+ pi-gsd-tools commit "docs: debug session - {description_slug}" --files .planning/debug/{filename}
238
+ ```
239
+ </step>
240
+
241
+ </process>
242
+
243
+ <success_criteria>
244
+ - [ ] Problem description captured (from arg or prompt)
245
+ - [ ] Issue classified by type
246
+ - [ ] gsd-debugger spawned with full project context
247
+ - [ ] Root cause identified or blocker surfaced
248
+ - [ ] Fix applied or next steps clear
249
+ - [ ] Session optionally persisted in .planning/debug/
250
+ </success_criteria>
@@ -8,6 +8,9 @@
8
8
  </delimiters>
9
9
  </settings>
10
10
  <arg name="auto-chain-active" type="flag" flag="--auto" optional />
11
+ <arg name="no-transition" type="flag" flag="--no-transition" optional />
12
+ <arg name="gaps-only" type="flag" flag="--gaps-only" optional />
13
+ <arg name="interactive" type="flag" flag="--interactive" optional />
11
14
  <arg name="phase" type="number" />
12
15
  <arg name="user-text" type="string" optional />
13
16
  </gsd-arguments>
@@ -1,5 +1,75 @@
1
1
  <gsd-version v="1.12.4" />
2
2
 
3
+ <gsd-arguments>
4
+ <settings>
5
+ <keep-extra-args />
6
+ </settings>
7
+ <arg name="phase" type="number" />
8
+ </gsd-arguments>
9
+
10
+ <gsd-execute>
11
+ <shell command="pi-gsd-tools">
12
+ <args>
13
+ <arg string="init" />
14
+ <arg string="phase-op" />
15
+ <arg name="phase" wrap='"' />
16
+ </args>
17
+ <outs>
18
+ <out type="string" name="init" />
19
+ </outs>
20
+ </shell>
21
+ <if>
22
+ <condition>
23
+ <starts-with>
24
+ <left name="init" />
25
+ <right type="string" value="@file:" />
26
+ </starts-with>
27
+ </condition>
28
+ <then>
29
+ <string-op op="split">
30
+ <args>
31
+ <arg name="init" />
32
+ <arg type="string" value="@file:" />
33
+ </args>
34
+ <outs>
35
+ <out type="string" name="init-file" />
36
+ </outs>
37
+ </string-op>
38
+ <shell command="cat">
39
+ <args>
40
+ <arg name="init-file" wrap='"' />
41
+ </args>
42
+ <outs>
43
+ <out type="string" name="init" />
44
+ </outs>
45
+ </shell>
46
+ </then>
47
+ </if>
48
+ <shell command="pi-gsd-tools">
49
+ <args>
50
+ <arg string="state" />
51
+ <arg string="json" />
52
+ <arg string="--raw" />
53
+ </args>
54
+ <outs>
55
+ <suppress-errors />
56
+ <out type="string" name="state" />
57
+ </outs>
58
+ </shell>
59
+ </gsd-execute>
60
+
61
+ ## Context (pre-injected by WXP)
62
+
63
+ **Phase:** <gsd-paste name="phase" />
64
+
65
+ **Phase Data:**
66
+ <gsd-paste name="init" />
67
+
68
+ **State:**
69
+ <gsd-paste name="state" />
70
+
71
+ ---
72
+
3
73
  <purpose>
4
74
  Surface the agent's assumptions about a phase before planning, enabling users to correct misconceptions early.
5
75
 
@@ -9,46 +79,24 @@ Key difference from discuss-phase: This is ANALYSIS of what the agent thinks, no
9
79
  <process>
10
80
 
11
81
  <step name="validate_phase" priority="first">
12
- Phase number: $ARGUMENTS (required)
82
+ <!-- Phase number, phase data and state are pre-injected above via WXP -->
13
83
 
14
- **If argument missing:**
84
+ Parse `init` JSON for: `phase_found`, `phase_number`, `phase_name`, `phase_slug`, `goal`, `phase_dir`.
15
85
 
16
- ```
17
- Error: Phase number required.
86
+ **If `phase_found` is false:**
18
87
 
19
- Usage: /gsd-list-phase-assumptions [phase-number]
20
- Example: /gsd-list-phase-assumptions 3
21
88
  ```
89
+ Error: Phase {phase} not found in roadmap.
22
90
 
23
- Exit workflow.
24
-
25
- **If argument provided:**
26
- Validate phase exists in roadmap:
91
+ Available phases: [list from roadmap]
27
92
 
28
- ```bash
29
- cat .planning/ROADMAP.md | grep -i "Phase ${PHASE}"
30
- ```
31
-
32
- **If phase not found:**
33
-
34
- ```
35
- Error: Phase ${PHASE} not found in roadmap.
36
-
37
- Available phases:
38
- [list phases from roadmap]
93
+ Usage: /gsd-list-phase-assumptions [phase-number]
94
+ Example: /gsd-list-phase-assumptions 3
39
95
  ```
40
96
 
41
97
  Exit workflow.
42
98
 
43
- **If phase found:**
44
- Parse phase details from roadmap:
45
-
46
- - Phase number
47
- - Phase name
48
- - Phase description/goal
49
- - Any scope details mentioned
50
-
51
- Continue to analyze_phase.
99
+ **If `phase_found` is true:** Continue to analyze_phase.
52
100
  </step>
53
101
 
54
102
  <step name="analyze_phase">
@@ -6,6 +6,10 @@
6
6
  </settings>
7
7
  <arg name="auto-chain-active" type="flag" flag="--auto" optional />
8
8
  <arg name="skip-research" type="flag" flag="--skip-research" optional />
9
+ <arg name="gaps" type="flag" flag="--gaps" optional />
10
+ <arg name="skip-verify" type="flag" flag="--skip-verify" optional />
11
+ <arg name="reviews" type="flag" flag="--reviews" optional />
12
+ <arg name="text" type="flag" flag="--text" optional />
9
13
  <arg name="phase" type="number" />
10
14
  </gsd-arguments>
11
15