get-shit-done-cc 1.5.2 → 1.5.3
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/README.md +0 -1
- package/commands/gsd/define-requirements.md +23 -13
- package/commands/gsd/help.md +0 -9
- package/commands/gsd/new-project.md +5 -5
- package/get-shit-done/workflows/define-requirements.md +62 -10
- package/get-shit-done/workflows/execute-phase.md +63 -10
- package/package.json +1 -1
- package/get-shit-done/templates/agent-history.md +0 -263
- package/get-shit-done/workflows/_archive/execute-phase.md +0 -898
package/README.md
CHANGED
|
@@ -340,7 +340,6 @@ You're never locked in. The system adapts.
|
|
|
340
340
|
| `/gsd:plan-phase [N]` | Generate task plans for phase |
|
|
341
341
|
| `/gsd:execute-plan` | Run single plan via subagent |
|
|
342
342
|
| `/gsd:execute-phase <N>` | Execute all plans in phase N with parallel agents |
|
|
343
|
-
| `/gsd:status [--wait]` | Check background agent status from parallel execution |
|
|
344
343
|
| `/gsd:progress` | Where am I? What's next? |
|
|
345
344
|
| `/gsd:verify-work [N]` | User acceptance test of phase or plan ¹ |
|
|
346
345
|
| `/gsd:plan-fix [plan]` | Plan fixes for UAT issues from verify-work |
|
|
@@ -10,14 +10,13 @@ allowed-tools:
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
<objective>
|
|
13
|
-
Define concrete, checkable requirements
|
|
13
|
+
Define concrete, checkable requirements for v1.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
Two modes:
|
|
16
|
+
1. **With research** — Transform FEATURES.md into scoped requirements
|
|
17
|
+
2. **Without research** — Gather requirements through questioning
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
Run after `/gsd:research-project`, before `/gsd:create-roadmap`.
|
|
19
|
+
Run before `/gsd:create-roadmap`.
|
|
21
20
|
|
|
22
21
|
Output: `.planning/REQUIREMENTS.md`
|
|
23
22
|
</objective>
|
|
@@ -30,8 +29,8 @@ Output: `.planning/REQUIREMENTS.md`
|
|
|
30
29
|
|
|
31
30
|
<context>
|
|
32
31
|
@.planning/PROJECT.md
|
|
33
|
-
@.planning/research/FEATURES.md (
|
|
34
|
-
@.planning/research/SUMMARY.md
|
|
32
|
+
@.planning/research/FEATURES.md (if exists)
|
|
33
|
+
@.planning/research/SUMMARY.md (if exists)
|
|
35
34
|
</context>
|
|
36
35
|
|
|
37
36
|
<process>
|
|
@@ -41,8 +40,8 @@ Output: `.planning/REQUIREMENTS.md`
|
|
|
41
40
|
# Verify project exists
|
|
42
41
|
[ -f .planning/PROJECT.md ] || { echo "ERROR: No PROJECT.md found. Run /gsd:new-project first."; exit 1; }
|
|
43
42
|
|
|
44
|
-
#
|
|
45
|
-
[ -f .planning/research/FEATURES.md ]
|
|
43
|
+
# Check for research
|
|
44
|
+
[ -f .planning/research/FEATURES.md ] && echo "HAS_RESEARCH" || echo "NO_RESEARCH"
|
|
46
45
|
|
|
47
46
|
# Check if requirements already exist
|
|
48
47
|
[ -f .planning/REQUIREMENTS.md ] && echo "REQUIREMENTS_EXISTS" || echo "NO_REQUIREMENTS"
|
|
@@ -66,12 +65,24 @@ If "Replace": Continue with workflow
|
|
|
66
65
|
</step>
|
|
67
66
|
|
|
68
67
|
<step name="execute">
|
|
68
|
+
**If HAS_RESEARCH:**
|
|
69
69
|
Follow the define-requirements.md workflow:
|
|
70
|
-
- Load research features
|
|
70
|
+
- Load research features from FEATURES.md
|
|
71
71
|
- Present features by category
|
|
72
72
|
- Ask user to scope each category (v1 / v2 / out of scope)
|
|
73
73
|
- Capture any additions research missed
|
|
74
74
|
- Generate REQUIREMENTS.md with checkable list
|
|
75
|
+
|
|
76
|
+
**If NO_RESEARCH:**
|
|
77
|
+
Gather requirements through questioning:
|
|
78
|
+
- Read PROJECT.md for core value and context
|
|
79
|
+
- Ask: "What are the main things users need to be able to do?"
|
|
80
|
+
- For each capability mentioned, probe for specifics
|
|
81
|
+
- Group into categories (Authentication, Content, etc.)
|
|
82
|
+
- For each category, ask what's v1 vs v2 vs out of scope
|
|
83
|
+
- Generate REQUIREMENTS.md with checkable list
|
|
84
|
+
|
|
85
|
+
Same output format either way — the difference is source (research vs conversation).
|
|
75
86
|
</step>
|
|
76
87
|
|
|
77
88
|
<step name="done">
|
|
@@ -101,8 +112,7 @@ Requirements defined:
|
|
|
101
112
|
|
|
102
113
|
<success_criteria>
|
|
103
114
|
- [ ] PROJECT.md validated
|
|
104
|
-
- [ ]
|
|
105
|
-
- [ ] Features presented by category
|
|
115
|
+
- [ ] Features gathered (from research OR questioning)
|
|
106
116
|
- [ ] User scoped each category (v1/v2/out of scope)
|
|
107
117
|
- [ ] User had opportunity to add missing requirements
|
|
108
118
|
- [ ] REQUIREMENTS.md created with checkable list
|
package/commands/gsd/help.md
CHANGED
|
@@ -144,15 +144,6 @@ Options (via `.planning/config.json` parallelization section):
|
|
|
144
144
|
- `skip_checkpoints`: Skip human checkpoints in background (default: true)
|
|
145
145
|
- `min_plans_for_parallel`: Minimum plans to trigger parallelization (default: 2)
|
|
146
146
|
|
|
147
|
-
**`/gsd:status [--wait]`**
|
|
148
|
-
Check status of background agents from parallel execution.
|
|
149
|
-
|
|
150
|
-
- Shows running/completed agents from agent-history.json
|
|
151
|
-
- Uses TaskOutput to poll agent status
|
|
152
|
-
- With `--wait`: blocks until all agents complete
|
|
153
|
-
|
|
154
|
-
Usage: `/gsd:status` or `/gsd:status --wait`
|
|
155
|
-
|
|
156
147
|
### Roadmap Management
|
|
157
148
|
|
|
158
149
|
**`/gsd:add-phase <description>`**
|
|
@@ -300,15 +300,15 @@ Project initialized:
|
|
|
300
300
|
|
|
301
301
|
Choose your path:
|
|
302
302
|
|
|
303
|
-
**Option A: Research first** (recommended
|
|
304
|
-
Research
|
|
303
|
+
**Option A: Research first** (recommended)
|
|
304
|
+
Research ecosystem → define requirements → create roadmap. Discovers standard stacks, expected features, architecture patterns.
|
|
305
305
|
|
|
306
306
|
`/gsd:research-project`
|
|
307
307
|
|
|
308
|
-
**Option B:
|
|
309
|
-
Skip research
|
|
308
|
+
**Option B: Define requirements directly** (familiar domains)
|
|
309
|
+
Skip research, define requirements from what you know, then create roadmap.
|
|
310
310
|
|
|
311
|
-
`/gsd:
|
|
311
|
+
`/gsd:define-requirements`
|
|
312
312
|
|
|
313
313
|
<sub>`/clear` first → fresh context window</sub>
|
|
314
314
|
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
<purpose>
|
|
2
|
-
|
|
2
|
+
Define concrete, checkable requirements for v1.
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
Two modes:
|
|
5
|
+
1. **With research** — Transform FEATURES.md into scoped requirements
|
|
6
|
+
2. **Without research** — Gather requirements through questioning
|
|
6
7
|
|
|
7
|
-
This is the bridge between "what's possible" and "what we're committing to."
|
|
8
|
+
This is the bridge between "what's possible/wanted" and "what we're committing to."
|
|
8
9
|
</purpose>
|
|
9
10
|
|
|
10
11
|
<required_reading>
|
|
@@ -12,13 +13,23 @@ This is the bridge between "what's possible" and "what we're committing to."
|
|
|
12
13
|
|
|
13
14
|
1. ~/.claude/get-shit-done/templates/requirements.md
|
|
14
15
|
2. .planning/PROJECT.md
|
|
15
|
-
3. .planning/research/FEATURES.md
|
|
16
|
-
4. .planning/research/SUMMARY.md
|
|
16
|
+
3. .planning/research/FEATURES.md (if exists)
|
|
17
|
+
4. .planning/research/SUMMARY.md (if exists)
|
|
17
18
|
</required_reading>
|
|
18
19
|
|
|
19
20
|
<process>
|
|
20
21
|
|
|
21
|
-
<step name="
|
|
22
|
+
<step name="detect_mode">
|
|
23
|
+
Check for research:
|
|
24
|
+
```bash
|
|
25
|
+
[ -f .planning/research/FEATURES.md ] && echo "HAS_RESEARCH" || echo "NO_RESEARCH"
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**If HAS_RESEARCH:** Follow steps load_context → present_features → scope_categories
|
|
29
|
+
**If NO_RESEARCH:** Follow steps load_project → gather_requirements → scope_categories
|
|
30
|
+
</step>
|
|
31
|
+
|
|
32
|
+
<step name="load_context" mode="with_research">
|
|
22
33
|
Read PROJECT.md and extract:
|
|
23
34
|
- Core value (the ONE thing that must work)
|
|
24
35
|
- Stated constraints (budget, timeline, tech limitations)
|
|
@@ -37,11 +48,52 @@ Read research/SUMMARY.md for:
|
|
|
37
48
|
- Suggested phase structure (informational only)
|
|
38
49
|
</step>
|
|
39
50
|
|
|
51
|
+
<step name="load_project" mode="without_research">
|
|
52
|
+
Read PROJECT.md and extract:
|
|
53
|
+
- Core value (the ONE thing that must work)
|
|
54
|
+
- Stated constraints (budget, timeline, tech limitations)
|
|
55
|
+
- Any explicit scope boundaries from project definition
|
|
56
|
+
- Any requirements already mentioned in PROJECT.md
|
|
57
|
+
</step>
|
|
58
|
+
|
|
59
|
+
<step name="gather_requirements" mode="without_research">
|
|
60
|
+
Since no research exists, gather requirements through conversation.
|
|
61
|
+
|
|
62
|
+
**Start with core value:**
|
|
63
|
+
```
|
|
64
|
+
Based on PROJECT.md, the core value is: "[core value]"
|
|
65
|
+
|
|
66
|
+
What are the main things users need to be able to do?
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Wait for response. For each capability mentioned:
|
|
70
|
+
- Ask clarifying questions to make it specific
|
|
71
|
+
- Probe for related capabilities they might need
|
|
72
|
+
- Group naturally emerging categories
|
|
73
|
+
|
|
74
|
+
**Example flow:**
|
|
75
|
+
```
|
|
76
|
+
User: "Users need to create and share posts"
|
|
77
|
+
|
|
78
|
+
You: "For posts, what should users be able to include?
|
|
79
|
+
- Text only?
|
|
80
|
+
- Images?
|
|
81
|
+
- Links with previews?
|
|
82
|
+
|
|
83
|
+
And for sharing — to a feed, or also direct to other users?"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Build up a mental feature list organized by category.
|
|
87
|
+
|
|
88
|
+
**When you have enough:**
|
|
89
|
+
Present gathered features in same format as present_features step, then proceed to scope_categories.
|
|
90
|
+
</step>
|
|
91
|
+
|
|
40
92
|
<step name="present_features">
|
|
41
|
-
Present
|
|
93
|
+
Present features grouped by category (from research or gathered through questioning):
|
|
42
94
|
|
|
43
95
|
```
|
|
44
|
-
|
|
96
|
+
Here are the features for [domain]:
|
|
45
97
|
|
|
46
98
|
## Authentication
|
|
47
99
|
**Table stakes:**
|
|
@@ -267,7 +319,7 @@ Requirements defined:
|
|
|
267
319
|
|
|
268
320
|
<success_criteria>
|
|
269
321
|
- [ ] PROJECT.md core value extracted
|
|
270
|
-
- [ ]
|
|
322
|
+
- [ ] Features gathered (from research OR conversation)
|
|
271
323
|
- [ ] All categories presented to user
|
|
272
324
|
- [ ] User scoped each category (v1/v2/out of scope)
|
|
273
325
|
- [ ] User had opportunity to add requirements
|
|
@@ -103,15 +103,21 @@ waves = {
|
|
|
103
103
|
|
|
104
104
|
**No dependency analysis needed.** Wave numbers are pre-computed during `/gsd:plan-phase`.
|
|
105
105
|
|
|
106
|
-
Report wave structure
|
|
106
|
+
Report wave structure with context:
|
|
107
107
|
```
|
|
108
|
-
Execution Plan
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
108
|
+
## Execution Plan
|
|
109
|
+
|
|
110
|
+
**Phase {X}: {Name}** — {total_plans} plans across {wave_count} waves
|
|
111
|
+
|
|
112
|
+
| Wave | Plans | What it builds |
|
|
113
|
+
|------|-------|----------------|
|
|
114
|
+
| 1 | 01-01, 01-02 | {from plan objectives} |
|
|
115
|
+
| 2 | 01-03 | {from plan objectives} |
|
|
116
|
+
| 3 | 01-04 [checkpoint] | {from plan objectives} |
|
|
112
117
|
|
|
113
|
-
Total: 5 plans in 3 waves
|
|
114
118
|
```
|
|
119
|
+
|
|
120
|
+
The "What it builds" column comes from skimming plan names/objectives. Keep it brief (3-8 words).
|
|
115
121
|
</step>
|
|
116
122
|
|
|
117
123
|
<step name="execute_waves">
|
|
@@ -119,7 +125,32 @@ Execute each wave in sequence. Autonomous plans within a wave run in parallel.
|
|
|
119
125
|
|
|
120
126
|
**For each wave:**
|
|
121
127
|
|
|
122
|
-
1. **
|
|
128
|
+
1. **Describe what's being built (BEFORE spawning):**
|
|
129
|
+
|
|
130
|
+
Read each plan's `<objective>` section. Extract what's being built and why it matters.
|
|
131
|
+
|
|
132
|
+
**Output:**
|
|
133
|
+
```
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Wave {N}
|
|
137
|
+
|
|
138
|
+
**{Plan ID}: {Plan Name}**
|
|
139
|
+
{2-3 sentences: what this builds, key technical approach, why it matters in context}
|
|
140
|
+
|
|
141
|
+
**{Plan ID}: {Plan Name}** (if parallel)
|
|
142
|
+
{same format}
|
|
143
|
+
|
|
144
|
+
Spawning {count} agent(s)...
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Examples:**
|
|
150
|
+
- Bad: "Executing terrain generation plan"
|
|
151
|
+
- Good: "Procedural terrain generator using Perlin noise — creates height maps, biome zones, and collision meshes. Required before vehicle physics can interact with ground."
|
|
152
|
+
|
|
153
|
+
2. **Spawn all autonomous agents in wave simultaneously:**
|
|
123
154
|
|
|
124
155
|
Use Task tool with multiple parallel calls. Each agent gets prompt from subagent-task-prompt template:
|
|
125
156
|
|
|
@@ -155,12 +186,34 @@ Execute each wave in sequence. Autonomous plans within a wave run in parallel.
|
|
|
155
186
|
|
|
156
187
|
Task tool blocks until each agent finishes. All parallel agents return together.
|
|
157
188
|
|
|
158
|
-
3. **
|
|
189
|
+
3. **Report completion and what was built:**
|
|
159
190
|
|
|
160
191
|
For each completed agent:
|
|
161
192
|
- Verify SUMMARY.md exists at expected path
|
|
162
|
-
-
|
|
163
|
-
-
|
|
193
|
+
- Read SUMMARY.md to extract what was built
|
|
194
|
+
- Note any issues or deviations
|
|
195
|
+
|
|
196
|
+
**Output:**
|
|
197
|
+
```
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Wave {N} Complete
|
|
201
|
+
|
|
202
|
+
**{Plan ID}: {Plan Name}**
|
|
203
|
+
{What was built — from SUMMARY.md deliverables}
|
|
204
|
+
{Notable deviations or discoveries, if any}
|
|
205
|
+
|
|
206
|
+
**{Plan ID}: {Plan Name}** (if parallel)
|
|
207
|
+
{same format}
|
|
208
|
+
|
|
209
|
+
{If more waves: brief note on what this enables for next wave}
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Examples:**
|
|
215
|
+
- Bad: "Wave 2 complete. Proceeding to Wave 3."
|
|
216
|
+
- Good: "Terrain system complete — 3 biome types, height-based texturing, physics collision meshes. Vehicle physics (Wave 3) can now reference ground surfaces."
|
|
164
217
|
|
|
165
218
|
4. **Handle failures:**
|
|
166
219
|
|
package/package.json
CHANGED
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
# Agent History Template
|
|
2
|
-
|
|
3
|
-
Template for `.planning/agent-history.json` - tracks subagent spawns during plan execution for resume capability.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## File Template
|
|
8
|
-
|
|
9
|
-
```json
|
|
10
|
-
{
|
|
11
|
-
"version": "1.2",
|
|
12
|
-
"max_entries": 50,
|
|
13
|
-
"entries": []
|
|
14
|
-
}
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Entry Schema
|
|
18
|
-
|
|
19
|
-
Each entry tracks a subagent spawn or status change:
|
|
20
|
-
|
|
21
|
-
```json
|
|
22
|
-
{
|
|
23
|
-
"agent_id": "agent_01HXXXX...",
|
|
24
|
-
"task_description": "Execute tasks 1-3 from plan 02-01",
|
|
25
|
-
"phase": "02",
|
|
26
|
-
"plan": "01",
|
|
27
|
-
"segment": 1,
|
|
28
|
-
"timestamp": "2026-01-15T14:22:10Z",
|
|
29
|
-
"status": "spawned",
|
|
30
|
-
"completion_timestamp": null,
|
|
31
|
-
"execution_mode": "sequential",
|
|
32
|
-
"parallel_group": null,
|
|
33
|
-
"granularity": "plan",
|
|
34
|
-
"depends_on": null,
|
|
35
|
-
"files_modified": null,
|
|
36
|
-
"checkpoints_skipped": null,
|
|
37
|
-
"task_results": null
|
|
38
|
-
}
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### Field Definitions
|
|
42
|
-
|
|
43
|
-
| Field | Type | Description |
|
|
44
|
-
|-------|------|-------------|
|
|
45
|
-
| agent_id | string | Unique ID returned by Task tool |
|
|
46
|
-
| task_description | string | Brief description of what agent is executing |
|
|
47
|
-
| phase | string | Phase number (e.g., "02", "02.1") |
|
|
48
|
-
| plan | string | Plan number within phase |
|
|
49
|
-
| segment | number/null | Segment number for segmented plans, null for full plan |
|
|
50
|
-
| timestamp | string | ISO 8601 timestamp when agent was spawned |
|
|
51
|
-
| status | string | spawned, completed, interrupted, resumed, queued, failed |
|
|
52
|
-
| completion_timestamp | string/null | ISO timestamp when completed |
|
|
53
|
-
| execution_mode | string | "sequential" or "parallel" |
|
|
54
|
-
| parallel_group | string/null | Batch ID linking agents in same parallel execution |
|
|
55
|
-
| granularity | string | "plan" or "task_group" |
|
|
56
|
-
| depends_on | array/null | Agent IDs or plan refs this depends on |
|
|
57
|
-
| files_modified | array/null | Files this agent created/modified |
|
|
58
|
-
| checkpoints_skipped | number/null | Count of checkpoints skipped in background |
|
|
59
|
-
| task_results | object/null | Per-task outcomes for task-level parallelization |
|
|
60
|
-
|
|
61
|
-
### Status Lifecycle
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
queued ──> spawned ──────────────────> completed
|
|
65
|
-
│ ^
|
|
66
|
-
│ │
|
|
67
|
-
├──> interrupted ──> resumed┘
|
|
68
|
-
│
|
|
69
|
-
└──> failed
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
- **queued**: Waiting for dependency (parallel execution only)
|
|
73
|
-
- **spawned**: Agent created via Task tool, execution in progress
|
|
74
|
-
- **completed**: Agent finished successfully, results received
|
|
75
|
-
- **interrupted**: Session ended before agent completed (detected on resume)
|
|
76
|
-
- **resumed**: Previously interrupted agent resumed via resume parameter
|
|
77
|
-
- **failed**: Agent execution failed (error during execution)
|
|
78
|
-
|
|
79
|
-
## Usage
|
|
80
|
-
|
|
81
|
-
### When to Create File
|
|
82
|
-
|
|
83
|
-
Create `.planning/agent-history.json` from this template when:
|
|
84
|
-
- First subagent spawn in execute-plan workflow
|
|
85
|
-
- File doesn't exist yet
|
|
86
|
-
|
|
87
|
-
### When to Add Entry
|
|
88
|
-
|
|
89
|
-
Add new entry immediately after Task tool returns with agent_id:
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
1. Task tool spawns subagent
|
|
93
|
-
2. Response includes agent_id
|
|
94
|
-
3. Write agent_id to .planning/current-agent-id.txt
|
|
95
|
-
4. Append entry to agent-history.json with status "spawned"
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### When to Update Entry
|
|
99
|
-
|
|
100
|
-
Update existing entry when:
|
|
101
|
-
|
|
102
|
-
**On successful completion:**
|
|
103
|
-
```json
|
|
104
|
-
{
|
|
105
|
-
"status": "completed",
|
|
106
|
-
"completion_timestamp": "2026-01-15T14:45:33Z"
|
|
107
|
-
}
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
**On resume detection (interrupted agent found):**
|
|
111
|
-
```json
|
|
112
|
-
{
|
|
113
|
-
"status": "interrupted"
|
|
114
|
-
}
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Then add new entry with resumed status:
|
|
118
|
-
```json
|
|
119
|
-
{
|
|
120
|
-
"agent_id": "agent_01HXXXX...",
|
|
121
|
-
"status": "resumed",
|
|
122
|
-
"timestamp": "2026-01-15T15:00:00Z"
|
|
123
|
-
}
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
### Entry Retention
|
|
127
|
-
|
|
128
|
-
- Keep maximum 50 entries (configurable via max_entries)
|
|
129
|
-
- On exceeding limit, remove oldest completed entries first
|
|
130
|
-
- Never remove entries with status "spawned" (may need resume)
|
|
131
|
-
- Prune during init_agent_tracking step
|
|
132
|
-
|
|
133
|
-
## Example Entries
|
|
134
|
-
|
|
135
|
-
### Sequential Execution (Default)
|
|
136
|
-
|
|
137
|
-
```json
|
|
138
|
-
{
|
|
139
|
-
"agent_id": "agent_01HXY123ABC",
|
|
140
|
-
"task_description": "Execute full plan 02-01 (autonomous)",
|
|
141
|
-
"phase": "02",
|
|
142
|
-
"plan": "01",
|
|
143
|
-
"segment": null,
|
|
144
|
-
"timestamp": "2026-01-15T14:22:10Z",
|
|
145
|
-
"status": "completed",
|
|
146
|
-
"completion_timestamp": "2026-01-15T14:45:33Z",
|
|
147
|
-
"execution_mode": "sequential",
|
|
148
|
-
"parallel_group": null,
|
|
149
|
-
"granularity": "plan",
|
|
150
|
-
"depends_on": null,
|
|
151
|
-
"files_modified": ["src/api/auth.ts", "src/types/user.ts"],
|
|
152
|
-
"checkpoints_skipped": null,
|
|
153
|
-
"task_results": null
|
|
154
|
-
}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
### Parallel Execution (Plan-Level)
|
|
158
|
-
|
|
159
|
-
Independent plans in a phase running in parallel:
|
|
160
|
-
|
|
161
|
-
```json
|
|
162
|
-
{
|
|
163
|
-
"agent_id": "agent_01HXYZ123",
|
|
164
|
-
"task_description": "Execute plan 05-01 (parallel)",
|
|
165
|
-
"phase": "05",
|
|
166
|
-
"plan": "01",
|
|
167
|
-
"segment": null,
|
|
168
|
-
"timestamp": "2026-01-12T10:00:00Z",
|
|
169
|
-
"status": "completed",
|
|
170
|
-
"completion_timestamp": "2026-01-12T10:15:00Z",
|
|
171
|
-
"execution_mode": "parallel",
|
|
172
|
-
"parallel_group": "phase-05-batch-1736676000",
|
|
173
|
-
"granularity": "plan",
|
|
174
|
-
"depends_on": null,
|
|
175
|
-
"files_modified": ["src/auth/login.ts", "src/auth/types.ts"],
|
|
176
|
-
"checkpoints_skipped": 1,
|
|
177
|
-
"task_results": null
|
|
178
|
-
}
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### Queued with Dependency
|
|
182
|
-
|
|
183
|
-
Agent waiting for another to complete:
|
|
184
|
-
|
|
185
|
-
```json
|
|
186
|
-
{
|
|
187
|
-
"agent_id": "agent_01HXYZ456",
|
|
188
|
-
"task_description": "Execute plan 05-03 (depends on 05-01)",
|
|
189
|
-
"phase": "05",
|
|
190
|
-
"plan": "03",
|
|
191
|
-
"segment": null,
|
|
192
|
-
"timestamp": "2026-01-12T10:15:00Z",
|
|
193
|
-
"status": "spawned",
|
|
194
|
-
"completion_timestamp": null,
|
|
195
|
-
"execution_mode": "parallel",
|
|
196
|
-
"parallel_group": "phase-05-batch-1736676000",
|
|
197
|
-
"granularity": "plan",
|
|
198
|
-
"depends_on": ["agent_01HXYZ123"],
|
|
199
|
-
"files_modified": null,
|
|
200
|
-
"checkpoints_skipped": null,
|
|
201
|
-
"task_results": null
|
|
202
|
-
}
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
### Parallel Group Format
|
|
206
|
-
|
|
207
|
-
- **Plan-level parallel:** `phase-{phase}-batch-{timestamp}`
|
|
208
|
-
- **Task-level parallel:** `plan-{phase}-{plan}-tasks-batch-{timestamp}`
|
|
209
|
-
|
|
210
|
-
Example: `phase-05-batch-1736676000` groups all agents executing Phase 5 plans in parallel.
|
|
211
|
-
|
|
212
|
-
## Parallel Execution Resume
|
|
213
|
-
|
|
214
|
-
When a session is interrupted during parallel execution:
|
|
215
|
-
|
|
216
|
-
### Detection
|
|
217
|
-
|
|
218
|
-
Check for entries with `status: "spawned"` and `parallel_group` set. These are agents that were running when session ended.
|
|
219
|
-
|
|
220
|
-
```bash
|
|
221
|
-
# Find interrupted parallel agents
|
|
222
|
-
jq '.entries[] | select(.status == "spawned" and .parallel_group != null)' .planning/agent-history.json
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
### Resume Options
|
|
226
|
-
|
|
227
|
-
1. **Resume batch:** Resume all interrupted agents in the parallel group
|
|
228
|
-
2. **Resume single:** Resume a specific agent by ID
|
|
229
|
-
3. **Start fresh:** Abandon interrupted batch, start new execution
|
|
230
|
-
|
|
231
|
-
### Resume Command
|
|
232
|
-
|
|
233
|
-
`/gsd:resume-task` accepts:
|
|
234
|
-
- No argument: Resume most recent interrupted agent
|
|
235
|
-
- Agent ID: Resume specific agent
|
|
236
|
-
- `--batch`: Resume entire parallel group
|
|
237
|
-
|
|
238
|
-
### Conflict Detection
|
|
239
|
-
|
|
240
|
-
Before resuming, check for file modifications since spawn:
|
|
241
|
-
|
|
242
|
-
```bash
|
|
243
|
-
git diff --name-only ${SPAWN_COMMIT}..HEAD
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
If files modified by another agent conflict with files this agent modifies, warn user before proceeding. This prevents overwriting work done by other parallel agents that completed after the interruption.
|
|
247
|
-
|
|
248
|
-
## Related Files
|
|
249
|
-
|
|
250
|
-
- `.planning/current-agent-id.txt`: Single line with currently active agent ID (for quick resume lookup)
|
|
251
|
-
- `.planning/STATE.md`: Project state including session continuity info
|
|
252
|
-
|
|
253
|
-
---
|
|
254
|
-
|
|
255
|
-
## Template Notes
|
|
256
|
-
|
|
257
|
-
**When to create:** First subagent spawn during execute-plan workflow.
|
|
258
|
-
|
|
259
|
-
**Location:** `.planning/agent-history.json`
|
|
260
|
-
|
|
261
|
-
**Companion file:** `.planning/current-agent-id.txt` (single agent ID, overwritten on each spawn)
|
|
262
|
-
|
|
263
|
-
**Purpose:** Enable resume capability for interrupted subagent executions via Task tool's resume parameter.
|