get-shit-done-cc 1.3.31 → 1.3.32

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 CHANGED
@@ -1,10 +1,26 @@
1
- # Get Shit Done
1
+ <div align="center">
2
+
3
+ # GET SHIT DONE
4
+
5
+ **A light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by TÂCHES.**
2
6
 
3
- **A meta-prompting, context engineering and spec-driven development system for Claude Code by TÂCHES.**
7
+ [![npm version](https://img.shields.io/npm/v/get-shit-done-cc?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-cc)
8
+ [![npm downloads](https://img.shields.io/npm/dm/get-shit-done-cc?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-cc)
9
+ [![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
10
+ [![GitHub stars](https://img.shields.io/github/stars/glittercowboy/get-shit-done?style=for-the-badge&logo=github&color=181717)](https://github.com/glittercowboy/get-shit-done)
11
+
12
+ <br>
13
+
14
+ ```bash
15
+ npx get-shit-done-cc
16
+ ```
17
+
18
+ **Works on Mac, Windows, and Linux.**
19
+
20
+ <br>
4
21
 
5
22
  ![GSD Install](assets/terminal.svg)
6
23
 
7
- <div align="center">
8
24
  <br>
9
25
 
10
26
  *"If you know clearly what you want, this WILL build it for you. No bs."*
@@ -17,67 +33,50 @@
17
33
 
18
34
  **Trusted by engineers at Amazon, Google, Shopify, and Webflow.**
19
35
 
20
- </div>
21
-
22
- ---
36
+ [Why I Built This](#why-i-built-this) · [How It Works](#how-it-works) · [Commands](#commands) · [Why It Works](#why-it-works)
23
37
 
24
- Vibecoding has a bad reputation. You describe what you want, AI generates code, and you get inconsistent garbage that falls apart at scale.
25
-
26
- GSD fixes that. It's the context engineering layer that makes Claude Code reliable. Describe your idea, let the system extract everything it needs to know, and let Claude Code get to work.
38
+ </div>
27
39
 
28
40
  ---
29
41
 
30
- ## Who This Is For
31
-
32
- People who want to describe what they want and have it built correctly — without pretending they're running a 50-person engineering org.
33
-
34
- ### Marketplace Installation
42
+ ## Why I Built This
35
43
 
36
- Install from the Claude Code marketplace:
44
+ I'm a solo developer. I don't write code — Claude Code does.
37
45
 
38
- ```bash
39
- /plugin marketplace add glittercowboy/get-shit-done
40
- /plugin install get-shit-done@get-shit-done
41
- ```
46
+ Other spec-driven development tools exist; BMAD, Speckit... But they all seem to make things way more complicated than they need to be (sprint ceremonies, story points, stakeholder syncs, retrospectives, Jira workflows) or lack real big picture understanding of what you're building. I'm not a 50-person software company. I don't want to play enterprise theater. I'm just a creative person trying to build great things that work.
42
47
 
43
- ### Manual Installation
48
+ So I built GSD. The complexity is in the system, not in your workflow. Behind the scenes: context engineering, XML prompt formatting, subagent orchestration, state management. What you see: a few commands that just work.
44
49
 
45
- Clone the repository and tell Claude Code where to find it:
50
+ The system gives Claude everything it needs to do the work *and* verify it. I trust the workflow. It just does a good job.
46
51
 
47
- ```bash
48
- git clone https://github.com/glittercowboy/get-shit-done.git
49
- claude --plugin-dir ./get-shit-done
50
- ```
52
+ That's what this is. No enterprise roleplay bullshit. Just an incredibly effective system for building cool stuff consistently using Claude Code.
51
53
 
52
- Useful for development or testing modifications.
54
+ **TÂCHES**
53
55
 
54
56
  ---
55
57
 
56
- ## Why I Built This
57
-
58
- I'm a solo developer. I don't write code — Claude Code does.
59
-
60
- Other spec-driven development tools exist; BMAD, Speckit... But they all seem to make things way more complicated than they need to be (sprint ceremonies, story points, stakeholder syncs, retrospectives, Jira workflows) or lack real big picture understanding of what you're building. I'm not a 50-person software company. I don't want to play enterprise theater. I'm just a creative person trying to build great things that work.
58
+ Vibecoding has a bad reputation. You describe what you want, AI generates code, and you get inconsistent garbage that falls apart at scale.
61
59
 
62
- So I built GSD. The complexity is in the system, not in your workflow. Behind the scenes: context engineering, XML prompt formatting, subagent orchestration, state management. What you see: a few commands that just work.
60
+ GSD fixes that. It's the context engineering layer that makes Claude Code reliable. Describe your idea, let the system extract everything it needs to know, and let Claude Code get to work.
63
61
 
64
- The system gives Claude everything it needs to do the work _and_ verify it. I trust the workflow. It just does a good job.
62
+ ---
65
63
 
66
- That's what this is. No enterprise roleplay bullshit. Just an incredibly effective system for building cool stuff consistently using Claude Code.
64
+ ## Who This Is For
67
65
 
68
- TÂCHES
66
+ People who want to describe what they want and have it built correctly without pretending they're running a 50-person engineering org.
69
67
 
70
68
  ---
71
69
 
72
- ## Installation
70
+ ## Getting Started
73
71
 
74
72
  ```bash
75
73
  npx get-shit-done-cc
76
74
  ```
77
75
 
78
- That's it. Works on Mac, Windows, and Linux.
76
+ That's it. Verify with `/gsd:help`.
79
77
 
80
- ### Non-interactive Install (Docker, CI, Scripts)
78
+ <details>
79
+ <summary><strong>Non-interactive Install (Docker, CI, Scripts)</strong></summary>
81
80
 
82
81
  ```bash
83
82
  npx get-shit-done-cc --global # Install to ~/.claude/
@@ -86,7 +85,22 @@ npx get-shit-done-cc --local # Install to ./.claude/
86
85
 
87
86
  Use `--global` (`-g`) or `--local` (`-l`) to skip the interactive prompt.
88
87
 
89
- Verify: `/gsd:help`
88
+ </details>
89
+
90
+ <details>
91
+ <summary><strong>Development Installation</strong></summary>
92
+
93
+ Clone the repository and run the installer locally:
94
+
95
+ ```bash
96
+ git clone https://github.com/glittercowboy/get-shit-done.git
97
+ cd get-shit-done
98
+ node bin/install.js --local
99
+ ```
100
+
101
+ Installs to `./.claude/` for testing modifications before contributing.
102
+
103
+ </details>
90
104
 
91
105
  ### Recommended: Skip Permissions Mode
92
106
 
@@ -96,12 +110,13 @@ GSD is designed for frictionless automation. Run Claude Code with:
96
110
  claude --dangerously-skip-permissions
97
111
  ```
98
112
 
99
- This is how GSD is intended to be used — stopping to approve `date` and `git commit` 50 times defeats the purpose.
100
-
101
- If you prefer not to use that flag, add this to your project's `.claude/settings.json` to auto-approve GSD's commands:
113
+ > [!TIP]
114
+ > This is how GSD is intended to be used — stopping to approve `date` and `git commit` 50 times defeats the purpose.
102
115
 
103
116
  <details>
104
- <summary>Show settings.json permissions</summary>
117
+ <summary><strong>Alternative: Granular Permissions</strong></summary>
118
+
119
+ If you prefer not to use that flag, add this to your project's `.claude/settings.json`:
105
120
 
106
121
  ```json
107
122
  {
@@ -146,13 +161,12 @@ The system asks questions. Keeps asking until it has everything — your goals,
146
161
  ### 2. Create roadmap
147
162
 
148
163
  ```
149
- /gsd:create-roadmap # Create phases and state tracking
164
+ /gsd:create-roadmap
150
165
  ```
151
166
 
152
- Roadmap creation produces:
153
-
154
- - **ROADMAP.md** - Phases from start to finish
155
- - **STATE.md** - Living memory that persists across sessions
167
+ Produces:
168
+ - **ROADMAP.md** — Phases from start to finish
169
+ - **STATE.md** Living memory that persists across sessions
156
170
 
157
171
  ### 3. Plan and execute phases
158
172
 
@@ -187,13 +201,15 @@ Already have code? Start here instead.
187
201
 
188
202
  Spawns parallel agents to analyze your code. Creates `.planning/codebase/` with 7 documents:
189
203
 
190
- - **STACK.md** Languages, frameworks, dependencies
191
- - **ARCHITECTURE.md** — Patterns, layers, data flow
192
- - **STRUCTURE.md** Directory layout, where things live
193
- - **CONVENTIONS.md** Code style, naming patterns
194
- - **TESTING.md** Test framework, patterns
195
- - **INTEGRATIONS.md** External services, APIs
196
- - **CONCERNS.md** Tech debt, known issues, fragile areas
204
+ | Document | Purpose |
205
+ |----------|---------|
206
+ | `STACK.md` | Languages, frameworks, dependencies |
207
+ | `ARCHITECTURE.md` | Patterns, layers, data flow |
208
+ | `STRUCTURE.md` | Directory layout, where things live |
209
+ | `CONVENTIONS.md` | Code style, naming patterns |
210
+ | `TESTING.md` | Test framework, patterns |
211
+ | `INTEGRATIONS.md` | External services, APIs |
212
+ | `CONCERNS.md` | Tech debt, known issues, fragile areas |
197
213
 
198
214
  ### 2. Initialize project
199
215
 
@@ -215,18 +231,18 @@ The codebase docs load automatically during planning. Claude knows your patterns
215
231
 
216
232
  ### Context Engineering
217
233
 
218
- Claude Code is incredibly powerful _if_ you give it the context it needs. Most people don't.
234
+ Claude Code is incredibly powerful *if* you give it the context it needs. Most people don't.
219
235
 
220
236
  GSD handles it for you:
221
237
 
222
- | File | What it does |
223
- | ------------ | ------------------------------------------------------ |
224
- | `PROJECT.md` | Project vision, always loaded |
225
- | `ROADMAP.md` | Where you're going, what's done |
226
- | `STATE.md` | Decisions, blockers, position — memory across sessions |
227
- | `PLAN.md` | Atomic task with XML structure, verification steps |
228
- | `SUMMARY.md` | What happened, what changed, committed to history |
229
- | `ISSUES.md` | Deferred enhancements tracked across sessions |
238
+ | File | What it does |
239
+ |------|--------------|
240
+ | `PROJECT.md` | Project vision, always loaded |
241
+ | `ROADMAP.md` | Where you're going, what's done |
242
+ | `STATE.md` | Decisions, blockers, position — memory across sessions |
243
+ | `PLAN.md` | Atomic task with XML structure, verification steps |
244
+ | `SUMMARY.md` | What happened, what changed, committed to history |
245
+ | `ISSUES.md` | Deferred enhancements tracked across sessions |
230
246
 
231
247
  Size limits based on where Claude's quality degrades. Stay under, get consistent excellence.
232
248
 
@@ -252,19 +268,21 @@ Precise instructions. No guessing. Verification built in.
252
268
 
253
269
  ### Subagent Execution
254
270
 
255
- As Claude fills its context window, quality degrades. You've seen it: "Due to context limits, I'll be more concise now." That "concision" is code for cutting corners.
271
+ As Claude fills its context window, quality degrades. You've seen it: *"Due to context limits, I'll be more concise now."* That "concision" is code for cutting corners.
256
272
 
257
273
  GSD prevents this. Each plan is maximum 3 tasks. Each plan runs in a fresh subagent — 200k tokens purely for implementation, zero accumulated garbage.
258
274
 
259
- - Task 1: fresh context, full quality
260
- - Task 2: fresh context, full quality
261
- - Task 3: fresh context, full quality
275
+ | Task | Context | Quality |
276
+ |------|---------|---------|
277
+ | Task 1 | Fresh | ✅ Full |
278
+ | Task 2 | Fresh | ✅ Full |
279
+ | Task 3 | Fresh | ✅ Full |
262
280
 
263
281
  No degradation. Walk away, come back to completed work.
264
282
 
265
283
  ### Atomic Git Commits
266
284
 
267
- Each task gets its own commit immediately after completion. Plans produce 2-4 commits total:
285
+ Each task gets its own commit immediately after completion:
268
286
 
269
287
  ```bash
270
288
  abc123f docs(08-02): complete user registration plan
@@ -273,11 +291,8 @@ hij789k feat(08-02): implement password hashing
273
291
  lmn012o feat(08-02): create registration endpoint
274
292
  ```
275
293
 
276
- **Benefits:**
277
- - Git bisect finds exact failing task
278
- - Each task independently revertable
279
- - Clear history for Claude in future sessions
280
- - Better observability in AI-automated workflow
294
+ > [!NOTE]
295
+ > **Benefits:** Git bisect finds exact failing task. Each task independently revertable. Clear history for Claude in future sessions. Better observability in AI-automated workflow.
281
296
 
282
297
  Every commit is surgical, traceable, and meaningful.
283
298
 
@@ -294,31 +309,31 @@ You're never locked in. The system adapts.
294
309
 
295
310
  ## Commands
296
311
 
297
- | Command | What it does |
298
- | --------------------------------- | ------------------------------------------------------------- |
299
- | `/gsd:new-project` | Extract your idea through questions, create PROJECT.md |
300
- | `/gsd:create-roadmap` | Create roadmap and state tracking |
301
- | `/gsd:map-codebase` | Map existing codebase for brownfield projects |
302
- | `/gsd:plan-phase [N]` | Generate task plans for phase |
303
- | `/gsd:execute-plan` | Run plan via subagent |
304
- | `/gsd:progress` | Where am I? What's next? |
305
- | `/gsd:verify-work [N]`* | User acceptance test of phase or plan |
306
- | `/gsd:plan-fix [plan]` | Plan fixes for UAT issues from verify-work |
307
- | `/gsd:complete-milestone` | Ship it, prep next version |
308
- | `/gsd:discuss-milestone` | Gather context for next milestone |
309
- | `/gsd:new-milestone [name]` | Create new milestone with phases |
310
- | `/gsd:add-phase` | Append phase to roadmap |
311
- | `/gsd:insert-phase [N]` | Insert urgent work |
312
- | `/gsd:remove-phase [N]` | Remove future phase, renumber subsequent |
313
- | `/gsd:discuss-phase [N]` | Gather context before planning |
314
- | `/gsd:research-phase [N]` | Deep ecosystem research for niche domains |
315
- | `/gsd:list-phase-assumptions [N]` | See what Claude thinks before you correct it |
316
- | `/gsd:pause-work` | Create handoff file when stopping mid-phase |
317
- | `/gsd:resume-work` | Restore from last session |
318
- | `/gsd:consider-issues` | Review deferred issues, close resolved, identify urgent |
319
- | `/gsd:help` | Show all commands and usage guide |
320
-
321
- *Contributed by reddit user OracleGreyBeard
312
+ | Command | What it does |
313
+ |---------|--------------|
314
+ | `/gsd:new-project` | Extract your idea through questions, create PROJECT.md |
315
+ | `/gsd:create-roadmap` | Create roadmap and state tracking |
316
+ | `/gsd:map-codebase` | Map existing codebase for brownfield projects |
317
+ | `/gsd:plan-phase [N]` | Generate task plans for phase |
318
+ | `/gsd:execute-plan` | Run plan via subagent |
319
+ | `/gsd:progress` | Where am I? What's next? |
320
+ | `/gsd:verify-work [N]` | User acceptance test of phase or plan ¹ |
321
+ | `/gsd:plan-fix [plan]` | Plan fixes for UAT issues from verify-work |
322
+ | `/gsd:complete-milestone` | Ship it, prep next version |
323
+ | `/gsd:discuss-milestone` | Gather context for next milestone |
324
+ | `/gsd:new-milestone [name]` | Create new milestone with phases |
325
+ | `/gsd:add-phase` | Append phase to roadmap |
326
+ | `/gsd:insert-phase [N]` | Insert urgent work |
327
+ | `/gsd:remove-phase [N]` | Remove future phase, renumber subsequent |
328
+ | `/gsd:discuss-phase [N]` | Gather context before planning |
329
+ | `/gsd:research-phase [N]` | Deep ecosystem research for niche domains |
330
+ | `/gsd:list-phase-assumptions [N]` | See what Claude thinks before you correct it |
331
+ | `/gsd:pause-work` | Create handoff file when stopping mid-phase |
332
+ | `/gsd:resume-work` | Restore from last session |
333
+ | `/gsd:consider-issues` | Review deferred issues, close resolved, identify urgent |
334
+ | `/gsd:help` | Show all commands and usage guide |
335
+
336
+ <sup>¹ Contributed by reddit user OracleGreyBeard</sup>
322
337
 
323
338
  ---
324
339
 
@@ -341,7 +356,13 @@ npx get-shit-done-cc@latest
341
356
 
342
357
  ## Star History
343
358
 
344
- [![Star History Chart](https://api.star-history.com/svg?repos=glittercowboy/get-shit-done&type=date&legend=top-left)](https://www.star-history.com/#glittercowboy/get-shit-done&type=date&legend=top-left)
359
+ <a href="https://star-history.com/#glittercowboy/get-shit-done&Date">
360
+ <picture>
361
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=glittercowboy/get-shit-done&type=Date&theme=dark" />
362
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=glittercowboy/get-shit-done&type=Date" />
363
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=glittercowboy/get-shit-done&type=Date" />
364
+ </picture>
365
+ </a>
345
366
 
346
367
  ---
347
368
 
@@ -351,4 +372,8 @@ MIT License. See [LICENSE](LICENSE) for details.
351
372
 
352
373
  ---
353
374
 
375
+ <div align="center">
376
+
354
377
  **Claude Code is powerful. GSD makes it reliable.**
378
+
379
+ </div>
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: gsd:resume-task
3
+ description: Resume an interrupted subagent execution
4
+ argument-hint: "[agent-id]"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Edit
9
+ - Bash
10
+ - Task
11
+ - AskUserQuestion
12
+ ---
13
+
14
+ <objective>
15
+ Resume an interrupted subagent execution using the Task tool's resume parameter.
16
+
17
+ When a session ends mid-execution, subagents may be left in an incomplete state. This command allows users to continue that work without starting over.
18
+
19
+ Uses the agent ID tracking infrastructure from execute-phase to identify and resume agents.
20
+ </objective>
21
+
22
+ <execution_context>
23
+ @~/.claude/get-shit-done/workflows/resume-task.md
24
+ </execution_context>
25
+
26
+ <context>
27
+ Agent ID: $ARGUMENTS (optional - defaults to most recent)
28
+
29
+ **Load project state:**
30
+ @.planning/STATE.md
31
+
32
+ **Load agent tracking:**
33
+ @.planning/current-agent-id.txt
34
+ @.planning/agent-history.json
35
+ </context>
36
+
37
+ <process>
38
+ 1. Check .planning/ directory exists (error if not)
39
+ 2. Parse agent ID from arguments or current-agent-id.txt
40
+ 3. Validate agent exists in history and is resumable
41
+ 4. Check for file conflicts since spawn
42
+ 5. Follow resume-task.md workflow:
43
+ - Update agent status to "interrupted"
44
+ - Resume via Task tool resume parameter
45
+ - Update history on completion
46
+ - Clear current-agent-id.txt
47
+ </process>
48
+
49
+ <usage>
50
+ **Resume most recent interrupted agent:**
51
+ ```
52
+ /gsd:resume-task
53
+ ```
54
+
55
+ **Resume specific agent by ID:**
56
+ ```
57
+ /gsd:resume-task agent_01HXYZ123
58
+ ```
59
+
60
+ **Find available agents to resume:**
61
+ Check `.planning/agent-history.json` for entries with status "spawned" or "interrupted".
62
+ </usage>
63
+
64
+ <error_handling>
65
+ **No agent to resume:**
66
+ - current-agent-id.txt empty or missing
67
+ - Solution: Run /gsd:progress to check project status
68
+
69
+ **Agent already completed:**
70
+ - Agent finished successfully, nothing to resume
71
+ - Solution: Continue with next plan
72
+
73
+ **Agent not found:**
74
+ - Provided ID not in history
75
+ - Solution: Check agent-history.json for valid IDs
76
+
77
+ **Resume failed:**
78
+ - Agent context expired or invalidated
79
+ - Solution: Start fresh with /gsd:execute-plan
80
+ </error_handling>
81
+
82
+ <success_criteria>
83
+ - [ ] Agent resumed via Task tool resume parameter
84
+ - [ ] Agent-history.json updated with completion
85
+ - [ ] current-agent-id.txt cleared
86
+ - [ ] User informed of result
87
+ </success_criteria>
@@ -0,0 +1,161 @@
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.0",
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
+ }
32
+ ```
33
+
34
+ ### Field Definitions
35
+
36
+ | Field | Type | Description |
37
+ |-------|------|-------------|
38
+ | agent_id | string | Unique ID returned by Task tool |
39
+ | task_description | string | Brief description of what agent is executing |
40
+ | phase | string | Phase number (e.g., "02", "02.1") |
41
+ | plan | string | Plan number within phase |
42
+ | segment | number | Segment number (1-based) for segmented plans, null for Pattern A |
43
+ | timestamp | string | ISO 8601 timestamp when agent was spawned |
44
+ | status | string | Current status: spawned, completed, interrupted, resumed |
45
+ | completion_timestamp | string/null | ISO 8601 timestamp when completed, null if pending |
46
+
47
+ ### Status Lifecycle
48
+
49
+ ```
50
+ spawned ──────────────────────────> completed
51
+ │ ^
52
+ │ │
53
+ └──> interrupted ──> resumed ───────┘
54
+ ```
55
+
56
+ - **spawned**: Agent created via Task tool, execution in progress
57
+ - **completed**: Agent finished successfully, results received
58
+ - **interrupted**: Session ended before agent completed (detected on resume)
59
+ - **resumed**: Previously interrupted agent resumed via resume parameter
60
+
61
+ ## Usage
62
+
63
+ ### When to Create File
64
+
65
+ Create `.planning/agent-history.json` from this template when:
66
+ - First subagent spawn in execute-phase workflow
67
+ - File doesn't exist yet
68
+
69
+ ### When to Add Entry
70
+
71
+ Add new entry immediately after Task tool returns with agent_id:
72
+
73
+ ```
74
+ 1. Task tool spawns subagent
75
+ 2. Response includes agent_id
76
+ 3. Write agent_id to .planning/current-agent-id.txt
77
+ 4. Append entry to agent-history.json with status "spawned"
78
+ ```
79
+
80
+ ### When to Update Entry
81
+
82
+ Update existing entry when:
83
+
84
+ **On successful completion:**
85
+ ```json
86
+ {
87
+ "status": "completed",
88
+ "completion_timestamp": "2026-01-15T14:45:33Z"
89
+ }
90
+ ```
91
+
92
+ **On resume detection (interrupted agent found):**
93
+ ```json
94
+ {
95
+ "status": "interrupted"
96
+ }
97
+ ```
98
+
99
+ Then add new entry with resumed status:
100
+ ```json
101
+ {
102
+ "agent_id": "agent_01HXXXX...",
103
+ "status": "resumed",
104
+ "timestamp": "2026-01-15T15:00:00Z"
105
+ }
106
+ ```
107
+
108
+ ### Entry Retention
109
+
110
+ - Keep maximum 50 entries (configurable via max_entries)
111
+ - On exceeding limit, remove oldest completed entries first
112
+ - Never remove entries with status "spawned" (may need resume)
113
+ - Prune during init_agent_tracking step
114
+
115
+ ## Example File
116
+
117
+ ```json
118
+ {
119
+ "version": "1.0",
120
+ "max_entries": 50,
121
+ "entries": [
122
+ {
123
+ "agent_id": "agent_01HXY123ABC",
124
+ "task_description": "Execute full plan 02-01 (autonomous)",
125
+ "phase": "02",
126
+ "plan": "01",
127
+ "segment": null,
128
+ "timestamp": "2026-01-15T14:22:10Z",
129
+ "status": "completed",
130
+ "completion_timestamp": "2026-01-15T14:45:33Z"
131
+ },
132
+ {
133
+ "agent_id": "agent_01HXY456DEF",
134
+ "task_description": "Execute tasks 1-3 from plan 02-02",
135
+ "phase": "02",
136
+ "plan": "02",
137
+ "segment": 1,
138
+ "timestamp": "2026-01-15T15:00:00Z",
139
+ "status": "spawned",
140
+ "completion_timestamp": null
141
+ }
142
+ ]
143
+ }
144
+ ```
145
+
146
+ ## Related Files
147
+
148
+ - `.planning/current-agent-id.txt`: Single line with currently active agent ID (for quick resume lookup)
149
+ - `.planning/STATE.md`: Project state including session continuity info
150
+
151
+ ---
152
+
153
+ ## Template Notes
154
+
155
+ **When to create:** First subagent spawn during execute-phase workflow.
156
+
157
+ **Location:** `.planning/agent-history.json`
158
+
159
+ **Companion file:** `.planning/current-agent-id.txt` (single agent ID, overwritten on each spawn)
160
+
161
+ **Purpose:** Enable resume capability for interrupted subagent executions via Task tool's resume parameter.
@@ -204,15 +204,48 @@ No segmentation benefit - execute entirely in main
204
204
  **For fully autonomous plans:**
205
205
 
206
206
  ```
207
- Use Task tool with subagent_type="general-purpose":
207
+ 1. Run init_agent_tracking step first (see step below)
208
208
 
209
- Prompt: "Execute plan at .planning/phases/{phase}-{plan}-PLAN.md
209
+ 2. Use Task tool with subagent_type="general-purpose":
210
210
 
211
- This is an autonomous plan (no checkpoints). Execute all tasks, create SUMMARY.md in phase directory, commit with message following plan's commit guidance.
211
+ Prompt: "Execute plan at .planning/phases/{phase}-{plan}-PLAN.md
212
212
 
213
- Follow all deviation rules and authentication gate protocols from the plan.
213
+ This is an autonomous plan (no checkpoints). Execute all tasks, create SUMMARY.md in phase directory, commit with message following plan's commit guidance.
214
214
 
215
- When complete, report: plan name, tasks completed, SUMMARY path, commit hash."
215
+ Follow all deviation rules and authentication gate protocols from the plan.
216
+
217
+ When complete, report: plan name, tasks completed, SUMMARY path, commit hash."
218
+
219
+ 3. After Task tool returns with agent_id:
220
+
221
+ a. Write agent_id to current-agent-id.txt:
222
+ echo "[agent_id]" > .planning/current-agent-id.txt
223
+
224
+ b. Append spawn entry to agent-history.json:
225
+ {
226
+ "agent_id": "[agent_id from Task response]",
227
+ "task_description": "Execute full plan {phase}-{plan} (autonomous)",
228
+ "phase": "{phase}",
229
+ "plan": "{plan}",
230
+ "segment": null,
231
+ "timestamp": "[ISO timestamp]",
232
+ "status": "spawned",
233
+ "completion_timestamp": null
234
+ }
235
+
236
+ 4. Wait for subagent to complete
237
+
238
+ 5. After subagent completes successfully:
239
+
240
+ a. Update agent-history.json entry:
241
+ - Find entry with matching agent_id
242
+ - Set status: "completed"
243
+ - Set completion_timestamp: "[ISO timestamp]"
244
+
245
+ b. Clear current-agent-id.txt:
246
+ rm .planning/current-agent-id.txt
247
+
248
+ 6. Report completion to user
216
249
  ```
217
250
 
218
251
  **For segmented plans (has verify-only checkpoints):**
@@ -247,6 +280,54 @@ Quality maintained through small scope (2-3 tasks per plan)
247
280
  See step name="segment_execution" for detailed segment execution loop.
248
281
  </step>
249
282
 
283
+ <step name="init_agent_tracking">
284
+ **Initialize agent tracking for subagent resume capability.**
285
+
286
+ Before spawning any subagents, set up tracking infrastructure:
287
+
288
+ **1. Create/verify tracking files:**
289
+
290
+ ```bash
291
+ # Create agent history file if doesn't exist
292
+ if [ ! -f .planning/agent-history.json ]; then
293
+ echo '{"version":"1.0","max_entries":50,"entries":[]}' > .planning/agent-history.json
294
+ fi
295
+
296
+ # Clear any stale current-agent-id (from interrupted sessions)
297
+ # Will be populated when subagent spawns
298
+ rm -f .planning/current-agent-id.txt
299
+ ```
300
+
301
+ **2. Check for interrupted agents (resume detection):**
302
+
303
+ ```bash
304
+ # Check if current-agent-id.txt exists from previous interrupted session
305
+ if [ -f .planning/current-agent-id.txt ]; then
306
+ INTERRUPTED_ID=$(cat .planning/current-agent-id.txt)
307
+ echo "Found interrupted agent: $INTERRUPTED_ID"
308
+ fi
309
+ ```
310
+
311
+ **If interrupted agent found:**
312
+ - The agent ID file exists from a previous session that didn't complete
313
+ - This agent can potentially be resumed using Task tool's `resume` parameter
314
+ - Present to user: "Previous session was interrupted. Resume agent [ID] or start fresh?"
315
+ - If resume: Use Task tool with `resume` parameter set to the interrupted ID
316
+ - If fresh: Clear the file and proceed normally
317
+
318
+ **3. Prune old entries (housekeeping):**
319
+
320
+ If agent-history.json has more than `max_entries`:
321
+ - Remove oldest entries with status "completed"
322
+ - Never remove entries with status "spawned" (may need resume)
323
+ - Keep file under size limit for fast reads
324
+
325
+ **When to run this step:**
326
+ - Pattern A (fully autonomous): Before spawning the single subagent
327
+ - Pattern B (segmented): Before the segment execution loop
328
+ - Pattern C (main context): Skip - no subagents spawned
329
+ </step>
330
+
250
331
  <step name="segment_execution">
251
332
  **Detailed segment execution loop for segmented plans.**
252
333
 
@@ -299,8 +380,36 @@ For Pattern A (fully autonomous) and Pattern C (decision-dependent), skip this s
299
380
  - Deviations encountered
300
381
  - Any issues or blockers"
301
382
 
383
+ **After Task tool returns with agent_id:**
384
+
385
+ 1. Write agent_id to current-agent-id.txt:
386
+ echo "[agent_id]" > .planning/current-agent-id.txt
387
+
388
+ 2. Append spawn entry to agent-history.json:
389
+ {
390
+ "agent_id": "[agent_id from Task response]",
391
+ "task_description": "Execute tasks [X-Y] from plan {phase}-{plan}",
392
+ "phase": "{phase}",
393
+ "plan": "{plan}",
394
+ "segment": [segment_number],
395
+ "timestamp": "[ISO timestamp]",
396
+ "status": "spawned",
397
+ "completion_timestamp": null
398
+ }
399
+
302
400
  Wait for subagent to complete
303
401
  Capture results (files changed, deviations, etc.)
402
+
403
+ **After subagent completes successfully:**
404
+
405
+ 1. Update agent-history.json entry:
406
+ - Find entry with matching agent_id
407
+ - Set status: "completed"
408
+ - Set completion_timestamp: "[ISO timestamp]"
409
+
410
+ 2. Clear current-agent-id.txt:
411
+ rm .planning/current-agent-id.txt
412
+
304
413
  ```
305
414
 
306
415
  C. If routing = Main context:
@@ -69,6 +69,12 @@ for plan in .planning/phases/*/*-PLAN.md; do
69
69
  summary="${plan/PLAN/SUMMARY}"
70
70
  [ ! -f "$summary" ] && echo "Incomplete: $plan"
71
71
  done 2>/dev/null
72
+
73
+ # Check for interrupted agents
74
+ if [ -f .planning/current-agent-id.txt ] && [ -s .planning/current-agent-id.txt ]; then
75
+ AGENT_ID=$(cat .planning/current-agent-id.txt | tr -d '\n')
76
+ echo "Interrupted agent: $AGENT_ID"
77
+ fi
72
78
  ```
73
79
 
74
80
  **If .continue-here file exists:**
@@ -81,6 +87,12 @@ done 2>/dev/null
81
87
 
82
88
  - Execution was started but not completed
83
89
  - Flag: "Found incomplete plan execution"
90
+
91
+ **If interrupted agent found:**
92
+
93
+ - Subagent was spawned but session ended before completion
94
+ - Read agent-history.json for task details
95
+ - Flag: "Found interrupted agent"
84
96
  </step>
85
97
 
86
98
  <step name="present_status">
@@ -103,6 +115,14 @@ Present complete project status to user:
103
115
  ⚠️ Incomplete work detected:
104
116
  - [.continue-here file or incomplete plan]
105
117
 
118
+ [If interrupted agent found:]
119
+ ⚠️ Interrupted agent detected:
120
+ Agent ID: [id]
121
+ Task: [task description from agent-history.json]
122
+ Interrupted: [timestamp]
123
+
124
+ Resume with: /gsd:resume-task
125
+
106
126
  [If deferred issues exist:]
107
127
  📋 [N] deferred issues awaiting attention
108
128
 
@@ -120,6 +140,10 @@ Present complete project status to user:
120
140
  <step name="determine_next_action">
121
141
  Based on project state, determine the most logical next action:
122
142
 
143
+ **If interrupted agent exists:**
144
+ → Primary: Resume interrupted agent (/gsd:resume-task)
145
+ → Option: Start fresh (abandon agent work)
146
+
123
147
  **If .continue-here file exists:**
124
148
  → Primary: Resume from checkpoint
125
149
  → Option: Start fresh on current plan
@@ -154,6 +178,8 @@ Present contextual options based on project state:
154
178
  What would you like to do?
155
179
 
156
180
  [Primary action based on state - e.g.:]
181
+ 1. Resume interrupted agent (/gsd:resume-task) [if interrupted agent found]
182
+ OR
157
183
  1. Resume from checkpoint (/gsd:execute-plan .planning/phases/XX-name/.continue-here-02-01.md)
158
184
  OR
159
185
  1. Execute next plan (/gsd:execute-plan .planning/phases/XX-name/02-02-PLAN.md)
@@ -0,0 +1,259 @@
1
+ <trigger>
2
+ Use this workflow when:
3
+ - User runs /gsd:resume-task
4
+ - Need to continue interrupted subagent execution
5
+ - Resuming work after session ended mid-plan
6
+ </trigger>
7
+
8
+ <purpose>
9
+ Resume an interrupted subagent execution using the Task tool's resume parameter.
10
+
11
+ Enables seamless continuation of autonomous work that was interrupted by session timeout, user exit, or crash.
12
+ </purpose>
13
+
14
+ <process>
15
+
16
+ <step name="parse_arguments">
17
+ Parse the optional agent_id argument:
18
+
19
+ ```bash
20
+ # Check if argument provided
21
+ if [ -n "$ARGUMENTS" ]; then
22
+ AGENT_ID="$ARGUMENTS"
23
+ echo "Using provided agent ID: $AGENT_ID"
24
+ else
25
+ # Read from current-agent-id.txt
26
+ if [ -f .planning/current-agent-id.txt ] && [ -s .planning/current-agent-id.txt ]; then
27
+ AGENT_ID=$(cat .planning/current-agent-id.txt | tr -d '\n')
28
+ echo "Using current agent ID: $AGENT_ID"
29
+ else
30
+ echo "ERROR: No agent to resume"
31
+ exit 1
32
+ fi
33
+ fi
34
+ ```
35
+
36
+ **If no agent ID found:**
37
+ Present error:
38
+ ```
39
+ No active agent to resume.
40
+
41
+ There's no interrupted agent recorded. This could mean:
42
+ - No subagent was spawned in the current plan
43
+ - The last agent completed successfully
44
+ - .planning/current-agent-id.txt was cleared
45
+
46
+ Use /gsd:progress to check project status.
47
+ ```
48
+
49
+ **If agent ID found:** Continue to validate_agent step.
50
+ </step>
51
+
52
+ <step name="validate_agent">
53
+ Validate the agent exists and is resumable:
54
+
55
+ ```bash
56
+ # Check if agent-history.json exists
57
+ if [ ! -f .planning/agent-history.json ]; then
58
+ echo "ERROR: No agent history found"
59
+ exit 1
60
+ fi
61
+
62
+ # Read history and find the agent
63
+ cat .planning/agent-history.json
64
+ ```
65
+
66
+ **Parse agent-history.json and find entry matching AGENT_ID:**
67
+
68
+ Check the entry status:
69
+ - **If status = "completed":** Error - agent already completed
70
+ - **If status = "spawned" or "interrupted":** Valid for resume
71
+ - **If not found:** Error - agent ID not in history
72
+
73
+ **If agent already completed:**
74
+ ```
75
+ Agent already completed.
76
+
77
+ Agent ID: [id]
78
+ Completed: [completion_timestamp]
79
+ Task: [task_description]
80
+
81
+ This agent finished successfully. No resume needed.
82
+ ```
83
+
84
+ **If agent not found:**
85
+ ```
86
+ Agent ID not found in history.
87
+
88
+ ID: [provided_id]
89
+
90
+ Available agents:
91
+ - [list most recent 5 agents with status]
92
+
93
+ Did you mean one of these?
94
+ ```
95
+
96
+ **If valid for resume:** Continue to check_conflicts step.
97
+ </step>
98
+
99
+ <step name="check_conflicts">
100
+ Check for file modifications since the agent was spawned.
101
+
102
+ **Read the agent entry to get context:**
103
+ - phase, plan, segment information
104
+ - timestamp of spawn
105
+
106
+ **Check for git changes since spawn:**
107
+
108
+ ```bash
109
+ # Get files modified since agent spawn
110
+ # Note: This is a best-effort check - relies on git status
111
+ git status --short
112
+ ```
113
+
114
+ **If modifications detected:**
115
+
116
+ Use AskUserQuestion to warn user:
117
+
118
+ ```
119
+ Files modified since agent was interrupted:
120
+ - [list files]
121
+
122
+ These changes may conflict with the agent's work.
123
+
124
+ Options:
125
+ 1. Continue anyway - Agent will resume with current files
126
+ 2. Abort - Review changes first
127
+
128
+ Select option:
129
+ ```
130
+
131
+ Wait for user response.
132
+
133
+ **If user selects "Abort":**
134
+ ```
135
+ Resume aborted. Review your changes and run /gsd:resume-task when ready.
136
+ ```
137
+ End workflow.
138
+
139
+ **If user selects "Continue anyway" or no conflicts found:**
140
+ Continue to update_status step.
141
+ </step>
142
+
143
+ <step name="update_status">
144
+ Update the agent status to "interrupted" if it was "spawned" (marking the interruption point):
145
+
146
+ ```bash
147
+ # Read current history
148
+ HISTORY=$(cat .planning/agent-history.json)
149
+ ```
150
+
151
+ Update the entry in agent-history.json:
152
+ - If status was "spawned", change to "interrupted"
153
+ - Add note about resume attempt
154
+
155
+ This provides audit trail of the interruption before resume.
156
+ </step>
157
+
158
+ <step name="resume_agent">
159
+ Resume the agent using Task tool's resume parameter:
160
+
161
+ ```
162
+ Resuming agent: [agent_id]
163
+ Task: [task_description from history]
164
+ Phase: [phase]-[plan]
165
+
166
+ The agent will continue from where it left off...
167
+ ```
168
+
169
+ **Use Task tool with resume parameter:**
170
+
171
+ ```
172
+ Task(
173
+ description: "Resume interrupted agent",
174
+ prompt: "Continue your previous work. You were executing [task_description].",
175
+ subagent_type: "general-purpose",
176
+ resume: "[AGENT_ID]"
177
+ )
178
+ ```
179
+
180
+ Wait for agent completion.
181
+
182
+ **On agent completion:**
183
+ - Capture any results returned
184
+ - Continue to completion_update step
185
+ </step>
186
+
187
+ <step name="completion_update">
188
+ Update tracking files on successful completion:
189
+
190
+ **1. Update agent-history.json:**
191
+
192
+ Add new entry marking the resume completion:
193
+ ```json
194
+ {
195
+ "agent_id": "[AGENT_ID]",
196
+ "task_description": "[original task] (resumed)",
197
+ "phase": "[phase]",
198
+ "plan": "[plan]",
199
+ "segment": [segment or null],
200
+ "timestamp": "[now]",
201
+ "status": "completed",
202
+ "completion_timestamp": "[now]"
203
+ }
204
+ ```
205
+
206
+ **2. Clear current-agent-id.txt:**
207
+
208
+ ```bash
209
+ # Clear the current agent file
210
+ > .planning/current-agent-id.txt
211
+ ```
212
+
213
+ **3. Present completion message:**
214
+
215
+ ```
216
+ Agent resumed and completed successfully.
217
+
218
+ Agent ID: [id]
219
+ Task: [task_description]
220
+ Original spawn: [original_timestamp]
221
+ Completed: [now]
222
+
223
+ The agent's work has been incorporated. Check git status for changes.
224
+ ```
225
+ </step>
226
+
227
+ <step name="handle_errors">
228
+ Error handling for resume failures:
229
+
230
+ **If Task tool returns error on resume:**
231
+ ```
232
+ Failed to resume agent.
233
+
234
+ Agent ID: [id]
235
+ Error: [error message]
236
+
237
+ Possible causes:
238
+ - Agent context may have expired
239
+ - Agent may have been invalidated
240
+
241
+ Options:
242
+ 1. Start fresh - Execute plan from beginning
243
+ 2. Check status - Review what was completed
244
+
245
+ Run /gsd:execute-plan to start fresh if needed.
246
+ ```
247
+
248
+ Do NOT clear current-agent-id.txt on error - allow retry.
249
+ </step>
250
+
251
+ </process>
252
+
253
+ <success_criteria>
254
+ Resume is complete when:
255
+ - [ ] Agent resumed successfully via Task tool resume parameter
256
+ - [ ] Agent-history.json updated with completion status
257
+ - [ ] Current-agent-id.txt cleared
258
+ - [ ] User informed of completion
259
+ </success_criteria>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "get-shit-done-cc",
3
- "version": "1.3.31",
3
+ "version": "1.3.32",
4
4
  "description": "A meta-prompting, context engineering and spec-driven development system for Claude Code by TÂCHES.",
5
5
  "bin": {
6
6
  "get-shit-done-cc": "bin/install.js"