get-shit-done-cc 1.7.1 → 1.8.0
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/agents/gsd-debugger.md +20 -1
- package/agents/gsd-executor.md +15 -0
- package/agents/gsd-phase-researcher.md +9 -0
- package/agents/gsd-planner.md +19 -0
- package/agents/gsd-research-synthesizer.md +9 -0
- package/commands/gsd/add-todo.md +11 -0
- package/commands/gsd/check-todos.md +11 -0
- package/commands/gsd/execute-phase.md +3 -1
- package/commands/gsd/help.md +27 -0
- package/commands/gsd/new-milestone.md +246 -262
- package/commands/gsd/new-project.md +15 -2
- package/commands/gsd/pause-work.md +11 -0
- package/commands/gsd/plan-milestone-gaps.md +11 -0
- package/commands/gsd/progress.md +6 -0
- package/commands/gsd/remove-phase.md +11 -0
- package/get-shit-done/references/planning-config.md +94 -0
- package/get-shit-done/templates/config.json +4 -0
- package/get-shit-done/workflows/complete-milestone.md +11 -0
- package/get-shit-done/workflows/diagnose-issues.md +11 -0
- package/get-shit-done/workflows/discuss-phase.md +11 -0
- package/get-shit-done/workflows/execute-phase.md +23 -0
- package/get-shit-done/workflows/execute-plan.md +23 -0
- package/get-shit-done/workflows/map-codebase.md +11 -0
- package/get-shit-done/workflows/verify-work.md +11 -0
- package/package.json +1 -1
|
@@ -237,7 +237,7 @@ EOF
|
|
|
237
237
|
|
|
238
238
|
## Phase 5: Workflow Preferences
|
|
239
239
|
|
|
240
|
-
Ask all workflow preferences in a single AskUserQuestion call (
|
|
240
|
+
Ask all workflow preferences in a single AskUserQuestion call (4 questions):
|
|
241
241
|
|
|
242
242
|
```
|
|
243
243
|
questions: [
|
|
@@ -268,11 +268,24 @@ questions: [
|
|
|
268
268
|
{ label: "Parallel (Recommended)", description: "Independent plans run simultaneously" },
|
|
269
269
|
{ label: "Sequential", description: "One plan at a time" }
|
|
270
270
|
]
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
header: "Git Tracking",
|
|
274
|
+
question: "Commit planning docs to git?",
|
|
275
|
+
multiSelect: false,
|
|
276
|
+
options: [
|
|
277
|
+
{ label: "Yes (Recommended)", description: "Planning docs tracked in version control" },
|
|
278
|
+
{ label: "No", description: "Keep .planning/ local-only (add to .gitignore)" }
|
|
279
|
+
]
|
|
271
280
|
}
|
|
272
281
|
]
|
|
273
282
|
```
|
|
274
283
|
|
|
275
|
-
Create `.planning/config.json` with chosen mode, depth, and
|
|
284
|
+
Create `.planning/config.json` with chosen mode, depth, parallelization, and commit_docs setting.
|
|
285
|
+
|
|
286
|
+
**If commit_docs = No:**
|
|
287
|
+
- Set `planning.commit_docs: false` in config.json
|
|
288
|
+
- Add `.planning/` to `.gitignore` (create if needed)
|
|
276
289
|
|
|
277
290
|
**Commit config.json:**
|
|
278
291
|
|
|
@@ -90,6 +90,17 @@ Be specific enough for a fresh Claude to understand immediately.
|
|
|
90
90
|
</step>
|
|
91
91
|
|
|
92
92
|
<step name="commit">
|
|
93
|
+
**Check planning config:**
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
97
|
+
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
|
|
101
|
+
|
|
102
|
+
**If `COMMIT_PLANNING_DOCS=true` (default):**
|
|
103
|
+
|
|
93
104
|
```bash
|
|
94
105
|
git add .planning/phases/*/.continue-here.md
|
|
95
106
|
git commit -m "wip: [phase-name] paused at task [X]/[Y]"
|
|
@@ -158,6 +158,17 @@ mkdir -p ".planning/phases/{NN}-{name}"
|
|
|
158
158
|
|
|
159
159
|
## 8. Commit Roadmap Update
|
|
160
160
|
|
|
161
|
+
**Check planning config:**
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
165
|
+
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
|
|
169
|
+
|
|
170
|
+
**If `COMMIT_PLANNING_DOCS=true` (default):**
|
|
171
|
+
|
|
161
172
|
```bash
|
|
162
173
|
git add .planning/ROADMAP.md
|
|
163
174
|
git commit -m "docs(roadmap): add gap closure phases {N}-{M}"
|
package/commands/gsd/progress.md
CHANGED
|
@@ -21,6 +21,12 @@ Provides situational awareness before continuing work.
|
|
|
21
21
|
<step name="verify">
|
|
22
22
|
**Verify planning structure exists:**
|
|
23
23
|
|
|
24
|
+
Use Bash (not Glob) to check—Glob respects .gitignore but .planning/ is often gitignored:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
test -d .planning && echo "exists" || echo "missing"
|
|
28
|
+
```
|
|
29
|
+
|
|
24
30
|
If no `.planning/` directory:
|
|
25
31
|
|
|
26
32
|
```
|
|
@@ -252,6 +252,17 @@ Update any internal references to reflect new numbering.
|
|
|
252
252
|
<step name="commit">
|
|
253
253
|
Stage and commit the removal:
|
|
254
254
|
|
|
255
|
+
**Check planning config:**
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
259
|
+
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
|
|
263
|
+
|
|
264
|
+
**If `COMMIT_PLANNING_DOCS=true` (default):**
|
|
265
|
+
|
|
255
266
|
```bash
|
|
256
267
|
git add .planning/
|
|
257
268
|
git commit -m "chore: remove phase {target} ({original-phase-name})"
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<planning_config>
|
|
2
|
+
|
|
3
|
+
Configuration options for `.planning/` directory behavior.
|
|
4
|
+
|
|
5
|
+
<config_schema>
|
|
6
|
+
```json
|
|
7
|
+
"planning": {
|
|
8
|
+
"commit_docs": true,
|
|
9
|
+
"search_gitignored": false
|
|
10
|
+
}
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
| Option | Default | Description |
|
|
14
|
+
|--------|---------|-------------|
|
|
15
|
+
| `commit_docs` | `true` | Whether to commit planning artifacts to git |
|
|
16
|
+
| `search_gitignored` | `false` | Add `--no-ignore` to broad rg searches |
|
|
17
|
+
</config_schema>
|
|
18
|
+
|
|
19
|
+
<commit_docs_behavior>
|
|
20
|
+
|
|
21
|
+
**When `commit_docs: true` (default):**
|
|
22
|
+
- Planning files committed normally
|
|
23
|
+
- SUMMARY.md, STATE.md, ROADMAP.md tracked in git
|
|
24
|
+
- Full history of planning decisions preserved
|
|
25
|
+
|
|
26
|
+
**When `commit_docs: false`:**
|
|
27
|
+
- Skip all `git add`/`git commit` for `.planning/` files
|
|
28
|
+
- User must add `.planning/` to `.gitignore`
|
|
29
|
+
- Useful for: OSS contributions, client projects, keeping planning private
|
|
30
|
+
|
|
31
|
+
**Checking the config:**
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Check config.json first
|
|
35
|
+
COMMIT_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
36
|
+
|
|
37
|
+
# Auto-detect gitignored (overrides config)
|
|
38
|
+
git check-ignore -q .planning 2>/dev/null && COMMIT_DOCS=false
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Auto-detection:** If `.planning/` is gitignored, `commit_docs` is automatically `false` regardless of config.json. This prevents git errors when users have `.planning/` in `.gitignore`.
|
|
42
|
+
|
|
43
|
+
**Conditional git operations:**
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
if [ "$COMMIT_DOCS" = "true" ]; then
|
|
47
|
+
git add .planning/STATE.md
|
|
48
|
+
git commit -m "docs: update state"
|
|
49
|
+
fi
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
</commit_docs_behavior>
|
|
53
|
+
|
|
54
|
+
<search_behavior>
|
|
55
|
+
|
|
56
|
+
**When `search_gitignored: false` (default):**
|
|
57
|
+
- Standard rg behavior (respects .gitignore)
|
|
58
|
+
- Direct path searches work: `rg "pattern" .planning/` finds files
|
|
59
|
+
- Broad searches skip gitignored: `rg "pattern"` skips `.planning/`
|
|
60
|
+
|
|
61
|
+
**When `search_gitignored: true`:**
|
|
62
|
+
- Add `--no-ignore` to broad rg searches that should include `.planning/`
|
|
63
|
+
- Only needed when searching entire repo and expecting `.planning/` matches
|
|
64
|
+
|
|
65
|
+
**Note:** Most GSD operations use direct file reads or explicit paths, which work regardless of gitignore status.
|
|
66
|
+
|
|
67
|
+
</search_behavior>
|
|
68
|
+
|
|
69
|
+
<setup_uncommitted_mode>
|
|
70
|
+
|
|
71
|
+
To use uncommitted mode:
|
|
72
|
+
|
|
73
|
+
1. **Set config:**
|
|
74
|
+
```json
|
|
75
|
+
"planning": {
|
|
76
|
+
"commit_docs": false,
|
|
77
|
+
"search_gitignored": true
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
2. **Add to .gitignore:**
|
|
82
|
+
```
|
|
83
|
+
.planning/
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
3. **Existing tracked files:** If `.planning/` was previously tracked:
|
|
87
|
+
```bash
|
|
88
|
+
git rm -r --cached .planning/
|
|
89
|
+
git commit -m "chore: stop tracking planning docs"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
</setup_uncommitted_mode>
|
|
93
|
+
|
|
94
|
+
</planning_config>
|
|
@@ -620,6 +620,17 @@ git push origin v[X.Y]
|
|
|
620
620
|
|
|
621
621
|
Commit milestone completion including archive files and deletions.
|
|
622
622
|
|
|
623
|
+
**Check planning config:**
|
|
624
|
+
|
|
625
|
+
```bash
|
|
626
|
+
COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
627
|
+
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
**If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
|
|
631
|
+
|
|
632
|
+
**If `COMMIT_PLANNING_DOCS=true` (default):**
|
|
633
|
+
|
|
623
634
|
```bash
|
|
624
635
|
# Stage archive files (new)
|
|
625
636
|
git add .planning/milestones/v[X.Y]-ROADMAP.md
|
|
@@ -156,6 +156,17 @@ For each gap in the Gaps section, add artifacts and missing fields:
|
|
|
156
156
|
|
|
157
157
|
Update status in frontmatter to "diagnosed".
|
|
158
158
|
|
|
159
|
+
**Check planning config:**
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
163
|
+
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
|
|
167
|
+
|
|
168
|
+
**If `COMMIT_PLANNING_DOCS=true` (default):**
|
|
169
|
+
|
|
159
170
|
Commit the updated UAT.md:
|
|
160
171
|
```bash
|
|
161
172
|
git add ".planning/phases/XX-name/{phase}-UAT.md"
|
|
@@ -393,6 +393,17 @@ Created: .planning/phases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
|
|
|
393
393
|
<step name="git_commit">
|
|
394
394
|
Commit phase context:
|
|
395
395
|
|
|
396
|
+
**Check planning config:**
|
|
397
|
+
|
|
398
|
+
```bash
|
|
399
|
+
COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
400
|
+
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
**If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
|
|
404
|
+
|
|
405
|
+
**If `COMMIT_PLANNING_DOCS=true` (default):**
|
|
406
|
+
|
|
396
407
|
```bash
|
|
397
408
|
git add "${PHASE_DIR}/${PADDED_PHASE}-CONTEXT.md"
|
|
398
409
|
git commit -m "$(cat <<'EOF'
|
|
@@ -8,6 +8,7 @@ The orchestrator's job is coordination, not execution. Each subagent loads the f
|
|
|
8
8
|
|
|
9
9
|
<required_reading>
|
|
10
10
|
Read STATE.md before any operation to load project context.
|
|
11
|
+
Read config.json for planning behavior settings.
|
|
11
12
|
</required_reading>
|
|
12
13
|
|
|
13
14
|
<process>
|
|
@@ -33,6 +34,17 @@ Options:
|
|
|
33
34
|
```
|
|
34
35
|
|
|
35
36
|
**If .planning/ doesn't exist:** Error - project not initialized.
|
|
37
|
+
|
|
38
|
+
**Load planning config:**
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Check if planning docs should be committed (default: true)
|
|
42
|
+
COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
43
|
+
# Auto-detect gitignored (overrides config)
|
|
44
|
+
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Store `COMMIT_PLANNING_DOCS` for use in git operations.
|
|
36
48
|
</step>
|
|
37
49
|
|
|
38
50
|
<step name="validate_phase">
|
|
@@ -456,6 +468,17 @@ Update ROADMAP.md to reflect phase completion:
|
|
|
456
468
|
# Update status
|
|
457
469
|
```
|
|
458
470
|
|
|
471
|
+
**Check planning config:**
|
|
472
|
+
|
|
473
|
+
If `COMMIT_PLANNING_DOCS=false` (set in load_project_state):
|
|
474
|
+
- Skip all git operations for .planning/ files
|
|
475
|
+
- Planning docs exist locally but are gitignored
|
|
476
|
+
- Log: "Skipping planning docs commit (commit_docs: false)"
|
|
477
|
+
- Proceed to offer_next step
|
|
478
|
+
|
|
479
|
+
If `COMMIT_PLANNING_DOCS=true` (default):
|
|
480
|
+
- Continue with git operations below
|
|
481
|
+
|
|
459
482
|
Commit phase completion (roadmap, state, verification):
|
|
460
483
|
```bash
|
|
461
484
|
git add .planning/ROADMAP.md .planning/STATE.md .planning/phases/{phase_dir}/*-VERIFICATION.md
|
|
@@ -4,6 +4,7 @@ Execute a phase prompt (PLAN.md) and create the outcome summary (SUMMARY.md).
|
|
|
4
4
|
|
|
5
5
|
<required_reading>
|
|
6
6
|
Read STATE.md before any operation to load project context.
|
|
7
|
+
Read config.json for planning behavior settings.
|
|
7
8
|
|
|
8
9
|
@~/.claude/get-shit-done/references/git-integration.md
|
|
9
10
|
</required_reading>
|
|
@@ -36,6 +37,17 @@ Options:
|
|
|
36
37
|
**If .planning/ doesn't exist:** Error - project not initialized.
|
|
37
38
|
|
|
38
39
|
This ensures every execution has full project context.
|
|
40
|
+
|
|
41
|
+
**Load planning config:**
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Check if planning docs should be committed (default: true)
|
|
45
|
+
COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
46
|
+
# Auto-detect gitignored (overrides config)
|
|
47
|
+
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Store `COMMIT_PLANNING_DOCS` for use in git operations.
|
|
39
51
|
</step>
|
|
40
52
|
|
|
41
53
|
<step name="identify_plan">
|
|
@@ -1513,6 +1525,17 @@ Commit execution metadata (SUMMARY + STATE + ROADMAP):
|
|
|
1513
1525
|
**Note:** All task code has already been committed during execution (one commit per task).
|
|
1514
1526
|
PLAN.md was already committed during plan-phase. This final commit captures execution results only.
|
|
1515
1527
|
|
|
1528
|
+
**Check planning config:**
|
|
1529
|
+
|
|
1530
|
+
If `COMMIT_PLANNING_DOCS=false` (set in load_project_state):
|
|
1531
|
+
- Skip all git operations for .planning/ files
|
|
1532
|
+
- Planning docs exist locally but are gitignored
|
|
1533
|
+
- Log: "Skipping planning docs commit (commit_docs: false)"
|
|
1534
|
+
- Proceed to next step
|
|
1535
|
+
|
|
1536
|
+
If `COMMIT_PLANNING_DOCS=true` (default):
|
|
1537
|
+
- Continue with git operations below
|
|
1538
|
+
|
|
1516
1539
|
**1. Stage execution artifacts:**
|
|
1517
1540
|
|
|
1518
1541
|
```bash
|
|
@@ -211,6 +211,17 @@ Continue to commit_codebase_map.
|
|
|
211
211
|
<step name="commit_codebase_map">
|
|
212
212
|
Commit the codebase map:
|
|
213
213
|
|
|
214
|
+
**Check planning config:**
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
218
|
+
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
|
|
222
|
+
|
|
223
|
+
**If `COMMIT_PLANNING_DOCS=true` (default):**
|
|
224
|
+
|
|
214
225
|
```bash
|
|
215
226
|
git add .planning/codebase/*.md
|
|
216
227
|
git commit -m "$(cat <<'EOF'
|
|
@@ -285,6 +285,17 @@ Clear Current Test section:
|
|
|
285
285
|
[testing complete]
|
|
286
286
|
```
|
|
287
287
|
|
|
288
|
+
**Check planning config:**
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
292
|
+
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
**If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
|
|
296
|
+
|
|
297
|
+
**If `COMMIT_PLANNING_DOCS=true` (default):**
|
|
298
|
+
|
|
288
299
|
Commit the UAT file:
|
|
289
300
|
```bash
|
|
290
301
|
git add ".planning/phases/XX-name/{phase}-UAT.md"
|
package/package.json
CHANGED