@undeemed/get-shit-done-codex 1.6.11 → 1.20.2
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 +22 -3
- package/agents/gsd-codebase-mapper.md +761 -0
- package/agents/gsd-debugger.md +1198 -0
- package/agents/gsd-executor.md +419 -0
- package/agents/gsd-integration-checker.md +423 -0
- package/agents/gsd-phase-researcher.md +469 -0
- package/agents/gsd-plan-checker.md +622 -0
- package/agents/gsd-planner.md +1159 -0
- package/agents/gsd-project-researcher.md +618 -0
- package/agents/gsd-research-synthesizer.md +236 -0
- package/agents/gsd-roadmapper.md +639 -0
- package/agents/gsd-verifier.md +541 -0
- package/bin/install.js +106 -100
- package/commands/gsd/add-phase.md +17 -185
- package/commands/gsd/add-todo.md +23 -163
- package/commands/gsd/audit-milestone.md +3 -219
- package/commands/gsd/check-todos.md +20 -196
- package/commands/gsd/cleanup.md +18 -0
- package/commands/gsd/debug.md +13 -0
- package/commands/gsd/discuss-phase.md +10 -3
- package/commands/gsd/execute-phase.md +3 -265
- package/commands/gsd/health.md +22 -0
- package/commands/gsd/help.md +8 -369
- package/commands/gsd/insert-phase.md +9 -203
- package/commands/gsd/join-discord.md +18 -0
- package/commands/gsd/new-milestone.md +12 -678
- package/commands/gsd/new-project.md +8 -862
- package/commands/gsd/new-project.md.bak +1041 -0
- package/commands/gsd/pause-work.md +17 -105
- package/commands/gsd/plan-milestone-gaps.md +3 -247
- package/commands/gsd/plan-phase.md +13 -444
- package/commands/gsd/progress.md +5 -337
- package/commands/gsd/quick.md +40 -0
- package/commands/gsd/reapply-patches.md +110 -0
- package/commands/gsd/remove-phase.md +9 -315
- package/commands/gsd/research-phase.md +26 -19
- package/commands/gsd/set-profile.md +34 -0
- package/commands/gsd/settings.md +36 -0
- package/commands/gsd/update.md +25 -160
- package/commands/gsd/verify-work.md +3 -183
- package/get-shit-done/bin/gsd-tools.cjs +5243 -0
- package/get-shit-done/bin/gsd-tools.test.cjs +2273 -0
- package/get-shit-done/references/checkpoints.md +254 -267
- package/get-shit-done/references/decimal-phase-calculation.md +65 -0
- package/get-shit-done/references/git-integration.md +3 -9
- package/get-shit-done/references/git-planning-commit.md +38 -0
- package/get-shit-done/references/model-profile-resolution.md +34 -0
- package/get-shit-done/references/model-profiles.md +92 -0
- package/get-shit-done/references/phase-argument-parsing.md +61 -0
- package/get-shit-done/references/planning-config.md +196 -0
- package/get-shit-done/references/questioning.md +4 -0
- package/get-shit-done/references/verification-patterns.md +17 -0
- package/get-shit-done/templates/UAT.md +1 -1
- package/get-shit-done/templates/codebase/structure.md +3 -3
- package/get-shit-done/templates/config.json +10 -0
- package/get-shit-done/templates/context.md +2 -10
- package/get-shit-done/templates/phase-prompt.md +18 -27
- package/get-shit-done/templates/planner-subagent-prompt.md +4 -4
- package/get-shit-done/templates/research-project/ARCHITECTURE.md +1 -1
- package/get-shit-done/templates/research.md +25 -2
- package/get-shit-done/templates/state.md +0 -30
- package/get-shit-done/templates/summary-complex.md +59 -0
- package/get-shit-done/templates/summary-minimal.md +41 -0
- package/get-shit-done/templates/summary-standard.md +48 -0
- package/get-shit-done/templates/summary.md +5 -28
- package/get-shit-done/templates/user-setup.md +1 -13
- package/get-shit-done/templates/verification-report.md +1 -1
- package/get-shit-done/workflows/add-phase.md +111 -0
- package/get-shit-done/workflows/add-todo.md +157 -0
- package/get-shit-done/workflows/audit-milestone.md +242 -0
- package/get-shit-done/workflows/check-todos.md +176 -0
- package/get-shit-done/workflows/cleanup.md +152 -0
- package/get-shit-done/workflows/complete-milestone.md +225 -301
- package/get-shit-done/workflows/diagnose-issues.md +3 -17
- package/get-shit-done/workflows/discovery-phase.md +6 -10
- package/get-shit-done/workflows/discuss-phase.md +99 -36
- package/get-shit-done/workflows/execute-phase.md +205 -349
- package/get-shit-done/workflows/execute-plan.md +179 -1569
- package/get-shit-done/workflows/health.md +156 -0
- package/get-shit-done/workflows/help.md +486 -0
- package/get-shit-done/workflows/insert-phase.md +129 -0
- package/get-shit-done/workflows/list-phase-assumptions.md +2 -2
- package/get-shit-done/workflows/map-codebase.md +55 -17
- package/get-shit-done/workflows/new-milestone.md +373 -0
- package/get-shit-done/workflows/new-project.md +1113 -0
- package/get-shit-done/workflows/pause-work.md +122 -0
- package/get-shit-done/workflows/plan-milestone-gaps.md +256 -0
- package/get-shit-done/workflows/plan-phase.md +448 -0
- package/get-shit-done/workflows/progress.md +393 -0
- package/get-shit-done/workflows/quick.md +444 -0
- package/get-shit-done/workflows/remove-phase.md +154 -0
- package/get-shit-done/workflows/research-phase.md +74 -0
- package/get-shit-done/workflows/resume-project.md +18 -23
- package/get-shit-done/workflows/set-profile.md +80 -0
- package/get-shit-done/workflows/settings.md +200 -0
- package/get-shit-done/workflows/transition.md +78 -103
- package/get-shit-done/workflows/update.md +214 -0
- package/get-shit-done/workflows/verify-phase.md +107 -494
- package/get-shit-done/workflows/verify-work.md +18 -11
- package/hooks/dist/gsd-check-update.js +66 -0
- package/hooks/dist/gsd-statusline.js +91 -0
- package/package.json +19 -3
- package/scripts/build-hooks.js +42 -0
- package/commands/gsd/whats-new.md +0 -124
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Insert a decimal phase for urgent work discovered mid-milestone between existing integer phases. Uses decimal numbering (72.1, 72.2, etc.) to preserve the logical sequence of planned phases while accommodating urgent insertions without renumbering the entire roadmap.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<required_reading>
|
|
6
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
7
|
+
</required_reading>
|
|
8
|
+
|
|
9
|
+
<process>
|
|
10
|
+
|
|
11
|
+
<step name="parse_arguments">
|
|
12
|
+
Parse the command arguments:
|
|
13
|
+
- First argument: integer phase number to insert after
|
|
14
|
+
- Remaining arguments: phase description
|
|
15
|
+
|
|
16
|
+
Example: `/gsd:insert-phase 72 Fix critical auth bug`
|
|
17
|
+
-> after = 72
|
|
18
|
+
-> description = "Fix critical auth bug"
|
|
19
|
+
|
|
20
|
+
If arguments missing:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
ERROR: Both phase number and description required
|
|
24
|
+
Usage: /gsd:insert-phase <after> <description>
|
|
25
|
+
Example: /gsd:insert-phase 72 Fix critical auth bug
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Exit.
|
|
29
|
+
|
|
30
|
+
Validate first argument is an integer.
|
|
31
|
+
</step>
|
|
32
|
+
|
|
33
|
+
<step name="init_context">
|
|
34
|
+
Load phase operation context:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs init phase-op "${after_phase}")
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Check `roadmap_exists` from init JSON. If false:
|
|
41
|
+
```
|
|
42
|
+
ERROR: No roadmap found (.planning/ROADMAP.md)
|
|
43
|
+
```
|
|
44
|
+
Exit.
|
|
45
|
+
</step>
|
|
46
|
+
|
|
47
|
+
<step name="insert_phase">
|
|
48
|
+
**Delegate the phase insertion to gsd-tools:**
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
RESULT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs phase insert "${after_phase}" "${description}")
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The CLI handles:
|
|
55
|
+
- Verifying target phase exists in ROADMAP.md
|
|
56
|
+
- Calculating next decimal phase number (checking existing decimals on disk)
|
|
57
|
+
- Generating slug from description
|
|
58
|
+
- Creating the phase directory (`.planning/phases/{N.M}-{slug}/`)
|
|
59
|
+
- Inserting the phase entry into ROADMAP.md after the target phase with (INSERTED) marker
|
|
60
|
+
|
|
61
|
+
Extract from result: `phase_number`, `after_phase`, `name`, `slug`, `directory`.
|
|
62
|
+
</step>
|
|
63
|
+
|
|
64
|
+
<step name="update_project_state">
|
|
65
|
+
Update STATE.md to reflect the inserted phase:
|
|
66
|
+
|
|
67
|
+
1. Read `.planning/STATE.md`
|
|
68
|
+
2. Under "## Accumulated Context" → "### Roadmap Evolution" add entry:
|
|
69
|
+
```
|
|
70
|
+
- Phase {decimal_phase} inserted after Phase {after_phase}: {description} (URGENT)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
If "Roadmap Evolution" section doesn't exist, create it.
|
|
74
|
+
</step>
|
|
75
|
+
|
|
76
|
+
<step name="completion">
|
|
77
|
+
Present completion summary:
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Phase {decimal_phase} inserted after Phase {after_phase}:
|
|
81
|
+
- Description: {description}
|
|
82
|
+
- Directory: .planning/phases/{decimal-phase}-{slug}/
|
|
83
|
+
- Status: Not planned yet
|
|
84
|
+
- Marker: (INSERTED) - indicates urgent work
|
|
85
|
+
|
|
86
|
+
Roadmap updated: .planning/ROADMAP.md
|
|
87
|
+
Project state updated: .planning/STATE.md
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Next Up
|
|
92
|
+
|
|
93
|
+
**Phase {decimal_phase}: {description}** -- urgent insertion
|
|
94
|
+
|
|
95
|
+
`/gsd:plan-phase {decimal_phase}`
|
|
96
|
+
|
|
97
|
+
<sub>`/clear` first -> fresh context window</sub>
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
**Also available:**
|
|
102
|
+
- Review insertion impact: Check if Phase {next_integer} dependencies still make sense
|
|
103
|
+
- Review roadmap
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
```
|
|
107
|
+
</step>
|
|
108
|
+
|
|
109
|
+
</process>
|
|
110
|
+
|
|
111
|
+
<anti_patterns>
|
|
112
|
+
|
|
113
|
+
- Don't use this for planned work at end of milestone (use /gsd:add-phase)
|
|
114
|
+
- Don't insert before Phase 1 (decimal 0.1 makes no sense)
|
|
115
|
+
- Don't renumber existing phases
|
|
116
|
+
- Don't modify the target phase content
|
|
117
|
+
- Don't create plans yet (that's /gsd:plan-phase)
|
|
118
|
+
- Don't commit changes (user decides when to commit)
|
|
119
|
+
</anti_patterns>
|
|
120
|
+
|
|
121
|
+
<success_criteria>
|
|
122
|
+
Phase insertion is complete when:
|
|
123
|
+
|
|
124
|
+
- [ ] `gsd-tools phase insert` executed successfully
|
|
125
|
+
- [ ] Phase directory created
|
|
126
|
+
- [ ] Roadmap updated with new phase entry (includes "(INSERTED)" marker)
|
|
127
|
+
- [ ] STATE.md updated with roadmap evolution note
|
|
128
|
+
- [ ] User informed of next steps and dependency implications
|
|
129
|
+
</success_criteria>
|
|
@@ -132,7 +132,7 @@ Wait for user response.
|
|
|
132
132
|
Acknowledge the corrections:
|
|
133
133
|
|
|
134
134
|
```
|
|
135
|
-
|
|
135
|
+
Key corrections:
|
|
136
136
|
- [correction 1]
|
|
137
137
|
- [correction 2]
|
|
138
138
|
|
|
@@ -142,7 +142,7 @@ This changes my understanding significantly. [Summarize new understanding]
|
|
|
142
142
|
**If user confirms assumptions:**
|
|
143
143
|
|
|
144
144
|
```
|
|
145
|
-
|
|
145
|
+
Assumptions validated.
|
|
146
146
|
```
|
|
147
147
|
|
|
148
148
|
Continue to offer_next.
|
|
@@ -22,11 +22,22 @@ Documents are reference material for Claude when planning/executing. Always incl
|
|
|
22
22
|
|
|
23
23
|
<process>
|
|
24
24
|
|
|
25
|
-
<step name="
|
|
26
|
-
|
|
25
|
+
<step name="init_context" priority="first">
|
|
26
|
+
Load codebase mapping context:
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
|
|
29
|
+
INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs init map-codebase)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Extract from init JSON: `mapper_model`, `commit_docs`, `codebase_dir`, `existing_maps`, `has_maps`, `codebase_dir_exists`.
|
|
33
|
+
</step>
|
|
34
|
+
|
|
35
|
+
<step name="check_existing">
|
|
36
|
+
Check if .planning/codebase/ already exists using `has_maps` from init context.
|
|
37
|
+
|
|
38
|
+
If `codebase_dir_exists` is true:
|
|
39
|
+
```bash
|
|
40
|
+
ls -la .planning/codebase/
|
|
30
41
|
```
|
|
31
42
|
|
|
32
43
|
**If exists:**
|
|
@@ -73,7 +84,7 @@ Continue to spawn_agents.
|
|
|
73
84
|
<step name="spawn_agents">
|
|
74
85
|
Spawn 4 parallel gsd-codebase-mapper agents.
|
|
75
86
|
|
|
76
|
-
Use Task tool with `subagent_type="gsd-codebase-mapper"` and `run_in_background=true` for parallel execution.
|
|
87
|
+
Use Task tool with `subagent_type="gsd-codebase-mapper"`, `model="{mapper_model}"`, and `run_in_background=true` for parallel execution.
|
|
77
88
|
|
|
78
89
|
**CRITICAL:** Use the dedicated `gsd-codebase-mapper` agent, NOT `Explore`. The mapper agent writes documents directly.
|
|
79
90
|
|
|
@@ -82,6 +93,7 @@ Use Task tool with `subagent_type="gsd-codebase-mapper"` and `run_in_background=
|
|
|
82
93
|
Task tool parameters:
|
|
83
94
|
```
|
|
84
95
|
subagent_type: "gsd-codebase-mapper"
|
|
96
|
+
model: "{mapper_model}"
|
|
85
97
|
run_in_background: true
|
|
86
98
|
description: "Map codebase tech stack"
|
|
87
99
|
```
|
|
@@ -104,6 +116,7 @@ Explore thoroughly. Write documents directly using templates. Return confirmatio
|
|
|
104
116
|
Task tool parameters:
|
|
105
117
|
```
|
|
106
118
|
subagent_type: "gsd-codebase-mapper"
|
|
119
|
+
model: "{mapper_model}"
|
|
107
120
|
run_in_background: true
|
|
108
121
|
description: "Map codebase architecture"
|
|
109
122
|
```
|
|
@@ -126,6 +139,7 @@ Explore thoroughly. Write documents directly using templates. Return confirmatio
|
|
|
126
139
|
Task tool parameters:
|
|
127
140
|
```
|
|
128
141
|
subagent_type: "gsd-codebase-mapper"
|
|
142
|
+
model: "{mapper_model}"
|
|
129
143
|
run_in_background: true
|
|
130
144
|
description: "Map codebase conventions"
|
|
131
145
|
```
|
|
@@ -148,6 +162,7 @@ Explore thoroughly. Write documents directly using templates. Return confirmatio
|
|
|
148
162
|
Task tool parameters:
|
|
149
163
|
```
|
|
150
164
|
subagent_type: "gsd-codebase-mapper"
|
|
165
|
+
model: "{mapper_model}"
|
|
151
166
|
run_in_background: true
|
|
152
167
|
description: "Map codebase concerns"
|
|
153
168
|
```
|
|
@@ -205,6 +220,41 @@ wc -l .planning/codebase/*.md
|
|
|
205
220
|
|
|
206
221
|
If any documents missing or empty, note which agents may have failed.
|
|
207
222
|
|
|
223
|
+
Continue to scan_for_secrets.
|
|
224
|
+
</step>
|
|
225
|
+
|
|
226
|
+
<step name="scan_for_secrets">
|
|
227
|
+
**CRITICAL SECURITY CHECK:** Scan output files for accidentally leaked secrets before committing.
|
|
228
|
+
|
|
229
|
+
Run secret pattern detection:
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
# Check for common API key patterns in generated docs
|
|
233
|
+
grep -E '(sk-[a-zA-Z0-9]{20,}|sk_live_[a-zA-Z0-9]+|sk_test_[a-zA-Z0-9]+|ghp_[a-zA-Z0-9]{36}|gho_[a-zA-Z0-9]{36}|glpat-[a-zA-Z0-9_-]+|AKIA[A-Z0-9]{16}|xox[baprs]-[a-zA-Z0-9-]+|-----BEGIN.*PRIVATE KEY|eyJ[a-zA-Z0-9_-]+\.eyJ[a-zA-Z0-9_-]+\.)' .planning/codebase/*.md 2>/dev/null && SECRETS_FOUND=true || SECRETS_FOUND=false
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**If SECRETS_FOUND=true:**
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
⚠️ SECURITY ALERT: Potential secrets detected in codebase documents!
|
|
240
|
+
|
|
241
|
+
Found patterns that look like API keys or tokens in:
|
|
242
|
+
[show grep output]
|
|
243
|
+
|
|
244
|
+
This would expose credentials if committed.
|
|
245
|
+
|
|
246
|
+
**Action required:**
|
|
247
|
+
1. Review the flagged content above
|
|
248
|
+
2. If these are real secrets, they must be removed before committing
|
|
249
|
+
3. Consider adding sensitive files to Claude Code "Deny" permissions
|
|
250
|
+
|
|
251
|
+
Pausing before commit. Reply "safe to proceed" if the flagged content is not actually sensitive, or edit the files first.
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Wait for user confirmation before continuing to commit_codebase_map.
|
|
255
|
+
|
|
256
|
+
**If SECRETS_FOUND=false:**
|
|
257
|
+
|
|
208
258
|
Continue to commit_codebase_map.
|
|
209
259
|
</step>
|
|
210
260
|
|
|
@@ -212,19 +262,7 @@ Continue to commit_codebase_map.
|
|
|
212
262
|
Commit the codebase map:
|
|
213
263
|
|
|
214
264
|
```bash
|
|
215
|
-
|
|
216
|
-
git commit -m "$(cat <<'EOF'
|
|
217
|
-
docs: map existing codebase
|
|
218
|
-
|
|
219
|
-
- STACK.md - Technologies and dependencies
|
|
220
|
-
- ARCHITECTURE.md - System design and patterns
|
|
221
|
-
- STRUCTURE.md - Directory layout
|
|
222
|
-
- CONVENTIONS.md - Code style and patterns
|
|
223
|
-
- TESTING.md - Test structure
|
|
224
|
-
- INTEGRATIONS.md - External services
|
|
225
|
-
- CONCERNS.md - Technical debt and issues
|
|
226
|
-
EOF
|
|
227
|
-
)"
|
|
265
|
+
node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs: map existing codebase" --files .planning/codebase/*.md
|
|
228
266
|
```
|
|
229
267
|
|
|
230
268
|
Continue to offer_next.
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
|
|
3
|
+
Start a new milestone cycle for an existing project. Loads project context, gathers milestone goals (from MILESTONE-CONTEXT.md or conversation), updates PROJECT.md and STATE.md, optionally runs parallel research, defines scoped requirements with REQ-IDs, spawns the roadmapper to create phased execution plan, and commits all artifacts. Brownfield equivalent of new-project.
|
|
4
|
+
|
|
5
|
+
</purpose>
|
|
6
|
+
|
|
7
|
+
<required_reading>
|
|
8
|
+
|
|
9
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
10
|
+
|
|
11
|
+
</required_reading>
|
|
12
|
+
|
|
13
|
+
<process>
|
|
14
|
+
|
|
15
|
+
## 1. Load Context
|
|
16
|
+
|
|
17
|
+
- Read PROJECT.md (existing project, validated requirements, decisions)
|
|
18
|
+
- Read MILESTONES.md (what shipped previously)
|
|
19
|
+
- Read STATE.md (pending todos, blockers)
|
|
20
|
+
- Check for MILESTONE-CONTEXT.md (from /gsd:discuss-milestone)
|
|
21
|
+
|
|
22
|
+
## 2. Gather Milestone Goals
|
|
23
|
+
|
|
24
|
+
**If MILESTONE-CONTEXT.md exists:**
|
|
25
|
+
- Use features and scope from discuss-milestone
|
|
26
|
+
- Present summary for confirmation
|
|
27
|
+
|
|
28
|
+
**If no context file:**
|
|
29
|
+
- Present what shipped in last milestone
|
|
30
|
+
- Ask: "What do you want to build next?"
|
|
31
|
+
- Use AskUserQuestion to explore features, priorities, constraints, scope
|
|
32
|
+
|
|
33
|
+
## 3. Determine Milestone Version
|
|
34
|
+
|
|
35
|
+
- Parse last version from MILESTONES.md
|
|
36
|
+
- Suggest next version (v1.0 → v1.1, or v2.0 for major)
|
|
37
|
+
- Confirm with user
|
|
38
|
+
|
|
39
|
+
## 4. Update PROJECT.md
|
|
40
|
+
|
|
41
|
+
Add/update:
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
## Current Milestone: v[X.Y] [Name]
|
|
45
|
+
|
|
46
|
+
**Goal:** [One sentence describing milestone focus]
|
|
47
|
+
|
|
48
|
+
**Target features:**
|
|
49
|
+
- [Feature 1]
|
|
50
|
+
- [Feature 2]
|
|
51
|
+
- [Feature 3]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Update Active requirements section and "Last updated" footer.
|
|
55
|
+
|
|
56
|
+
## 5. Update STATE.md
|
|
57
|
+
|
|
58
|
+
```markdown
|
|
59
|
+
## Current Position
|
|
60
|
+
|
|
61
|
+
Phase: Not started (defining requirements)
|
|
62
|
+
Plan: —
|
|
63
|
+
Status: Defining requirements
|
|
64
|
+
Last activity: [today] — Milestone v[X.Y] started
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Keep Accumulated Context section from previous milestone.
|
|
68
|
+
|
|
69
|
+
## 6. Cleanup and Commit
|
|
70
|
+
|
|
71
|
+
Delete MILESTONE-CONTEXT.md if exists (consumed).
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs: start milestone v[X.Y] [Name]" --files .planning/PROJECT.md .planning/STATE.md
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 7. Load Context and Resolve Models
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs init new-milestone)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Extract from init JSON: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `research_enabled`, `current_milestone`, `project_exists`, `roadmap_exists`.
|
|
84
|
+
|
|
85
|
+
## 8. Research Decision
|
|
86
|
+
|
|
87
|
+
AskUserQuestion: "Research the domain ecosystem for new features before defining requirements?"
|
|
88
|
+
- "Research first (Recommended)" — Discover patterns, features, architecture for NEW capabilities
|
|
89
|
+
- "Skip research" — Go straight to requirements
|
|
90
|
+
|
|
91
|
+
**Persist choice to config** (so future `/gsd:plan-phase` honors it):
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# If "Research first": persist true
|
|
95
|
+
node ~/.claude/get-shit-done/bin/gsd-tools.cjs config-set workflow.research true
|
|
96
|
+
|
|
97
|
+
# If "Skip research": persist false
|
|
98
|
+
node ~/.claude/get-shit-done/bin/gsd-tools.cjs config-set workflow.research false
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**If "Research first":**
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
105
|
+
GSD ► RESEARCHING
|
|
106
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
107
|
+
|
|
108
|
+
◆ Spawning 4 researchers in parallel...
|
|
109
|
+
→ Stack, Features, Architecture, Pitfalls
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
mkdir -p .planning/research
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Spawn 4 parallel gsd-project-researcher agents. Each uses this template with dimension-specific fields:
|
|
117
|
+
|
|
118
|
+
**Common structure for all 4 researchers:**
|
|
119
|
+
```
|
|
120
|
+
Task(prompt="
|
|
121
|
+
<research_type>Project Research — {DIMENSION} for [new features].</research_type>
|
|
122
|
+
|
|
123
|
+
<milestone_context>
|
|
124
|
+
SUBSEQUENT MILESTONE — Adding [target features] to existing app.
|
|
125
|
+
{EXISTING_CONTEXT}
|
|
126
|
+
Focus ONLY on what's needed for the NEW features.
|
|
127
|
+
</milestone_context>
|
|
128
|
+
|
|
129
|
+
<question>{QUESTION}</question>
|
|
130
|
+
|
|
131
|
+
<project_context>[PROJECT.md summary]</project_context>
|
|
132
|
+
|
|
133
|
+
<downstream_consumer>{CONSUMER}</downstream_consumer>
|
|
134
|
+
|
|
135
|
+
<quality_gate>{GATES}</quality_gate>
|
|
136
|
+
|
|
137
|
+
<output>
|
|
138
|
+
Write to: .planning/research/{FILE}
|
|
139
|
+
Use template: ~/.claude/get-shit-done/templates/research-project/{FILE}
|
|
140
|
+
</output>
|
|
141
|
+
", subagent_type="gsd-project-researcher", model="{researcher_model}", description="{DIMENSION} research")
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Dimension-specific fields:**
|
|
145
|
+
|
|
146
|
+
| Field | Stack | Features | Architecture | Pitfalls |
|
|
147
|
+
|-------|-------|----------|-------------|----------|
|
|
148
|
+
| EXISTING_CONTEXT | Existing validated capabilities (DO NOT re-research): [from PROJECT.md] | Existing features (already built): [from PROJECT.md] | Existing architecture: [from PROJECT.md or codebase map] | Focus on common mistakes when ADDING these features to existing system |
|
|
149
|
+
| QUESTION | What stack additions/changes are needed for [new features]? | How do [target features] typically work? Expected behavior? | How do [target features] integrate with existing architecture? | Common mistakes when adding [target features] to [domain]? |
|
|
150
|
+
| CONSUMER | Specific libraries with versions for NEW capabilities, integration points, what NOT to add | Table stakes vs differentiators vs anti-features, complexity noted, dependencies on existing | Integration points, new components, data flow changes, suggested build order | Warning signs, prevention strategy, which phase should address it |
|
|
151
|
+
| GATES | Versions current (verify with Context7), rationale explains WHY, integration considered | Categories clear, complexity noted, dependencies identified | Integration points identified, new vs modified explicit, build order considers deps | Pitfalls specific to adding these features, integration pitfalls covered, prevention actionable |
|
|
152
|
+
| FILE | STACK.md | FEATURES.md | ARCHITECTURE.md | PITFALLS.md |
|
|
153
|
+
|
|
154
|
+
After all 4 complete, spawn synthesizer:
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
Task(prompt="
|
|
158
|
+
Synthesize research outputs into SUMMARY.md.
|
|
159
|
+
|
|
160
|
+
Read: .planning/research/STACK.md, FEATURES.md, ARCHITECTURE.md, PITFALLS.md
|
|
161
|
+
|
|
162
|
+
Write to: .planning/research/SUMMARY.md
|
|
163
|
+
Use template: ~/.claude/get-shit-done/templates/research-project/SUMMARY.md
|
|
164
|
+
Commit after writing.
|
|
165
|
+
", subagent_type="gsd-research-synthesizer", model="{synthesizer_model}", description="Synthesize research")
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Display key findings from SUMMARY.md:
|
|
169
|
+
```
|
|
170
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
171
|
+
GSD ► RESEARCH COMPLETE ✓
|
|
172
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
173
|
+
|
|
174
|
+
**Stack additions:** [from SUMMARY.md]
|
|
175
|
+
**Feature table stakes:** [from SUMMARY.md]
|
|
176
|
+
**Watch Out For:** [from SUMMARY.md]
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**If "Skip research":** Continue to Step 9.
|
|
180
|
+
|
|
181
|
+
## 9. Define Requirements
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
185
|
+
GSD ► DEFINING REQUIREMENTS
|
|
186
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Read PROJECT.md: core value, current milestone goals, validated requirements (what exists).
|
|
190
|
+
|
|
191
|
+
**If research exists:** Read FEATURES.md, extract feature categories.
|
|
192
|
+
|
|
193
|
+
Present features by category:
|
|
194
|
+
```
|
|
195
|
+
## [Category 1]
|
|
196
|
+
**Table stakes:** Feature A, Feature B
|
|
197
|
+
**Differentiators:** Feature C, Feature D
|
|
198
|
+
**Research notes:** [any relevant notes]
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**If no research:** Gather requirements through conversation. Ask: "What are the main things users need to do with [new features]?" Clarify, probe for related capabilities, group into categories.
|
|
202
|
+
|
|
203
|
+
**Scope each category** via AskUserQuestion (multiSelect: true, header max 12 chars):
|
|
204
|
+
- "[Feature 1]" — [brief description]
|
|
205
|
+
- "[Feature 2]" — [brief description]
|
|
206
|
+
- "None for this milestone" — Defer entire category
|
|
207
|
+
|
|
208
|
+
Track: Selected → this milestone. Unselected table stakes → future. Unselected differentiators → out of scope.
|
|
209
|
+
|
|
210
|
+
**Identify gaps** via AskUserQuestion:
|
|
211
|
+
- "No, research covered it" — Proceed
|
|
212
|
+
- "Yes, let me add some" — Capture additions
|
|
213
|
+
|
|
214
|
+
**Generate REQUIREMENTS.md:**
|
|
215
|
+
- v1 Requirements grouped by category (checkboxes, REQ-IDs)
|
|
216
|
+
- Future Requirements (deferred)
|
|
217
|
+
- Out of Scope (explicit exclusions with reasoning)
|
|
218
|
+
- Traceability section (empty, filled by roadmap)
|
|
219
|
+
|
|
220
|
+
**REQ-ID format:** `[CATEGORY]-[NUMBER]` (AUTH-01, NOTIF-02). Continue numbering from existing.
|
|
221
|
+
|
|
222
|
+
**Requirement quality criteria:**
|
|
223
|
+
|
|
224
|
+
Good requirements are:
|
|
225
|
+
- **Specific and testable:** "User can reset password via email link" (not "Handle password reset")
|
|
226
|
+
- **User-centric:** "User can X" (not "System does Y")
|
|
227
|
+
- **Atomic:** One capability per requirement (not "User can login and manage profile")
|
|
228
|
+
- **Independent:** Minimal dependencies on other requirements
|
|
229
|
+
|
|
230
|
+
Present FULL requirements list for confirmation:
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
## Milestone v[X.Y] Requirements
|
|
234
|
+
|
|
235
|
+
### [Category 1]
|
|
236
|
+
- [ ] **CAT1-01**: User can do X
|
|
237
|
+
- [ ] **CAT1-02**: User can do Y
|
|
238
|
+
|
|
239
|
+
### [Category 2]
|
|
240
|
+
- [ ] **CAT2-01**: User can do Z
|
|
241
|
+
|
|
242
|
+
Does this capture what you're building? (yes / adjust)
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
If "adjust": Return to scoping.
|
|
246
|
+
|
|
247
|
+
**Commit requirements:**
|
|
248
|
+
```bash
|
|
249
|
+
node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs: define milestone v[X.Y] requirements" --files .planning/REQUIREMENTS.md
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## 10. Create Roadmap
|
|
253
|
+
|
|
254
|
+
```
|
|
255
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
256
|
+
GSD ► CREATING ROADMAP
|
|
257
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
258
|
+
|
|
259
|
+
◆ Spawning roadmapper...
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**Starting phase number:** Read MILESTONES.md for last phase number. Continue from there (v1.0 ended at phase 5 → v1.1 starts at phase 6).
|
|
263
|
+
|
|
264
|
+
```
|
|
265
|
+
Task(prompt="
|
|
266
|
+
<planning_context>
|
|
267
|
+
@.planning/PROJECT.md
|
|
268
|
+
@.planning/REQUIREMENTS.md
|
|
269
|
+
@.planning/research/SUMMARY.md (if exists)
|
|
270
|
+
@.planning/config.json
|
|
271
|
+
@.planning/MILESTONES.md
|
|
272
|
+
</planning_context>
|
|
273
|
+
|
|
274
|
+
<instructions>
|
|
275
|
+
Create roadmap for milestone v[X.Y]:
|
|
276
|
+
1. Start phase numbering from [N]
|
|
277
|
+
2. Derive phases from THIS MILESTONE's requirements only
|
|
278
|
+
3. Map every requirement to exactly one phase
|
|
279
|
+
4. Derive 2-5 success criteria per phase (observable user behaviors)
|
|
280
|
+
5. Validate 100% coverage
|
|
281
|
+
6. Write files immediately (ROADMAP.md, STATE.md, update REQUIREMENTS.md traceability)
|
|
282
|
+
7. Return ROADMAP CREATED with summary
|
|
283
|
+
|
|
284
|
+
Write files first, then return.
|
|
285
|
+
</instructions>
|
|
286
|
+
", subagent_type="gsd-roadmapper", model="{roadmapper_model}", description="Create roadmap")
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**Handle return:**
|
|
290
|
+
|
|
291
|
+
**If `## ROADMAP BLOCKED`:** Present blocker, work with user, re-spawn.
|
|
292
|
+
|
|
293
|
+
**If `## ROADMAP CREATED`:** Read ROADMAP.md, present inline:
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
## Proposed Roadmap
|
|
297
|
+
|
|
298
|
+
**[N] phases** | **[X] requirements mapped** | All covered ✓
|
|
299
|
+
|
|
300
|
+
| # | Phase | Goal | Requirements | Success Criteria |
|
|
301
|
+
|---|-------|------|--------------|------------------|
|
|
302
|
+
| [N] | [Name] | [Goal] | [REQ-IDs] | [count] |
|
|
303
|
+
|
|
304
|
+
### Phase Details
|
|
305
|
+
|
|
306
|
+
**Phase [N]: [Name]**
|
|
307
|
+
Goal: [goal]
|
|
308
|
+
Requirements: [REQ-IDs]
|
|
309
|
+
Success criteria:
|
|
310
|
+
1. [criterion]
|
|
311
|
+
2. [criterion]
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
**Ask for approval** via AskUserQuestion:
|
|
315
|
+
- "Approve" — Commit and continue
|
|
316
|
+
- "Adjust phases" — Tell me what to change
|
|
317
|
+
- "Review full file" — Show raw ROADMAP.md
|
|
318
|
+
|
|
319
|
+
**If "Adjust":** Get notes, re-spawn roadmapper with revision context, loop until approved.
|
|
320
|
+
**If "Review":** Display raw ROADMAP.md, re-ask.
|
|
321
|
+
|
|
322
|
+
**Commit roadmap** (after approval):
|
|
323
|
+
```bash
|
|
324
|
+
node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "docs: create milestone v[X.Y] roadmap ([N] phases)" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
## 11. Done
|
|
328
|
+
|
|
329
|
+
```
|
|
330
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
331
|
+
GSD ► MILESTONE INITIALIZED ✓
|
|
332
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
333
|
+
|
|
334
|
+
**Milestone v[X.Y]: [Name]**
|
|
335
|
+
|
|
336
|
+
| Artifact | Location |
|
|
337
|
+
|----------------|-----------------------------|
|
|
338
|
+
| Project | `.planning/PROJECT.md` |
|
|
339
|
+
| Research | `.planning/research/` |
|
|
340
|
+
| Requirements | `.planning/REQUIREMENTS.md` |
|
|
341
|
+
| Roadmap | `.planning/ROADMAP.md` |
|
|
342
|
+
|
|
343
|
+
**[N] phases** | **[X] requirements** | Ready to build ✓
|
|
344
|
+
|
|
345
|
+
## ▶ Next Up
|
|
346
|
+
|
|
347
|
+
**Phase [N]: [Phase Name]** — [Goal]
|
|
348
|
+
|
|
349
|
+
`/gsd:discuss-phase [N]` — gather context and clarify approach
|
|
350
|
+
|
|
351
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
352
|
+
|
|
353
|
+
Also: `/gsd:plan-phase [N]` — skip discussion, plan directly
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
</process>
|
|
357
|
+
|
|
358
|
+
<success_criteria>
|
|
359
|
+
- [ ] PROJECT.md updated with Current Milestone section
|
|
360
|
+
- [ ] STATE.md reset for new milestone
|
|
361
|
+
- [ ] MILESTONE-CONTEXT.md consumed and deleted (if existed)
|
|
362
|
+
- [ ] Research completed (if selected) — 4 parallel agents, milestone-aware
|
|
363
|
+
- [ ] Requirements gathered and scoped per category
|
|
364
|
+
- [ ] REQUIREMENTS.md created with REQ-IDs
|
|
365
|
+
- [ ] gsd-roadmapper spawned with phase numbering context
|
|
366
|
+
- [ ] Roadmap files written immediately (not draft)
|
|
367
|
+
- [ ] User feedback incorporated (if any)
|
|
368
|
+
- [ ] ROADMAP.md phases continue from previous milestone
|
|
369
|
+
- [ ] All commits made (if planning docs committed)
|
|
370
|
+
- [ ] User knows next step: `/gsd:discuss-phase [N]`
|
|
371
|
+
|
|
372
|
+
**Atomic commits:** Each phase commits its artifacts immediately.
|
|
373
|
+
</success_criteria>
|