get-shit-done-cc 1.4.26 → 1.4.28

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.
@@ -64,10 +64,83 @@ Phase: $ARGUMENTS
64
64
  - Update ROADMAP.md
65
65
 
66
66
  6. **Offer next steps**
67
- - More phases `/gsd:plan-phase {next}`
68
- - Milestone complete → `/gsd:complete-milestone`
67
+ - Route to next action (see `<offer_next>`)
69
68
  </process>
70
69
 
70
+ <offer_next>
71
+ **MANDATORY: Present copy/paste-ready next command.**
72
+
73
+ After phase completes, determine what's next:
74
+
75
+ **Step 1: Check milestone status**
76
+
77
+ Read ROADMAP.md. Find current phase number and highest phase in milestone.
78
+
79
+ | Condition | Action |
80
+ |-----------|--------|
81
+ | current < highest | More phases → Route A |
82
+ | current = highest | Milestone complete → Route B |
83
+
84
+ ---
85
+
86
+ **Route A: More phases remain in milestone**
87
+
88
+ ```
89
+ ## ✓ Phase {Z}: {Name} Complete
90
+
91
+ All {Y} plans finished.
92
+
93
+ ---
94
+
95
+ ## ▶ Next Up
96
+
97
+ **Phase {Z+1}: {Name}** — {Goal from ROADMAP.md}
98
+
99
+ `/gsd:plan-phase {Z+1}`
100
+
101
+ <sub>`/clear` first → fresh context window</sub>
102
+
103
+ ---
104
+
105
+ **Also available:**
106
+ - `/gsd:verify-work {Z}` — manual acceptance testing before continuing
107
+ - `/gsd:discuss-phase {Z+1}` — gather context first
108
+ - `/gsd:research-phase {Z+1}` — investigate unknowns
109
+
110
+ ---
111
+ ```
112
+
113
+ ---
114
+
115
+ **Route B: Milestone complete**
116
+
117
+ ```
118
+ 🎉 MILESTONE COMPLETE!
119
+
120
+ ## ✓ Phase {Z}: {Name} Complete
121
+
122
+ All {N} phases finished.
123
+
124
+ ---
125
+
126
+ ## ▶ Next Up
127
+
128
+ **Complete Milestone** — archive and prepare for next
129
+
130
+ `/gsd:complete-milestone`
131
+
132
+ <sub>`/clear` first → fresh context window</sub>
133
+
134
+ ---
135
+
136
+ **Also available:**
137
+ - `/gsd:verify-work` — manual acceptance testing before completing milestone
138
+ - `/gsd:add-phase <description>` — add another phase before completing
139
+
140
+ ---
141
+ ```
142
+ </offer_next>
143
+
71
144
  <wave_execution>
72
145
  **Parallel spawning:**
73
146
 
@@ -85,11 +158,12 @@ All three run in parallel. Task tool blocks until all complete.
85
158
  </wave_execution>
86
159
 
87
160
  <checkpoint_handling>
88
- Plans with `autonomous: false` in frontmatter have checkpoints:
89
- - Run in their assigned wave (can be parallel with other plans)
90
- - Pause at checkpoint, return to orchestrator
91
- - Orchestrator presents checkpoint to user
92
- - User responds, orchestrator resumes agent
161
+ Plans with `autonomous: false` have checkpoints. The execute-phase.md workflow handles the full checkpoint flow:
162
+ - Subagent pauses at checkpoint, returns structured state
163
+ - Orchestrator presents to user, collects response
164
+ - Spawns fresh continuation agent (not resume)
165
+
166
+ See `@~/.claude/get-shit-done/workflows/execute-phase.md` step `checkpoint_handling` for complete details.
93
167
  </checkpoint_handling>
94
168
 
95
169
  <deviation_rules>
@@ -85,12 +85,111 @@ Plan path: $ARGUMENTS
85
85
  - If contains "## CHECKPOINT REACHED": Execute checkpoint_handling
86
86
  - If contains "## PLAN COMPLETE": Verify SUMMARY exists, report success
87
87
 
88
- 7. **Report completion**
88
+ 7. **Report completion and offer next steps**
89
89
  - Show SUMMARY path
90
90
  - Show commits from subagent return
91
- - Offer next steps
91
+ - Route to next action (see `<offer_next>`)
92
92
  </process>
93
93
 
94
+ <offer_next>
95
+ **MANDATORY: Present copy/paste-ready next command.**
96
+
97
+ After plan completes, determine what's next:
98
+
99
+ **Step 1: Count plans vs summaries in current phase**
100
+ ```bash
101
+ ls -1 .planning/phases/[phase-dir]/*-PLAN.md 2>/dev/null | wc -l
102
+ ls -1 .planning/phases/[phase-dir]/*-SUMMARY.md 2>/dev/null | wc -l
103
+ ```
104
+
105
+ **Step 2: Route based on counts**
106
+
107
+ | Condition | Action |
108
+ |-----------|--------|
109
+ | summaries < plans | More plans remain → Route A |
110
+ | summaries = plans | Phase complete → Check milestone (Step 3) |
111
+
112
+ ---
113
+
114
+ **Route A: More plans remain in phase**
115
+
116
+ Find next PLAN.md without matching SUMMARY.md. Present:
117
+
118
+ ```
119
+ Plan {phase}-{plan} complete.
120
+ Summary: .planning/phases/{phase-dir}/{phase}-{plan}-SUMMARY.md
121
+
122
+ {Y} of {X} plans complete for Phase {Z}.
123
+
124
+ ---
125
+
126
+ ## ▶ Next Up
127
+
128
+ **{phase}-{next-plan}: [Plan Name]** — [objective from PLAN.md]
129
+
130
+ `/gsd:execute-plan .planning/phases/{phase-dir}/{phase}-{next-plan}-PLAN.md`
131
+
132
+ <sub>`/clear` first → fresh context window</sub>
133
+
134
+ ---
135
+ ```
136
+
137
+ ---
138
+
139
+ **Step 3: Check milestone status (only when phase complete)**
140
+
141
+ Read ROADMAP.md. Find current phase number and highest phase in milestone.
142
+
143
+ | Condition | Action |
144
+ |-----------|--------|
145
+ | current < highest | More phases → Route B |
146
+ | current = highest | Milestone complete → Route C |
147
+
148
+ ---
149
+
150
+ **Route B: Phase complete, more phases remain**
151
+
152
+ ```
153
+ ## ✓ Phase {Z}: {Name} Complete
154
+
155
+ All {Y} plans finished.
156
+
157
+ ---
158
+
159
+ ## ▶ Next Up
160
+
161
+ **Phase {Z+1}: {Name}** — {Goal from ROADMAP.md}
162
+
163
+ `/gsd:plan-phase {Z+1}`
164
+
165
+ <sub>`/clear` first → fresh context window</sub>
166
+
167
+ ---
168
+ ```
169
+
170
+ ---
171
+
172
+ **Route C: Milestone complete**
173
+
174
+ ```
175
+ 🎉 MILESTONE COMPLETE!
176
+
177
+ ## ✓ Phase {Z}: {Name} Complete
178
+
179
+ All {N} phases finished.
180
+
181
+ ---
182
+
183
+ ## ▶ Next Up
184
+
185
+ `/gsd:complete-milestone`
186
+
187
+ <sub>`/clear` first → fresh context window</sub>
188
+
189
+ ---
190
+ ```
191
+ </offer_next>
192
+
94
193
  <checkpoint_handling>
95
194
  When subagent returns with checkpoint:
96
195
 
@@ -102,13 +201,88 @@ When subagent returns with checkpoint:
102
201
  **Plan:** {phase}-{plan}
103
202
  **Progress:** {completed}/{total} tasks complete
104
203
 
105
- [Checkpoint content]
204
+ ### Completed Tasks
205
+ | Task | Name | Commit | Files |
206
+ |------|------|--------|-------|
207
+ | 1 | [task name] | [hash] | [files] |
208
+
209
+ ### Current Task
210
+ **Task {N}:** [name]
211
+ **Status:** [blocked | awaiting verification | awaiting decision]
212
+ **Blocked by:** [specific blocker]
213
+
214
+ ### Checkpoint Details
215
+ [Type-specific content for user]
216
+
217
+ ### Awaiting
218
+ [What user needs to provide]
219
+ ```
220
+
221
+ **2. Present checkpoint to user:**
222
+
223
+ Display rich formatted checkpoint based on type:
224
+
225
+ **For human-verify:**
226
+ ```
227
+ ════════════════════════════════════════
228
+ CHECKPOINT: Verification Required
229
+ ════════════════════════════════════════
230
+
231
+ Task {X} of {Y}: {task name}
232
+
233
+ I built: {what-built from checkpoint details}
106
234
 
107
- **Awaiting:** [Resume signal]
235
+ How to verify:
236
+ {numbered verification steps}
237
+
238
+ Type "approved" to continue, or describe issues.
239
+ ════════════════════════════════════════
240
+ ```
241
+
242
+ **For human-action (auth gate):**
243
+ ```
244
+ ════════════════════════════════════════
245
+ CHECKPOINT: Authentication Required
246
+ ════════════════════════════════════════
247
+
248
+ Task {X} of {Y}: {task name}
249
+
250
+ I tried: {automation attempted}
251
+ Error: {error encountered}
252
+
253
+ What you need to do:
254
+ {numbered instructions}
255
+
256
+ I'll verify after: {verification}
257
+
258
+ Type "done" when complete.
259
+ ════════════════════════════════════════
260
+ ```
261
+
262
+ **For decision:**
108
263
  ```
264
+ ════════════════════════════════════════
265
+ CHECKPOINT: Decision Required
266
+ ════════════════════════════════════════
109
267
 
110
- **2. Present to user:**
111
- Display the checkpoint content exactly as returned by subagent.
268
+ Task {X} of {Y}: {task name}
269
+
270
+ Decision: {what's being decided}
271
+
272
+ Context: {why this matters}
273
+
274
+ Options:
275
+ 1. {option-a}: {name}
276
+ Pros: {benefits}
277
+ Cons: {tradeoffs}
278
+
279
+ 2. {option-b}: {name}
280
+ Pros: {benefits}
281
+ Cons: {tradeoffs}
282
+
283
+ Select: {option-a | option-b | ...}
284
+ ════════════════════════════════════════
285
+ ```
112
286
 
113
287
  **3. Collect response:**
114
288
  Wait for user input:
@@ -116,15 +290,34 @@ Wait for user input:
116
290
  - decision: option selection
117
291
  - human-action: "done" when complete
118
292
 
119
- **4. Resume subagent:**
293
+ **4. Spawn fresh continuation agent:**
294
+
295
+ Fill continuation-prompt template with:
296
+ - completed_tasks_table: From checkpoint return
297
+ - resume_task_number: Current task number
298
+ - resume_task_name: Current task name
299
+ - resume_status: Derived from checkpoint type and user response
300
+ - user_response: What user provided
301
+ - resume_instructions: Type-specific guidance (see template)
302
+
120
303
  ```
121
- Task(resume="{agent_id}", prompt="User response: {user_input}")
304
+ Task(prompt=filled_continuation_template, subagent_type="general-purpose")
122
305
  ```
123
306
 
307
+ **Why fresh agent, not resume:**
308
+ Task tool resume fails after multiple tool calls (presenting to user, waiting for response). Fresh agent with state handoff via continuation-prompt.md is the correct pattern.
309
+
124
310
  **5. Repeat:**
125
311
  Continue handling returns until "## PLAN COMPLETE" or user stops.
126
312
  </checkpoint_handling>
127
313
 
314
+ <checkpoint_templates>
315
+ Templates for checkpoint handling:
316
+
317
+ - `@~/.claude/get-shit-done/templates/checkpoint-return.md` - Subagent return format
318
+ - `@~/.claude/get-shit-done/templates/continuation-prompt.md` - Fresh agent spawn template
319
+ </checkpoint_templates>
320
+
128
321
  <success_criteria>
129
322
  - [ ] Plan executed (SUMMARY.md created)
130
323
  - [ ] All checkpoints handled
@@ -1,110 +1,315 @@
1
1
  <overview>
2
- Plans execute autonomously. Checkpoints formalize interaction points where human verification or decisions are needed.
2
+ Plans execute autonomously. Checkpoints formalize the interaction points where human verification or decisions are needed.
3
3
 
4
4
  **Core principle:** Claude automates everything with CLI/API. Checkpoints are for verification and decisions, not manual work.
5
5
  </overview>
6
6
 
7
7
  <checkpoint_types>
8
8
 
9
- ## checkpoint:human-verify (90% of checkpoints)
9
+ <type name="human-verify">
10
+ ## checkpoint:human-verify (Most Common - 90%)
10
11
 
11
12
  **When:** Claude completed automated work, human confirms it works correctly.
12
13
 
13
- **Use for:** Visual UI checks, interactive flows, functional verification, audio/video quality, animation smoothness, accessibility testing.
14
+ **Use for:**
15
+ - Visual UI checks (layout, styling, responsiveness)
16
+ - Interactive flows (click through wizard, test user flows)
17
+ - Functional verification (feature works as expected)
18
+ - Audio/video playback quality
19
+ - Animation smoothness
20
+ - Accessibility testing
14
21
 
15
22
  **Structure:**
16
23
  ```xml
17
24
  <task type="checkpoint:human-verify" gate="blocking">
18
- <what-built>[What Claude automated]</what-built>
19
- <how-to-verify>[Numbered steps - URLs, commands, expected behavior]</how-to-verify>
20
- <resume-signal>[How to continue - "approved" or describe issues]</resume-signal>
25
+ <what-built>[What Claude automated and deployed/built]</what-built>
26
+ <how-to-verify>
27
+ [Exact steps to test - URLs, commands, expected behavior]
28
+ </how-to-verify>
29
+ <resume-signal>[How to continue - "approved", "yes", or describe issues]</resume-signal>
21
30
  </task>
22
31
  ```
23
32
 
24
- **Example:**
33
+ **Key elements:**
34
+ - `<what-built>`: What Claude automated (deployed, built, configured)
35
+ - `<how-to-verify>`: Exact steps to confirm it works (numbered, specific)
36
+ - `<resume-signal>`: Clear indication of how to continue
37
+
38
+ **Example: Vercel Deployment**
25
39
  ```xml
26
40
  <task type="auto">
27
41
  <name>Deploy to Vercel</name>
28
- <action>Run `vercel --yes` to deploy. Capture URL.</action>
42
+ <files>.vercel/, vercel.json</files>
43
+ <action>Run `vercel --yes` to create project and deploy. Capture deployment URL from output.</action>
29
44
  <verify>vercel ls shows deployment, curl {url} returns 200</verify>
45
+ <done>App deployed, URL captured</done>
30
46
  </task>
31
47
 
32
48
  <task type="checkpoint:human-verify" gate="blocking">
33
- <what-built>Deployed to https://myapp.vercel.app</what-built>
49
+ <what-built>Deployed to Vercel at https://myapp-abc123.vercel.app</what-built>
34
50
  <how-to-verify>
35
- Visit URL and confirm:
36
- 1. Homepage loads without errors
37
- 2. All images/assets load
38
- 3. No console errors
51
+ Visit https://myapp-abc123.vercel.app and confirm:
52
+ - Homepage loads without errors
53
+ - Login form is visible
54
+ - No console errors in browser DevTools
55
+ </how-to-verify>
56
+ <resume-signal>Type "approved" to continue, or describe issues to fix</resume-signal>
57
+ </task>
58
+ ```
59
+
60
+ **Example: UI Component**
61
+ ```xml
62
+ <task type="auto">
63
+ <name>Build responsive dashboard layout</name>
64
+ <files>src/components/Dashboard.tsx, src/app/dashboard/page.tsx</files>
65
+ <action>Create dashboard with sidebar, header, and content area. Use Tailwind responsive classes for mobile.</action>
66
+ <verify>npm run build succeeds, no TypeScript errors</verify>
67
+ <done>Dashboard component builds without errors</done>
68
+ </task>
69
+
70
+ <task type="checkpoint:human-verify" gate="blocking">
71
+ <what-built>Responsive dashboard layout at /dashboard</what-built>
72
+ <how-to-verify>
73
+ 1. Run: npm run dev
74
+ 2. Visit: http://localhost:3000/dashboard
75
+ 3. Desktop (>1024px): Verify sidebar left, content right, header top
76
+ 4. Tablet (768px): Verify sidebar collapses to hamburger
77
+ 5. Mobile (375px): Verify single column, bottom nav
78
+ 6. Check: No layout shift, no horizontal scroll
79
+ </how-to-verify>
80
+ <resume-signal>Type "approved" or describe layout issues</resume-signal>
81
+ </task>
82
+ ```
83
+
84
+ **Example: Xcode Build**
85
+ ```xml
86
+ <task type="auto">
87
+ <name>Build macOS app with Xcode</name>
88
+ <files>App.xcodeproj, Sources/</files>
89
+ <action>Run `xcodebuild -project App.xcodeproj -scheme App build`. Check for compilation errors in output.</action>
90
+ <verify>Build output contains "BUILD SUCCEEDED", no errors</verify>
91
+ <done>App builds successfully</done>
92
+ </task>
93
+
94
+ <task type="checkpoint:human-verify" gate="blocking">
95
+ <what-built>Built macOS app at DerivedData/Build/Products/Debug/App.app</what-built>
96
+ <how-to-verify>
97
+ Open App.app and test:
98
+ - App launches without crashes
99
+ - Menu bar icon appears
100
+ - Preferences window opens correctly
101
+ - No visual glitches or layout issues
39
102
  </how-to-verify>
40
103
  <resume-signal>Type "approved" or describe issues</resume-signal>
41
104
  </task>
42
105
  ```
106
+ </type>
43
107
 
44
- ## checkpoint:decision (9% of checkpoints)
108
+ <type name="decision">
109
+ ## checkpoint:decision (9%)
45
110
 
46
111
  **When:** Human must make choice that affects implementation direction.
47
112
 
48
- **Use for:** Technology selection, architecture decisions, design choices, feature prioritization.
113
+ **Use for:**
114
+ - Technology selection (which auth provider, which database)
115
+ - Architecture decisions (monorepo vs separate repos)
116
+ - Design choices (color scheme, layout approach)
117
+ - Feature prioritization (which variant to build)
118
+ - Data model decisions (schema structure)
49
119
 
50
120
  **Structure:**
51
121
  ```xml
52
122
  <task type="checkpoint:decision" gate="blocking">
53
123
  <decision>[What's being decided]</decision>
54
- <context>[Why this matters]</context>
124
+ <context>[Why this decision matters]</context>
55
125
  <options>
56
- <option id="option-a"><name>[Name]</name><pros>[Benefits]</pros><cons>[Tradeoffs]</cons></option>
57
- <option id="option-b"><name>[Name]</name><pros>[Benefits]</pros><cons>[Tradeoffs]</cons></option>
126
+ <option id="option-a">
127
+ <name>[Option name]</name>
128
+ <pros>[Benefits]</pros>
129
+ <cons>[Tradeoffs]</cons>
130
+ </option>
131
+ <option id="option-b">
132
+ <name>[Option name]</name>
133
+ <pros>[Benefits]</pros>
134
+ <cons>[Tradeoffs]</cons>
135
+ </option>
58
136
  </options>
59
137
  <resume-signal>[How to indicate choice]</resume-signal>
60
138
  </task>
61
139
  ```
62
140
 
63
- **Example:**
141
+ **Key elements:**
142
+ - `<decision>`: What's being decided
143
+ - `<context>`: Why this matters
144
+ - `<options>`: Each option with balanced pros/cons (not prescriptive)
145
+ - `<resume-signal>`: How to indicate choice
146
+
147
+ **Example: Auth Provider Selection**
64
148
  ```xml
65
149
  <task type="checkpoint:decision" gate="blocking">
66
150
  <decision>Select authentication provider</decision>
67
- <context>Need user auth. Three options with different tradeoffs.</context>
151
+ <context>
152
+ Need user authentication for the app. Three solid options with different tradeoffs.
153
+ </context>
68
154
  <options>
69
- <option id="supabase"><name>Supabase Auth</name><pros>Built-in with DB, free tier, RLS integration</pros><cons>Less customizable, ecosystem lock-in</cons></option>
70
- <option id="clerk"><name>Clerk</name><pros>Beautiful UI, best DX</pros><cons>Paid after 10k MAU</cons></option>
71
- <option id="nextauth"><name>NextAuth.js</name><pros>Free, self-hosted, max control</pros><cons>More setup, DIY security</cons></option>
155
+ <option id="supabase">
156
+ <name>Supabase Auth</name>
157
+ <pros>Built-in with Supabase DB we're using, generous free tier, row-level security integration</pros>
158
+ <cons>Less customizable UI, tied to Supabase ecosystem</cons>
159
+ </option>
160
+ <option id="clerk">
161
+ <name>Clerk</name>
162
+ <pros>Beautiful pre-built UI, best developer experience, excellent docs</pros>
163
+ <cons>Paid after 10k MAU, vendor lock-in</cons>
164
+ </option>
165
+ <option id="nextauth">
166
+ <name>NextAuth.js</name>
167
+ <pros>Free, self-hosted, maximum control, widely adopted</pros>
168
+ <cons>More setup work, you manage security updates, UI is DIY</cons>
169
+ </option>
72
170
  </options>
73
171
  <resume-signal>Select: supabase, clerk, or nextauth</resume-signal>
74
172
  </task>
75
173
  ```
76
174
 
77
- ## checkpoint:human-action (1% - rare)
175
+ **Example: Database Selection**
176
+ ```xml
177
+ <task type="checkpoint:decision" gate="blocking">
178
+ <decision>Select database for user data</decision>
179
+ <context>
180
+ App needs persistent storage for users, sessions, and user-generated content.
181
+ Expected scale: 10k users, 1M records first year.
182
+ </context>
183
+ <options>
184
+ <option id="supabase">
185
+ <name>Supabase (Postgres)</name>
186
+ <pros>Full SQL, generous free tier, built-in auth, real-time subscriptions</pros>
187
+ <cons>Vendor lock-in for real-time features, less flexible than raw Postgres</cons>
188
+ </option>
189
+ <option id="planetscale">
190
+ <name>PlanetScale (MySQL)</name>
191
+ <pros>Serverless scaling, branching workflow, excellent DX</pros>
192
+ <cons>MySQL not Postgres, no foreign keys in free tier</cons>
193
+ </option>
194
+ <option id="convex">
195
+ <name>Convex</name>
196
+ <pros>Real-time by default, TypeScript-native, automatic caching</pros>
197
+ <cons>Newer platform, different mental model, less SQL flexibility</cons>
198
+ </option>
199
+ </options>
200
+ <resume-signal>Select: supabase, planetscale, or convex</resume-signal>
201
+ </task>
202
+ ```
203
+ </type>
78
204
 
79
- **When:** Action has NO CLI/API and requires human-only interaction.
205
+ <type name="human-action">
206
+ ## checkpoint:human-action (1% - Rare)
80
207
 
81
- **Use ONLY for:** Email verification links, SMS 2FA codes, manual account approvals, 3D Secure payment flows, OAuth app approvals.
208
+ **When:** Action has NO CLI/API and requires human-only interaction, OR Claude hit an authentication gate during automation.
82
209
 
83
- **Do NOT use for:** Deployments (use CLI), creating resources (use CLI/API), builds/tests (use Bash), file operations (use Write/Edit).
210
+ **Use ONLY for:**
211
+ - **Authentication gates** - Claude tried to use CLI/API but needs credentials to continue (this is NOT a failure)
212
+ - Email verification links (account creation requires clicking email)
213
+ - SMS 2FA codes (phone verification)
214
+ - Manual account approvals (platform requires human review before API access)
215
+ - Credit card 3D Secure flows (web-based payment authorization)
216
+ - OAuth app approvals (some platforms require web-based approval)
217
+
218
+ **Do NOT use for pre-planned manual work:**
219
+ - Manually deploying to Vercel (use `vercel` CLI - auth gate if needed)
220
+ - Manually creating Stripe webhooks (use Stripe API - auth gate if needed)
221
+ - Manually creating databases (use provider CLI - auth gate if needed)
222
+ - Running builds/tests manually (use Bash tool)
223
+ - Creating files manually (use Write tool)
84
224
 
85
225
  **Structure:**
86
226
  ```xml
87
227
  <task type="checkpoint:human-action" gate="blocking">
88
- <action>[Unavoidable manual step]</action>
89
- <instructions>[What Claude automated] [ONE thing requiring human action]</instructions>
90
- <verification>[What Claude checks afterward]</verification>
228
+ <action>[What human must do - Claude already did everything automatable]</action>
229
+ <instructions>
230
+ [What Claude already automated]
231
+ [The ONE thing requiring human action]
232
+ </instructions>
233
+ <verification>[What Claude can check afterward]</verification>
91
234
  <resume-signal>[How to continue]</resume-signal>
92
235
  </task>
93
236
  ```
94
237
 
95
- **Example (email verification):**
238
+ **Key principle:** Claude automates EVERYTHING possible first, only asks human for the truly unavoidable manual step.
239
+
240
+ **Example: Email Verification**
96
241
  ```xml
242
+ <task type="auto">
243
+ <name>Create SendGrid account via API</name>
244
+ <action>Use SendGrid API to create subuser account with provided email. Request verification email.</action>
245
+ <verify>API returns 201, account created</verify>
246
+ <done>Account created, verification email sent</done>
247
+ </task>
248
+
97
249
  <task type="checkpoint:human-action" gate="blocking">
98
250
  <action>Complete email verification for SendGrid account</action>
99
251
  <instructions>
100
252
  I created the account and requested verification email.
101
- Check your inbox for verification link and click it.
253
+ Check your inbox for SendGrid verification link and click it.
102
254
  </instructions>
103
255
  <verification>SendGrid API key works: curl test succeeds</verification>
104
- <resume-signal>Type "done" when verified</resume-signal>
256
+ <resume-signal>Type "done" when email verified</resume-signal>
257
+ </task>
258
+ ```
259
+
260
+ **Example: Credit Card 3D Secure**
261
+ ```xml
262
+ <task type="auto">
263
+ <name>Create Stripe payment intent</name>
264
+ <action>Use Stripe API to create payment intent for $99. Generate checkout URL.</action>
265
+ <verify>Stripe API returns payment intent ID and URL</verify>
266
+ <done>Payment intent created</done>
267
+ </task>
268
+
269
+ <task type="checkpoint:human-action" gate="blocking">
270
+ <action>Complete 3D Secure authentication</action>
271
+ <instructions>
272
+ I created the payment intent: https://checkout.stripe.com/pay/cs_test_abc123
273
+ Visit that URL and complete the 3D Secure verification flow with your test card.
274
+ </instructions>
275
+ <verification>Stripe webhook receives payment_intent.succeeded event</verification>
276
+ <resume-signal>Type "done" when payment completes</resume-signal>
105
277
  </task>
106
278
  ```
107
279
 
280
+ **Example: Authentication Gate (Dynamic Checkpoint)**
281
+ ```xml
282
+ <task type="auto">
283
+ <name>Deploy to Vercel</name>
284
+ <files>.vercel/, vercel.json</files>
285
+ <action>Run `vercel --yes` to deploy</action>
286
+ <verify>vercel ls shows deployment, curl returns 200</verify>
287
+ </task>
288
+
289
+ <!-- If vercel returns "Error: Not authenticated", Claude creates checkpoint on the fly -->
290
+
291
+ <task type="checkpoint:human-action" gate="blocking">
292
+ <action>Authenticate Vercel CLI so I can continue deployment</action>
293
+ <instructions>
294
+ I tried to deploy but got authentication error.
295
+ Run: vercel login
296
+ This will open your browser - complete the authentication flow.
297
+ </instructions>
298
+ <verification>vercel whoami returns your account email</verification>
299
+ <resume-signal>Type "done" when authenticated</resume-signal>
300
+ </task>
301
+
302
+ <!-- After authentication, Claude retries the deployment -->
303
+
304
+ <task type="auto">
305
+ <name>Retry Vercel deployment</name>
306
+ <action>Run `vercel --yes` (now authenticated)</action>
307
+ <verify>vercel ls shows deployment, curl returns 200</verify>
308
+ </task>
309
+ ```
310
+
311
+ **Key distinction:** Authentication gates are created dynamically when Claude encounters auth errors during automation. They're NOT pre-planned - Claude tries to automate first, only asks for credentials when blocked.
312
+ </type>
108
313
  </checkpoint_types>
109
314
 
110
315
  <execution_protocol>
@@ -121,16 +326,86 @@ CHECKPOINT: [Type]
121
326
 
122
327
  Task [X] of [Y]: [Name]
123
328
 
124
- [Checkpoint-specific content]
329
+ [Display task-specific content based on type]
125
330
 
126
331
  [Resume signal instruction]
127
332
  ════════════════════════════════════════
128
333
  ```
129
334
 
130
335
  3. **Wait for user response** - do not hallucinate completion
131
- 4. **Verify if possible** - check files, run tests
132
- 5. **Resume execution** - continue only after confirmation
336
+ 4. **Verify if possible** - check files, run tests, whatever is specified
337
+ 5. **Resume execution** - continue to next task only after confirmation
338
+
339
+ **For checkpoint:human-verify:**
340
+ ```
341
+ ════════════════════════════════════════
342
+ CHECKPOINT: Verification Required
343
+ ════════════════════════════════════════
344
+
345
+ Task 5 of 8: Responsive dashboard layout
346
+
347
+ I built: Responsive dashboard at /dashboard
348
+
349
+ How to verify:
350
+ 1. Run: npm run dev
351
+ 2. Visit: http://localhost:3000/dashboard
352
+ 3. Test: Resize browser window to mobile/tablet/desktop
353
+ 4. Confirm: No layout shift, proper responsive behavior
354
+
355
+ Type "approved" to continue, or describe issues.
356
+ ════════════════════════════════════════
357
+ ```
358
+
359
+ **For checkpoint:decision:**
360
+ ```
361
+ ════════════════════════════════════════
362
+ CHECKPOINT: Decision Required
363
+ ════════════════════════════════════════
364
+
365
+ Task 2 of 6: Select authentication provider
366
+
367
+ Decision: Which auth provider should we use?
368
+
369
+ Context: Need user authentication. Three options with different tradeoffs.
133
370
 
371
+ Options:
372
+ 1. supabase - Built-in with our DB, free tier
373
+ Pros: Row-level security integration, generous free tier
374
+ Cons: Less customizable UI, ecosystem lock-in
375
+
376
+ 2. clerk - Best DX, paid after 10k users
377
+ Pros: Beautiful pre-built UI, excellent documentation
378
+ Cons: Vendor lock-in, pricing at scale
379
+
380
+ 3. nextauth - Self-hosted, maximum control
381
+ Pros: Free, no vendor lock-in, widely adopted
382
+ Cons: More setup work, DIY security updates
383
+
384
+ Select: supabase, clerk, or nextauth
385
+ ════════════════════════════════════════
386
+ ```
387
+
388
+ **For checkpoint:human-action:**
389
+ ```
390
+ ════════════════════════════════════════
391
+ CHECKPOINT: Authentication Required
392
+ ════════════════════════════════════════
393
+
394
+ Task 3 of 8: Deploy to Vercel
395
+
396
+ I tried: vercel --yes
397
+ Error: Not authenticated. Please run 'vercel login'
398
+
399
+ What you need to do:
400
+ 1. Run: vercel login
401
+ 2. Complete browser authentication when it opens
402
+ 3. Return here when done
403
+
404
+ I'll verify after: vercel whoami returns your account
405
+
406
+ Type "done" when authenticated.
407
+ ════════════════════════════════════════
408
+ ```
134
409
  </execution_protocol>
135
410
 
136
411
  <authentication_gates>
@@ -148,30 +423,42 @@ Task [X] of [Y]: [Name]
148
423
  6. Retry the original task
149
424
  7. Continue normally
150
425
 
151
- **Example (Vercel auth gate):**
152
- ```xml
153
- <!-- Claude tries to deploy -->
154
- <task type="auto">
155
- <name>Deploy to Vercel</name>
156
- <action>Run `vercel --yes` to deploy</action>
157
- </task>
426
+ **Example execution flow (Vercel auth gate):**
158
427
 
159
- <!-- If vercel returns "Error: Not authenticated" -->
160
- <task type="checkpoint:human-action" gate="blocking">
161
- <action>Authenticate Vercel CLI so I can continue</action>
162
- <instructions>
163
- I tried to deploy but got authentication error.
164
- Run: vercel login (opens browser)
165
- </instructions>
166
- <verification>vercel whoami returns your account</verification>
167
- <resume-signal>Type "done" when authenticated</resume-signal>
168
- </task>
428
+ ```
429
+ Claude: Running `vercel --yes` to deploy...
169
430
 
170
- <!-- After auth, Claude retries automatically -->
171
- <task type="auto">
172
- <name>Retry deployment</name>
173
- <action>Run `vercel --yes` (now authenticated)</action>
174
- </task>
431
+ Error: Not authenticated. Please run 'vercel login'
432
+
433
+ ════════════════════════════════════════
434
+ CHECKPOINT: Authentication Required
435
+ ════════════════════════════════════════
436
+
437
+ Task 3 of 8: Deploy to Vercel
438
+
439
+ I tried: vercel --yes
440
+ Error: Not authenticated
441
+
442
+ What you need to do:
443
+ 1. Run: vercel login
444
+ 2. Complete browser authentication
445
+
446
+ I'll verify after: vercel whoami returns your account
447
+
448
+ Type "done" when authenticated.
449
+ ════════════════════════════════════════
450
+
451
+ User: done
452
+
453
+ Claude: Verifying authentication...
454
+ Running: vercel whoami
455
+ ✓ Authenticated as: user@example.com
456
+
457
+ Retrying deployment...
458
+ Running: vercel --yes
459
+ ✓ Deployed to: https://myapp-abc123.vercel.app
460
+
461
+ Task 3 complete. Continuing to task 4...
175
462
  ```
176
463
 
177
464
  **Key distinction:**
@@ -196,6 +483,7 @@ Task [X] of [Y]: [Name]
196
483
  | GitHub | `gh` | `repo create`, `pr create`, `secret set` | `gh auth login` |
197
484
  | Node | `npm`/`pnpm` | `install`, `run build`, `test` | N/A |
198
485
  | Xcode | `xcodebuild` | `-project`, `-scheme`, `build`, `test` | N/A |
486
+ | Convex | `npx convex` | `dev`, `deploy`, `import` | `npx convex login` |
199
487
 
200
488
  **Env files:** Use Write/Edit tools. Never ask human to create .env manually.
201
489
 
@@ -210,61 +498,277 @@ Task [X] of [Y]: [Name]
210
498
  | Run tests | Yes (`npm test`) | YES |
211
499
  | Click email verification link | No | NO |
212
500
  | Enter credit card with 3DS | No | NO |
501
+ | Complete OAuth in browser | No | NO |
213
502
 
214
503
  </automation_reference>
215
504
 
216
- <guidelines>
505
+ <writing_guidelines>
217
506
 
218
507
  **DO:**
219
508
  - Automate everything with CLI/API before checkpoint
220
509
  - Be specific: "Visit https://myapp.vercel.app" not "check deployment"
221
- - Number verification steps
222
- - State expected outcomes
223
- - Make verification executable
510
+ - Number verification steps: easier to follow
511
+ - State expected outcomes: "You should see X"
512
+ - Provide context: why this checkpoint exists
513
+ - Make verification executable: clear, testable steps
224
514
 
225
515
  **DON'T:**
226
- - Ask human to do work Claude can automate
227
- - Assume knowledge: "Configure the usual settings"
228
- - Mix multiple verifications in one checkpoint
229
- - Use checkpoints too frequently (verification fatigue)
516
+ - Ask human to do work Claude can automate (deploy, create resources, run builds)
517
+ - Assume knowledge: "Configure the usual settings"
518
+ - Skip steps: "Set up database" ❌ (too vague)
519
+ - Mix multiple verifications in one checkpoint (split them)
520
+ - Make verification impossible (Claude can't check visual appearance without user confirmation)
230
521
 
231
522
  **Placement:**
232
- - After automation completes (not before)
233
- - After UI buildout
234
- - Before dependent work (decisions)
235
- - At integration points
523
+ - **After automation completes** - not before Claude does the work
524
+ - **After UI buildout** - before declaring phase complete
525
+ - **Before dependent work** - decisions before implementation
526
+ - **At integration points** - after configuring external services
527
+
528
+ **Bad placement:**
529
+ - Before Claude automates (asking human to do automatable work) ❌
530
+ - Too frequent (every other task is a checkpoint) ❌
531
+ - Too late (checkpoint is last task, but earlier tasks needed its result) ❌
532
+ </writing_guidelines>
533
+
534
+ <examples>
535
+
536
+ ### Example 1: Deployment Flow (Correct)
537
+
538
+ ```xml
539
+ <!-- Claude automates everything -->
540
+ <task type="auto">
541
+ <name>Deploy to Vercel</name>
542
+ <files>.vercel/, vercel.json, package.json</files>
543
+ <action>
544
+ 1. Run `vercel --yes` to create project and deploy
545
+ 2. Capture deployment URL from output
546
+ 3. Set environment variables with `vercel env add`
547
+ 4. Trigger production deployment with `vercel --prod`
548
+ </action>
549
+ <verify>
550
+ - vercel ls shows deployment
551
+ - curl {url} returns 200
552
+ - Environment variables set correctly
553
+ </verify>
554
+ <done>App deployed to production, URL captured</done>
555
+ </task>
556
+
557
+ <!-- Human verifies visual/functional correctness -->
558
+ <task type="checkpoint:human-verify" gate="blocking">
559
+ <what-built>Deployed to https://myapp.vercel.app</what-built>
560
+ <how-to-verify>
561
+ Visit https://myapp.vercel.app and confirm:
562
+ - Homepage loads correctly
563
+ - All images/assets load
564
+ - Navigation works
565
+ - No console errors
566
+ </how-to-verify>
567
+ <resume-signal>Type "approved" or describe issues</resume-signal>
568
+ </task>
569
+ ```
570
+
571
+ ### Example 2: Database Setup (No Checkpoint Needed)
572
+
573
+ ```xml
574
+ <!-- Claude automates everything -->
575
+ <task type="auto">
576
+ <name>Create Upstash Redis database</name>
577
+ <files>.env</files>
578
+ <action>
579
+ 1. Run `upstash redis create myapp-cache --region us-east-1`
580
+ 2. Capture connection URL from output
581
+ 3. Write to .env: UPSTASH_REDIS_URL={url}
582
+ 4. Verify connection with test command
583
+ </action>
584
+ <verify>
585
+ - upstash redis list shows database
586
+ - .env contains UPSTASH_REDIS_URL
587
+ - Test connection succeeds
588
+ </verify>
589
+ <done>Redis database created and configured</done>
590
+ </task>
591
+
592
+ <!-- NO CHECKPOINT NEEDED - Claude automated everything and verified programmatically -->
593
+ ```
594
+
595
+ ### Example 3: Stripe Webhooks (Correct)
596
+
597
+ ```xml
598
+ <!-- Claude automates everything -->
599
+ <task type="auto">
600
+ <name>Configure Stripe webhooks</name>
601
+ <files>.env, src/app/api/webhooks/route.ts</files>
602
+ <action>
603
+ 1. Use Stripe API to create webhook endpoint pointing to /api/webhooks
604
+ 2. Subscribe to events: payment_intent.succeeded, customer.subscription.updated
605
+ 3. Save webhook signing secret to .env
606
+ 4. Implement webhook handler in route.ts
607
+ </action>
608
+ <verify>
609
+ - Stripe API returns webhook endpoint ID
610
+ - .env contains STRIPE_WEBHOOK_SECRET
611
+ - curl webhook endpoint returns 200
612
+ </verify>
613
+ <done>Stripe webhooks configured and handler implemented</done>
614
+ </task>
615
+
616
+ <!-- Human verifies in Stripe dashboard -->
617
+ <task type="checkpoint:human-verify" gate="blocking">
618
+ <what-built>Stripe webhook configured via API</what-built>
619
+ <how-to-verify>
620
+ Visit Stripe Dashboard > Developers > Webhooks
621
+ Confirm: Endpoint shows https://myapp.com/api/webhooks with correct events
622
+ </how-to-verify>
623
+ <resume-signal>Type "yes" if correct</resume-signal>
624
+ </task>
625
+ ```
626
+
627
+ ### Example 4: Full Auth Flow Verification (Correct)
628
+
629
+ ```xml
630
+ <task type="auto">
631
+ <name>Create user schema</name>
632
+ <files>src/db/schema.ts</files>
633
+ <action>Define User, Session, Account tables with Drizzle ORM</action>
634
+ <verify>npm run db:generate succeeds</verify>
635
+ </task>
636
+
637
+ <task type="auto">
638
+ <name>Create auth API routes</name>
639
+ <files>src/app/api/auth/[...nextauth]/route.ts</files>
640
+ <action>Set up NextAuth with GitHub provider, JWT strategy</action>
641
+ <verify>TypeScript compiles, no errors</verify>
642
+ </task>
236
643
 
237
- </guidelines>
644
+ <task type="auto">
645
+ <name>Create login UI</name>
646
+ <files>src/app/login/page.tsx, src/components/LoginButton.tsx</files>
647
+ <action>Create login page with GitHub OAuth button</action>
648
+ <verify>npm run build succeeds</verify>
649
+ </task>
650
+
651
+ <!-- ONE checkpoint at end verifies the complete flow -->
652
+ <task type="checkpoint:human-verify" gate="blocking">
653
+ <what-built>Complete authentication flow (schema + API + UI)</what-built>
654
+ <how-to-verify>
655
+ 1. Run: npm run dev
656
+ 2. Visit: http://localhost:3000/login
657
+ 3. Click "Sign in with GitHub"
658
+ 4. Complete GitHub OAuth flow
659
+ 5. Verify: Redirected to /dashboard, user name displayed
660
+ 6. Refresh page: Session persists
661
+ 7. Click logout: Session cleared
662
+ </how-to-verify>
663
+ <resume-signal>Type "approved" or describe issues</resume-signal>
664
+ </task>
665
+ ```
666
+ </examples>
238
667
 
239
668
  <anti_patterns>
240
669
 
241
- **BAD: Asking human to automate**
670
+ ### ❌ BAD: Asking human to automate
671
+
242
672
  ```xml
243
- <task type="checkpoint:human-action">
673
+ <task type="checkpoint:human-action" gate="blocking">
244
674
  <action>Deploy to Vercel</action>
245
- <instructions>Visit vercel.com/new, import repo, click Deploy</instructions>
675
+ <instructions>
676
+ 1. Visit vercel.com/new
677
+ 2. Import Git repository
678
+ 3. Click Deploy
679
+ 4. Copy deployment URL
680
+ </instructions>
681
+ <verification>Deployment exists</verification>
682
+ <resume-signal>Paste URL</resume-signal>
683
+ </task>
684
+ ```
685
+
686
+ **Why bad:** Vercel has a CLI. Claude should run `vercel --yes`.
687
+
688
+ ### ✅ GOOD: Claude automates, human verifies
689
+
690
+ ```xml
691
+ <task type="auto">
692
+ <name>Deploy to Vercel</name>
693
+ <action>Run `vercel --yes`. Capture URL.</action>
694
+ <verify>vercel ls shows deployment, curl returns 200</verify>
695
+ </task>
696
+
697
+ <task type="checkpoint:human-verify">
698
+ <what-built>Deployed to {url}</what-built>
699
+ <how-to-verify>Visit {url}, check homepage loads</how-to-verify>
700
+ <resume-signal>Type "approved"</resume-signal>
246
701
  </task>
247
702
  ```
248
- Why bad: Vercel has CLI. Use `vercel --yes`.
249
703
 
250
- **BAD: Too many checkpoints**
704
+ ### ❌ BAD: Too many checkpoints
705
+
251
706
  ```xml
252
707
  <task type="auto">Create schema</task>
253
708
  <task type="checkpoint:human-verify">Check schema</task>
254
- <task type="auto">Create API</task>
709
+ <task type="auto">Create API route</task>
255
710
  <task type="checkpoint:human-verify">Check API</task>
711
+ <task type="auto">Create UI form</task>
712
+ <task type="checkpoint:human-verify">Check form</task>
256
713
  ```
257
- Why bad: Verification fatigue. Combine into one checkpoint at end.
258
714
 
259
- **GOOD: Claude automates, human verifies once**
715
+ **Why bad:** Verification fatigue. Combine into one checkpoint at end.
716
+
717
+ ### ✅ GOOD: Single verification checkpoint
718
+
260
719
  ```xml
261
720
  <task type="auto">Create schema</task>
262
- <task type="auto">Create API</task>
263
- <task type="auto">Create UI</task>
721
+ <task type="auto">Create API route</task>
722
+ <task type="auto">Create UI form</task>
264
723
 
265
724
  <task type="checkpoint:human-verify">
266
- <what-built>Complete auth flow</what-built>
725
+ <what-built>Complete auth flow (schema + API + UI)</what-built>
267
726
  <how-to-verify>Test full flow: register, login, access protected page</how-to-verify>
727
+ <resume-signal>Type "approved"</resume-signal>
728
+ </task>
729
+ ```
730
+
731
+ ### ❌ BAD: Asking for automatable file operations
732
+
733
+ ```xml
734
+ <task type="checkpoint:human-action">
735
+ <action>Create .env file</action>
736
+ <instructions>
737
+ 1. Create .env in project root
738
+ 2. Add: DATABASE_URL=...
739
+ 3. Add: STRIPE_KEY=...
740
+ </instructions>
741
+ </task>
742
+ ```
743
+
744
+ **Why bad:** Claude has Write tool. This should be `type="auto"`.
745
+
746
+ ### ❌ BAD: Vague verification steps
747
+
748
+ ```xml
749
+ <task type="checkpoint:human-verify">
750
+ <what-built>Dashboard</what-built>
751
+ <how-to-verify>Check it works</how-to-verify>
752
+ <resume-signal>Continue</resume-signal>
753
+ </task>
754
+ ```
755
+
756
+ **Why bad:** No specifics. User doesn't know what to test or what "works" means.
757
+
758
+ ### ✅ GOOD: Specific verification steps
759
+
760
+ ```xml
761
+ <task type="checkpoint:human-verify">
762
+ <what-built>Responsive dashboard at /dashboard</what-built>
763
+ <how-to-verify>
764
+ 1. Run: npm run dev
765
+ 2. Visit: http://localhost:3000/dashboard
766
+ 3. Desktop (>1024px): Sidebar visible, content area fills remaining space
767
+ 4. Tablet (768px): Sidebar collapses to icons
768
+ 5. Mobile (375px): Sidebar hidden, hamburger menu in header
769
+ 6. Check: No horizontal scroll at any size
770
+ </how-to-verify>
771
+ <resume-signal>Type "approved" or describe layout issues</resume-signal>
268
772
  </task>
269
773
  ```
270
774
 
@@ -272,16 +776,18 @@ Why bad: Verification fatigue. Combine into one checkpoint at end.
272
776
 
273
777
  <summary>
274
778
 
779
+ Checkpoints formalize human-in-the-loop points. Use them when Claude cannot complete a task autonomously OR when human verification is required for correctness.
780
+
275
781
  **The golden rule:** If Claude CAN automate it, Claude MUST automate it.
276
782
 
277
783
  **Checkpoint priority:**
278
- 1. **checkpoint:human-verify** (90%) - Claude automated, human confirms visual/functional correctness
279
- 2. **checkpoint:decision** (9%) - Human makes architectural/technology choices
280
- 3. **checkpoint:human-action** (1%) - Truly unavoidable manual steps with no API/CLI
784
+ 1. **checkpoint:human-verify** (90% of checkpoints) - Claude automated everything, human confirms visual/functional correctness
785
+ 2. **checkpoint:decision** (9% of checkpoints) - Human makes architectural/technology choices
786
+ 3. **checkpoint:human-action** (1% of checkpoints) - Truly unavoidable manual steps with no API/CLI
281
787
 
282
788
  **When NOT to use checkpoints:**
283
- - Things Claude can verify programmatically (tests, builds)
284
- - File operations (Claude can read/write)
285
- - Anything with CLI/API available
286
-
789
+ - Things Claude can verify programmatically (tests pass, build succeeds)
790
+ - File operations (Claude can read files to verify)
791
+ - Code correctness (use tests and static analysis)
792
+ - Anything automatable via CLI/API
287
793
  </summary>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "get-shit-done-cc",
3
- "version": "1.4.26",
3
+ "version": "1.4.28",
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"