get-shit-done-cc 1.3.33 → 1.3.34

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
@@ -243,6 +243,7 @@ GSD handles it for you:
243
243
  | `PLAN.md` | Atomic task with XML structure, verification steps |
244
244
  | `SUMMARY.md` | What happened, what changed, committed to history |
245
245
  | `ISSUES.md` | Deferred enhancements tracked across sessions |
246
+ | `todos/` | Captured ideas and tasks for later work |
246
247
 
247
248
  Size limits based on where Claude's quality degrades. Stay under, get consistent excellence.
248
249
 
@@ -332,6 +333,8 @@ You're never locked in. The system adapts.
332
333
  | `/gsd:resume-work` | Restore from last session |
333
334
  | `/gsd:resume-task [id]` | Resume interrupted subagent execution |
334
335
  | `/gsd:consider-issues` | Review deferred issues, close resolved, identify urgent |
336
+ | `/gsd:add-todo [desc]` | Capture idea or task from conversation for later |
337
+ | `/gsd:check-todos [area]` | List pending todos, select one to work on |
335
338
  | `/gsd:help` | Show all commands and usage guide |
336
339
 
337
340
  <sup>¹ Contributed by reddit user OracleGreyBeard</sup>
@@ -353,6 +356,14 @@ You're never locked in. The system adapts.
353
356
  npx get-shit-done-cc@latest
354
357
  ```
355
358
 
359
+ **Using Docker or containerized environments?**
360
+
361
+ If file reads fail with tilde paths (`~/.claude/...`), set `CLAUDE_CONFIG_DIR` before installing:
362
+ ```bash
363
+ CLAUDE_CONFIG_DIR=/home/youruser/.claude npx get-shit-done-cc --global
364
+ ```
365
+ This ensures absolute paths are used instead of `~` which may not expand correctly in containers.
366
+
356
367
  ---
357
368
 
358
369
  ## Star History
@@ -0,0 +1,182 @@
1
+ ---
2
+ name: gsd:add-todo
3
+ description: Capture idea or task as todo from current conversation context
4
+ argument-hint: [optional description]
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ - Glob
10
+ ---
11
+
12
+ <objective>
13
+ Capture an idea, task, or issue that surfaces during a GSD session as a structured todo for later work.
14
+
15
+ Enables "thought → capture → continue" flow without losing context or derailing current work.
16
+ </objective>
17
+
18
+ <context>
19
+ @.planning/STATE.md
20
+ </context>
21
+
22
+ <process>
23
+
24
+ <step name="ensure_directory">
25
+ ```bash
26
+ mkdir -p .planning/todos/pending .planning/todos/done
27
+ ```
28
+ </step>
29
+
30
+ <step name="check_existing_areas">
31
+ ```bash
32
+ ls .planning/todos/pending/*.md 2>/dev/null | xargs -I {} grep "^area:" {} 2>/dev/null | cut -d' ' -f2 | sort -u
33
+ ```
34
+
35
+ Note existing areas for consistency in infer_area step.
36
+ </step>
37
+
38
+ <step name="extract_content">
39
+ **With arguments:** Use as the title/focus.
40
+ - `/gsd:add-todo Add auth token refresh` → title = "Add auth token refresh"
41
+
42
+ **Without arguments:** Analyze recent conversation to extract:
43
+ - The specific problem, idea, or task discussed
44
+ - Relevant file paths mentioned
45
+ - Technical details (error messages, line numbers, constraints)
46
+
47
+ Formulate:
48
+ - `title`: 3-10 word descriptive title (action verb preferred)
49
+ - `problem`: What's wrong or why this is needed
50
+ - `solution`: Approach hints or "TBD" if just an idea
51
+ - `files`: Relevant paths with line numbers from conversation
52
+ </step>
53
+
54
+ <step name="infer_area">
55
+ Infer area from file paths:
56
+
57
+ | Path pattern | Area |
58
+ |--------------|------|
59
+ | `src/api/*`, `api/*` | `api` |
60
+ | `src/components/*`, `src/ui/*` | `ui` |
61
+ | `src/auth/*`, `auth/*` | `auth` |
62
+ | `src/db/*`, `database/*` | `database` |
63
+ | `tests/*`, `__tests__/*` | `testing` |
64
+ | `docs/*` | `docs` |
65
+ | `.planning/*` | `planning` |
66
+ | `scripts/*`, `bin/*` | `tooling` |
67
+ | No files or unclear | `general` |
68
+
69
+ Use existing area from step 2 if similar match exists.
70
+ </step>
71
+
72
+ <step name="check_duplicates">
73
+ ```bash
74
+ grep -l -i "[key words from title]" .planning/todos/pending/*.md 2>/dev/null
75
+ ```
76
+
77
+ If potential duplicate found:
78
+ 1. Read the existing todo
79
+ 2. Compare scope
80
+
81
+ If overlapping, use AskUserQuestion:
82
+ - header: "Duplicate?"
83
+ - question: "Similar todo exists: [title]. What would you like to do?"
84
+ - options:
85
+ - "Skip" — keep existing todo
86
+ - "Replace" — update existing with new context
87
+ - "Add anyway" — create as separate todo
88
+ </step>
89
+
90
+ <step name="create_file">
91
+ ```bash
92
+ timestamp=$(date "+%Y-%m-%dT%H:%M")
93
+ date_prefix=$(date "+%Y-%m-%d")
94
+ ```
95
+
96
+ Generate slug from title (lowercase, hyphens, no special chars).
97
+
98
+ Write to `.planning/todos/pending/${date_prefix}-${slug}.md`:
99
+
100
+ ```markdown
101
+ ---
102
+ created: [timestamp]
103
+ title: [title]
104
+ area: [area]
105
+ files:
106
+ - [file:lines]
107
+ ---
108
+
109
+ ## Problem
110
+
111
+ [problem description - enough context for future Claude to understand weeks later]
112
+
113
+ ## Solution
114
+
115
+ [approach hints or "TBD"]
116
+ ```
117
+ </step>
118
+
119
+ <step name="update_state">
120
+ If `.planning/STATE.md` exists:
121
+
122
+ 1. Count todos: `ls .planning/todos/pending/*.md 2>/dev/null | wc -l`
123
+ 2. Update "### Pending Todos" under "## Accumulated Context"
124
+ </step>
125
+
126
+ <step name="git_commit">
127
+ Commit the todo and any updated state:
128
+
129
+ ```bash
130
+ git add .planning/todos/pending/[filename]
131
+ [ -f .planning/STATE.md ] && git add .planning/STATE.md
132
+ git commit -m "$(cat <<'EOF'
133
+ docs: capture todo - [title]
134
+
135
+ Area: [area]
136
+ EOF
137
+ )"
138
+ ```
139
+
140
+ Confirm: "Committed: docs: capture todo - [title]"
141
+ </step>
142
+
143
+ <step name="confirm">
144
+ ```
145
+ Todo saved: .planning/todos/pending/[filename]
146
+
147
+ [title]
148
+ Area: [area]
149
+ Files: [count] referenced
150
+
151
+ ---
152
+
153
+ Would you like to:
154
+
155
+ 1. Continue with current work
156
+ 2. Add another todo
157
+ 3. View all todos (/gsd:check-todos)
158
+ ```
159
+ </step>
160
+
161
+ </process>
162
+
163
+ <output>
164
+ - `.planning/todos/pending/[date]-[slug].md`
165
+ - Updated `.planning/STATE.md` (if exists)
166
+ </output>
167
+
168
+ <anti_patterns>
169
+ - Don't create todos for work in current plan (that's deviation rule territory)
170
+ - Don't create elaborate solution sections — captures ideas, not plans
171
+ - Don't block on missing information — "TBD" is fine
172
+ </anti_patterns>
173
+
174
+ <success_criteria>
175
+ - [ ] Directory structure exists
176
+ - [ ] Todo file created with valid frontmatter
177
+ - [ ] Problem section has enough context for future Claude
178
+ - [ ] No duplicates (checked and resolved)
179
+ - [ ] Area consistent with existing todos
180
+ - [ ] STATE.md updated if exists
181
+ - [ ] Todo and state committed to git
182
+ </success_criteria>
@@ -0,0 +1,217 @@
1
+ ---
2
+ name: gsd:check-todos
3
+ description: List pending todos and select one to work on
4
+ argument-hint: [area filter]
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ - Glob
10
+ - AskUserQuestion
11
+ ---
12
+
13
+ <objective>
14
+ List all pending todos, allow selection, load full context for the selected todo, and route to appropriate action.
15
+
16
+ Enables reviewing captured ideas and deciding what to work on next.
17
+ </objective>
18
+
19
+ <context>
20
+ @.planning/STATE.md
21
+ @.planning/ROADMAP.md
22
+ </context>
23
+
24
+ <process>
25
+
26
+ <step name="check_exist">
27
+ ```bash
28
+ TODO_COUNT=$(ls .planning/todos/pending/*.md 2>/dev/null | wc -l | tr -d ' ')
29
+ echo "Pending todos: $TODO_COUNT"
30
+ ```
31
+
32
+ If count is 0:
33
+ ```
34
+ No pending todos.
35
+
36
+ Todos are captured during work sessions with /gsd:add-todo.
37
+
38
+ ---
39
+
40
+ Would you like to:
41
+
42
+ 1. Continue with current phase (/gsd:progress)
43
+ 2. Add a todo now (/gsd:add-todo)
44
+ ```
45
+
46
+ Exit.
47
+ </step>
48
+
49
+ <step name="parse_filter">
50
+ Check for area filter in arguments:
51
+ - `/gsd:check-todos` → show all
52
+ - `/gsd:check-todos api` → filter to area:api only
53
+ </step>
54
+
55
+ <step name="list_todos">
56
+ ```bash
57
+ for file in .planning/todos/pending/*.md; do
58
+ created=$(grep "^created:" "$file" | cut -d' ' -f2)
59
+ title=$(grep "^title:" "$file" | cut -d':' -f2- | xargs)
60
+ area=$(grep "^area:" "$file" | cut -d' ' -f2)
61
+ echo "$created|$title|$area|$file"
62
+ done | sort
63
+ ```
64
+
65
+ Apply area filter if specified. Display as numbered list:
66
+
67
+ ```
68
+ Pending Todos:
69
+
70
+ 1. Add auth token refresh (api, 2d ago)
71
+ 2. Fix modal z-index issue (ui, 1d ago)
72
+ 3. Refactor database connection pool (database, 5h ago)
73
+
74
+ ---
75
+
76
+ Reply with a number to view details, or:
77
+ - `/gsd:check-todos [area]` to filter by area
78
+ - `q` to exit
79
+ ```
80
+
81
+ Format age as relative time.
82
+ </step>
83
+
84
+ <step name="handle_selection">
85
+ Wait for user to reply with a number.
86
+
87
+ If valid: load selected todo, proceed.
88
+ If invalid: "Invalid selection. Reply with a number (1-[N]) or `q` to exit."
89
+ </step>
90
+
91
+ <step name="load_context">
92
+ Read the todo file completely. Display:
93
+
94
+ ```
95
+ ## [title]
96
+
97
+ **Area:** [area]
98
+ **Created:** [date] ([relative time] ago)
99
+ **Files:** [list or "None"]
100
+
101
+ ### Problem
102
+ [problem section content]
103
+
104
+ ### Solution
105
+ [solution section content]
106
+ ```
107
+
108
+ If `files` field has entries, read and briefly summarize each.
109
+ </step>
110
+
111
+ <step name="check_roadmap">
112
+ ```bash
113
+ ls .planning/ROADMAP.md 2>/dev/null && echo "Roadmap exists"
114
+ ```
115
+
116
+ If roadmap exists:
117
+ 1. Check if todo's area matches an upcoming phase
118
+ 2. Check if todo's files overlap with a phase's scope
119
+ 3. Note any match for action options
120
+ </step>
121
+
122
+ <step name="offer_actions">
123
+ **If todo maps to a roadmap phase:**
124
+
125
+ Use AskUserQuestion:
126
+ - header: "Action"
127
+ - question: "This todo relates to Phase [N]: [name]. What would you like to do?"
128
+ - options:
129
+ - "Work on it now" — move to done, start working
130
+ - "Add to phase plan" — include when planning Phase [N]
131
+ - "Brainstorm approach" — think through before deciding
132
+ - "Put it back" — return to list
133
+
134
+ **If no roadmap match:**
135
+
136
+ Use AskUserQuestion:
137
+ - header: "Action"
138
+ - question: "What would you like to do with this todo?"
139
+ - options:
140
+ - "Work on it now" — move to done, start working
141
+ - "Create a phase" — /gsd:add-phase with this scope
142
+ - "Brainstorm approach" — think through before deciding
143
+ - "Put it back" — return to list
144
+ </step>
145
+
146
+ <step name="execute_action">
147
+ **Work on it now:**
148
+ ```bash
149
+ mv ".planning/todos/pending/[filename]" ".planning/todos/done/"
150
+ ```
151
+ Update STATE.md todo count. Present problem/solution context. Begin work or ask how to proceed.
152
+
153
+ **Add to phase plan:**
154
+ Note todo reference in phase planning notes. Keep in pending. Return to list or exit.
155
+
156
+ **Create a phase:**
157
+ Display: `/gsd:add-phase [description from todo]`
158
+ Keep in pending. User runs command in fresh context.
159
+
160
+ **Brainstorm approach:**
161
+ Keep in pending. Start discussion about problem and approaches.
162
+
163
+ **Put it back:**
164
+ Return to list_todos step.
165
+ </step>
166
+
167
+ <step name="update_state">
168
+ After any action that changes todo count:
169
+
170
+ ```bash
171
+ ls .planning/todos/pending/*.md 2>/dev/null | wc -l
172
+ ```
173
+
174
+ Update STATE.md "### Pending Todos" section if exists.
175
+ </step>
176
+
177
+ <step name="git_commit">
178
+ If todo was moved to done/, commit the change:
179
+
180
+ ```bash
181
+ git add .planning/todos/done/[filename]
182
+ git rm --cached .planning/todos/pending/[filename] 2>/dev/null || true
183
+ [ -f .planning/STATE.md ] && git add .planning/STATE.md
184
+ git commit -m "$(cat <<'EOF'
185
+ docs: start work on todo - [title]
186
+
187
+ Moved to done/, beginning implementation.
188
+ EOF
189
+ )"
190
+ ```
191
+
192
+ Confirm: "Committed: docs: start work on todo - [title]"
193
+ </step>
194
+
195
+ </process>
196
+
197
+ <output>
198
+ - Moved todo to `.planning/todos/done/` (if "Work on it now")
199
+ - Updated `.planning/STATE.md` (if todo count changed)
200
+ </output>
201
+
202
+ <anti_patterns>
203
+ - Don't delete todos — move to done/ when work begins
204
+ - Don't start work without moving to done/ first
205
+ - Don't create plans from this command — route to /gsd:plan-phase or /gsd:add-phase
206
+ </anti_patterns>
207
+
208
+ <success_criteria>
209
+ - [ ] All pending todos listed with title, area, age
210
+ - [ ] Area filter applied if specified
211
+ - [ ] Selected todo's full context loaded
212
+ - [ ] Roadmap context checked for phase match
213
+ - [ ] Appropriate actions offered
214
+ - [ ] Selected action executed
215
+ - [ ] STATE.md updated if todo count changed
216
+ - [ ] Changes committed to git (if todo moved to done/)
217
+ </success_criteria>
@@ -225,6 +225,32 @@ Review deferred issues with codebase context.
225
225
 
226
226
  Usage: `/gsd:consider-issues`
227
227
 
228
+ ### Todo Management
229
+
230
+ **`/gsd:add-todo [description]`**
231
+ Capture idea or task as todo from current conversation.
232
+
233
+ - Extracts context from conversation (or uses provided description)
234
+ - Creates structured todo file in `.planning/todos/pending/`
235
+ - Infers area from file paths for grouping
236
+ - Checks for duplicates before creating
237
+ - Updates STATE.md todo count
238
+
239
+ Usage: `/gsd:add-todo` (infers from conversation)
240
+ Usage: `/gsd:add-todo Add auth token refresh`
241
+
242
+ **`/gsd:check-todos [area]`**
243
+ List pending todos and select one to work on.
244
+
245
+ - Lists all pending todos with title, area, age
246
+ - Optional area filter (e.g., `/gsd:check-todos api`)
247
+ - Loads full context for selected todo
248
+ - Routes to appropriate action (work now, add to phase, brainstorm)
249
+ - Moves todo to done/ when work begins
250
+
251
+ Usage: `/gsd:check-todos`
252
+ Usage: `/gsd:check-todos api`
253
+
228
254
  ### Utility Commands
229
255
 
230
256
  **`/gsd:help`**
@@ -239,6 +265,9 @@ Show this command reference.
239
265
  ├── STATE.md # Project memory & context
240
266
  ├── ISSUES.md # Deferred enhancements (created when needed)
241
267
  ├── config.json # Workflow mode & gates
268
+ ├── todos/ # Captured ideas and tasks
269
+ │ ├── pending/ # Todos waiting to be worked on
270
+ │ └── done/ # Completed todos
242
271
  ├── codebase/ # Codebase map (brownfield projects)
243
272
  │ ├── STACK.md # Languages, frameworks, dependencies
244
273
  │ ├── ARCHITECTURE.md # Patterns, layers, data flow
@@ -306,6 +335,15 @@ Change anytime by editing `.planning/config.json`
306
335
  /gsd:new-project # Start next milestone
307
336
  ```
308
337
 
338
+ **Capturing ideas during work:**
339
+
340
+ ```
341
+ /gsd:add-todo # Capture from conversation context
342
+ /gsd:add-todo Fix modal z-index # Capture with explicit description
343
+ /gsd:check-todos # Review and work on todos
344
+ /gsd:check-todos api # Filter by area
345
+ ```
346
+
309
347
  ## Getting Help
310
348
 
311
349
  - Read `.planning/PROJECT.md` for project vision
@@ -57,6 +57,7 @@ If missing STATE.md or ROADMAP.md: inform what's missing, suggest running `/gsd:
57
57
  - Calculate: total plans, completed plans, remaining plans
58
58
  - Note any blockers, concerns, or deferred issues
59
59
  - Check for CONTEXT.md: For phases without PLAN.md files, check if `{phase}-CONTEXT.md` exists in phase directory
60
+ - Count pending todos: `ls .planning/todos/pending/*.md 2>/dev/null | wc -l`
60
61
  </step>
61
62
 
62
63
  <step name="report">
@@ -83,6 +84,9 @@ CONTEXT: [✓ if CONTEXT.md exists | - if not]
83
84
  ## Open Issues
84
85
  - [any deferred issues or blockers]
85
86
 
87
+ ## Pending Todos
88
+ - [count] pending — /gsd:check-todos to review
89
+
86
90
  ## What's Next
87
91
  [Next phase/plan objective from ROADMAP]
88
92
  ```
@@ -60,6 +60,12 @@ Recent decisions affecting current work:
60
60
 
61
61
  None yet.
62
62
 
63
+ ### Pending Todos
64
+
65
+ [From .planning/todos/pending/ — ideas captured during sessions]
66
+
67
+ None yet.
68
+
63
69
  ### Blockers/Concerns
64
70
 
65
71
  [Issues that affect future work]
@@ -152,6 +158,11 @@ Updated after each plan completion.
152
158
  - Effort estimate if known
153
159
  - Helps phase planning identify what to address
154
160
 
161
+ **Pending Todos:** Ideas captured via /gsd:add-todo
162
+ - Count of pending todos
163
+ - Reference to .planning/todos/pending/
164
+ - Brief list if few, count if many (e.g., "5 pending todos — see /gsd:check-todos")
165
+
155
166
  **Blockers/Concerns:** From "Next Phase Readiness" sections
156
167
  - Issues that affect future work
157
168
  - Prefix with originating phase
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "get-shit-done-cc",
3
- "version": "1.3.33",
3
+ "version": "1.3.34",
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"