get-shit-done-cc 1.3.9 → 1.3.11
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/commands/gsd/plan-phase.md +0 -1
- package/get-shit-done/references/checkpoints.md +139 -446
- package/get-shit-done/references/plan-format.md +56 -326
- package/get-shit-done/references/scope-estimation.md +53 -389
- package/get-shit-done/workflows/execute-phase.md +20 -1
- package/get-shit-done/workflows/plan-phase.md +133 -707
- package/package.json +1 -1
- package/get-shit-done/references/cli-automation.md +0 -527
|
@@ -1,397 +1,127 @@
|
|
|
1
1
|
<overview>
|
|
2
|
-
Claude-executable plans have a specific format
|
|
2
|
+
Claude-executable plans have a specific format. This reference defines what makes a plan executable vs. vague.
|
|
3
3
|
|
|
4
|
-
**
|
|
4
|
+
**Core principle:** A plan is Claude-executable when Claude can read PLAN.md and immediately start implementing without clarifying questions. If Claude has to guess or interpret - the task is too vague.
|
|
5
5
|
</overview>
|
|
6
6
|
|
|
7
|
-
<core_principle>
|
|
8
|
-
A plan is Claude-executable when Claude can read the PLAN.md and immediately start implementing without asking clarifying questions.
|
|
9
|
-
|
|
10
|
-
If Claude has to guess, interpret, or make assumptions - the task is too vague.
|
|
11
|
-
</core_principle>
|
|
12
|
-
|
|
13
|
-
<prompt_structure>
|
|
14
|
-
Every PLAN.md follows this XML structure:
|
|
15
|
-
|
|
16
|
-
```markdown
|
|
17
|
-
---
|
|
18
|
-
phase: XX-name
|
|
19
|
-
type: execute
|
|
20
|
-
domain: [optional]
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
<objective>
|
|
24
|
-
[What and why]
|
|
25
|
-
Purpose: [...]
|
|
26
|
-
Output: [...]
|
|
27
|
-
</objective>
|
|
28
|
-
|
|
29
|
-
<context>
|
|
30
|
-
@.planning/PROJECT.md
|
|
31
|
-
@.planning/ROADMAP.md
|
|
32
|
-
@relevant/source/files.ts
|
|
33
|
-
</context>
|
|
34
|
-
|
|
35
|
-
<tasks>
|
|
36
|
-
<task type="auto">
|
|
37
|
-
<name>Task N: [Name]</name>
|
|
38
|
-
<files>[paths]</files>
|
|
39
|
-
<action>[what to do, what to avoid and WHY]</action>
|
|
40
|
-
<verify>[command/check]</verify>
|
|
41
|
-
<done>[criteria]</done>
|
|
42
|
-
</task>
|
|
43
|
-
|
|
44
|
-
<task type="checkpoint:human-verify" gate="blocking">
|
|
45
|
-
<what-built>[what Claude automated]</what-built>
|
|
46
|
-
<how-to-verify>[numbered verification steps]</how-to-verify>
|
|
47
|
-
<resume-signal>[how to continue - "approved" or describe issues]</resume-signal>
|
|
48
|
-
</task>
|
|
49
|
-
|
|
50
|
-
<task type="checkpoint:decision" gate="blocking">
|
|
51
|
-
<decision>[what needs deciding]</decision>
|
|
52
|
-
<context>[why this matters]</context>
|
|
53
|
-
<options>
|
|
54
|
-
<option id="option-a"><name>[Name]</name><pros>[pros]</pros><cons>[cons]</cons></option>
|
|
55
|
-
<option id="option-b"><name>[Name]</name><pros>[pros]</pros><cons>[cons]</cons></option>
|
|
56
|
-
</options>
|
|
57
|
-
<resume-signal>[how to indicate choice]</resume-signal>
|
|
58
|
-
</task>
|
|
59
|
-
</tasks>
|
|
60
|
-
|
|
61
|
-
<verification>
|
|
62
|
-
[Overall phase checks]
|
|
63
|
-
</verification>
|
|
64
|
-
|
|
65
|
-
<success_criteria>
|
|
66
|
-
[Measurable completion]
|
|
67
|
-
</success_criteria>
|
|
68
|
-
|
|
69
|
-
<output>
|
|
70
|
-
[SUMMARY.md specification]
|
|
71
|
-
</output>
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
</prompt_structure>
|
|
75
|
-
|
|
76
7
|
<task_anatomy>
|
|
77
|
-
Every task has four required fields:
|
|
78
8
|
|
|
79
|
-
|
|
80
|
-
**What it is**: Exact file paths that will be created or modified.
|
|
81
|
-
|
|
82
|
-
**Good**: `src/app/api/auth/login/route.ts`, `prisma/schema.prisma`
|
|
83
|
-
**Bad**: "the auth files", "relevant components"
|
|
84
|
-
|
|
85
|
-
Be specific. If you don't know the file path, figure it out first.
|
|
86
|
-
</field>
|
|
87
|
-
|
|
88
|
-
<field name="action">
|
|
89
|
-
**What it is**: Specific implementation instructions, including what to avoid and WHY.
|
|
90
|
-
|
|
91
|
-
**Good**: "Create POST endpoint that accepts {email, password}, validates using bcrypt against User table, returns JWT in httpOnly cookie with 15-min expiry. Use jose library (not jsonwebtoken - CommonJS issues with Next.js Edge runtime)."
|
|
92
|
-
|
|
93
|
-
**Bad**: "Add authentication", "Make login work"
|
|
94
|
-
|
|
95
|
-
Include: technology choices, data structures, behavior details, pitfalls to avoid.
|
|
96
|
-
</field>
|
|
97
|
-
|
|
98
|
-
<field name="verify">
|
|
99
|
-
**What it is**: How to prove the task is complete.
|
|
100
|
-
|
|
101
|
-
**Good**:
|
|
102
|
-
|
|
103
|
-
- `npm test` passes
|
|
104
|
-
- `curl -X POST /api/auth/login` returns 200 with Set-Cookie header
|
|
105
|
-
- Build completes without errors
|
|
106
|
-
|
|
107
|
-
**Bad**: "It works", "Looks good", "User can log in"
|
|
9
|
+
Every task has four required fields:
|
|
108
10
|
|
|
109
|
-
|
|
110
|
-
|
|
11
|
+
**files** - Exact paths created/modified
|
|
12
|
+
- Good: `src/app/api/auth/login/route.ts`
|
|
13
|
+
- Bad: "the auth files"
|
|
111
14
|
|
|
112
|
-
|
|
113
|
-
|
|
15
|
+
**action** - Specific implementation with pitfalls to avoid
|
|
16
|
+
- Good: "POST endpoint accepting {email, password}. Query User by email, compare with bcrypt. Return JWT in httpOnly cookie (15-min expiry). Use jose (not jsonwebtoken - CommonJS issues with Edge)."
|
|
17
|
+
- Bad: "Add authentication"
|
|
114
18
|
|
|
115
|
-
**
|
|
19
|
+
**verify** - Executable proof of completion
|
|
20
|
+
- Good: `curl -X POST /api/auth/login` returns 200 with Set-Cookie header
|
|
21
|
+
- Bad: "It works"
|
|
116
22
|
|
|
117
|
-
**
|
|
23
|
+
**done** - Measurable acceptance criteria
|
|
24
|
+
- Good: "Valid credentials → 200 + cookie. Invalid → 401."
|
|
25
|
+
- Bad: "Authentication complete"
|
|
118
26
|
|
|
119
|
-
Should be testable without subjective judgment.
|
|
120
|
-
</field>
|
|
121
27
|
</task_anatomy>
|
|
122
28
|
|
|
123
29
|
<task_types>
|
|
124
|
-
Tasks have a `type` attribute that determines how they execute:
|
|
125
|
-
|
|
126
|
-
<type name="auto">
|
|
127
|
-
**Default task type** - Claude executes autonomously.
|
|
128
|
-
|
|
129
|
-
**Structure:**
|
|
130
30
|
|
|
31
|
+
**type="auto"** (default) - Claude executes autonomously
|
|
131
32
|
```xml
|
|
132
33
|
<task type="auto">
|
|
133
|
-
<name>Task
|
|
34
|
+
<name>Task 1: Create login endpoint</name>
|
|
134
35
|
<files>src/app/api/auth/login/route.ts</files>
|
|
135
|
-
<action>POST
|
|
136
|
-
<verify>curl
|
|
137
|
-
<done>Valid
|
|
36
|
+
<action>POST accepting {email, password}. bcrypt compare, JWT via jose, httpOnly cookie.</action>
|
|
37
|
+
<verify>curl returns 200 with Set-Cookie</verify>
|
|
38
|
+
<done>Valid → 200 + cookie. Invalid → 401.</done>
|
|
138
39
|
</task>
|
|
139
40
|
```
|
|
140
41
|
|
|
141
|
-
|
|
142
|
-
</type>
|
|
143
|
-
|
|
144
|
-
<type name="checkpoint:human-action">
|
|
145
|
-
**RARELY USED** - Only for actions with NO CLI/API. Claude automates everything possible first.
|
|
146
|
-
|
|
147
|
-
**Structure:**
|
|
148
|
-
|
|
149
|
-
```xml
|
|
150
|
-
<task type="checkpoint:human-action" gate="blocking">
|
|
151
|
-
<action>[Unavoidable manual step - email link, 2FA code]</action>
|
|
152
|
-
<instructions>
|
|
153
|
-
[What Claude already automated]
|
|
154
|
-
[The ONE thing requiring human action]
|
|
155
|
-
</instructions>
|
|
156
|
-
<verification>[What Claude can check afterward]</verification>
|
|
157
|
-
<resume-signal>[How to continue]</resume-signal>
|
|
158
|
-
</task>
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
Use ONLY for: Email verification links, SMS 2FA codes, manual approvals with no API, 3D Secure payment flows.
|
|
162
|
-
|
|
163
|
-
Do NOT use for: Anything with a CLI (Vercel, Stripe, Upstash, Railway, GitHub), builds, tests, file creation, deployments.
|
|
164
|
-
|
|
165
|
-
**Execution:** Claude automates everything with CLI/API, stops only for truly unavoidable manual steps.
|
|
166
|
-
</type>
|
|
167
|
-
|
|
168
|
-
<type name="checkpoint:human-verify">
|
|
169
|
-
**Human must verify Claude's work** - Visual checks, UX testing.
|
|
170
|
-
|
|
171
|
-
**Structure:**
|
|
172
|
-
|
|
42
|
+
**type="checkpoint:human-verify"** - Human confirms Claude's work
|
|
173
43
|
```xml
|
|
174
44
|
<task type="checkpoint:human-verify" gate="blocking">
|
|
175
|
-
<what-built>Responsive dashboard
|
|
176
|
-
<how-to-verify>
|
|
177
|
-
1. Run: npm run dev
|
|
178
|
-
2. Visit: http://localhost:3000/dashboard
|
|
179
|
-
3. Desktop (>1024px): Verify sidebar left, content right
|
|
180
|
-
4. Tablet (768px): Verify sidebar collapses to hamburger
|
|
181
|
-
5. Mobile (375px): Verify single column, bottom nav
|
|
182
|
-
6. Check: No layout shift, no horizontal scroll
|
|
183
|
-
</how-to-verify>
|
|
45
|
+
<what-built>Responsive dashboard at /dashboard</what-built>
|
|
46
|
+
<how-to-verify>1. npm run dev 2. Visit localhost:3000/dashboard 3. Test mobile/tablet/desktop</how-to-verify>
|
|
184
47
|
<resume-signal>Type "approved" or describe issues</resume-signal>
|
|
185
48
|
</task>
|
|
186
49
|
```
|
|
187
50
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
**Execution:** Claude builds the feature, stops, provides testing instructions, waits for approval/feedback.
|
|
191
|
-
</type>
|
|
192
|
-
|
|
193
|
-
<type name="checkpoint:decision">
|
|
194
|
-
**Human must make implementation choice** - Direction-setting decisions.
|
|
195
|
-
|
|
196
|
-
**Structure:**
|
|
197
|
-
|
|
51
|
+
**type="checkpoint:decision"** - Human makes implementation choice
|
|
198
52
|
```xml
|
|
199
53
|
<task type="checkpoint:decision" gate="blocking">
|
|
200
|
-
<decision>Select
|
|
201
|
-
<context>
|
|
54
|
+
<decision>Select auth provider</decision>
|
|
55
|
+
<context>Need user auth with different tradeoffs.</context>
|
|
202
56
|
<options>
|
|
203
|
-
<option id="supabase">
|
|
204
|
-
|
|
205
|
-
<pros>Built-in with Supabase, generous free tier</pros>
|
|
206
|
-
<cons>Less customizable UI, tied to ecosystem</cons>
|
|
207
|
-
</option>
|
|
208
|
-
<option id="clerk">
|
|
209
|
-
<name>Clerk</name>
|
|
210
|
-
<pros>Beautiful pre-built UI, best DX</pros>
|
|
211
|
-
<cons>Paid after 10k MAU</cons>
|
|
212
|
-
</option>
|
|
213
|
-
<option id="nextauth">
|
|
214
|
-
<name>NextAuth.js</name>
|
|
215
|
-
<pros>Free, self-hosted, maximum control</pros>
|
|
216
|
-
<cons>More setup, you manage security</cons>
|
|
217
|
-
</option>
|
|
57
|
+
<option id="supabase"><name>Supabase</name><pros>Built-in, free</pros><cons>Ecosystem lock-in</cons></option>
|
|
58
|
+
<option id="clerk"><name>Clerk</name><pros>Best DX</pros><cons>Paid after 10k</cons></option>
|
|
218
59
|
</options>
|
|
219
|
-
<resume-signal>Select: supabase
|
|
60
|
+
<resume-signal>Select: supabase or clerk</resume-signal>
|
|
220
61
|
</task>
|
|
221
62
|
```
|
|
222
63
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
**Execution:** Claude presents options with balanced pros/cons, waits for decision, proceeds with chosen direction.
|
|
226
|
-
</type>
|
|
227
|
-
|
|
228
|
-
**When to use checkpoints:**
|
|
229
|
-
|
|
230
|
-
- Visual/UX verification (after Claude builds) → `checkpoint:human-verify`
|
|
231
|
-
- Implementation direction choice → `checkpoint:decision`
|
|
232
|
-
- Truly unavoidable manual actions (email links, 2FA) → `checkpoint:human-action` (rare)
|
|
233
|
-
|
|
234
|
-
**When NOT to use checkpoints:**
|
|
235
|
-
|
|
236
|
-
- Anything with CLI/API (Claude automates it) → `type="auto"`
|
|
237
|
-
- Deployments (Vercel, Railway, Fly) → `type="auto"` with CLI
|
|
238
|
-
- Creating resources (Upstash, Stripe, GitHub) → `type="auto"` with CLI/API
|
|
239
|
-
- File operations, tests, builds → `type="auto"`
|
|
64
|
+
**type="checkpoint:human-action"** - Rare, only for NO API/CLI actions (email links, 2FA)
|
|
240
65
|
|
|
241
66
|
**Golden rule:** If Claude CAN automate it, Claude MUST automate it.
|
|
242
67
|
|
|
243
68
|
See `./checkpoints.md` for comprehensive checkpoint guidance.
|
|
244
|
-
</task_types>
|
|
245
69
|
|
|
246
|
-
|
|
247
|
-
Use @file references to load context for the prompt:
|
|
248
|
-
|
|
249
|
-
```markdown
|
|
250
|
-
<context>
|
|
251
|
-
@.planning/PROJECT.md # Project vision
|
|
252
|
-
@.planning/ROADMAP.md # Phase structure
|
|
253
|
-
@.planning/phases/02-auth/DISCOVERY.md # Discovery results
|
|
254
|
-
@src/lib/db.ts # Existing database setup
|
|
255
|
-
@src/types/user.ts # Existing type definitions
|
|
256
|
-
</context>
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
Reference files that Claude needs to understand before implementing.
|
|
260
|
-
</context_references>
|
|
261
|
-
|
|
262
|
-
<verification_section>
|
|
263
|
-
Overall phase verification (beyond individual task verification):
|
|
264
|
-
|
|
265
|
-
```markdown
|
|
266
|
-
<verification>
|
|
267
|
-
Before declaring phase complete:
|
|
268
|
-
- [ ] `npm run build` succeeds without errors
|
|
269
|
-
- [ ] `npm test` passes all tests
|
|
270
|
-
- [ ] No TypeScript errors
|
|
271
|
-
- [ ] Feature works end-to-end manually
|
|
272
|
-
</verification>
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
</verification_section>
|
|
276
|
-
|
|
277
|
-
<success_criteria_section>
|
|
278
|
-
Measurable criteria for phase completion:
|
|
279
|
-
|
|
280
|
-
```markdown
|
|
281
|
-
<success_criteria>
|
|
282
|
-
|
|
283
|
-
- All tasks completed
|
|
284
|
-
- All verification checks pass
|
|
285
|
-
- No errors or warnings introduced
|
|
286
|
-
- JWT auth flow works end-to-end
|
|
287
|
-
- Protected routes redirect unauthenticated users
|
|
288
|
-
</success_criteria>
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
</success_criteria_section>
|
|
292
|
-
|
|
293
|
-
<output_section>
|
|
294
|
-
Specify the SUMMARY.md structure:
|
|
295
|
-
|
|
296
|
-
```markdown
|
|
297
|
-
<output>
|
|
298
|
-
After completion, create `.planning/phases/XX-name/SUMMARY.md`:
|
|
299
|
-
|
|
300
|
-
# Phase X: Name Summary
|
|
301
|
-
|
|
302
|
-
**[Substantive one-liner]**
|
|
303
|
-
|
|
304
|
-
## Accomplishments
|
|
305
|
-
|
|
306
|
-
## Files Created/Modified
|
|
307
|
-
|
|
308
|
-
## Decisions Made
|
|
309
|
-
|
|
310
|
-
## Issues Encountered
|
|
311
|
-
|
|
312
|
-
## Next Phase Readiness
|
|
313
|
-
|
|
314
|
-
</output>
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
</output_section>
|
|
70
|
+
</task_types>
|
|
318
71
|
|
|
319
72
|
<specificity_levels>
|
|
320
|
-
<too_vague>
|
|
321
73
|
|
|
74
|
+
**Too vague:**
|
|
322
75
|
```xml
|
|
323
76
|
<task type="auto">
|
|
324
|
-
<name>
|
|
77
|
+
<name>Add authentication</name>
|
|
325
78
|
<files>???</files>
|
|
326
79
|
<action>Implement auth</action>
|
|
327
80
|
<verify>???</verify>
|
|
328
81
|
<done>Users can authenticate</done>
|
|
329
82
|
</task>
|
|
330
83
|
```
|
|
331
|
-
|
|
332
84
|
Claude: "How? What type? What library? Where?"
|
|
333
|
-
</too_vague>
|
|
334
|
-
|
|
335
|
-
<just_right>
|
|
336
85
|
|
|
86
|
+
**Just right:**
|
|
337
87
|
```xml
|
|
338
88
|
<task type="auto">
|
|
339
|
-
<name>
|
|
89
|
+
<name>Create login endpoint with JWT</name>
|
|
340
90
|
<files>src/app/api/auth/login/route.ts</files>
|
|
341
|
-
<action>POST
|
|
342
|
-
<verify>curl -X POST localhost:3000/api/auth/login -
|
|
343
|
-
<done>Valid
|
|
91
|
+
<action>POST accepting {email, password}. Query User by email, bcrypt compare. On match: JWT via jose, httpOnly cookie (15-min). Return 200. Mismatch: 401. Use jose not jsonwebtoken (Edge compatibility).</action>
|
|
92
|
+
<verify>curl -X POST localhost:3000/api/auth/login -d '{"email":"test@test.com","password":"test123"}' returns 200 with Set-Cookie</verify>
|
|
93
|
+
<done>Valid → 200 + cookie. Invalid → 401. Missing fields → 400.</done>
|
|
344
94
|
</task>
|
|
345
95
|
```
|
|
346
96
|
|
|
347
|
-
Claude can implement this immediately.
|
|
348
|
-
</just_right>
|
|
349
|
-
|
|
350
|
-
<too_detailed>
|
|
351
|
-
Writing the actual code in the plan. Trust Claude to implement from clear instructions.
|
|
352
|
-
</too_detailed>
|
|
353
97
|
</specificity_levels>
|
|
354
98
|
|
|
355
99
|
<anti_patterns>
|
|
356
|
-
<vague_actions>
|
|
357
100
|
|
|
358
|
-
|
|
359
|
-
- "
|
|
360
|
-
- "
|
|
361
|
-
- "Add proper error handling"
|
|
101
|
+
**Vague actions:**
|
|
102
|
+
- "Set up infrastructure" - what infrastructure?
|
|
103
|
+
- "Handle edge cases" - which ones?
|
|
104
|
+
- "Add proper error handling" - what's proper?
|
|
362
105
|
|
|
363
|
-
|
|
364
|
-
|
|
106
|
+
**Unverifiable completion:**
|
|
107
|
+
- "It works correctly" - how to test?
|
|
108
|
+
- "Code is clean" - subjective
|
|
109
|
+
- "Tests pass" - which tests? do they exist?
|
|
365
110
|
|
|
366
|
-
|
|
111
|
+
**Missing context:**
|
|
112
|
+
- "Use standard approach" - which standard?
|
|
113
|
+
- "Like the other endpoints" - Claude doesn't know your patterns
|
|
367
114
|
|
|
368
|
-
- "It works correctly"
|
|
369
|
-
- "User experience is good"
|
|
370
|
-
- "Code is clean"
|
|
371
|
-
- "Tests pass" (which tests? do they exist?)
|
|
372
|
-
|
|
373
|
-
These require subjective judgment. Make it objective.
|
|
374
|
-
</unverifiable_completion>
|
|
375
|
-
|
|
376
|
-
<missing_context>
|
|
377
|
-
|
|
378
|
-
- "Use the standard approach"
|
|
379
|
-
- "Follow best practices"
|
|
380
|
-
- "Like the other endpoints"
|
|
381
|
-
|
|
382
|
-
Claude doesn't know your standards. Be explicit.
|
|
383
|
-
</missing_context>
|
|
384
115
|
</anti_patterns>
|
|
385
116
|
|
|
386
|
-
<
|
|
117
|
+
<sizing>
|
|
118
|
+
|
|
387
119
|
Good task size: 15-60 minutes of Claude work.
|
|
388
120
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
121
|
+
- Too small: "Add import for bcrypt" → combine with related task
|
|
122
|
+
- Just right: "Create login endpoint with JWT" → focused, specific
|
|
123
|
+
- Too big: "Implement full auth system" → split into multiple plans
|
|
392
124
|
|
|
393
|
-
If
|
|
394
|
-
If a task is trivial, combine with related tasks.
|
|
125
|
+
If phase has >3 tasks or spans multiple subsystems, split into multiple plans: `{phase}-{plan}-PLAN.md`
|
|
395
126
|
|
|
396
|
-
|
|
397
|
-
</sizing_tasks>
|
|
127
|
+
</sizing>
|