get-shit-done-cc 1.9.3 → 1.9.6
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 +26 -5
- package/agents/gsd-executor.md +15 -0
- package/bin/install.js +467 -107
- package/commands/gsd/new-project.md +15 -11
- package/commands/gsd/plan-phase.md +6 -6
- package/commands/gsd/research-phase.md +4 -4
- package/get-shit-done/references/checkpoints.md +318 -28
- package/get-shit-done/references/verification-patterns.md +17 -0
- package/get-shit-done/templates/context.md +0 -8
- package/get-shit-done/templates/phase-prompt.md +18 -27
- package/get-shit-done/templates/state.md +0 -30
- package/get-shit-done/templates/summary.md +5 -28
- package/get-shit-done/templates/user-setup.md +1 -13
- package/get-shit-done/workflows/complete-milestone.md +1 -6
- package/get-shit-done/workflows/diagnose-issues.md +2 -15
- package/get-shit-done/workflows/execute-phase.md +3 -18
- package/get-shit-done/workflows/execute-plan.md +2 -32
- package/get-shit-done/workflows/list-phase-assumptions.md +2 -2
- package/get-shit-done/workflows/resume-project.md +2 -10
- package/get-shit-done/workflows/transition.md +1 -9
- package/package.json +1 -1
|
@@ -439,7 +439,8 @@ Display spawning indicator:
|
|
|
439
439
|
Spawn 4 parallel gsd-project-researcher agents with rich context:
|
|
440
440
|
|
|
441
441
|
```
|
|
442
|
-
Task(prompt="
|
|
442
|
+
Task(prompt="First, read ~/.claude/agents/gsd-project-researcher.md for your role and instructions.
|
|
443
|
+
|
|
443
444
|
<research_type>
|
|
444
445
|
Project Research — Stack dimension for [domain].
|
|
445
446
|
</research_type>
|
|
@@ -476,9 +477,10 @@ Your STACK.md feeds into roadmap creation. Be prescriptive:
|
|
|
476
477
|
Write to: .planning/research/STACK.md
|
|
477
478
|
Use template: ~/.claude/get-shit-done/templates/research-project/STACK.md
|
|
478
479
|
</output>
|
|
479
|
-
", subagent_type="
|
|
480
|
+
", subagent_type="general-purpose", model="{researcher_model}", description="Stack research")
|
|
481
|
+
|
|
482
|
+
Task(prompt="First, read ~/.claude/agents/gsd-project-researcher.md for your role and instructions.
|
|
480
483
|
|
|
481
|
-
Task(prompt="
|
|
482
484
|
<research_type>
|
|
483
485
|
Project Research — Features dimension for [domain].
|
|
484
486
|
</research_type>
|
|
@@ -515,9 +517,10 @@ Your FEATURES.md feeds into requirements definition. Categorize clearly:
|
|
|
515
517
|
Write to: .planning/research/FEATURES.md
|
|
516
518
|
Use template: ~/.claude/get-shit-done/templates/research-project/FEATURES.md
|
|
517
519
|
</output>
|
|
518
|
-
", subagent_type="
|
|
520
|
+
", subagent_type="general-purpose", model="{researcher_model}", description="Features research")
|
|
521
|
+
|
|
522
|
+
Task(prompt="First, read ~/.claude/agents/gsd-project-researcher.md for your role and instructions.
|
|
519
523
|
|
|
520
|
-
Task(prompt="
|
|
521
524
|
<research_type>
|
|
522
525
|
Project Research — Architecture dimension for [domain].
|
|
523
526
|
</research_type>
|
|
@@ -554,9 +557,10 @@ Your ARCHITECTURE.md informs phase structure in roadmap. Include:
|
|
|
554
557
|
Write to: .planning/research/ARCHITECTURE.md
|
|
555
558
|
Use template: ~/.claude/get-shit-done/templates/research-project/ARCHITECTURE.md
|
|
556
559
|
</output>
|
|
557
|
-
", subagent_type="
|
|
560
|
+
", subagent_type="general-purpose", model="{researcher_model}", description="Architecture research")
|
|
561
|
+
|
|
562
|
+
Task(prompt="First, read ~/.claude/agents/gsd-project-researcher.md for your role and instructions.
|
|
558
563
|
|
|
559
|
-
Task(prompt="
|
|
560
564
|
<research_type>
|
|
561
565
|
Project Research — Pitfalls dimension for [domain].
|
|
562
566
|
</research_type>
|
|
@@ -593,7 +597,7 @@ Your PITFALLS.md prevents mistakes in roadmap/planning. For each pitfall:
|
|
|
593
597
|
Write to: .planning/research/PITFALLS.md
|
|
594
598
|
Use template: ~/.claude/get-shit-done/templates/research-project/PITFALLS.md
|
|
595
599
|
</output>
|
|
596
|
-
", subagent_type="
|
|
600
|
+
", subagent_type="general-purpose", model="{researcher_model}", description="Pitfalls research")
|
|
597
601
|
```
|
|
598
602
|
|
|
599
603
|
After all 4 agents complete, spawn synthesizer to create SUMMARY.md:
|
|
@@ -949,14 +953,14 @@ Present completion with next steps:
|
|
|
949
953
|
|
|
950
954
|
**Phase 1: [Phase Name]** — [Goal from ROADMAP.md]
|
|
951
955
|
|
|
952
|
-
|
|
956
|
+
/gsd:discuss-phase 1 — gather context and clarify approach
|
|
953
957
|
|
|
954
|
-
<sub
|
|
958
|
+
<sub>/clear first → fresh context window</sub>
|
|
955
959
|
|
|
956
960
|
---
|
|
957
961
|
|
|
958
962
|
**Also available:**
|
|
959
|
-
-
|
|
963
|
+
- /gsd:plan-phase 1 — skip discussion, plan directly
|
|
960
964
|
|
|
961
965
|
───────────────────────────────────────────────────────────────
|
|
962
966
|
```
|
|
@@ -206,8 +206,8 @@ Write research findings to: {phase_dir}/{phase}-RESEARCH.md
|
|
|
206
206
|
|
|
207
207
|
```
|
|
208
208
|
Task(
|
|
209
|
-
prompt=research_prompt,
|
|
210
|
-
subagent_type="
|
|
209
|
+
prompt="First, read ~/.claude/agents/gsd-phase-researcher.md for your role and instructions.\n\n" + research_prompt,
|
|
210
|
+
subagent_type="general-purpose",
|
|
211
211
|
model="{researcher_model}",
|
|
212
212
|
description="Research Phase {phase}"
|
|
213
213
|
)
|
|
@@ -315,8 +315,8 @@ Before returning PLANNING COMPLETE:
|
|
|
315
315
|
|
|
316
316
|
```
|
|
317
317
|
Task(
|
|
318
|
-
prompt=filled_prompt,
|
|
319
|
-
subagent_type="
|
|
318
|
+
prompt="First, read ~/.claude/agents/gsd-planner.md for your role and instructions.\n\n" + filled_prompt,
|
|
319
|
+
subagent_type="general-purpose",
|
|
320
320
|
model="{planner_model}",
|
|
321
321
|
description="Plan Phase {phase}"
|
|
322
322
|
)
|
|
@@ -445,8 +445,8 @@ Return what changed.
|
|
|
445
445
|
|
|
446
446
|
```
|
|
447
447
|
Task(
|
|
448
|
-
prompt=revision_prompt,
|
|
449
|
-
subagent_type="
|
|
448
|
+
prompt="First, read ~/.claude/agents/gsd-planner.md for your role and instructions.\n\n" + revision_prompt,
|
|
449
|
+
subagent_type="general-purpose",
|
|
450
450
|
model="{planner_model}",
|
|
451
451
|
description="Revise Phase {phase} plans"
|
|
452
452
|
)
|
|
@@ -148,8 +148,8 @@ Write to: .planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
|
|
|
148
148
|
|
|
149
149
|
```
|
|
150
150
|
Task(
|
|
151
|
-
prompt=filled_prompt,
|
|
152
|
-
subagent_type="
|
|
151
|
+
prompt="First, read ~/.claude/agents/gsd-phase-researcher.md for your role and instructions.\n\n" + filled_prompt,
|
|
152
|
+
subagent_type="general-purpose",
|
|
153
153
|
model="{researcher_model}",
|
|
154
154
|
description="Research Phase {phase}"
|
|
155
155
|
)
|
|
@@ -182,8 +182,8 @@ Research file: @.planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
|
|
|
182
182
|
|
|
183
183
|
```
|
|
184
184
|
Task(
|
|
185
|
-
prompt=continuation_prompt,
|
|
186
|
-
subagent_type="
|
|
185
|
+
prompt="First, read ~/.claude/agents/gsd-phase-researcher.md for your role and instructions.\n\n" + continuation_prompt,
|
|
186
|
+
subagent_type="general-purpose",
|
|
187
187
|
model="{researcher_model}",
|
|
188
188
|
description="Continue research Phase {phase}"
|
|
189
189
|
)
|
|
@@ -2,6 +2,12 @@
|
|
|
2
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
|
+
|
|
6
|
+
**Golden rules:**
|
|
7
|
+
1. **If Claude can run it, Claude runs it** - Never ask user to execute CLI commands, start servers, or run builds
|
|
8
|
+
2. **Claude sets up the verification environment** - Start dev servers, seed databases, configure env vars
|
|
9
|
+
3. **User only does what requires human judgment** - Visual checks, UX evaluation, "does this feel right?"
|
|
10
|
+
4. **Secrets come from user, automation comes from Claude** - Ask for API keys, then Claude uses them via CLI
|
|
5
11
|
</overview>
|
|
6
12
|
|
|
7
13
|
<checkpoint_types>
|
|
@@ -67,20 +73,28 @@ Plans execute autonomously. Checkpoints formalize the interaction points where h
|
|
|
67
73
|
<done>Dashboard component builds without errors</done>
|
|
68
74
|
</task>
|
|
69
75
|
|
|
76
|
+
<task type="auto">
|
|
77
|
+
<name>Start dev server for verification</name>
|
|
78
|
+
<action>Run `npm run dev` in background, wait for "ready" message, capture port</action>
|
|
79
|
+
<verify>curl http://localhost:3000 returns 200</verify>
|
|
80
|
+
<done>Dev server running at http://localhost:3000</done>
|
|
81
|
+
</task>
|
|
82
|
+
|
|
70
83
|
<task type="checkpoint:human-verify" gate="blocking">
|
|
71
|
-
<what-built>Responsive dashboard layout at
|
|
84
|
+
<what-built>Responsive dashboard layout - dev server running at http://localhost:3000</what-built>
|
|
72
85
|
<how-to-verify>
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
6. Check: No layout shift, no horizontal scroll
|
|
86
|
+
Visit http://localhost:3000/dashboard and verify:
|
|
87
|
+
1. Desktop (>1024px): Sidebar left, content right, header top
|
|
88
|
+
2. Tablet (768px): Sidebar collapses to hamburger menu
|
|
89
|
+
3. Mobile (375px): Single column layout, bottom nav appears
|
|
90
|
+
4. No layout shift or horizontal scroll at any size
|
|
79
91
|
</how-to-verify>
|
|
80
92
|
<resume-signal>Type "approved" or describe layout issues</resume-signal>
|
|
81
93
|
</task>
|
|
82
94
|
```
|
|
83
95
|
|
|
96
|
+
**Key pattern:** Claude starts the dev server BEFORE the checkpoint. User only needs to visit the URL.
|
|
97
|
+
|
|
84
98
|
**Example: Xcode Build**
|
|
85
99
|
```xml
|
|
86
100
|
<task type="auto">
|
|
@@ -466,6 +480,8 @@ Task 3 complete. Continuing to task 4...
|
|
|
466
480
|
|
|
467
481
|
**The rule:** If it has CLI/API, Claude does it. Never ask human to perform automatable work.
|
|
468
482
|
|
|
483
|
+
## Service CLI Reference
|
|
484
|
+
|
|
469
485
|
| Service | CLI/API | Key Commands | Auth Gate |
|
|
470
486
|
|---------|---------|--------------|-----------|
|
|
471
487
|
| Vercel | `vercel` | `--yes`, `env add`, `--prod`, `ls` | `vercel login` |
|
|
@@ -476,13 +492,174 @@ Task 3 complete. Continuing to task 4...
|
|
|
476
492
|
| Upstash | `upstash` | `redis create`, `redis get` | `upstash auth login` |
|
|
477
493
|
| PlanetScale | `pscale` | `database create`, `branch create` | `pscale auth login` |
|
|
478
494
|
| GitHub | `gh` | `repo create`, `pr create`, `secret set` | `gh auth login` |
|
|
479
|
-
| Node | `npm`/`pnpm` | `install`, `run build`, `test` | N/A |
|
|
495
|
+
| Node | `npm`/`pnpm` | `install`, `run build`, `test`, `run dev` | N/A |
|
|
480
496
|
| Xcode | `xcodebuild` | `-project`, `-scheme`, `build`, `test` | N/A |
|
|
481
|
-
| Convex | `npx convex` | `dev`, `deploy`, `
|
|
497
|
+
| Convex | `npx convex` | `dev`, `deploy`, `env set`, `env get` | `npx convex login` |
|
|
498
|
+
|
|
499
|
+
## Environment Variable Automation
|
|
482
500
|
|
|
483
501
|
**Env files:** Use Write/Edit tools. Never ask human to create .env manually.
|
|
484
502
|
|
|
485
|
-
**
|
|
503
|
+
**Dashboard env vars via CLI:**
|
|
504
|
+
|
|
505
|
+
| Platform | CLI Command | Example |
|
|
506
|
+
|----------|-------------|---------|
|
|
507
|
+
| Convex | `npx convex env set` | `npx convex env set OPENAI_API_KEY sk-...` |
|
|
508
|
+
| Vercel | `vercel env add` | `vercel env add STRIPE_KEY production` |
|
|
509
|
+
| Railway | `railway variables set` | `railway variables set API_KEY=value` |
|
|
510
|
+
| Fly | `fly secrets set` | `fly secrets set DATABASE_URL=...` |
|
|
511
|
+
| Supabase | `supabase secrets set` | `supabase secrets set MY_SECRET=value` |
|
|
512
|
+
|
|
513
|
+
**Pattern for secret collection:**
|
|
514
|
+
```xml
|
|
515
|
+
<!-- WRONG: Asking user to add env vars in dashboard -->
|
|
516
|
+
<task type="checkpoint:human-action">
|
|
517
|
+
<action>Add OPENAI_API_KEY to Convex dashboard</action>
|
|
518
|
+
<instructions>Go to dashboard.convex.dev → Settings → Environment Variables → Add</instructions>
|
|
519
|
+
</task>
|
|
520
|
+
|
|
521
|
+
<!-- RIGHT: Claude asks for value, then adds via CLI -->
|
|
522
|
+
<task type="checkpoint:human-action">
|
|
523
|
+
<action>Provide your OpenAI API key</action>
|
|
524
|
+
<instructions>
|
|
525
|
+
I need your OpenAI API key to configure the Convex backend.
|
|
526
|
+
Get it from: https://platform.openai.com/api-keys
|
|
527
|
+
Paste the key (starts with sk-)
|
|
528
|
+
</instructions>
|
|
529
|
+
<verification>I'll add it via `npx convex env set` and verify it's configured</verification>
|
|
530
|
+
<resume-signal>Paste your API key</resume-signal>
|
|
531
|
+
</task>
|
|
532
|
+
|
|
533
|
+
<task type="auto">
|
|
534
|
+
<name>Configure OpenAI key in Convex</name>
|
|
535
|
+
<action>Run `npx convex env set OPENAI_API_KEY {user-provided-key}`</action>
|
|
536
|
+
<verify>`npx convex env get OPENAI_API_KEY` returns the key (masked)</verify>
|
|
537
|
+
</task>
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
## Dev Server Automation
|
|
541
|
+
|
|
542
|
+
**Claude starts servers, user visits URLs:**
|
|
543
|
+
|
|
544
|
+
| Framework | Start Command | Ready Signal | Default URL |
|
|
545
|
+
|-----------|---------------|--------------|-------------|
|
|
546
|
+
| Next.js | `npm run dev` | "Ready in" or "started server" | http://localhost:3000 |
|
|
547
|
+
| Vite | `npm run dev` | "ready in" | http://localhost:5173 |
|
|
548
|
+
| Convex | `npx convex dev` | "Convex functions ready" | N/A (backend only) |
|
|
549
|
+
| Express | `npm start` | "listening on port" | http://localhost:3000 |
|
|
550
|
+
| Django | `python manage.py runserver` | "Starting development server" | http://localhost:8000 |
|
|
551
|
+
|
|
552
|
+
### Server Lifecycle Protocol
|
|
553
|
+
|
|
554
|
+
**Starting servers:**
|
|
555
|
+
```bash
|
|
556
|
+
# Run in background, capture PID for cleanup
|
|
557
|
+
npm run dev &
|
|
558
|
+
DEV_SERVER_PID=$!
|
|
559
|
+
|
|
560
|
+
# Wait for ready signal (max 30s)
|
|
561
|
+
timeout 30 bash -c 'until curl -s localhost:3000 > /dev/null 2>&1; do sleep 1; done'
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
**Port conflicts:**
|
|
565
|
+
If default port is in use, check what's running and either:
|
|
566
|
+
1. Kill the existing process if it's stale: `lsof -ti:3000 | xargs kill`
|
|
567
|
+
2. Use alternate port: `npm run dev -- --port 3001`
|
|
568
|
+
|
|
569
|
+
**Server stays running** for the duration of the checkpoint. After user approves, server continues running for subsequent tasks. Only kill explicitly if:
|
|
570
|
+
- Plan is complete and no more verification needed
|
|
571
|
+
- Switching to production deployment
|
|
572
|
+
- Port needed for different service
|
|
573
|
+
|
|
574
|
+
**Pattern:**
|
|
575
|
+
```xml
|
|
576
|
+
<!-- Claude starts server before checkpoint -->
|
|
577
|
+
<task type="auto">
|
|
578
|
+
<name>Start dev server</name>
|
|
579
|
+
<action>Run `npm run dev` in background, wait for ready signal</action>
|
|
580
|
+
<verify>curl http://localhost:3000 returns 200</verify>
|
|
581
|
+
<done>Dev server running</done>
|
|
582
|
+
</task>
|
|
583
|
+
|
|
584
|
+
<!-- User only visits URL -->
|
|
585
|
+
<task type="checkpoint:human-verify">
|
|
586
|
+
<what-built>Feature X - dev server running at http://localhost:3000</what-built>
|
|
587
|
+
<how-to-verify>
|
|
588
|
+
Visit http://localhost:3000/feature and verify:
|
|
589
|
+
1. [Visual check 1]
|
|
590
|
+
2. [Visual check 2]
|
|
591
|
+
</how-to-verify>
|
|
592
|
+
</task>
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
## CLI Installation Handling
|
|
596
|
+
|
|
597
|
+
**When a required CLI is not installed:**
|
|
598
|
+
|
|
599
|
+
| CLI | Auto-install? | Command |
|
|
600
|
+
|-----|---------------|---------|
|
|
601
|
+
| npm/pnpm/yarn | No - ask user | User chooses package manager |
|
|
602
|
+
| vercel | Yes | `npm i -g vercel` |
|
|
603
|
+
| gh (GitHub) | Yes | `brew install gh` (macOS) or `apt install gh` (Linux) |
|
|
604
|
+
| stripe | Yes | `npm i -g stripe` |
|
|
605
|
+
| supabase | Yes | `npm i -g supabase` |
|
|
606
|
+
| convex | No - use npx | `npx convex` (no install needed) |
|
|
607
|
+
| fly | Yes | `brew install flyctl` or curl installer |
|
|
608
|
+
| railway | Yes | `npm i -g @railway/cli` |
|
|
609
|
+
|
|
610
|
+
**Protocol:**
|
|
611
|
+
1. Try the command
|
|
612
|
+
2. If "command not found", check if auto-installable
|
|
613
|
+
3. If yes: install silently, retry command
|
|
614
|
+
4. If no: create checkpoint asking user to install
|
|
615
|
+
|
|
616
|
+
```xml
|
|
617
|
+
<!-- Example: vercel not found -->
|
|
618
|
+
<task type="auto">
|
|
619
|
+
<name>Install Vercel CLI</name>
|
|
620
|
+
<action>Run `npm i -g vercel`</action>
|
|
621
|
+
<verify>`vercel --version` succeeds</verify>
|
|
622
|
+
<done>Vercel CLI installed</done>
|
|
623
|
+
</task>
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
## Pre-Checkpoint Automation Failures
|
|
627
|
+
|
|
628
|
+
**When setup fails before checkpoint:**
|
|
629
|
+
|
|
630
|
+
| Failure | Response |
|
|
631
|
+
|---------|----------|
|
|
632
|
+
| Server won't start | Check error output, fix issue, retry (don't proceed to checkpoint) |
|
|
633
|
+
| Port in use | Kill stale process or use alternate port |
|
|
634
|
+
| Missing dependency | Run `npm install`, retry |
|
|
635
|
+
| Build error | Fix the error first (this is a bug, not a checkpoint issue) |
|
|
636
|
+
| Auth error | Create auth gate checkpoint |
|
|
637
|
+
| Network timeout | Retry with backoff, then checkpoint if persistent |
|
|
638
|
+
|
|
639
|
+
**Key principle:** Never present a checkpoint with broken verification environment. If `curl localhost:3000` fails, don't ask user to "visit localhost:3000".
|
|
640
|
+
|
|
641
|
+
```xml
|
|
642
|
+
<!-- WRONG: Checkpoint with broken environment -->
|
|
643
|
+
<task type="checkpoint:human-verify">
|
|
644
|
+
<what-built>Dashboard (server failed to start)</what-built>
|
|
645
|
+
<how-to-verify>Visit http://localhost:3000...</how-to-verify>
|
|
646
|
+
</task>
|
|
647
|
+
|
|
648
|
+
<!-- RIGHT: Fix first, then checkpoint -->
|
|
649
|
+
<task type="auto">
|
|
650
|
+
<name>Fix server startup issue</name>
|
|
651
|
+
<action>Investigate error, fix root cause, restart server</action>
|
|
652
|
+
<verify>curl http://localhost:3000 returns 200</verify>
|
|
653
|
+
<done>Server running correctly</done>
|
|
654
|
+
</task>
|
|
655
|
+
|
|
656
|
+
<task type="checkpoint:human-verify">
|
|
657
|
+
<what-built>Dashboard - server running at http://localhost:3000</what-built>
|
|
658
|
+
<how-to-verify>Visit http://localhost:3000/dashboard...</how-to-verify>
|
|
659
|
+
</task>
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
## Quick Reference
|
|
486
663
|
|
|
487
664
|
| Action | Automatable? | Claude does it? |
|
|
488
665
|
|--------|--------------|-----------------|
|
|
@@ -491,9 +668,15 @@ Task 3 complete. Continuing to task 4...
|
|
|
491
668
|
| Write .env file | Yes (Write tool) | YES |
|
|
492
669
|
| Create Upstash DB | Yes (`upstash`) | YES |
|
|
493
670
|
| Run tests | Yes (`npm test`) | YES |
|
|
671
|
+
| Start dev server | Yes (`npm run dev`) | YES |
|
|
672
|
+
| Add env vars to Convex | Yes (`npx convex env set`) | YES |
|
|
673
|
+
| Add env vars to Vercel | Yes (`vercel env add`) | YES |
|
|
674
|
+
| Seed database | Yes (CLI/API) | YES |
|
|
494
675
|
| Click email verification link | No | NO |
|
|
495
676
|
| Enter credit card with 3DS | No | NO |
|
|
496
677
|
| Complete OAuth in browser | No | NO |
|
|
678
|
+
| Visually verify UI looks correct | No | NO |
|
|
679
|
+
| Test interactive user flows | No | NO |
|
|
497
680
|
|
|
498
681
|
</automation_reference>
|
|
499
682
|
|
|
@@ -643,17 +826,23 @@ Task 3 complete. Continuing to task 4...
|
|
|
643
826
|
<verify>npm run build succeeds</verify>
|
|
644
827
|
</task>
|
|
645
828
|
|
|
646
|
-
|
|
829
|
+
<task type="auto">
|
|
830
|
+
<name>Start dev server for auth testing</name>
|
|
831
|
+
<action>Run `npm run dev` in background, wait for ready signal</action>
|
|
832
|
+
<verify>curl http://localhost:3000 returns 200</verify>
|
|
833
|
+
<done>Dev server running at http://localhost:3000</done>
|
|
834
|
+
</task>
|
|
835
|
+
|
|
836
|
+
<!-- ONE checkpoint at end verifies the complete flow - Claude already started server -->
|
|
647
837
|
<task type="checkpoint:human-verify" gate="blocking">
|
|
648
|
-
<what-built>Complete authentication flow
|
|
838
|
+
<what-built>Complete authentication flow - dev server running at http://localhost:3000</what-built>
|
|
649
839
|
<how-to-verify>
|
|
650
|
-
1.
|
|
651
|
-
2.
|
|
652
|
-
3.
|
|
653
|
-
4.
|
|
654
|
-
5.
|
|
655
|
-
6.
|
|
656
|
-
7. Click logout: Session cleared
|
|
840
|
+
1. Visit: http://localhost:3000/login
|
|
841
|
+
2. Click "Sign in with GitHub"
|
|
842
|
+
3. Complete GitHub OAuth flow
|
|
843
|
+
4. Verify: Redirected to /dashboard, user name displayed
|
|
844
|
+
5. Refresh page: Session persists
|
|
845
|
+
6. Click logout: Session cleared
|
|
657
846
|
</how-to-verify>
|
|
658
847
|
<resume-signal>Type "approved" or describe issues</resume-signal>
|
|
659
848
|
</task>
|
|
@@ -662,7 +851,77 @@ Task 3 complete. Continuing to task 4...
|
|
|
662
851
|
|
|
663
852
|
<anti_patterns>
|
|
664
853
|
|
|
665
|
-
### ❌ BAD: Asking
|
|
854
|
+
### ❌ BAD: Asking user to start dev server
|
|
855
|
+
|
|
856
|
+
```xml
|
|
857
|
+
<task type="checkpoint:human-verify" gate="blocking">
|
|
858
|
+
<what-built>Dashboard component</what-built>
|
|
859
|
+
<how-to-verify>
|
|
860
|
+
1. Run: npm run dev
|
|
861
|
+
2. Visit: http://localhost:3000/dashboard
|
|
862
|
+
3. Check layout is correct
|
|
863
|
+
</how-to-verify>
|
|
864
|
+
</task>
|
|
865
|
+
```
|
|
866
|
+
|
|
867
|
+
**Why bad:** Claude can run `npm run dev`. User should only visit URLs, not execute commands.
|
|
868
|
+
|
|
869
|
+
### ✅ GOOD: Claude starts server, user visits
|
|
870
|
+
|
|
871
|
+
```xml
|
|
872
|
+
<task type="auto">
|
|
873
|
+
<name>Start dev server</name>
|
|
874
|
+
<action>Run `npm run dev` in background</action>
|
|
875
|
+
<verify>curl localhost:3000 returns 200</verify>
|
|
876
|
+
</task>
|
|
877
|
+
|
|
878
|
+
<task type="checkpoint:human-verify" gate="blocking">
|
|
879
|
+
<what-built>Dashboard at http://localhost:3000/dashboard (server running)</what-built>
|
|
880
|
+
<how-to-verify>
|
|
881
|
+
Visit http://localhost:3000/dashboard and verify:
|
|
882
|
+
1. Layout matches design
|
|
883
|
+
2. No console errors
|
|
884
|
+
</how-to-verify>
|
|
885
|
+
</task>
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
### ❌ BAD: Asking user to add env vars in dashboard
|
|
889
|
+
|
|
890
|
+
```xml
|
|
891
|
+
<task type="checkpoint:human-action" gate="blocking">
|
|
892
|
+
<action>Add environment variables to Convex</action>
|
|
893
|
+
<instructions>
|
|
894
|
+
1. Go to dashboard.convex.dev
|
|
895
|
+
2. Select your project
|
|
896
|
+
3. Navigate to Settings → Environment Variables
|
|
897
|
+
4. Add OPENAI_API_KEY with your key
|
|
898
|
+
</instructions>
|
|
899
|
+
</task>
|
|
900
|
+
```
|
|
901
|
+
|
|
902
|
+
**Why bad:** Convex has `npx convex env set`. Claude should ask for the key value, then run the CLI command.
|
|
903
|
+
|
|
904
|
+
### ✅ GOOD: Claude collects secret, adds via CLI
|
|
905
|
+
|
|
906
|
+
```xml
|
|
907
|
+
<task type="checkpoint:human-action" gate="blocking">
|
|
908
|
+
<action>Provide your OpenAI API key</action>
|
|
909
|
+
<instructions>
|
|
910
|
+
I need your OpenAI API key. Get it from: https://platform.openai.com/api-keys
|
|
911
|
+
Paste the key below (starts with sk-)
|
|
912
|
+
</instructions>
|
|
913
|
+
<verification>I'll configure it via CLI</verification>
|
|
914
|
+
<resume-signal>Paste your key</resume-signal>
|
|
915
|
+
</task>
|
|
916
|
+
|
|
917
|
+
<task type="auto">
|
|
918
|
+
<name>Add OpenAI key to Convex</name>
|
|
919
|
+
<action>Run `npx convex env set OPENAI_API_KEY {key}`</action>
|
|
920
|
+
<verify>`npx convex env get` shows OPENAI_API_KEY configured</verify>
|
|
921
|
+
</task>
|
|
922
|
+
```
|
|
923
|
+
|
|
924
|
+
### ❌ BAD: Asking human to deploy
|
|
666
925
|
|
|
667
926
|
```xml
|
|
668
927
|
<task type="checkpoint:human-action" gate="blocking">
|
|
@@ -750,23 +1009,54 @@ Task 3 complete. Continuing to task 4...
|
|
|
750
1009
|
|
|
751
1010
|
**Why bad:** No specifics. User doesn't know what to test or what "works" means.
|
|
752
1011
|
|
|
753
|
-
### ✅ GOOD: Specific verification steps
|
|
1012
|
+
### ✅ GOOD: Specific verification steps (server already running)
|
|
754
1013
|
|
|
755
1014
|
```xml
|
|
756
1015
|
<task type="checkpoint:human-verify">
|
|
757
|
-
<what-built>Responsive dashboard at
|
|
1016
|
+
<what-built>Responsive dashboard - server running at http://localhost:3000</what-built>
|
|
758
1017
|
<how-to-verify>
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
6. Check: No horizontal scroll at any size
|
|
1018
|
+
Visit http://localhost:3000/dashboard and verify:
|
|
1019
|
+
1. Desktop (>1024px): Sidebar visible, content area fills remaining space
|
|
1020
|
+
2. Tablet (768px): Sidebar collapses to icons
|
|
1021
|
+
3. Mobile (375px): Sidebar hidden, hamburger menu in header
|
|
1022
|
+
4. No horizontal scroll at any size
|
|
765
1023
|
</how-to-verify>
|
|
766
1024
|
<resume-signal>Type "approved" or describe layout issues</resume-signal>
|
|
767
1025
|
</task>
|
|
768
1026
|
```
|
|
769
1027
|
|
|
1028
|
+
### ❌ BAD: Asking user to run any CLI command
|
|
1029
|
+
|
|
1030
|
+
```xml
|
|
1031
|
+
<task type="checkpoint:human-action">
|
|
1032
|
+
<action>Run database migrations</action>
|
|
1033
|
+
<instructions>
|
|
1034
|
+
1. Run: npx prisma migrate deploy
|
|
1035
|
+
2. Run: npx prisma db seed
|
|
1036
|
+
3. Verify tables exist
|
|
1037
|
+
</instructions>
|
|
1038
|
+
</task>
|
|
1039
|
+
```
|
|
1040
|
+
|
|
1041
|
+
**Why bad:** Claude can run these commands. User should never execute CLI commands.
|
|
1042
|
+
|
|
1043
|
+
### ❌ BAD: Asking user to copy values between services
|
|
1044
|
+
|
|
1045
|
+
```xml
|
|
1046
|
+
<task type="checkpoint:human-action">
|
|
1047
|
+
<action>Configure webhook URL in Stripe</action>
|
|
1048
|
+
<instructions>
|
|
1049
|
+
1. Copy the deployment URL from terminal
|
|
1050
|
+
2. Go to Stripe Dashboard → Webhooks
|
|
1051
|
+
3. Add endpoint with URL + /api/webhooks
|
|
1052
|
+
4. Copy webhook signing secret
|
|
1053
|
+
5. Add to .env file
|
|
1054
|
+
</instructions>
|
|
1055
|
+
</task>
|
|
1056
|
+
```
|
|
1057
|
+
|
|
1058
|
+
**Why bad:** Stripe has an API. Claude should create the webhook via API and write to .env directly.
|
|
1059
|
+
|
|
770
1060
|
</anti_patterns>
|
|
771
1061
|
|
|
772
1062
|
<summary>
|
|
@@ -593,3 +593,20 @@ Some things can't be verified programmatically. Flag these for human testing:
|
|
|
593
593
|
```
|
|
594
594
|
|
|
595
595
|
</human_verification_triggers>
|
|
596
|
+
|
|
597
|
+
<checkpoint_automation_reference>
|
|
598
|
+
|
|
599
|
+
## Pre-Checkpoint Automation
|
|
600
|
+
|
|
601
|
+
For automation-first checkpoint patterns, server lifecycle management, CLI installation handling, and error recovery protocols, see:
|
|
602
|
+
|
|
603
|
+
**@~/.claude/get-shit-done/references/checkpoints.md** → `<automation_reference>` section
|
|
604
|
+
|
|
605
|
+
Key principles:
|
|
606
|
+
- Claude sets up verification environment BEFORE presenting checkpoints
|
|
607
|
+
- Users never run CLI commands (visit URLs only)
|
|
608
|
+
- Server lifecycle: start before checkpoint, handle port conflicts, keep running for duration
|
|
609
|
+
- CLI installation: auto-install where safe, checkpoint for user choice otherwise
|
|
610
|
+
- Error handling: fix broken environment before checkpoint, never present checkpoint with failed setup
|
|
611
|
+
|
|
612
|
+
</checkpoint_automation_reference>
|
|
@@ -275,14 +275,6 @@ The output should answer: "What does the researcher need to investigate? What ch
|
|
|
275
275
|
- "Fast and responsive"
|
|
276
276
|
- "Easy to use"
|
|
277
277
|
|
|
278
|
-
**Sections explained:**
|
|
279
|
-
|
|
280
|
-
- **Domain** — The scope anchor. Copied/derived from ROADMAP.md. Fixed boundary.
|
|
281
|
-
- **Decisions** — Organized by areas discussed (NOT predefined categories). Section headers come from the actual discussion — "Layout style", "Flag design", "Grouping criteria", etc.
|
|
282
|
-
- **Claude's Discretion** — Explicit acknowledgment of what Claude can decide during implementation.
|
|
283
|
-
- **Specifics** — Product references, examples, "like X but..." statements.
|
|
284
|
-
- **Deferred** — Ideas captured but explicitly out of scope. Prevents scope creep while preserving good ideas.
|
|
285
|
-
|
|
286
278
|
**After creation:**
|
|
287
279
|
- File lives in phase directory: `.planning/phases/XX-name/{phase}-CONTEXT.md`
|
|
288
280
|
- `gsd-phase-researcher` uses decisions to focus investigation
|
|
@@ -75,33 +75,23 @@ Output: [What artifacts will be created]
|
|
|
75
75
|
<done>[Acceptance criteria]</done>
|
|
76
76
|
</task>
|
|
77
77
|
|
|
78
|
+
<!-- For checkpoint task examples and patterns, see @~/.claude/get-shit-done/references/checkpoints.md -->
|
|
79
|
+
<!-- Key rule: Claude starts dev server BEFORE human-verify checkpoints. User only visits URLs. -->
|
|
80
|
+
|
|
78
81
|
<task type="checkpoint:decision" gate="blocking">
|
|
79
82
|
<decision>[What needs deciding]</decision>
|
|
80
83
|
<context>[Why this decision matters]</context>
|
|
81
84
|
<options>
|
|
82
|
-
<option id="option-a">
|
|
83
|
-
|
|
84
|
-
<pros>[Benefits and advantages]</pros>
|
|
85
|
-
<cons>[Tradeoffs and limitations]</cons>
|
|
86
|
-
</option>
|
|
87
|
-
<option id="option-b">
|
|
88
|
-
<name>[Option name]</name>
|
|
89
|
-
<pros>[Benefits and advantages]</pros>
|
|
90
|
-
<cons>[Tradeoffs and limitations]</cons>
|
|
91
|
-
</option>
|
|
85
|
+
<option id="option-a"><name>[Name]</name><pros>[Benefits]</pros><cons>[Tradeoffs]</cons></option>
|
|
86
|
+
<option id="option-b"><name>[Name]</name><pros>[Benefits]</pros><cons>[Tradeoffs]</cons></option>
|
|
92
87
|
</options>
|
|
93
|
-
<resume-signal>
|
|
88
|
+
<resume-signal>Select: option-a or option-b</resume-signal>
|
|
94
89
|
</task>
|
|
95
90
|
|
|
96
91
|
<task type="checkpoint:human-verify" gate="blocking">
|
|
97
|
-
<what-built>[What Claude
|
|
98
|
-
<how-to-verify>
|
|
99
|
-
|
|
100
|
-
2. Visit: [URL to check]
|
|
101
|
-
3. Test: [Specific interactions]
|
|
102
|
-
4. Confirm: [Expected behaviors]
|
|
103
|
-
</how-to-verify>
|
|
104
|
-
<resume-signal>Type "approved" to continue, or describe issues to fix</resume-signal>
|
|
92
|
+
<what-built>[What Claude built] - server running at [URL]</what-built>
|
|
93
|
+
<how-to-verify>Visit [URL] and verify: [visual checks only, NO CLI commands]</how-to-verify>
|
|
94
|
+
<resume-signal>Type "approved" or describe issues</resume-signal>
|
|
105
95
|
</task>
|
|
106
96
|
|
|
107
97
|
</tasks>
|
|
@@ -403,15 +393,16 @@ Output: Working dashboard component.
|
|
|
403
393
|
<done>Dashboard renders without errors</done>
|
|
404
394
|
</task>
|
|
405
395
|
|
|
396
|
+
<!-- Checkpoint pattern: Claude starts server, user visits URL. See checkpoints.md for full patterns. -->
|
|
397
|
+
<task type="auto">
|
|
398
|
+
<name>Start dev server</name>
|
|
399
|
+
<action>Run `npm run dev` in background, wait for ready</action>
|
|
400
|
+
<verify>curl localhost:3000 returns 200</verify>
|
|
401
|
+
</task>
|
|
402
|
+
|
|
406
403
|
<task type="checkpoint:human-verify" gate="blocking">
|
|
407
|
-
<what-built>
|
|
408
|
-
<how-to-verify>
|
|
409
|
-
1. Run: npm run dev
|
|
410
|
-
2. Visit: http://localhost:3000/dashboard
|
|
411
|
-
3. Desktop: Verify two-column grid
|
|
412
|
-
4. Mobile: Verify stacked layout
|
|
413
|
-
5. Check: No layout shift, no scroll issues
|
|
414
|
-
</how-to-verify>
|
|
404
|
+
<what-built>Dashboard - server at http://localhost:3000</what-built>
|
|
405
|
+
<how-to-verify>Visit localhost:3000/dashboard. Check: desktop grid, mobile stack, no scroll issues.</how-to-verify>
|
|
415
406
|
<resume-signal>Type "approved" or describe issues</resume-signal>
|
|
416
407
|
</task>
|
|
417
408
|
</tasks>
|