get-shit-done-cc 1.3.23 → 1.3.25
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
|
@@ -4,6 +4,20 @@
|
|
|
4
4
|
|
|
5
5
|

|
|
6
6
|
|
|
7
|
+
<div align="center">
|
|
8
|
+
<br>
|
|
9
|
+
|
|
10
|
+
*"If you know clearly what you want, this WILL build it for you. No bs."*
|
|
11
|
+
|
|
12
|
+
*"I've done SpecKit, OpenSpec and Taskmaster — this has produced the best results for me."*
|
|
13
|
+
|
|
14
|
+
*"By far the most powerful addition to my Claude Code. Nothing over-engineered. Literally just gets shit done."*
|
|
15
|
+
|
|
16
|
+
<br>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
7
21
|
Vibecoding has a bad reputation. You describe what you want, AI generates code, and you get inconsistent garbage that falls apart at scale.
|
|
8
22
|
|
|
9
23
|
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 then let Claude Code get to work.
|
package/bin/install.js
CHANGED
|
@@ -35,6 +35,16 @@ const hasLocal = args.includes('--local') || args.includes('-l');
|
|
|
35
35
|
|
|
36
36
|
console.log(banner);
|
|
37
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Expand ~ to home directory (shell doesn't expand in env vars passed to node)
|
|
40
|
+
*/
|
|
41
|
+
function expandTilde(filePath) {
|
|
42
|
+
if (filePath && filePath.startsWith('~/')) {
|
|
43
|
+
return path.join(os.homedir(), filePath.slice(2));
|
|
44
|
+
}
|
|
45
|
+
return filePath;
|
|
46
|
+
}
|
|
47
|
+
|
|
38
48
|
/**
|
|
39
49
|
* Recursively copy directory, replacing paths in .md files
|
|
40
50
|
*/
|
|
@@ -65,8 +75,10 @@ function copyWithPathReplacement(srcDir, destDir, pathPrefix) {
|
|
|
65
75
|
*/
|
|
66
76
|
function install(isGlobal) {
|
|
67
77
|
const src = path.join(__dirname, '..');
|
|
78
|
+
const configDir = expandTilde(process.env.CLAUDE_CONFIG_DIR);
|
|
79
|
+
const defaultGlobalDir = configDir || path.join(os.homedir(), '.claude');
|
|
68
80
|
const claudeDir = isGlobal
|
|
69
|
-
?
|
|
81
|
+
? defaultGlobalDir
|
|
70
82
|
: path.join(process.cwd(), '.claude');
|
|
71
83
|
|
|
72
84
|
const locationLabel = isGlobal
|
|
@@ -74,7 +86,10 @@ function install(isGlobal) {
|
|
|
74
86
|
: claudeDir.replace(process.cwd(), '.');
|
|
75
87
|
|
|
76
88
|
// Path prefix for file references
|
|
77
|
-
|
|
89
|
+
// Use actual path when CLAUDE_CONFIG_DIR is set, otherwise use ~ shorthand
|
|
90
|
+
const pathPrefix = isGlobal
|
|
91
|
+
? (configDir ? `${claudeDir}/` : '~/.claude/')
|
|
92
|
+
: './.claude/';
|
|
78
93
|
|
|
79
94
|
console.log(` Installing to ${cyan}${locationLabel}${reset}\n`);
|
|
80
95
|
|
|
@@ -108,9 +123,12 @@ function promptLocation() {
|
|
|
108
123
|
output: process.stdout
|
|
109
124
|
});
|
|
110
125
|
|
|
126
|
+
const globalPath = expandTilde(process.env.CLAUDE_CONFIG_DIR) || path.join(os.homedir(), '.claude');
|
|
127
|
+
const globalLabel = globalPath.replace(os.homedir(), '~');
|
|
128
|
+
|
|
111
129
|
console.log(` ${yellow}Where would you like to install?${reset}
|
|
112
130
|
|
|
113
|
-
${cyan}1${reset}) Global ${dim}(
|
|
131
|
+
${cyan}1${reset}) Global ${dim}(${globalLabel})${reset} - available in all projects
|
|
114
132
|
${cyan}2${reset}) Local ${dim}(./.claude)${reset} - this project only
|
|
115
133
|
`);
|
|
116
134
|
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Milestone Context Template
|
|
2
|
+
|
|
3
|
+
Template for `.planning/MILESTONE-CONTEXT.md` - temporary handoff file from discuss-milestone to create-milestone.
|
|
4
|
+
|
|
5
|
+
**Purpose:** Persist milestone discussion context so `/clear` can be used between commands. This file is consumed by `/gsd:new-milestone` and deleted after the milestone is created.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## File Template
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
# Milestone Context
|
|
13
|
+
|
|
14
|
+
**Generated:** [date]
|
|
15
|
+
**Status:** Ready for /gsd:new-milestone
|
|
16
|
+
|
|
17
|
+
<features>
|
|
18
|
+
## Features to Build
|
|
19
|
+
|
|
20
|
+
[Features identified during discussion - the substance of this milestone]
|
|
21
|
+
|
|
22
|
+
- **[Feature 1]**: [description]
|
|
23
|
+
- **[Feature 2]**: [description]
|
|
24
|
+
- **[Feature 3]**: [description]
|
|
25
|
+
|
|
26
|
+
</features>
|
|
27
|
+
|
|
28
|
+
<scope>
|
|
29
|
+
## Scope
|
|
30
|
+
|
|
31
|
+
**Suggested name:** v[X.Y] [Theme Name]
|
|
32
|
+
**Estimated phases:** [N]
|
|
33
|
+
**Focus:** [One sentence theme/focus]
|
|
34
|
+
|
|
35
|
+
</scope>
|
|
36
|
+
|
|
37
|
+
<phase_mapping>
|
|
38
|
+
## Phase Mapping
|
|
39
|
+
|
|
40
|
+
[How features map to phases - rough breakdown]
|
|
41
|
+
|
|
42
|
+
- Phase [N]: [Feature/goal]
|
|
43
|
+
- Phase [N+1]: [Feature/goal]
|
|
44
|
+
- Phase [N+2]: [Feature/goal]
|
|
45
|
+
|
|
46
|
+
</phase_mapping>
|
|
47
|
+
|
|
48
|
+
<constraints>
|
|
49
|
+
## Constraints
|
|
50
|
+
|
|
51
|
+
[Any constraints or boundaries mentioned during discussion]
|
|
52
|
+
|
|
53
|
+
- [Constraint 1]
|
|
54
|
+
- [Constraint 2]
|
|
55
|
+
|
|
56
|
+
</constraints>
|
|
57
|
+
|
|
58
|
+
<notes>
|
|
59
|
+
## Additional Context
|
|
60
|
+
|
|
61
|
+
[Anything else captured during discussion that informs the milestone]
|
|
62
|
+
|
|
63
|
+
</notes>
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
*This file is temporary. It will be deleted after /gsd:new-milestone creates the milestone.*
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
<guidelines>
|
|
71
|
+
**This is a handoff artifact, not permanent documentation.**
|
|
72
|
+
|
|
73
|
+
The file exists only to pass context from `discuss-milestone` to `create-milestone` across a `/clear` boundary.
|
|
74
|
+
|
|
75
|
+
**Lifecycle:**
|
|
76
|
+
1. `/gsd:discuss-milestone` creates this file at end of discussion
|
|
77
|
+
2. User runs `/clear` (safe now - context is persisted)
|
|
78
|
+
3. `/gsd:new-milestone` reads this file
|
|
79
|
+
4. `/gsd:new-milestone` uses context to populate milestone
|
|
80
|
+
5. `/gsd:new-milestone` deletes this file after successful creation
|
|
81
|
+
|
|
82
|
+
**Content should include:**
|
|
83
|
+
- Features identified (the core of what to build)
|
|
84
|
+
- Suggested milestone name/theme
|
|
85
|
+
- Rough phase mapping
|
|
86
|
+
- Any constraints or scope boundaries
|
|
87
|
+
- Notes from discussion
|
|
88
|
+
|
|
89
|
+
**Content should NOT include:**
|
|
90
|
+
- Technical analysis (that comes during phase research)
|
|
91
|
+
- Detailed phase specifications (create-milestone handles that)
|
|
92
|
+
- Implementation details
|
|
93
|
+
</guidelines>
|
|
@@ -22,6 +22,7 @@ Load project context:
|
|
|
22
22
|
cat .planning/ROADMAP.md
|
|
23
23
|
cat .planning/STATE.md
|
|
24
24
|
cat .planning/MILESTONES.md 2>/dev/null || echo "No milestones file yet"
|
|
25
|
+
cat .planning/MILESTONE-CONTEXT.md 2>/dev/null || echo "No milestone context file"
|
|
25
26
|
```
|
|
26
27
|
|
|
27
28
|
Extract:
|
|
@@ -31,6 +32,13 @@ Extract:
|
|
|
31
32
|
- Deferred issues from STATE.md
|
|
32
33
|
- Project context from PROJECT.md (What This Is, Core Value)
|
|
33
34
|
|
|
35
|
+
**Check for milestone context from discuss-milestone:**
|
|
36
|
+
|
|
37
|
+
If `.planning/MILESTONE-CONTEXT.md` exists:
|
|
38
|
+
- This contains context from `/gsd:discuss-milestone`
|
|
39
|
+
- Extract: features, suggested name, phase mapping, constraints
|
|
40
|
+
- Use this to pre-populate milestone details (skip prompting for info already gathered)
|
|
41
|
+
|
|
34
42
|
**Calculate next milestone version:**
|
|
35
43
|
|
|
36
44
|
- If previous was v1.0 → suggest v1.1 (minor) or v2.0 (major)
|
|
@@ -39,11 +47,12 @@ Extract:
|
|
|
39
47
|
</step>
|
|
40
48
|
|
|
41
49
|
<step name="get_milestone_info">
|
|
42
|
-
**If
|
|
43
|
-
Use the
|
|
44
|
-
|
|
50
|
+
**If MILESTONE-CONTEXT.md exists (from /gsd:discuss-milestone):**
|
|
51
|
+
Use the features, scope, and constraints from the context file.
|
|
52
|
+
Use the suggested milestone name from `<scope>` section.
|
|
53
|
+
Use the phase mapping from `<phase_mapping>` section.
|
|
45
54
|
|
|
46
|
-
**If called directly (no
|
|
55
|
+
**If called directly (no MILESTONE-CONTEXT.md):**
|
|
47
56
|
Ask for milestone details:
|
|
48
57
|
|
|
49
58
|
header: "Milestone Name"
|
|
@@ -333,6 +342,16 @@ EOF
|
|
|
333
342
|
Confirm: "Committed: docs: create milestone v[X.Y] [Name]"
|
|
334
343
|
</step>
|
|
335
344
|
|
|
345
|
+
<step name="cleanup_context">
|
|
346
|
+
Delete the temporary milestone context file if it exists:
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
rm -f .planning/MILESTONE-CONTEXT.md
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
This file was a handoff artifact from `/gsd:discuss-milestone`. Now that the milestone is created, the context is persisted in ROADMAP.md and the temporary file is no longer needed.
|
|
353
|
+
</step>
|
|
354
|
+
|
|
336
355
|
<step name="offer_next">
|
|
337
356
|
```
|
|
338
357
|
Milestone v[X.Y] [Name] created:
|
|
@@ -122,6 +122,76 @@ If "Let me add context" → receive input → return to step 2.
|
|
|
122
122
|
Loop until "Create milestone" selected.
|
|
123
123
|
</step>
|
|
124
124
|
|
|
125
|
+
<step name="write_context">
|
|
126
|
+
Write milestone context to file for handoff.
|
|
127
|
+
|
|
128
|
+
**File:** `.planning/MILESTONE-CONTEXT.md`
|
|
129
|
+
|
|
130
|
+
Use template from ~/.claude/get-shit-done/templates/milestone-context.md
|
|
131
|
+
|
|
132
|
+
Populate with:
|
|
133
|
+
- Features identified during discussion
|
|
134
|
+
- Suggested milestone name and theme
|
|
135
|
+
- Estimated phase count
|
|
136
|
+
- How features map to phases
|
|
137
|
+
- Any constraints or scope boundaries mentioned
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# Write the context file
|
|
141
|
+
cat > .planning/MILESTONE-CONTEXT.md << 'EOF'
|
|
142
|
+
# Milestone Context
|
|
143
|
+
|
|
144
|
+
**Generated:** [today's date]
|
|
145
|
+
**Status:** Ready for /gsd:new-milestone
|
|
146
|
+
|
|
147
|
+
<features>
|
|
148
|
+
## Features to Build
|
|
149
|
+
|
|
150
|
+
- **[Feature 1]**: [description]
|
|
151
|
+
- **[Feature 2]**: [description]
|
|
152
|
+
- **[Feature 3]**: [description]
|
|
153
|
+
|
|
154
|
+
</features>
|
|
155
|
+
|
|
156
|
+
<scope>
|
|
157
|
+
## Scope
|
|
158
|
+
|
|
159
|
+
**Suggested name:** v[X.Y] [Theme Name]
|
|
160
|
+
**Estimated phases:** [N]
|
|
161
|
+
**Focus:** [One sentence theme/focus]
|
|
162
|
+
|
|
163
|
+
</scope>
|
|
164
|
+
|
|
165
|
+
<phase_mapping>
|
|
166
|
+
## Phase Mapping
|
|
167
|
+
|
|
168
|
+
- Phase [N]: [Feature/goal]
|
|
169
|
+
- Phase [N+1]: [Feature/goal]
|
|
170
|
+
- Phase [N+2]: [Feature/goal]
|
|
171
|
+
|
|
172
|
+
</phase_mapping>
|
|
173
|
+
|
|
174
|
+
<constraints>
|
|
175
|
+
## Constraints
|
|
176
|
+
|
|
177
|
+
- [Any constraints mentioned]
|
|
178
|
+
|
|
179
|
+
</constraints>
|
|
180
|
+
|
|
181
|
+
<notes>
|
|
182
|
+
## Additional Context
|
|
183
|
+
|
|
184
|
+
[Anything else from discussion]
|
|
185
|
+
|
|
186
|
+
</notes>
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
*This file is temporary. It will be deleted after /gsd:new-milestone creates the milestone.*
|
|
191
|
+
EOF
|
|
192
|
+
```
|
|
193
|
+
</step>
|
|
194
|
+
|
|
125
195
|
<step name="handoff">
|
|
126
196
|
Present summary and hand off to create-milestone:
|
|
127
197
|
|
|
@@ -136,7 +206,7 @@ Milestone scope defined:
|
|
|
136
206
|
**Suggested milestone:** v[X.Y] [Theme Name]
|
|
137
207
|
**Estimated phases:** [N]
|
|
138
208
|
|
|
139
|
-
|
|
209
|
+
Context saved to `.planning/MILESTONE-CONTEXT.md`
|
|
140
210
|
|
|
141
211
|
---
|
|
142
212
|
|
|
@@ -150,11 +220,6 @@ Ready to create the milestone structure.
|
|
|
150
220
|
|
|
151
221
|
---
|
|
152
222
|
```
|
|
153
|
-
|
|
154
|
-
Pass context forward by summarizing:
|
|
155
|
-
- Features to build (the substance)
|
|
156
|
-
- Suggested milestone name
|
|
157
|
-
- How features map to phases
|
|
158
223
|
</step>
|
|
159
224
|
|
|
160
225
|
</process>
|
|
@@ -166,5 +231,6 @@ Pass context forward by summarizing:
|
|
|
166
231
|
- **Features identified** - What to build/add/fix (the substance)
|
|
167
232
|
- Features explored with clarifying questions
|
|
168
233
|
- Scope synthesized from features (not asked abstractly)
|
|
169
|
-
-
|
|
234
|
+
- **MILESTONE-CONTEXT.md created** with features, scope, and phase mapping
|
|
235
|
+
- Context handed off to /gsd:new-milestone
|
|
170
236
|
</success_criteria>
|
package/package.json
CHANGED