@hustle-together/api-dev-tools 3.10.1 → 3.12.1

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.
Files changed (178) hide show
  1. package/.claude/agents/code-reviewer.md +170 -0
  2. package/.claude/agents/docs-generator.md +80 -0
  3. package/.claude/agents/implementation-reviewer.md +119 -0
  4. package/.claude/agents/parallel-researcher.md +52 -0
  5. package/.claude/agents/research-validator.md +116 -0
  6. package/.claude/agents/schema-generator.md +70 -0
  7. package/.claude/agents/test-writer.md +104 -0
  8. package/.claude/api-dev-state.json +331 -0
  9. package/.claude/commands/README.md +196 -0
  10. package/.claude/commands/add-command.md +212 -0
  11. package/.claude/commands/api-create.md +510 -0
  12. package/.claude/commands/api-env.md +51 -0
  13. package/.claude/commands/api-interview.md +344 -0
  14. package/.claude/commands/api-research.md +357 -0
  15. package/.claude/commands/api-status.md +279 -0
  16. package/.claude/commands/api-verify.md +232 -0
  17. package/.claude/commands/beepboop.md +96 -0
  18. package/.claude/commands/busycommit.md +111 -0
  19. package/.claude/commands/commit.md +82 -0
  20. package/.claude/commands/cycle.md +137 -0
  21. package/.claude/commands/gap.md +85 -0
  22. package/.claude/commands/green.md +137 -0
  23. package/.claude/commands/issue.md +187 -0
  24. package/.claude/commands/ntfy-setup.md +91 -0
  25. package/.claude/commands/ntfy-test.md +74 -0
  26. package/.claude/commands/plan.md +167 -0
  27. package/.claude/commands/pr.md +121 -0
  28. package/.claude/commands/publish.md +40 -0
  29. package/.claude/commands/red.md +137 -0
  30. package/.claude/commands/refactor.md +137 -0
  31. package/.claude/commands/spike.md +137 -0
  32. package/.claude/commands/summarize.md +93 -0
  33. package/.claude/commands/tdd.md +139 -0
  34. package/.claude/commands/worktree-add.md +307 -0
  35. package/.claude/commands/worktree-cleanup.md +275 -0
  36. package/.claude/hooks/api-workflow-check.py +227 -0
  37. package/.claude/hooks/enforce-deep-research.py +185 -0
  38. package/.claude/hooks/enforce-disambiguation.py +155 -0
  39. package/.claude/hooks/enforce-documentation.py +192 -0
  40. package/.claude/hooks/enforce-environment.py +253 -0
  41. package/.claude/hooks/enforce-external-research.py +328 -0
  42. package/.claude/hooks/enforce-interview.py +421 -0
  43. package/.claude/hooks/enforce-refactor.py +189 -0
  44. package/.claude/hooks/enforce-research.py +159 -0
  45. package/.claude/hooks/enforce-schema.py +186 -0
  46. package/.claude/hooks/enforce-scope.py +160 -0
  47. package/.claude/hooks/enforce-tdd-red.py +250 -0
  48. package/.claude/hooks/enforce-verify.py +186 -0
  49. package/.claude/hooks/periodic-reground.py +154 -0
  50. package/.claude/hooks/session-startup.py +151 -0
  51. package/.claude/hooks/track-tool-use.py +626 -0
  52. package/.claude/hooks/verify-after-green.py +282 -0
  53. package/.claude/hooks/verify-implementation.py +225 -0
  54. package/.claude/research/index.json +6 -0
  55. package/.claude/settings.json +144 -0
  56. package/.claude/settings.local.json +12 -0
  57. package/.claude-plugin/marketplace.json +103 -0
  58. package/.skills/README.md +293 -0
  59. package/.skills/_shared/convert-commands.py +192 -0
  60. package/.skills/_shared/hooks/api-workflow-check.py +227 -0
  61. package/.skills/_shared/hooks/enforce-deep-research.py +185 -0
  62. package/.skills/_shared/hooks/enforce-disambiguation.py +155 -0
  63. package/.skills/_shared/hooks/enforce-documentation.py +192 -0
  64. package/.skills/_shared/hooks/enforce-environment.py +253 -0
  65. package/.skills/_shared/hooks/enforce-external-research.py +328 -0
  66. package/.skills/_shared/hooks/enforce-interview.py +421 -0
  67. package/.skills/_shared/hooks/enforce-refactor.py +189 -0
  68. package/.skills/_shared/hooks/enforce-research.py +159 -0
  69. package/.skills/_shared/hooks/enforce-schema.py +186 -0
  70. package/.skills/_shared/hooks/enforce-scope.py +160 -0
  71. package/.skills/_shared/hooks/enforce-tdd-red.py +250 -0
  72. package/.skills/_shared/hooks/enforce-verify.py +186 -0
  73. package/.skills/_shared/hooks/periodic-reground.py +154 -0
  74. package/.skills/_shared/hooks/session-startup.py +151 -0
  75. package/.skills/_shared/hooks/track-tool-use.py +626 -0
  76. package/.skills/_shared/hooks/verify-after-green.py +282 -0
  77. package/.skills/_shared/hooks/verify-implementation.py +225 -0
  78. package/.skills/_shared/install.sh +114 -0
  79. package/.skills/_shared/settings.json +93 -0
  80. package/.skills/add-command/SKILL.md +227 -0
  81. package/.skills/api-create/SKILL.md +623 -0
  82. package/.skills/api-env/SKILL.md +64 -0
  83. package/.skills/api-interview/SKILL.md +357 -0
  84. package/.skills/api-research/SKILL.md +370 -0
  85. package/.skills/api-status/SKILL.md +292 -0
  86. package/.skills/api-verify/SKILL.md +245 -0
  87. package/.skills/beepboop/SKILL.md +111 -0
  88. package/.skills/busycommit/SKILL.md +126 -0
  89. package/.skills/commit/SKILL.md +97 -0
  90. package/.skills/cycle/SKILL.md +152 -0
  91. package/.skills/gap/SKILL.md +100 -0
  92. package/.skills/green/SKILL.md +152 -0
  93. package/.skills/issue/SKILL.md +202 -0
  94. package/.skills/plan/SKILL.md +182 -0
  95. package/.skills/pr/SKILL.md +136 -0
  96. package/.skills/publish/SKILL.md +160 -0
  97. package/.skills/red/SKILL.md +152 -0
  98. package/.skills/refactor/SKILL.md +152 -0
  99. package/.skills/spike/SKILL.md +152 -0
  100. package/.skills/summarize/SKILL.md +108 -0
  101. package/.skills/tdd/SKILL.md +154 -0
  102. package/.skills/update-todos/SKILL.md +250 -0
  103. package/.skills/worktree-add/SKILL.md +322 -0
  104. package/.skills/worktree-cleanup/SKILL.md +290 -0
  105. package/CHANGELOG.md +115 -0
  106. package/README.md +161 -7101
  107. package/bin/cli.js +448 -805
  108. package/commands/README.md +66 -31
  109. package/commands/add-command.md +8 -5
  110. package/commands/beepboop.md +4 -5
  111. package/commands/busycommit.md +2 -3
  112. package/commands/commit.md +2 -3
  113. package/commands/cycle.md +2 -7
  114. package/commands/gap.md +2 -3
  115. package/commands/green.md +2 -7
  116. package/commands/hustle-api-continue.md +8 -5
  117. package/commands/hustle-api-create.md +70 -29
  118. package/commands/hustle-api-env.md +1 -0
  119. package/commands/hustle-api-interview.md +32 -19
  120. package/commands/hustle-api-research.md +47 -21
  121. package/commands/hustle-api-sessions.md +8 -7
  122. package/commands/hustle-api-status.md +21 -1
  123. package/commands/hustle-api-verify.md +14 -13
  124. package/commands/hustle-combine.md +488 -241
  125. package/commands/hustle-ui-create-page.md +113 -50
  126. package/commands/hustle-ui-create.md +179 -26
  127. package/commands/issue.md +3 -8
  128. package/commands/plan.md +2 -3
  129. package/commands/pr.md +2 -3
  130. package/commands/red.md +2 -7
  131. package/commands/refactor.md +2 -7
  132. package/commands/spike.md +2 -7
  133. package/commands/summarize.md +2 -3
  134. package/commands/tdd.md +2 -7
  135. package/commands/worktree-add.md +208 -216
  136. package/commands/worktree-cleanup.md +172 -178
  137. package/hooks/api-workflow-check.py +5 -3
  138. package/hooks/enforce-component-type-confirm.py +97 -0
  139. package/hooks/lib/__init__.py +1 -0
  140. package/hooks/lib/greptile.py +355 -0
  141. package/hooks/lib/ntfy.py +209 -0
  142. package/hooks/notify-input-needed.py +73 -0
  143. package/hooks/notify-phase-complete.py +90 -0
  144. package/hooks/run-code-review.py +246 -0
  145. package/hooks/track-token-usage.py +121 -0
  146. package/package.json +33 -12
  147. package/scripts/collect-test-results.ts +102 -77
  148. package/scripts/extract-parameters.ts +112 -70
  149. package/scripts/generate-test-manifest.ts +118 -77
  150. package/templates/.env.example +57 -0
  151. package/templates/BRAND_GUIDE.md +92 -52
  152. package/templates/CLAUDE-SECTION.md +40 -37
  153. package/templates/SPEC.json +186 -38
  154. package/templates/api-dev-state.json +33 -4
  155. package/templates/api-showcase/_components/APICard.tsx +22 -18
  156. package/templates/api-showcase/_components/APIModal.tsx +110 -64
  157. package/templates/api-showcase/_components/APIShowcase.tsx +53 -35
  158. package/templates/api-showcase/_components/APITester.tsx +128 -67
  159. package/templates/api-showcase/page.tsx +4 -4
  160. package/templates/api-test/page.tsx +51 -30
  161. package/templates/api-test/test-structure/route.ts +43 -34
  162. package/templates/component/Component.stories.tsx +41 -39
  163. package/templates/component/Component.test.tsx +96 -78
  164. package/templates/component/Component.tsx +63 -52
  165. package/templates/component/Component.types.ts +10 -6
  166. package/templates/component/Component.visual.spec.ts +170 -0
  167. package/templates/component/index.ts +2 -2
  168. package/templates/dev-tools/_components/DevToolsLanding.tsx +8 -8
  169. package/templates/dev-tools/page.tsx +4 -3
  170. package/templates/mcp-servers.json +30 -2
  171. package/templates/page/page.e2e.test.ts +56 -48
  172. package/templates/page/page.tsx +3 -3
  173. package/templates/shared/HeroHeader.tsx +16 -15
  174. package/templates/shared/index.ts +1 -1
  175. package/templates/ui-showcase/_components/PreviewCard.tsx +20 -20
  176. package/templates/ui-showcase/_components/PreviewModal.tsx +149 -108
  177. package/templates/ui-showcase/_components/UIShowcase.tsx +43 -35
  178. package/templates/ui-showcase/page.tsx +4 -4
@@ -9,6 +9,7 @@
9
9
  **YOU MUST USE THE `AskUserQuestion` TOOL AT EVERY CHECKPOINT.**
10
10
 
11
11
  This workflow requires REAL user input at each phase. You are **FORBIDDEN** from:
12
+
12
13
  - Self-answering questions
13
14
  - Assuming user responses
14
15
  - Proceeding without explicit user confirmation
@@ -26,9 +27,9 @@ At every `[Y/n]` or multiple-choice prompt in this workflow, you MUST call the `
26
27
  "header": "Phase",
27
28
  "multiSelect": false,
28
29
  "options": [
29
- {"label": "Option A", "description": "What this option means"},
30
- {"label": "Option B", "description": "What this option means"},
31
- {"label": "Other", "description": "I'll type my own answer"}
30
+ { "label": "Option A", "description": "What this option means" },
31
+ { "label": "Option B", "description": "What this option means" },
32
+ { "label": "Other", "description": "I'll type my own answer" }
32
33
  ]
33
34
  }
34
35
  ]
@@ -36,6 +37,7 @@ At every `[Y/n]` or multiple-choice prompt in this workflow, you MUST call the `
36
37
  ```
37
38
 
38
39
  **CRITICAL REQUIREMENTS:**
40
+
39
41
  - `header`: Max 12 characters (e.g., "Scope", "Research", "Format")
40
42
  - `options`: 2-4 options, each with `label` (1-5 words) and `description`
41
43
  - `multiSelect`: Required boolean (true for checkboxes, false for radio)
@@ -47,6 +49,7 @@ At every `[Y/n]` or multiple-choice prompt in this workflow, you MUST call the `
47
49
  ### Violation Detection
48
50
 
49
51
  The enforcement hooks will BLOCK your progress if:
52
+
50
53
  - `user_question_asked` is false for any phase
51
54
  - `user_confirmed`/`user_approved`/`user_completed` is false
52
55
  - `phase_exit_confirmed` is false (user must explicitly approve proceeding to next phase)
@@ -59,27 +62,35 @@ If you see "BLOCKED" messages, it means you skipped user interaction.
59
62
  **Every phase requires an EXIT CONFIRMATION question** before proceeding to the next phase. This prevents Claude from self-answering and moving on without explicit user approval.
60
63
 
61
64
  The exit confirmation question MUST:
65
+
62
66
  1. Summarize what was accomplished in the current phase
63
67
  2. Ask if user is ready to proceed to the next phase
64
68
  3. Include options like "Yes, proceed", "No, I have changes", "Add more"
65
69
 
66
70
  Example exit confirmation:
71
+
67
72
  ```json
68
73
  {
69
- "questions": [{
70
- "question": "Phase complete. Research found 5 sources. Ready to proceed to Interview phase?",
71
- "header": "Proceed",
72
- "multiSelect": false,
73
- "options": [
74
- {"label": "Yes, proceed", "description": "Move to next phase"},
75
- {"label": "No, more research", "description": "I need additional research on [topic]"},
76
- {"label": "Review sources", "description": "Show me what was found"}
77
- ]
78
- }]
74
+ "questions": [
75
+ {
76
+ "question": "Phase complete. Research found 5 sources. Ready to proceed to Interview phase?",
77
+ "header": "Proceed",
78
+ "multiSelect": false,
79
+ "options": [
80
+ { "label": "Yes, proceed", "description": "Move to next phase" },
81
+ {
82
+ "label": "No, more research",
83
+ "description": "I need additional research on [topic]"
84
+ },
85
+ { "label": "Review sources", "description": "Show me what was found" }
86
+ ]
87
+ }
88
+ ]
79
89
  }
80
90
  ```
81
91
 
82
92
  The `phase_exit_confirmed` flag is automatically set when:
93
+
83
94
  1. An `AskUserQuestion` is called with a question containing words like "proceed", "continue", "ready", "confirm", "approve"
84
95
  2. The user responds with an affirmative answer (yes, proceed, confirm, approve, etc.)
85
96
 
@@ -374,9 +385,39 @@ Both conditions must be true for the flag to be set.
374
385
  └───────────────────────────────────────────────────────────┘
375
386
 
376
387
 
377
- ┌─ PHASE 11: TDD REFACTOR ──────────────────────────────────┐
388
+ ┌─ PHASE 11: CODE REVIEW (Greptile) ────────────────────────┐
389
+ │ │
390
+ │ Run Greptile AI code review BEFORE refactoring: │
391
+ │ • Bug detection with full codebase context │
392
+ │ • Security vulnerability scanning (OWASP top 10) │
393
+ │ • Performance issue identification │
394
+ │ │
395
+ │ Review returns actionable issues with file:line refs. │
396
+ │ Requires: GREPTILE_API_KEY + GITHUB_TOKEN │
397
+ │ │
398
+ │ ⚠️ REQUIRED: Use AskUserQuestion tool: │
399
+ │ │
400
+ │ AskUserQuestion({ │
401
+ │ questions: [{ │
402
+ │ question: "Code review found [N] issue(s): [list]. │
403
+ │ How should I proceed?", │
404
+ │ header: "Review", │
405
+ │ options: [ │
406
+ │ "Fix all issues in refactor phase", │
407
+ │ "Fix critical only, defer others", │
408
+ │ "Skip - no issues to fix" │
409
+ │ ] │
410
+ │ }] │
411
+ │ }) │
412
+ │ │
413
+ │ WAIT for user response. Do NOT auto-proceed. │
414
+ └───────────────────────────────────────────────────────────┘
415
+
416
+
417
+ ┌─ PHASE 12: TDD REFACTOR ──────────────────────────────────┐
378
418
  │ │
379
- Clean up code while tests stay green:
419
+ Fix code review issues + clean up while tests stay green:
420
+ │ • Address Greptile issues (bugs, security, performance) │
380
421
  │ • Extract reusable patterns │
381
422
  │ • Improve error messages │
382
423
  │ • Add JSDoc comments │
@@ -386,7 +427,7 @@ Both conditions must be true for the flag to be set.
386
427
  └───────────────────────────────────────────────────────────┘
387
428
 
388
429
 
389
- ┌─ PHASE 12: DOCUMENTATION ─────────────────────────────────┐
430
+ ┌─ PHASE 13: DOCUMENTATION ─────────────────────────────────┐
390
431
  │ │
391
432
  │ Update documentation files, then: │
392
433
  │ │
@@ -411,7 +452,7 @@ Both conditions must be true for the flag to be set.
411
452
  └───────────────────────────────────────────────────────────┘
412
453
 
413
454
 
414
- ┌─ PHASE 13: COMPLETION ────────────────────────────────────┐
455
+ ┌─ PHASE 14: COMPLETION ────────────────────────────────────┐
415
456
  │ │
416
457
  │ Final verification: │
417
458
  │ • All tests passing │
@@ -484,16 +525,16 @@ This command creates:
484
525
 
485
526
  ## Hooks That Enforce This Workflow
486
527
 
487
- | Phase | Hook | Purpose |
488
- |-------|------|---------|
489
- | 0 | `enforce-external-research.py` | Detects API terms, requires disambiguation |
490
- | 2-4 | `track-tool-use.py` | Logs all research, tracks turns |
491
- | 7-8 | `enforce-research.py` | Blocks Write if no research done |
492
- | 7-8 | `enforce-interview.py` | Injects interview decisions |
493
- | 8 | `verify-implementation.py` | Blocks route if no test file |
494
- | 9 | `verify-after-green.py` | Triggers verification after tests pass |
495
- | All | `periodic-reground.py` | Re-grounds every 7 turns |
496
- | 11 | `api-workflow-check.py` | Blocks completion if docs incomplete |
528
+ | Phase | Hook | Purpose |
529
+ | ----- | ------------------------------ | ------------------------------------------ |
530
+ | 0 | `enforce-external-research.py` | Detects API terms, requires disambiguation |
531
+ | 2-4 | `track-tool-use.py` | Logs all research, tracks turns |
532
+ | 7-8 | `enforce-research.py` | Blocks Write if no research done |
533
+ | 7-8 | `enforce-interview.py` | Injects interview decisions |
534
+ | 8 | `verify-implementation.py` | Blocks route if no test file |
535
+ | 9 | `verify-after-green.py` | Triggers verification after tests pass |
536
+ | All | `periodic-reground.py` | Re-grounds every 7 turns |
537
+ | 11 | `api-workflow-check.py` | Blocks completion if docs incomplete |
497
538
 
498
539
  <claude-commands-template>
499
540
  ## Project-Specific Rules
@@ -504,7 +545,7 @@ This command creates:
504
545
  4. **AI SDK**: Use Vercel AI SDK 5.0.11 patterns from `/src/v2/docs/ai-sdk-catalog.json`
505
546
  5. **Package Manager**: Use `pnpm` for all operations
506
547
  6. **Documentation**: Follow patterns in `/src/v2/docs/Main Doc – V2 Development Patterns.md`
507
- 7. **API Keys**: Support three methods (env, NEXT_PUBLIC_, custom headers)
548
+ 7. **API Keys**: Support three methods (env, NEXT*PUBLIC*, custom headers)
508
549
  8. **Test Command**: `pnpm test:run` before commits
509
550
 
510
551
  ## Never Skip
@@ -516,4 +557,4 @@ This command creates:
516
557
  - Phase 10 (Verify) - Re-research after Green
517
558
  - Phase 12 (Documentation) - Keep docs in sync
518
559
  - Coverage verification - 100% required
519
- </claude-commands-template>
560
+ </claude-commands-template>
@@ -42,6 +42,7 @@ Status: BLOCKED - Cannot proceed without FIRECRAWL_API_KEY
42
42
  ## API Key Support
43
43
 
44
44
  The project supports three methods:
45
+
45
46
  1. Server env: `OPENAI_API_KEY=sk-...`
46
47
  2. Client env: `NEXT_PUBLIC_OPENAI_API_KEY=sk-...`
47
48
  3. Custom headers: `X-OpenAI-Key: sk-...`
@@ -7,6 +7,7 @@
7
7
  ## Key Principle: Questions FROM Research
8
8
 
9
9
  **OLD WAY (Generic Templates):**
10
+
10
11
  ```
11
12
  "Which AI provider should this endpoint support?"
12
13
  - OpenAI
@@ -15,6 +16,7 @@
15
16
  ```
16
17
 
17
18
  **NEW WAY (From Research):**
19
+
18
20
  ```
19
21
  Based on research, Brandfetch API has 7 parameters:
20
22
 
@@ -40,6 +42,7 @@ Based on research, Brandfetch API has 7 parameters:
40
42
  **Interview is BLOCKED until research is done.**
41
43
 
42
44
  The interview READS from the research findings:
45
+
43
46
  ```
44
47
  State file shows:
45
48
  research_initial.status = "complete"
@@ -57,6 +60,7 @@ Discovered parameters:
57
60
  For each discovered parameter, generate an appropriate question:
58
61
 
59
62
  #### Required Parameters (Confirmation Only)
63
+
60
64
  ```
61
65
  ┌────────────────────────────────────────────────────────────┐
62
66
  │ REQUIRED PARAMETERS │
@@ -71,6 +75,7 @@ For each discovered parameter, generate an appropriate question:
71
75
  ```
72
76
 
73
77
  #### Enum Parameters (Multi-Select)
78
+
74
79
  ```
75
80
  ┌────────────────────────────────────────────────────────────┐
76
81
  │ FORMAT PARAMETER │
@@ -87,6 +92,7 @@ For each discovered parameter, generate an appropriate question:
87
92
  ```
88
93
 
89
94
  #### Continuous Parameters (Test Strategy)
95
+
90
96
  ```
91
97
  ┌────────────────────────────────────────────────────────────┐
92
98
  │ QUALITY PARAMETER │
@@ -105,6 +111,7 @@ For each discovered parameter, generate an appropriate question:
105
111
  ```
106
112
 
107
113
  #### Boolean Parameters (Enable/Disable)
114
+
108
115
  ```
109
116
  ┌────────────────────────────────────────────────────────────┐
110
117
  │ INCLUDE_COLORS PARAMETER │
@@ -189,14 +196,14 @@ After interview, propose additional research:
189
196
 
190
197
  ## Question Types Summary
191
198
 
192
- | Discovered Type | Question Type | Example |
193
- |----------------|---------------|---------|
194
- | Required param | Confirmation | "Confirm these are understood?" |
195
- | Enum param | Multi-select | "Which formats to support?" |
196
- | Continuous range | Test strategy | "How to test 1-100 range?" |
197
- | Boolean param | Enable/disable | "Expose this parameter?" |
198
- | Optional feature | Priority | "Include this feature?" |
199
- | Error case | Handling strategy | "How to handle rate limits?" |
199
+ | Discovered Type | Question Type | Example |
200
+ | ---------------- | ----------------- | ------------------------------- |
201
+ | Required param | Confirmation | "Confirm these are understood?" |
202
+ | Enum param | Multi-select | "Which formats to support?" |
203
+ | Continuous range | Test strategy | "How to test 1-100 range?" |
204
+ | Boolean param | Enable/disable | "Expose this parameter?" |
205
+ | Optional feature | Priority | "Include this feature?" |
206
+ | Error case | Handling strategy | "How to handle rate limits?" |
200
207
 
201
208
  ## State Tracking
202
209
 
@@ -239,7 +246,7 @@ All decisions are saved to `.claude/api-dev-state.json`:
239
246
 
240
247
  Creates: `.claude/research/[api-name]/interview.md`
241
248
 
242
- ```markdown
249
+ ````markdown
243
250
  # Interview: [API Name]
244
251
 
245
252
  **Date:** [current-date]
@@ -248,19 +255,19 @@ Creates: `.claude/research/[api-name]/interview.md`
248
255
 
249
256
  ## Discovered Parameters
250
257
 
251
- | Parameter | Type | Required | Decision |
252
- |-----------|------|----------|----------|
253
- | domain | string | Yes | Always required |
254
- | format | enum | No | json, svg, png |
255
- | quality | 1-100 | No | Boundary testing: 1, 50, 100 |
258
+ | Parameter | Type | Required | Decision |
259
+ | --------- | ------ | -------- | ---------------------------- |
260
+ | domain | string | Yes | Always required |
261
+ | format | enum | No | json, svg, png |
262
+ | quality | 1-100 | No | Boundary testing: 1, 50, 100 |
256
263
 
257
264
  ## Feature Scope
258
265
 
259
- | Feature | Included | Reason |
260
- |---------|----------|--------|
261
- | Basic fetch | Yes | Core functionality |
262
- | Multiple formats | Yes | User selected |
263
- | Webhooks | No | Deferred to v2 |
266
+ | Feature | Included | Reason |
267
+ | ---------------- | -------- | ------------------ |
268
+ | Basic fetch | Yes | Core functionality |
269
+ | Multiple formats | Yes | User selected |
270
+ | Webhooks | No | Deferred to v2 |
264
271
 
265
272
  ## Test Strategy
266
273
 
@@ -277,6 +284,7 @@ Creates: `.claude/research/[api-name]/interview.md`
277
284
  "rate_limit_handling": "exponential_backoff"
278
285
  }
279
286
  ```
287
+ ````
280
288
 
281
289
  ## Deep Research Approved
282
290
 
@@ -286,6 +294,7 @@ Creates: `.claude/research/[api-name]/interview.md`
286
294
  ## Open Questions
287
295
 
288
296
  [Any remaining ambiguities]
297
+
289
298
  ```
290
299
 
291
300
  ## Integration with Hooks
@@ -293,14 +302,17 @@ Creates: `.claude/research/[api-name]/interview.md`
293
302
  The `enforce-interview.py` hook injects these decisions when Claude tries to write implementation:
294
303
 
295
304
  ```
305
+
296
306
  INTERVIEW CONTEXT REMINDER
297
307
 
298
308
  When implementing, remember user decisions:
309
+
299
310
  - format: ["json", "svg", "png"] (raw excluded)
300
311
  - quality: boundary testing (1, 50, 100)
301
312
  - rate limits: exponential backoff
302
313
 
303
314
  Source: .claude/api-dev-state.json
315
+
304
316
  ```
305
317
 
306
318
  <claude-commands-template>
@@ -329,3 +341,4 @@ Source: .claude/api-dev-state.json
329
341
  - Decisions injected during implementation via hook
330
342
  - Consistency between interview answers and code enforced
331
343
  </claude-commands-template>
344
+ ```
@@ -9,6 +9,7 @@
9
9
  **NOT shotgun research** - We don't blindly run 20 searches.
10
10
 
11
11
  **Adaptive flow:**
12
+
12
13
  1. Run 2-3 initial searches
13
14
  2. Summarize findings
14
15
  3. PROPOSE additional searches based on context
@@ -21,6 +22,7 @@
21
22
  ### Initial Discovery (Automatic)
22
23
 
23
24
  Run 2-3 targeted searches:
25
+
24
26
  ```
25
27
  - Context7: "[library-name]" (if SDK/library)
26
28
  - WebSearch: "[name] official documentation"
@@ -28,6 +30,7 @@ Run 2-3 targeted searches:
28
30
  ```
29
31
 
30
32
  Present initial summary:
33
+
31
34
  ```
32
35
  ┌────────────────────────────────────────────────────────────┐
33
36
  │ INITIAL RESEARCH: [library-name] │
@@ -81,6 +84,7 @@ After interview, PROPOSE targeted searches based on user's selections:
81
84
  ### Execute Approved Searches
82
85
 
83
86
  Only run searches that were explicitly approved:
87
+
84
88
  - Track which searches were proposed vs approved vs skipped
85
89
  - Log everything to state file for transparency
86
90
 
@@ -100,9 +104,7 @@ Only run searches that were explicitly approved:
100
104
  "SVG optimization options",
101
105
  "batch processing"
102
106
  ],
103
- "skipped_searches": [
104
- "webhook support"
105
- ]
107
+ "skipped_searches": ["webhook support"]
106
108
  }
107
109
  }
108
110
  ```
@@ -141,6 +143,7 @@ Research is cached in `.claude/research/[api-name]/`:
141
143
  ```
142
144
 
143
145
  **Freshness Rule:** If research is >7 days old when referenced:
146
+
144
147
  ```
145
148
  ⚠️ Research for "brandfetch" is 15 days old.
146
149
  Re-research before using? [Y/n]
@@ -150,7 +153,7 @@ Re-research before using? [Y/n]
150
153
 
151
154
  Creates: `.claude/research/[library-name]/CURRENT.md`
152
155
 
153
- ```markdown
156
+ ````markdown
154
157
  # Research: [Library/Service Name]
155
158
 
156
159
  **Date:** [current-date]
@@ -159,6 +162,7 @@ Creates: `.claude/research/[library-name]/CURRENT.md`
159
162
  **Freshness:** 0 days (valid for 7 days)
160
163
 
161
164
  ## 1. Official Documentation Links
165
+
162
166
  - Main docs: [URL]
163
167
  - API reference: [URL]
164
168
  - GitHub repo: [URL]
@@ -166,72 +170,93 @@ Creates: `.claude/research/[library-name]/CURRENT.md`
166
170
  - TypeScript types: [URL]
167
171
 
168
172
  ## 2. Installation & Setup
173
+
169
174
  ### Installation
175
+
170
176
  ```bash
171
177
  [installation command]
172
178
  ```
179
+ ````
173
180
 
174
181
  ### Environment Variables
182
+
175
183
  ```env
176
184
  [required env vars]
177
185
  ```
178
186
 
179
187
  ### API Key Setup
188
+
180
189
  [How to obtain and configure]
181
190
 
182
191
  ## 3. Complete Request Schema
192
+
183
193
  ### Required Parameters
184
- | Parameter | Type | Description | Validation |
185
- |-----------|------|-------------|------------|
186
- | [name] | [type] | [desc] | [rules] |
194
+
195
+ | Parameter | Type | Description | Validation |
196
+ | --------- | ------ | ----------- | ---------- |
197
+ | [name] | [type] | [desc] | [rules] |
187
198
 
188
199
  ### Optional Parameters
189
- | Parameter | Type | Default | Description | Notes |
190
- |-----------|------|---------|-------------|-------|
191
- | [name] | [type] | [default] | [desc] | [notes] |
200
+
201
+ | Parameter | Type | Default | Description | Notes |
202
+ | --------- | ------ | --------- | ----------- | ------- |
203
+ | [name] | [type] | [default] | [desc] | [notes] |
192
204
 
193
205
  ### Continuous Parameters (for test strategy)
194
- | Parameter | Type | Range | Suggested Test Values |
195
- |-----------|------|-------|----------------------|
196
- | quality | number | 1-100 | 1, 50, 100 (boundary) |
197
- | timeout | number | 1000-30000 | 1000, 15000, 30000 |
206
+
207
+ | Parameter | Type | Range | Suggested Test Values |
208
+ | --------- | ------ | ---------- | --------------------- |
209
+ | quality | number | 1-100 | 1, 50, 100 (boundary) |
210
+ | timeout | number | 1000-30000 | 1000, 15000, 30000 |
198
211
 
199
212
  ## 4. Complete Response Schema
213
+
200
214
  ### Success Response
215
+
201
216
  [TypeScript interface]
202
217
 
203
218
  ### Error Response
219
+
204
220
  [TypeScript interface with error codes]
205
221
 
206
222
  ## 5. Features & Capabilities
223
+
207
224
  ### Core Features (Discovered)
225
+
208
226
  - [x] [Feature 1]: [description]
209
227
  - [x] [Feature 2]: [description]
210
228
 
211
229
  ### Features NOT Implemented (Intentional)
230
+
212
231
  - [ ] [Feature]: [reason for exclusion]
213
232
 
214
233
  ## 6. Limitations & Constraints
234
+
215
235
  - Rate limits: [details]
216
236
  - Size limits: [details]
217
237
  - Timeout: [details]
218
238
 
219
239
  ## 7. Testing Considerations
240
+
220
241
  - [ ] Test boundary values for continuous params
221
242
  - [ ] Test all enum values
222
243
  - [ ] Test error responses
223
244
  - [ ] Test rate limiting behavior
224
245
 
225
246
  ## 8. Research Trail
247
+
226
248
  ### Searches Performed
227
- | Search | Tool | Found |
228
- |--------|------|-------|
229
- | "[name] documentation" | WebSearch | |
230
- | "[name]" | Context7 | ✓ |
249
+
250
+ | Search | Tool | Found |
251
+ | ---------------------- | --------- | ----- |
252
+ | "[name] documentation" | WebSearch | ✓ |
253
+ | "[name]" | Context7 | ✓ |
231
254
 
232
255
  ### Proposed but Skipped
256
+
233
257
  - "webhook support" - User declined, not needed
234
- ```
258
+
259
+ ````
235
260
 
236
261
  ## Research-First Schema Design (MANDATORY)
237
262
 
@@ -296,11 +321,12 @@ All research is tracked in `.claude/api-dev-state.json`:
296
321
  }
297
322
  }
298
323
  }
299
- ```
324
+ ````
300
325
 
301
326
  ## Usage Examples
302
327
 
303
328
  ### Research with full flow
329
+
304
330
  ```bash
305
331
  /hustle-api-research brandfetch
306
332
  # → Initial search (2-3 queries)
@@ -328,4 +354,4 @@ All research is tracked in `.claude/api-dev-state.json`:
328
354
  - Phase 5 uses adaptive proposal flow
329
355
  - Phase 10 (Verify) triggers re-research
330
356
  - Freshness check prevents stale data
331
- </claude-commands-template>
357
+ </claude-commands-template>
@@ -3,19 +3,20 @@
3
3
  Browse and export saved session logs from previous API development workflows.
4
4
 
5
5
  ## Usage
6
+
6
7
  ```
7
8
  /hustle-api-sessions [options]
8
9
  ```
9
10
 
10
11
  ## Options
11
12
 
12
- | Option | Description |
13
- |--------|-------------|
14
- | `--list` | List all saved sessions |
15
- | `--view [endpoint]` | View a specific session |
16
- | `--export [endpoint] [format]` | Export session to PDF/HTML/MD |
17
- | `--search [term]` | Search across all sessions |
18
- | `--cleanup` | Remove old sessions (>30 days) |
13
+ | Option | Description |
14
+ | ------------------------------ | ------------------------------ |
15
+ | `--list` | List all saved sessions |
16
+ | `--view [endpoint]` | View a specific session |
17
+ | `--export [endpoint] [format]` | Export session to PDF/HTML/MD |
18
+ | `--search [term]` | Search across all sessions |
19
+ | `--cleanup` | Remove old sessions (>30 days) |
19
20
 
20
21
  ## Examples
21
22