get-research-done 1.1.0
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/LICENSE +21 -0
- package/README.md +560 -0
- package/agents/grd-architect.md +789 -0
- package/agents/grd-codebase-mapper.md +738 -0
- package/agents/grd-critic.md +1065 -0
- package/agents/grd-debugger.md +1203 -0
- package/agents/grd-evaluator.md +948 -0
- package/agents/grd-executor.md +784 -0
- package/agents/grd-explorer.md +2063 -0
- package/agents/grd-graduator.md +484 -0
- package/agents/grd-integration-checker.md +423 -0
- package/agents/grd-phase-researcher.md +641 -0
- package/agents/grd-plan-checker.md +745 -0
- package/agents/grd-planner.md +1386 -0
- package/agents/grd-project-researcher.md +865 -0
- package/agents/grd-research-synthesizer.md +256 -0
- package/agents/grd-researcher.md +2361 -0
- package/agents/grd-roadmapper.md +605 -0
- package/agents/grd-verifier.md +778 -0
- package/bin/install.js +1294 -0
- package/commands/grd/add-phase.md +207 -0
- package/commands/grd/add-todo.md +193 -0
- package/commands/grd/architect.md +283 -0
- package/commands/grd/audit-milestone.md +277 -0
- package/commands/grd/check-todos.md +228 -0
- package/commands/grd/complete-milestone.md +136 -0
- package/commands/grd/debug.md +169 -0
- package/commands/grd/discuss-phase.md +86 -0
- package/commands/grd/evaluate.md +1095 -0
- package/commands/grd/execute-phase.md +339 -0
- package/commands/grd/explore.md +258 -0
- package/commands/grd/graduate.md +323 -0
- package/commands/grd/help.md +482 -0
- package/commands/grd/insert-phase.md +227 -0
- package/commands/grd/insights.md +231 -0
- package/commands/grd/join-discord.md +18 -0
- package/commands/grd/list-phase-assumptions.md +50 -0
- package/commands/grd/map-codebase.md +71 -0
- package/commands/grd/new-milestone.md +721 -0
- package/commands/grd/new-project.md +1008 -0
- package/commands/grd/pause-work.md +134 -0
- package/commands/grd/plan-milestone-gaps.md +295 -0
- package/commands/grd/plan-phase.md +525 -0
- package/commands/grd/progress.md +364 -0
- package/commands/grd/quick-explore.md +236 -0
- package/commands/grd/quick.md +309 -0
- package/commands/grd/remove-phase.md +349 -0
- package/commands/grd/research-phase.md +200 -0
- package/commands/grd/research.md +681 -0
- package/commands/grd/resume-work.md +40 -0
- package/commands/grd/set-profile.md +106 -0
- package/commands/grd/settings.md +136 -0
- package/commands/grd/update.md +172 -0
- package/commands/grd/verify-work.md +219 -0
- package/get-research-done/config/default.json +15 -0
- package/get-research-done/references/checkpoints.md +1078 -0
- package/get-research-done/references/continuation-format.md +249 -0
- package/get-research-done/references/git-integration.md +254 -0
- package/get-research-done/references/model-profiles.md +73 -0
- package/get-research-done/references/planning-config.md +94 -0
- package/get-research-done/references/questioning.md +141 -0
- package/get-research-done/references/tdd.md +263 -0
- package/get-research-done/references/ui-brand.md +160 -0
- package/get-research-done/references/verification-patterns.md +612 -0
- package/get-research-done/templates/DEBUG.md +159 -0
- package/get-research-done/templates/UAT.md +247 -0
- package/get-research-done/templates/archive-reason.md +195 -0
- package/get-research-done/templates/codebase/architecture.md +255 -0
- package/get-research-done/templates/codebase/concerns.md +310 -0
- package/get-research-done/templates/codebase/conventions.md +307 -0
- package/get-research-done/templates/codebase/integrations.md +280 -0
- package/get-research-done/templates/codebase/stack.md +186 -0
- package/get-research-done/templates/codebase/structure.md +285 -0
- package/get-research-done/templates/codebase/testing.md +480 -0
- package/get-research-done/templates/config.json +35 -0
- package/get-research-done/templates/context.md +283 -0
- package/get-research-done/templates/continue-here.md +78 -0
- package/get-research-done/templates/critic-log.md +288 -0
- package/get-research-done/templates/data-report.md +173 -0
- package/get-research-done/templates/debug-subagent-prompt.md +91 -0
- package/get-research-done/templates/decision-log.md +58 -0
- package/get-research-done/templates/decision.md +138 -0
- package/get-research-done/templates/discovery.md +146 -0
- package/get-research-done/templates/experiment-readme.md +104 -0
- package/get-research-done/templates/graduated-script.md +180 -0
- package/get-research-done/templates/iteration-summary.md +234 -0
- package/get-research-done/templates/milestone-archive.md +123 -0
- package/get-research-done/templates/milestone.md +115 -0
- package/get-research-done/templates/objective.md +271 -0
- package/get-research-done/templates/phase-prompt.md +567 -0
- package/get-research-done/templates/planner-subagent-prompt.md +117 -0
- package/get-research-done/templates/project.md +184 -0
- package/get-research-done/templates/requirements.md +231 -0
- package/get-research-done/templates/research-project/ARCHITECTURE.md +204 -0
- package/get-research-done/templates/research-project/FEATURES.md +147 -0
- package/get-research-done/templates/research-project/PITFALLS.md +200 -0
- package/get-research-done/templates/research-project/STACK.md +120 -0
- package/get-research-done/templates/research-project/SUMMARY.md +170 -0
- package/get-research-done/templates/research.md +529 -0
- package/get-research-done/templates/roadmap.md +202 -0
- package/get-research-done/templates/scorecard.json +113 -0
- package/get-research-done/templates/state.md +287 -0
- package/get-research-done/templates/summary.md +246 -0
- package/get-research-done/templates/user-setup.md +311 -0
- package/get-research-done/templates/verification-report.md +322 -0
- package/get-research-done/workflows/complete-milestone.md +756 -0
- package/get-research-done/workflows/diagnose-issues.md +231 -0
- package/get-research-done/workflows/discovery-phase.md +289 -0
- package/get-research-done/workflows/discuss-phase.md +433 -0
- package/get-research-done/workflows/execute-phase.md +657 -0
- package/get-research-done/workflows/execute-plan.md +1844 -0
- package/get-research-done/workflows/list-phase-assumptions.md +178 -0
- package/get-research-done/workflows/map-codebase.md +322 -0
- package/get-research-done/workflows/resume-project.md +307 -0
- package/get-research-done/workflows/transition.md +556 -0
- package/get-research-done/workflows/verify-phase.md +628 -0
- package/get-research-done/workflows/verify-work.md +596 -0
- package/hooks/dist/grd-check-update.js +61 -0
- package/hooks/dist/grd-statusline.js +84 -0
- package/package.json +47 -0
- package/scripts/audit-help-commands.sh +115 -0
- package/scripts/build-hooks.js +42 -0
- package/scripts/verify-all-commands.sh +246 -0
- package/scripts/verify-architect-warning.sh +35 -0
- package/scripts/verify-insights-mode.sh +40 -0
- package/scripts/verify-quick-mode.sh +20 -0
- package/scripts/verify-revise-data-routing.sh +139 -0
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# Summary Template
|
|
2
|
+
|
|
3
|
+
Template for `.planning/phases/XX-name/{phase}-{plan}-SUMMARY.md` - phase completion documentation.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## File Template
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
---
|
|
11
|
+
phase: XX-name
|
|
12
|
+
plan: YY
|
|
13
|
+
subsystem: [primary category: auth, payments, ui, api, database, infra, testing, etc.]
|
|
14
|
+
tags: [searchable tech: jwt, stripe, react, postgres, prisma]
|
|
15
|
+
|
|
16
|
+
# Dependency graph
|
|
17
|
+
requires:
|
|
18
|
+
- phase: [prior phase this depends on]
|
|
19
|
+
provides: [what that phase built that this uses]
|
|
20
|
+
provides:
|
|
21
|
+
- [bullet list of what this phase built/delivered]
|
|
22
|
+
affects: [list of phase names or keywords that will need this context]
|
|
23
|
+
|
|
24
|
+
# Tech tracking
|
|
25
|
+
tech-stack:
|
|
26
|
+
added: [libraries/tools added in this phase]
|
|
27
|
+
patterns: [architectural/code patterns established]
|
|
28
|
+
|
|
29
|
+
key-files:
|
|
30
|
+
created: [important files created]
|
|
31
|
+
modified: [important files modified]
|
|
32
|
+
|
|
33
|
+
key-decisions:
|
|
34
|
+
- "Decision 1"
|
|
35
|
+
- "Decision 2"
|
|
36
|
+
|
|
37
|
+
patterns-established:
|
|
38
|
+
- "Pattern 1: description"
|
|
39
|
+
- "Pattern 2: description"
|
|
40
|
+
|
|
41
|
+
# Metrics
|
|
42
|
+
duration: Xmin
|
|
43
|
+
completed: YYYY-MM-DD
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
# Phase [X]: [Name] Summary
|
|
47
|
+
|
|
48
|
+
**[Substantive one-liner describing outcome - NOT "phase complete" or "implementation finished"]**
|
|
49
|
+
|
|
50
|
+
## Performance
|
|
51
|
+
|
|
52
|
+
- **Duration:** [time] (e.g., 23 min, 1h 15m)
|
|
53
|
+
- **Started:** [ISO timestamp]
|
|
54
|
+
- **Completed:** [ISO timestamp]
|
|
55
|
+
- **Tasks:** [count completed]
|
|
56
|
+
- **Files modified:** [count]
|
|
57
|
+
|
|
58
|
+
## Accomplishments
|
|
59
|
+
- [Most important outcome]
|
|
60
|
+
- [Second key accomplishment]
|
|
61
|
+
- [Third if applicable]
|
|
62
|
+
|
|
63
|
+
## Task Commits
|
|
64
|
+
|
|
65
|
+
Each task was committed atomically:
|
|
66
|
+
|
|
67
|
+
1. **Task 1: [task name]** - `abc123f` (feat/fix/test/refactor)
|
|
68
|
+
2. **Task 2: [task name]** - `def456g` (feat/fix/test/refactor)
|
|
69
|
+
3. **Task 3: [task name]** - `hij789k` (feat/fix/test/refactor)
|
|
70
|
+
|
|
71
|
+
**Plan metadata:** `lmn012o` (docs: complete plan)
|
|
72
|
+
|
|
73
|
+
_Note: TDD tasks may have multiple commits (test → feat → refactor)_
|
|
74
|
+
|
|
75
|
+
## Files Created/Modified
|
|
76
|
+
- `path/to/file.ts` - What it does
|
|
77
|
+
- `path/to/another.ts` - What it does
|
|
78
|
+
|
|
79
|
+
## Decisions Made
|
|
80
|
+
[Key decisions with brief rationale, or "None - followed plan as specified"]
|
|
81
|
+
|
|
82
|
+
## Deviations from Plan
|
|
83
|
+
|
|
84
|
+
[If no deviations: "None - plan executed exactly as written"]
|
|
85
|
+
|
|
86
|
+
[If deviations occurred:]
|
|
87
|
+
|
|
88
|
+
### Auto-fixed Issues
|
|
89
|
+
|
|
90
|
+
**1. [Rule X - Category] Brief description**
|
|
91
|
+
- **Found during:** Task [N] ([task name])
|
|
92
|
+
- **Issue:** [What was wrong]
|
|
93
|
+
- **Fix:** [What was done]
|
|
94
|
+
- **Files modified:** [file paths]
|
|
95
|
+
- **Verification:** [How it was verified]
|
|
96
|
+
- **Committed in:** [hash] (part of task commit)
|
|
97
|
+
|
|
98
|
+
[... repeat for each auto-fix ...]
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
**Total deviations:** [N] auto-fixed ([breakdown by rule])
|
|
103
|
+
**Impact on plan:** [Brief assessment - e.g., "All auto-fixes necessary for correctness/security. No scope creep."]
|
|
104
|
+
|
|
105
|
+
## Issues Encountered
|
|
106
|
+
[Problems and how they were resolved, or "None"]
|
|
107
|
+
|
|
108
|
+
[Note: "Deviations from Plan" documents unplanned work that was handled automatically via deviation rules. "Issues Encountered" documents problems during planned work that required problem-solving.]
|
|
109
|
+
|
|
110
|
+
## User Setup Required
|
|
111
|
+
|
|
112
|
+
[If USER-SETUP.md was generated:]
|
|
113
|
+
**External services require manual configuration.** See [{phase}-USER-SETUP.md](./{phase}-USER-SETUP.md) for:
|
|
114
|
+
- Environment variables to add
|
|
115
|
+
- Dashboard configuration steps
|
|
116
|
+
- Verification commands
|
|
117
|
+
|
|
118
|
+
[If no USER-SETUP.md:]
|
|
119
|
+
None - no external service configuration required.
|
|
120
|
+
|
|
121
|
+
## Next Phase Readiness
|
|
122
|
+
[What's ready for next phase]
|
|
123
|
+
[Any blockers or concerns]
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
*Phase: XX-name*
|
|
127
|
+
*Completed: [date]*
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
<frontmatter_guidance>
|
|
131
|
+
**Purpose:** Enable automatic context assembly via dependency graph. Frontmatter makes summary metadata machine-readable so plan-phase can scan all summaries quickly and select relevant ones based on dependencies.
|
|
132
|
+
|
|
133
|
+
**Fast scanning:** Frontmatter is first ~25 lines, cheap to scan across all summaries without reading full content.
|
|
134
|
+
|
|
135
|
+
**Dependency graph:** `requires`/`provides`/`affects` create explicit links between phases, enabling transitive closure for context selection.
|
|
136
|
+
|
|
137
|
+
**Subsystem:** Primary categorization (auth, payments, ui, api, database, infra, testing) for detecting related phases.
|
|
138
|
+
|
|
139
|
+
**Tags:** Searchable technical keywords (libraries, frameworks, tools) for tech stack awareness.
|
|
140
|
+
|
|
141
|
+
**Key-files:** Important files for @context references in PLAN.md.
|
|
142
|
+
|
|
143
|
+
**Patterns:** Established conventions future phases should maintain.
|
|
144
|
+
|
|
145
|
+
**Population:** Frontmatter is populated during summary creation in execute-plan.md. See `<step name="create_summary">` for field-by-field guidance.
|
|
146
|
+
</frontmatter_guidance>
|
|
147
|
+
|
|
148
|
+
<one_liner_rules>
|
|
149
|
+
The one-liner MUST be substantive:
|
|
150
|
+
|
|
151
|
+
**Good:**
|
|
152
|
+
- "JWT auth with refresh rotation using jose library"
|
|
153
|
+
- "Prisma schema with User, Session, and Product models"
|
|
154
|
+
- "Dashboard with real-time metrics via Server-Sent Events"
|
|
155
|
+
|
|
156
|
+
**Bad:**
|
|
157
|
+
- "Phase complete"
|
|
158
|
+
- "Authentication implemented"
|
|
159
|
+
- "Foundation finished"
|
|
160
|
+
- "All tasks done"
|
|
161
|
+
|
|
162
|
+
The one-liner should tell someone what actually shipped.
|
|
163
|
+
</one_liner_rules>
|
|
164
|
+
|
|
165
|
+
<example>
|
|
166
|
+
```markdown
|
|
167
|
+
# Phase 1: Foundation Summary
|
|
168
|
+
|
|
169
|
+
**JWT auth with refresh rotation using jose library, Prisma User model, and protected API middleware**
|
|
170
|
+
|
|
171
|
+
## Performance
|
|
172
|
+
|
|
173
|
+
- **Duration:** 28 min
|
|
174
|
+
- **Started:** 2025-01-15T14:22:10Z
|
|
175
|
+
- **Completed:** 2025-01-15T14:50:33Z
|
|
176
|
+
- **Tasks:** 5
|
|
177
|
+
- **Files modified:** 8
|
|
178
|
+
|
|
179
|
+
## Accomplishments
|
|
180
|
+
- User model with email/password auth
|
|
181
|
+
- Login/logout endpoints with httpOnly JWT cookies
|
|
182
|
+
- Protected route middleware checking token validity
|
|
183
|
+
- Refresh token rotation on each request
|
|
184
|
+
|
|
185
|
+
## Files Created/Modified
|
|
186
|
+
- `prisma/schema.prisma` - User and Session models
|
|
187
|
+
- `src/app/api/auth/login/route.ts` - Login endpoint
|
|
188
|
+
- `src/app/api/auth/logout/route.ts` - Logout endpoint
|
|
189
|
+
- `src/middleware.ts` - Protected route checks
|
|
190
|
+
- `src/lib/auth.ts` - JWT helpers using jose
|
|
191
|
+
|
|
192
|
+
## Decisions Made
|
|
193
|
+
- Used jose instead of jsonwebtoken (ESM-native, Edge-compatible)
|
|
194
|
+
- 15-min access tokens with 7-day refresh tokens
|
|
195
|
+
- Storing refresh tokens in database for revocation capability
|
|
196
|
+
|
|
197
|
+
## Deviations from Plan
|
|
198
|
+
|
|
199
|
+
### Auto-fixed Issues
|
|
200
|
+
|
|
201
|
+
**1. [Rule 2 - Missing Critical] Added password hashing with bcrypt**
|
|
202
|
+
- **Found during:** Task 2 (Login endpoint implementation)
|
|
203
|
+
- **Issue:** Plan didn't specify password hashing - storing plaintext would be critical security flaw
|
|
204
|
+
- **Fix:** Added bcrypt hashing on registration, comparison on login with salt rounds 10
|
|
205
|
+
- **Files modified:** src/app/api/auth/login/route.ts, src/lib/auth.ts
|
|
206
|
+
- **Verification:** Password hash test passes, plaintext never stored
|
|
207
|
+
- **Committed in:** abc123f (Task 2 commit)
|
|
208
|
+
|
|
209
|
+
**2. [Rule 3 - Blocking] Installed missing jose dependency**
|
|
210
|
+
- **Found during:** Task 4 (JWT token generation)
|
|
211
|
+
- **Issue:** jose package not in package.json, import failing
|
|
212
|
+
- **Fix:** Ran `npm install jose`
|
|
213
|
+
- **Files modified:** package.json, package-lock.json
|
|
214
|
+
- **Verification:** Import succeeds, build passes
|
|
215
|
+
- **Committed in:** def456g (Task 4 commit)
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
**Total deviations:** 2 auto-fixed (1 missing critical, 1 blocking)
|
|
220
|
+
**Impact on plan:** Both auto-fixes essential for security and functionality. No scope creep.
|
|
221
|
+
|
|
222
|
+
## Issues Encountered
|
|
223
|
+
- jsonwebtoken CommonJS import failed in Edge runtime - switched to jose (planned library change, worked as expected)
|
|
224
|
+
|
|
225
|
+
## Next Phase Readiness
|
|
226
|
+
- Auth foundation complete, ready for feature development
|
|
227
|
+
- User registration endpoint needed before public launch
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
*Phase: 01-foundation*
|
|
231
|
+
*Completed: 2025-01-15*
|
|
232
|
+
```
|
|
233
|
+
</example>
|
|
234
|
+
|
|
235
|
+
<guidelines>
|
|
236
|
+
**Frontmatter:** MANDATORY - complete all fields. Enables automatic context assembly for future planning.
|
|
237
|
+
|
|
238
|
+
**One-liner:** Must be substantive. "JWT auth with refresh rotation using jose library" not "Authentication implemented".
|
|
239
|
+
|
|
240
|
+
**Decisions section:**
|
|
241
|
+
- Key decisions made during execution with rationale
|
|
242
|
+
- Extracted to STATE.md accumulated context
|
|
243
|
+
- Use "None - followed plan as specified" if no deviations
|
|
244
|
+
|
|
245
|
+
**After creation:** STATE.md updated with position, decisions, issues.
|
|
246
|
+
</guidelines>
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
# User Setup Template
|
|
2
|
+
|
|
3
|
+
Template for `.planning/phases/XX-name/{phase}-USER-SETUP.md` - human-required configuration that Claude cannot automate.
|
|
4
|
+
|
|
5
|
+
**Purpose:** Document setup tasks that literally require human action - account creation, dashboard configuration, secret retrieval. Claude automates everything possible; this file captures only what remains.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## File Template
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
# Phase {X}: User Setup Required
|
|
13
|
+
|
|
14
|
+
**Generated:** [YYYY-MM-DD]
|
|
15
|
+
**Phase:** {phase-name}
|
|
16
|
+
**Status:** Incomplete
|
|
17
|
+
|
|
18
|
+
Complete these items for the integration to function. Claude automated everything possible; these items require human access to external dashboards/accounts.
|
|
19
|
+
|
|
20
|
+
## Environment Variables
|
|
21
|
+
|
|
22
|
+
| Status | Variable | Source | Add to |
|
|
23
|
+
|--------|----------|--------|--------|
|
|
24
|
+
| [ ] | `ENV_VAR_NAME` | [Service Dashboard → Path → To → Value] | `.env.local` |
|
|
25
|
+
| [ ] | `ANOTHER_VAR` | [Service Dashboard → Path → To → Value] | `.env.local` |
|
|
26
|
+
|
|
27
|
+
## Account Setup
|
|
28
|
+
|
|
29
|
+
[Only if new account creation is required]
|
|
30
|
+
|
|
31
|
+
- [ ] **Create [Service] account**
|
|
32
|
+
- URL: [signup URL]
|
|
33
|
+
- Skip if: Already have account
|
|
34
|
+
|
|
35
|
+
## Dashboard Configuration
|
|
36
|
+
|
|
37
|
+
[Only if dashboard configuration is required]
|
|
38
|
+
|
|
39
|
+
- [ ] **[Configuration task]**
|
|
40
|
+
- Location: [Service Dashboard → Path → To → Setting]
|
|
41
|
+
- Set to: [Required value or configuration]
|
|
42
|
+
- Notes: [Any important details]
|
|
43
|
+
|
|
44
|
+
## Verification
|
|
45
|
+
|
|
46
|
+
After completing setup, verify with:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# [Verification commands]
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Expected results:
|
|
53
|
+
- [What success looks like]
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
**Once all items complete:** Mark status as "Complete" at top of file.
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## When to Generate
|
|
63
|
+
|
|
64
|
+
Generate `{phase}-USER-SETUP.md` when plan frontmatter contains `user_setup` field.
|
|
65
|
+
|
|
66
|
+
**Trigger:** `user_setup` exists in PLAN.md frontmatter and has items.
|
|
67
|
+
|
|
68
|
+
**Location:** Same directory as PLAN.md and SUMMARY.md.
|
|
69
|
+
|
|
70
|
+
**Timing:** Generated during execute-plan.md after tasks complete, before SUMMARY.md creation.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Frontmatter Schema
|
|
75
|
+
|
|
76
|
+
In PLAN.md, `user_setup` declares human-required configuration:
|
|
77
|
+
|
|
78
|
+
```yaml
|
|
79
|
+
user_setup:
|
|
80
|
+
- service: stripe
|
|
81
|
+
why: "Payment processing requires API keys"
|
|
82
|
+
env_vars:
|
|
83
|
+
- name: STRIPE_SECRET_KEY
|
|
84
|
+
source: "Stripe Dashboard → Developers → API keys → Secret key"
|
|
85
|
+
- name: STRIPE_WEBHOOK_SECRET
|
|
86
|
+
source: "Stripe Dashboard → Developers → Webhooks → Signing secret"
|
|
87
|
+
dashboard_config:
|
|
88
|
+
- task: "Create webhook endpoint"
|
|
89
|
+
location: "Stripe Dashboard → Developers → Webhooks → Add endpoint"
|
|
90
|
+
details: "URL: https://[your-domain]/api/webhooks/stripe, Events: checkout.session.completed, customer.subscription.*"
|
|
91
|
+
local_dev:
|
|
92
|
+
- "Run: stripe listen --forward-to localhost:3000/api/webhooks/stripe"
|
|
93
|
+
- "Use the webhook secret from CLI output for local testing"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## The Automation-First Rule
|
|
99
|
+
|
|
100
|
+
**USER-SETUP.md contains ONLY what Claude literally cannot do.**
|
|
101
|
+
|
|
102
|
+
| Claude CAN Do (not in USER-SETUP) | Claude CANNOT Do (→ USER-SETUP) |
|
|
103
|
+
|-----------------------------------|--------------------------------|
|
|
104
|
+
| `npm install stripe` | Create Stripe account |
|
|
105
|
+
| Write webhook handler code | Get API keys from dashboard |
|
|
106
|
+
| Create `.env.local` file structure | Copy actual secret values |
|
|
107
|
+
| Run `stripe listen` | Authenticate Stripe CLI (browser OAuth) |
|
|
108
|
+
| Configure package.json | Access external service dashboards |
|
|
109
|
+
| Write any code | Retrieve secrets from third-party systems |
|
|
110
|
+
|
|
111
|
+
**The test:** "Does this require a human in a browser, accessing an account Claude doesn't have credentials for?"
|
|
112
|
+
- Yes → USER-SETUP.md
|
|
113
|
+
- No → Claude does it automatically
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Service-Specific Examples
|
|
118
|
+
|
|
119
|
+
<stripe_example>
|
|
120
|
+
```markdown
|
|
121
|
+
# Phase 10: User Setup Required
|
|
122
|
+
|
|
123
|
+
**Generated:** 2025-01-14
|
|
124
|
+
**Phase:** 10-monetization
|
|
125
|
+
**Status:** Incomplete
|
|
126
|
+
|
|
127
|
+
Complete these items for Stripe integration to function.
|
|
128
|
+
|
|
129
|
+
## Environment Variables
|
|
130
|
+
|
|
131
|
+
| Status | Variable | Source | Add to |
|
|
132
|
+
|--------|----------|--------|--------|
|
|
133
|
+
| [ ] | `STRIPE_SECRET_KEY` | Stripe Dashboard → Developers → API keys → Secret key | `.env.local` |
|
|
134
|
+
| [ ] | `NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY` | Stripe Dashboard → Developers → API keys → Publishable key | `.env.local` |
|
|
135
|
+
| [ ] | `STRIPE_WEBHOOK_SECRET` | Stripe Dashboard → Developers → Webhooks → [endpoint] → Signing secret | `.env.local` |
|
|
136
|
+
|
|
137
|
+
## Account Setup
|
|
138
|
+
|
|
139
|
+
- [ ] **Create Stripe account** (if needed)
|
|
140
|
+
- URL: https://dashboard.stripe.com/register
|
|
141
|
+
- Skip if: Already have Stripe account
|
|
142
|
+
|
|
143
|
+
## Dashboard Configuration
|
|
144
|
+
|
|
145
|
+
- [ ] **Create webhook endpoint**
|
|
146
|
+
- Location: Stripe Dashboard → Developers → Webhooks → Add endpoint
|
|
147
|
+
- Endpoint URL: `https://[your-domain]/api/webhooks/stripe`
|
|
148
|
+
- Events to send:
|
|
149
|
+
- `checkout.session.completed`
|
|
150
|
+
- `customer.subscription.created`
|
|
151
|
+
- `customer.subscription.updated`
|
|
152
|
+
- `customer.subscription.deleted`
|
|
153
|
+
|
|
154
|
+
- [ ] **Create products and prices** (if using subscription tiers)
|
|
155
|
+
- Location: Stripe Dashboard → Products → Add product
|
|
156
|
+
- Create each subscription tier
|
|
157
|
+
- Copy Price IDs to:
|
|
158
|
+
- `STRIPE_STARTER_PRICE_ID`
|
|
159
|
+
- `STRIPE_PRO_PRICE_ID`
|
|
160
|
+
|
|
161
|
+
## Local Development
|
|
162
|
+
|
|
163
|
+
For local webhook testing:
|
|
164
|
+
```bash
|
|
165
|
+
stripe listen --forward-to localhost:3000/api/webhooks/stripe
|
|
166
|
+
```
|
|
167
|
+
Use the webhook signing secret from CLI output (starts with `whsec_`).
|
|
168
|
+
|
|
169
|
+
## Verification
|
|
170
|
+
|
|
171
|
+
After completing setup:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# Check env vars are set
|
|
175
|
+
grep STRIPE .env.local
|
|
176
|
+
|
|
177
|
+
# Verify build passes
|
|
178
|
+
npm run build
|
|
179
|
+
|
|
180
|
+
# Test webhook endpoint (should return 400 bad signature, not 500 crash)
|
|
181
|
+
curl -X POST http://localhost:3000/api/webhooks/stripe \
|
|
182
|
+
-H "Content-Type: application/json" \
|
|
183
|
+
-d '{}'
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Expected: Build passes, webhook returns 400 (signature validation working).
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
**Once all items complete:** Mark status as "Complete" at top of file.
|
|
191
|
+
```
|
|
192
|
+
</stripe_example>
|
|
193
|
+
|
|
194
|
+
<supabase_example>
|
|
195
|
+
```markdown
|
|
196
|
+
# Phase 2: User Setup Required
|
|
197
|
+
|
|
198
|
+
**Generated:** 2025-01-14
|
|
199
|
+
**Phase:** 02-authentication
|
|
200
|
+
**Status:** Incomplete
|
|
201
|
+
|
|
202
|
+
Complete these items for Supabase Auth to function.
|
|
203
|
+
|
|
204
|
+
## Environment Variables
|
|
205
|
+
|
|
206
|
+
| Status | Variable | Source | Add to |
|
|
207
|
+
|--------|----------|--------|--------|
|
|
208
|
+
| [ ] | `NEXT_PUBLIC_SUPABASE_URL` | Supabase Dashboard → Settings → API → Project URL | `.env.local` |
|
|
209
|
+
| [ ] | `NEXT_PUBLIC_SUPABASE_ANON_KEY` | Supabase Dashboard → Settings → API → anon public | `.env.local` |
|
|
210
|
+
| [ ] | `SUPABASE_SERVICE_ROLE_KEY` | Supabase Dashboard → Settings → API → service_role | `.env.local` |
|
|
211
|
+
|
|
212
|
+
## Account Setup
|
|
213
|
+
|
|
214
|
+
- [ ] **Create Supabase project**
|
|
215
|
+
- URL: https://supabase.com/dashboard/new
|
|
216
|
+
- Skip if: Already have project for this app
|
|
217
|
+
|
|
218
|
+
## Dashboard Configuration
|
|
219
|
+
|
|
220
|
+
- [ ] **Enable Email Auth**
|
|
221
|
+
- Location: Supabase Dashboard → Authentication → Providers
|
|
222
|
+
- Enable: Email provider
|
|
223
|
+
- Configure: Confirm email (on/off based on preference)
|
|
224
|
+
|
|
225
|
+
- [ ] **Configure OAuth providers** (if using social login)
|
|
226
|
+
- Location: Supabase Dashboard → Authentication → Providers
|
|
227
|
+
- For Google: Add Client ID and Secret from Google Cloud Console
|
|
228
|
+
- For GitHub: Add Client ID and Secret from GitHub OAuth Apps
|
|
229
|
+
|
|
230
|
+
## Verification
|
|
231
|
+
|
|
232
|
+
After completing setup:
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# Check env vars
|
|
236
|
+
grep SUPABASE .env.local
|
|
237
|
+
|
|
238
|
+
# Verify connection (run in project directory)
|
|
239
|
+
npx supabase status
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
**Once all items complete:** Mark status as "Complete" at top of file.
|
|
245
|
+
```
|
|
246
|
+
</supabase_example>
|
|
247
|
+
|
|
248
|
+
<sendgrid_example>
|
|
249
|
+
```markdown
|
|
250
|
+
# Phase 5: User Setup Required
|
|
251
|
+
|
|
252
|
+
**Generated:** 2025-01-14
|
|
253
|
+
**Phase:** 05-notifications
|
|
254
|
+
**Status:** Incomplete
|
|
255
|
+
|
|
256
|
+
Complete these items for SendGrid email to function.
|
|
257
|
+
|
|
258
|
+
## Environment Variables
|
|
259
|
+
|
|
260
|
+
| Status | Variable | Source | Add to |
|
|
261
|
+
|--------|----------|--------|--------|
|
|
262
|
+
| [ ] | `SENDGRID_API_KEY` | SendGrid Dashboard → Settings → API Keys → Create API Key | `.env.local` |
|
|
263
|
+
| [ ] | `SENDGRID_FROM_EMAIL` | Your verified sender email address | `.env.local` |
|
|
264
|
+
|
|
265
|
+
## Account Setup
|
|
266
|
+
|
|
267
|
+
- [ ] **Create SendGrid account**
|
|
268
|
+
- URL: https://signup.sendgrid.com/
|
|
269
|
+
- Skip if: Already have account
|
|
270
|
+
|
|
271
|
+
## Dashboard Configuration
|
|
272
|
+
|
|
273
|
+
- [ ] **Verify sender identity**
|
|
274
|
+
- Location: SendGrid Dashboard → Settings → Sender Authentication
|
|
275
|
+
- Option 1: Single Sender Verification (quick, for dev)
|
|
276
|
+
- Option 2: Domain Authentication (production)
|
|
277
|
+
|
|
278
|
+
- [ ] **Create API Key**
|
|
279
|
+
- Location: SendGrid Dashboard → Settings → API Keys → Create API Key
|
|
280
|
+
- Permission: Restricted Access → Mail Send (Full Access)
|
|
281
|
+
- Copy key immediately (shown only once)
|
|
282
|
+
|
|
283
|
+
## Verification
|
|
284
|
+
|
|
285
|
+
After completing setup:
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
# Check env var
|
|
289
|
+
grep SENDGRID .env.local
|
|
290
|
+
|
|
291
|
+
# Test email sending (replace with your test email)
|
|
292
|
+
curl -X POST http://localhost:3000/api/test-email \
|
|
293
|
+
-H "Content-Type: application/json" \
|
|
294
|
+
-d '{"to": "your@email.com"}'
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
**Once all items complete:** Mark status as "Complete" at top of file.
|
|
300
|
+
```
|
|
301
|
+
</sendgrid_example>
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Guidelines
|
|
306
|
+
|
|
307
|
+
**Never include:** Actual secret values. Steps Claude can automate (package installs, code changes).
|
|
308
|
+
|
|
309
|
+
**Naming:** `{phase}-USER-SETUP.md` matches the phase number pattern.
|
|
310
|
+
**Status tracking:** User marks checkboxes and updates status line when complete.
|
|
311
|
+
**Searchability:** `grep -r "USER-SETUP" .planning/` finds all phases with user requirements.
|