@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
@@ -0,0 +1,137 @@
1
+ ---
2
+ description: Execute TDD Red Phase - write ONE failing test
3
+ argument-hint: [optional additional info]
4
+ ---
5
+
6
+ RED PHASE! Apply the below to the info given by user input here:
7
+
8
+ $ARGUMENTS
9
+
10
+ ## General Guidelines
11
+
12
+ ### Output Style
13
+
14
+ - **Never explicitly mention TDD** in code, comments, commits, PRs, or issues
15
+ - Write natural, descriptive code without meta-commentary about the development process
16
+ - The code should speak for itself - TDD is the process, not the product
17
+
18
+ (If there was no info above, fallback to the context of the conversation)
19
+
20
+ ## TDD Fundamentals
21
+
22
+ ### The TDD Cycle
23
+
24
+ The foundation of TDD is the Red-Green-Refactor cycle:
25
+
26
+ 1. **Red Phase**: Write ONE failing test that describes desired behavior
27
+ - The test must fail for the RIGHT reason (not syntax/import errors)
28
+ - Only one test at a time - this is critical for TDD discipline
29
+ - Exception: For browser-level tests or expensive setup (e.g., Storybook `*.stories.tsx`), group multiple assertions within a single test block to avoid redundant setup - but only when adding assertions to an existing interaction flow. If new user interactions are required, still create a new test. Split files by category if they exceed ~1000 lines.
30
+ - **Adding a single test to a test file is ALWAYS allowed** - no prior test output needed
31
+ - Starting TDD for a new feature is always valid, even if test output shows unrelated work
32
+ - For DOM-based tests, use `data-testid` attributes to select elements rather than CSS classes, tag names, or text content
33
+ - Avoid hard-coded timeouts both in form of sleep() or timeout: 5000 etc; use proper async patterns (`waitFor`, `findBy*`, event-based sync) instead and rely on global test configs for timeout settings
34
+
35
+ 2. **Green Phase**: Write MINIMAL code to make the test pass
36
+ - Implement only what's needed for the current failing test
37
+ - No anticipatory coding or extra features
38
+ - Address the specific failure message
39
+
40
+ 3. **Refactor Phase**: Improve code structure while keeping tests green
41
+ - Only allowed when relevant tests are passing
42
+ - Requires proof that tests have been run and are green
43
+ - Applies to BOTH implementation and test code
44
+ - No refactoring with failing tests - fix them first
45
+
46
+ ### Core Violations
47
+
48
+ 1. **Multiple Test Addition**
49
+ - Adding more than one new test at once
50
+ - Exception: Initial test file setup or extracting shared test utilities
51
+
52
+ 2. **Over-Implementation**
53
+ - Code that exceeds what's needed to pass the current failing test
54
+ - Adding untested features, methods, or error handling
55
+ - Implementing multiple methods when test only requires one
56
+
57
+ 3. **Premature Implementation**
58
+ - Adding implementation before a test exists and fails properly
59
+ - Adding implementation without running the test first
60
+ - Refactoring when tests haven't been run or are failing
61
+
62
+ ### Critical Principle: Incremental Development
63
+
64
+ Each step in TDD should address ONE specific issue:
65
+
66
+ - Test fails "not defined" → Create empty stub/class only
67
+ - Test fails "not a function" → Add method stub only
68
+ - Test fails with assertion → Implement minimal logic only
69
+
70
+ ### Optional Pre-Phase: Spike Phase
71
+
72
+ In rare cases where the problem space, interface, or expected behavior is unclear, a **Spike Phase** may be used **before the Red Phase**.
73
+ This phase is **not part of the regular TDD workflow** and must only be applied under exceptional circumstances.
74
+
75
+ - The goal of a Spike is **exploration and learning**, not implementation.
76
+ - The code written during a Spike is **disposable** and **must not** be merged or reused directly.
77
+ - Once sufficient understanding is achieved, all spike code is discarded, and normal TDD resumes starting from the **Red Phase**.
78
+ - A Spike is justified only when it is impossible to define a meaningful failing test due to technical uncertainty or unknown system behavior.
79
+
80
+ ### General Information
81
+
82
+ - Sometimes the test output shows as no tests have been run when a new test is failing due to a missing import or constructor. In such cases, allow the agent to create simple stubs. Ask them if they forgot to create a stub if they are stuck.
83
+ - It is never allowed to introduce new logic without evidence of relevant failing tests. However, stubs and simple implementation to make imports and test infrastructure work is fine.
84
+ - In the refactor phase, it is perfectly fine to refactor both test and implementation code. That said, completely new functionality is not allowed. Types, clean up, abstractions, and helpers are allowed as long as they do not introduce new behavior.
85
+ - Adding types, interfaces, or a constant in order to replace magic values is perfectly fine during refactoring.
86
+ - Provide the agent with helpful directions so that they do not get stuck when blocking them.
87
+
88
+ ## 🛡 Project Rules (Injected into every command)
89
+
90
+ 1. **NO BROKEN BUILDS:**
91
+ - Run `pnpm test` before every `/commit`
92
+ - Ensure all tests pass
93
+ - Fix any type errors immediately
94
+
95
+ 2. **API DEVELOPMENT:**
96
+ - All new APIs MUST have Zod request/response schemas
97
+ - All APIs MUST be documented in both:
98
+ - OpenAPI spec ([src/lib/openapi/](src/lib/openapi/))
99
+ - API test manifest ([src/app/api-test/api-tests-manifest.json](src/app/api-test/api-tests-manifest.json))
100
+ - Test ALL parameters and edge cases
101
+ - Include code examples and real-world outputs
102
+
103
+ 3. **TDD WORKFLOW:**
104
+ - ALWAYS use /red → /green → /refactor cycle
105
+ - NEVER write implementation without failing test first
106
+ - Use /cycle for feature development
107
+ - Use characterization tests for refactoring
108
+
109
+ 4. **API KEY MANAGEMENT:**
110
+ - Support three loading methods:
111
+ - Server environment variables
112
+ - NEXT*PUBLIC* variables (client-side)
113
+ - Custom headers (X-OpenAI-Key, X-Anthropic-Key, etc.)
114
+ - Never hardcode API keys
115
+ - Always validate key availability before use
116
+
117
+ 5. **COMPREHENSIVE TESTING:**
118
+ - When researching APIs, read actual implementation code
119
+ - Discover ALL possible parameters (not just documented ones)
120
+ - Test with various parameter combinations
121
+ - Document custom headers, query params, request/response schemas
122
+ - Include validation rules and testing notes
123
+
124
+ 6. **NO UI BLOAT:**
125
+ - This is an API project with minimal frontend
126
+ - Only keep necessary test/documentation interfaces
127
+ - Delete unused components immediately
128
+ - No unnecessary UI libraries or features
129
+
130
+ 7. **DOCUMENTATION:**
131
+ - If you change an API, you MUST update:
132
+ - OpenAPI spec
133
+ - api-tests-manifest.json
134
+ - Code examples
135
+ - Testing notes
136
+ - Document expected behavior and edge cases
137
+ - Include real-world output examples
@@ -0,0 +1,137 @@
1
+ ---
2
+ description: Execute TDD Refactor Phase - improve code structure while keeping tests green
3
+ argument-hint: <refactoring description>
4
+ ---
5
+
6
+ Apply this document (specifically the Refactor phase), to the info given by user input here: $ARGUMENTS
7
+
8
+ ## General Guidelines
9
+
10
+ ### Output Style
11
+
12
+ - **Never explicitly mention TDD** in code, comments, commits, PRs, or issues
13
+ - Write natural, descriptive code without meta-commentary about the development process
14
+ - The code should speak for itself - TDD is the process, not the product
15
+
16
+ (If there was no info above, fallback to the context of the conversation)
17
+
18
+ ## TDD Fundamentals
19
+
20
+ ### The TDD Cycle
21
+
22
+ The foundation of TDD is the Red-Green-Refactor cycle:
23
+
24
+ 1. **Red Phase**: Write ONE failing test that describes desired behavior
25
+ - The test must fail for the RIGHT reason (not syntax/import errors)
26
+ - Only one test at a time - this is critical for TDD discipline
27
+ - Exception: For browser-level tests or expensive setup (e.g., Storybook `*.stories.tsx`), group multiple assertions within a single test block to avoid redundant setup - but only when adding assertions to an existing interaction flow. If new user interactions are required, still create a new test. Split files by category if they exceed ~1000 lines.
28
+ - **Adding a single test to a test file is ALWAYS allowed** - no prior test output needed
29
+ - Starting TDD for a new feature is always valid, even if test output shows unrelated work
30
+ - For DOM-based tests, use `data-testid` attributes to select elements rather than CSS classes, tag names, or text content
31
+ - Avoid hard-coded timeouts both in form of sleep() or timeout: 5000 etc; use proper async patterns (`waitFor`, `findBy*`, event-based sync) instead and rely on global test configs for timeout settings
32
+
33
+ 2. **Green Phase**: Write MINIMAL code to make the test pass
34
+ - Implement only what's needed for the current failing test
35
+ - No anticipatory coding or extra features
36
+ - Address the specific failure message
37
+
38
+ 3. **Refactor Phase**: Improve code structure while keeping tests green
39
+ - Only allowed when relevant tests are passing
40
+ - Requires proof that tests have been run and are green
41
+ - Applies to BOTH implementation and test code
42
+ - No refactoring with failing tests - fix them first
43
+
44
+ ### Core Violations
45
+
46
+ 1. **Multiple Test Addition**
47
+ - Adding more than one new test at once
48
+ - Exception: Initial test file setup or extracting shared test utilities
49
+
50
+ 2. **Over-Implementation**
51
+ - Code that exceeds what's needed to pass the current failing test
52
+ - Adding untested features, methods, or error handling
53
+ - Implementing multiple methods when test only requires one
54
+
55
+ 3. **Premature Implementation**
56
+ - Adding implementation before a test exists and fails properly
57
+ - Adding implementation without running the test first
58
+ - Refactoring when tests haven't been run or are failing
59
+
60
+ ### Critical Principle: Incremental Development
61
+
62
+ Each step in TDD should address ONE specific issue:
63
+
64
+ - Test fails "not defined" → Create empty stub/class only
65
+ - Test fails "not a function" → Add method stub only
66
+ - Test fails with assertion → Implement minimal logic only
67
+
68
+ ### Optional Pre-Phase: Spike Phase
69
+
70
+ In rare cases where the problem space, interface, or expected behavior is unclear, a **Spike Phase** may be used **before the Red Phase**.
71
+ This phase is **not part of the regular TDD workflow** and must only be applied under exceptional circumstances.
72
+
73
+ - The goal of a Spike is **exploration and learning**, not implementation.
74
+ - The code written during a Spike is **disposable** and **must not** be merged or reused directly.
75
+ - Once sufficient understanding is achieved, all spike code is discarded, and normal TDD resumes starting from the **Red Phase**.
76
+ - A Spike is justified only when it is impossible to define a meaningful failing test due to technical uncertainty or unknown system behavior.
77
+
78
+ ### General Information
79
+
80
+ - Sometimes the test output shows as no tests have been run when a new test is failing due to a missing import or constructor. In such cases, allow the agent to create simple stubs. Ask them if they forgot to create a stub if they are stuck.
81
+ - It is never allowed to introduce new logic without evidence of relevant failing tests. However, stubs and simple implementation to make imports and test infrastructure work is fine.
82
+ - In the refactor phase, it is perfectly fine to refactor both test and implementation code. That said, completely new functionality is not allowed. Types, clean up, abstractions, and helpers are allowed as long as they do not introduce new behavior.
83
+ - Adding types, interfaces, or a constant in order to replace magic values is perfectly fine during refactoring.
84
+ - Provide the agent with helpful directions so that they do not get stuck when blocking them.
85
+
86
+ 1. **Consistency check** - Look for inconsistent patterns, naming conventions, or structure across the codebase
87
+
88
+ ## 🛡 Project Rules (Injected into every command)
89
+
90
+ 1. **NO BROKEN BUILDS:**
91
+ - Run `pnpm test` before every `/commit`
92
+ - Ensure all tests pass
93
+ - Fix any type errors immediately
94
+
95
+ 2. **API DEVELOPMENT:**
96
+ - All new APIs MUST have Zod request/response schemas
97
+ - All APIs MUST be documented in both:
98
+ - OpenAPI spec ([src/lib/openapi/](src/lib/openapi/))
99
+ - API test manifest ([src/app/api-test/api-tests-manifest.json](src/app/api-test/api-tests-manifest.json))
100
+ - Test ALL parameters and edge cases
101
+ - Include code examples and real-world outputs
102
+
103
+ 3. **TDD WORKFLOW:**
104
+ - ALWAYS use /red → /green → /refactor cycle
105
+ - NEVER write implementation without failing test first
106
+ - Use /cycle for feature development
107
+ - Use characterization tests for refactoring
108
+
109
+ 4. **API KEY MANAGEMENT:**
110
+ - Support three loading methods:
111
+ - Server environment variables
112
+ - NEXT*PUBLIC* variables (client-side)
113
+ - Custom headers (X-OpenAI-Key, X-Anthropic-Key, etc.)
114
+ - Never hardcode API keys
115
+ - Always validate key availability before use
116
+
117
+ 5. **COMPREHENSIVE TESTING:**
118
+ - When researching APIs, read actual implementation code
119
+ - Discover ALL possible parameters (not just documented ones)
120
+ - Test with various parameter combinations
121
+ - Document custom headers, query params, request/response schemas
122
+ - Include validation rules and testing notes
123
+
124
+ 6. **NO UI BLOAT:**
125
+ - This is an API project with minimal frontend
126
+ - Only keep necessary test/documentation interfaces
127
+ - Delete unused components immediately
128
+ - No unnecessary UI libraries or features
129
+
130
+ 7. **DOCUMENTATION:**
131
+ - If you change an API, you MUST update:
132
+ - OpenAPI spec
133
+ - api-tests-manifest.json
134
+ - Code examples
135
+ - Testing notes
136
+ - Document expected behavior and edge cases
137
+ - Include real-world output examples
@@ -0,0 +1,137 @@
1
+ ---
2
+ description: Execute TDD Spike Phase - exploratory coding to understand problem space before TDD
3
+ argument-hint: <exploration description>
4
+ ---
5
+
6
+ SPIKE PHASE! Apply the below to the info given by user input here:
7
+
8
+ $ARGUMENTS
9
+
10
+ ## General Guidelines
11
+
12
+ ### Output Style
13
+
14
+ - **Never explicitly mention TDD** in code, comments, commits, PRs, or issues
15
+ - Write natural, descriptive code without meta-commentary about the development process
16
+ - The code should speak for itself - TDD is the process, not the product
17
+
18
+ (If there was no info above, fallback to the context of the conversation)
19
+
20
+ ## TDD Fundamentals
21
+
22
+ ### The TDD Cycle
23
+
24
+ The foundation of TDD is the Red-Green-Refactor cycle:
25
+
26
+ 1. **Red Phase**: Write ONE failing test that describes desired behavior
27
+ - The test must fail for the RIGHT reason (not syntax/import errors)
28
+ - Only one test at a time - this is critical for TDD discipline
29
+ - Exception: For browser-level tests or expensive setup (e.g., Storybook `*.stories.tsx`), group multiple assertions within a single test block to avoid redundant setup - but only when adding assertions to an existing interaction flow. If new user interactions are required, still create a new test. Split files by category if they exceed ~1000 lines.
30
+ - **Adding a single test to a test file is ALWAYS allowed** - no prior test output needed
31
+ - Starting TDD for a new feature is always valid, even if test output shows unrelated work
32
+ - For DOM-based tests, use `data-testid` attributes to select elements rather than CSS classes, tag names, or text content
33
+ - Avoid hard-coded timeouts both in form of sleep() or timeout: 5000 etc; use proper async patterns (`waitFor`, `findBy*`, event-based sync) instead and rely on global test configs for timeout settings
34
+
35
+ 2. **Green Phase**: Write MINIMAL code to make the test pass
36
+ - Implement only what's needed for the current failing test
37
+ - No anticipatory coding or extra features
38
+ - Address the specific failure message
39
+
40
+ 3. **Refactor Phase**: Improve code structure while keeping tests green
41
+ - Only allowed when relevant tests are passing
42
+ - Requires proof that tests have been run and are green
43
+ - Applies to BOTH implementation and test code
44
+ - No refactoring with failing tests - fix them first
45
+
46
+ ### Core Violations
47
+
48
+ 1. **Multiple Test Addition**
49
+ - Adding more than one new test at once
50
+ - Exception: Initial test file setup or extracting shared test utilities
51
+
52
+ 2. **Over-Implementation**
53
+ - Code that exceeds what's needed to pass the current failing test
54
+ - Adding untested features, methods, or error handling
55
+ - Implementing multiple methods when test only requires one
56
+
57
+ 3. **Premature Implementation**
58
+ - Adding implementation before a test exists and fails properly
59
+ - Adding implementation without running the test first
60
+ - Refactoring when tests haven't been run or are failing
61
+
62
+ ### Critical Principle: Incremental Development
63
+
64
+ Each step in TDD should address ONE specific issue:
65
+
66
+ - Test fails "not defined" → Create empty stub/class only
67
+ - Test fails "not a function" → Add method stub only
68
+ - Test fails with assertion → Implement minimal logic only
69
+
70
+ ### Optional Pre-Phase: Spike Phase
71
+
72
+ In rare cases where the problem space, interface, or expected behavior is unclear, a **Spike Phase** may be used **before the Red Phase**.
73
+ This phase is **not part of the regular TDD workflow** and must only be applied under exceptional circumstances.
74
+
75
+ - The goal of a Spike is **exploration and learning**, not implementation.
76
+ - The code written during a Spike is **disposable** and **must not** be merged or reused directly.
77
+ - Once sufficient understanding is achieved, all spike code is discarded, and normal TDD resumes starting from the **Red Phase**.
78
+ - A Spike is justified only when it is impossible to define a meaningful failing test due to technical uncertainty or unknown system behavior.
79
+
80
+ ### General Information
81
+
82
+ - Sometimes the test output shows as no tests have been run when a new test is failing due to a missing import or constructor. In such cases, allow the agent to create simple stubs. Ask them if they forgot to create a stub if they are stuck.
83
+ - It is never allowed to introduce new logic without evidence of relevant failing tests. However, stubs and simple implementation to make imports and test infrastructure work is fine.
84
+ - In the refactor phase, it is perfectly fine to refactor both test and implementation code. That said, completely new functionality is not allowed. Types, clean up, abstractions, and helpers are allowed as long as they do not introduce new behavior.
85
+ - Adding types, interfaces, or a constant in order to replace magic values is perfectly fine during refactoring.
86
+ - Provide the agent with helpful directions so that they do not get stuck when blocking them.
87
+
88
+ ## 🛡 Project Rules (Injected into every command)
89
+
90
+ 1. **NO BROKEN BUILDS:**
91
+ - Run `pnpm test` before every `/commit`
92
+ - Ensure all tests pass
93
+ - Fix any type errors immediately
94
+
95
+ 2. **API DEVELOPMENT:**
96
+ - All new APIs MUST have Zod request/response schemas
97
+ - All APIs MUST be documented in both:
98
+ - OpenAPI spec ([src/lib/openapi/](src/lib/openapi/))
99
+ - API test manifest ([src/app/api-test/api-tests-manifest.json](src/app/api-test/api-tests-manifest.json))
100
+ - Test ALL parameters and edge cases
101
+ - Include code examples and real-world outputs
102
+
103
+ 3. **TDD WORKFLOW:**
104
+ - ALWAYS use /red → /green → /refactor cycle
105
+ - NEVER write implementation without failing test first
106
+ - Use /cycle for feature development
107
+ - Use characterization tests for refactoring
108
+
109
+ 4. **API KEY MANAGEMENT:**
110
+ - Support three loading methods:
111
+ - Server environment variables
112
+ - NEXT*PUBLIC* variables (client-side)
113
+ - Custom headers (X-OpenAI-Key, X-Anthropic-Key, etc.)
114
+ - Never hardcode API keys
115
+ - Always validate key availability before use
116
+
117
+ 5. **COMPREHENSIVE TESTING:**
118
+ - When researching APIs, read actual implementation code
119
+ - Discover ALL possible parameters (not just documented ones)
120
+ - Test with various parameter combinations
121
+ - Document custom headers, query params, request/response schemas
122
+ - Include validation rules and testing notes
123
+
124
+ 6. **NO UI BLOAT:**
125
+ - This is an API project with minimal frontend
126
+ - Only keep necessary test/documentation interfaces
127
+ - Delete unused components immediately
128
+ - No unnecessary UI libraries or features
129
+
130
+ 7. **DOCUMENTATION:**
131
+ - If you change an API, you MUST update:
132
+ - OpenAPI spec
133
+ - api-tests-manifest.json
134
+ - Code examples
135
+ - Testing notes
136
+ - Document expected behavior and edge cases
137
+ - Include real-world output examples
@@ -0,0 +1,93 @@
1
+ ---
2
+ description: Summarize conversation progress and next steps
3
+ argument-hint: [optional additional info]
4
+ ---
5
+
6
+ ## General Guidelines
7
+
8
+ ### Output Style
9
+
10
+ - **Never explicitly mention TDD** in code, comments, commits, PRs, or issues
11
+ - Write natural, descriptive code without meta-commentary about the development process
12
+ - The code should speak for itself - TDD is the process, not the product
13
+
14
+ Create a concise summary of the current conversation suitable for transferring context to a new conversation.
15
+
16
+ Additional info: $ARGUMENTS
17
+
18
+ ## Summary Structure
19
+
20
+ Provide a summary with these sections:
21
+
22
+ ### What We Did
23
+
24
+ - Key accomplishments and changes made
25
+ - Important decisions or discoveries
26
+ - Files created, modified, or analyzed
27
+
28
+ ### What We're Doing Next
29
+
30
+ - Immediate next steps
31
+ - Pending tasks or work in progress
32
+ - Goals or objectives to continue
33
+
34
+ ### Blockers & User Input Needed
35
+
36
+ - Any issues requiring user intervention
37
+ - Decisions that need to be made
38
+ - Missing information or clarifications needed
39
+
40
+ ## Output Format
41
+
42
+ Keep the summary concise and actionable - suitable for pasting into a new conversation to quickly restore context without needing the full conversation history.
43
+
44
+ ## 🛡 Project Rules (Injected into every command)
45
+
46
+ 1. **NO BROKEN BUILDS:**
47
+ - Run `pnpm test` before every `/commit`
48
+ - Ensure all tests pass
49
+ - Fix any type errors immediately
50
+
51
+ 2. **API DEVELOPMENT:**
52
+ - All new APIs MUST have Zod request/response schemas
53
+ - All APIs MUST be documented in both:
54
+ - OpenAPI spec ([src/lib/openapi/](src/lib/openapi/))
55
+ - API test manifest ([src/app/api-test/api-tests-manifest.json](src/app/api-test/api-tests-manifest.json))
56
+ - Test ALL parameters and edge cases
57
+ - Include code examples and real-world outputs
58
+
59
+ 3. **TDD WORKFLOW:**
60
+ - ALWAYS use /red → /green → /refactor cycle
61
+ - NEVER write implementation without failing test first
62
+ - Use /cycle for feature development
63
+ - Use characterization tests for refactoring
64
+
65
+ 4. **API KEY MANAGEMENT:**
66
+ - Support three loading methods:
67
+ - Server environment variables
68
+ - NEXT*PUBLIC* variables (client-side)
69
+ - Custom headers (X-OpenAI-Key, X-Anthropic-Key, etc.)
70
+ - Never hardcode API keys
71
+ - Always validate key availability before use
72
+
73
+ 5. **COMPREHENSIVE TESTING:**
74
+ - When researching APIs, read actual implementation code
75
+ - Discover ALL possible parameters (not just documented ones)
76
+ - Test with various parameter combinations
77
+ - Document custom headers, query params, request/response schemas
78
+ - Include validation rules and testing notes
79
+
80
+ 6. **NO UI BLOAT:**
81
+ - This is an API project with minimal frontend
82
+ - Only keep necessary test/documentation interfaces
83
+ - Delete unused components immediately
84
+ - No unnecessary UI libraries or features
85
+
86
+ 7. **DOCUMENTATION:**
87
+ - If you change an API, you MUST update:
88
+ - OpenAPI spec
89
+ - api-tests-manifest.json
90
+ - Code examples
91
+ - Testing notes
92
+ - Document expected behavior and edge cases
93
+ - Include real-world output examples
@@ -0,0 +1,139 @@
1
+ ---
2
+ description: Remind agent about TDD approach and continue conversation
3
+ argument-hint: [optional-response-to-last-message]
4
+ ---
5
+
6
+ # TDD Reminder
7
+
8
+ ## General Guidelines
9
+
10
+ ### Output Style
11
+
12
+ - **Never explicitly mention TDD** in code, comments, commits, PRs, or issues
13
+ - Write natural, descriptive code without meta-commentary about the development process
14
+ - The code should speak for itself - TDD is the process, not the product
15
+
16
+ ## TDD Fundamentals
17
+
18
+ ### The TDD Cycle
19
+
20
+ The foundation of TDD is the Red-Green-Refactor cycle:
21
+
22
+ 1. **Red Phase**: Write ONE failing test that describes desired behavior
23
+ - The test must fail for the RIGHT reason (not syntax/import errors)
24
+ - Only one test at a time - this is critical for TDD discipline
25
+ - Exception: For browser-level tests or expensive setup (e.g., Storybook `*.stories.tsx`), group multiple assertions within a single test block to avoid redundant setup - but only when adding assertions to an existing interaction flow. If new user interactions are required, still create a new test. Split files by category if they exceed ~1000 lines.
26
+ - **Adding a single test to a test file is ALWAYS allowed** - no prior test output needed
27
+ - Starting TDD for a new feature is always valid, even if test output shows unrelated work
28
+ - For DOM-based tests, use `data-testid` attributes to select elements rather than CSS classes, tag names, or text content
29
+ - Avoid hard-coded timeouts both in form of sleep() or timeout: 5000 etc; use proper async patterns (`waitFor`, `findBy*`, event-based sync) instead and rely on global test configs for timeout settings
30
+
31
+ 2. **Green Phase**: Write MINIMAL code to make the test pass
32
+ - Implement only what's needed for the current failing test
33
+ - No anticipatory coding or extra features
34
+ - Address the specific failure message
35
+
36
+ 3. **Refactor Phase**: Improve code structure while keeping tests green
37
+ - Only allowed when relevant tests are passing
38
+ - Requires proof that tests have been run and are green
39
+ - Applies to BOTH implementation and test code
40
+ - No refactoring with failing tests - fix them first
41
+
42
+ ### Core Violations
43
+
44
+ 1. **Multiple Test Addition**
45
+ - Adding more than one new test at once
46
+ - Exception: Initial test file setup or extracting shared test utilities
47
+
48
+ 2. **Over-Implementation**
49
+ - Code that exceeds what's needed to pass the current failing test
50
+ - Adding untested features, methods, or error handling
51
+ - Implementing multiple methods when test only requires one
52
+
53
+ 3. **Premature Implementation**
54
+ - Adding implementation before a test exists and fails properly
55
+ - Adding implementation without running the test first
56
+ - Refactoring when tests haven't been run or are failing
57
+
58
+ ### Critical Principle: Incremental Development
59
+
60
+ Each step in TDD should address ONE specific issue:
61
+
62
+ - Test fails "not defined" → Create empty stub/class only
63
+ - Test fails "not a function" → Add method stub only
64
+ - Test fails with assertion → Implement minimal logic only
65
+
66
+ ### Optional Pre-Phase: Spike Phase
67
+
68
+ In rare cases where the problem space, interface, or expected behavior is unclear, a **Spike Phase** may be used **before the Red Phase**.
69
+ This phase is **not part of the regular TDD workflow** and must only be applied under exceptional circumstances.
70
+
71
+ - The goal of a Spike is **exploration and learning**, not implementation.
72
+ - The code written during a Spike is **disposable** and **must not** be merged or reused directly.
73
+ - Once sufficient understanding is achieved, all spike code is discarded, and normal TDD resumes starting from the **Red Phase**.
74
+ - A Spike is justified only when it is impossible to define a meaningful failing test due to technical uncertainty or unknown system behavior.
75
+
76
+ ### General Information
77
+
78
+ - Sometimes the test output shows as no tests have been run when a new test is failing due to a missing import or constructor. In such cases, allow the agent to create simple stubs. Ask them if they forgot to create a stub if they are stuck.
79
+ - It is never allowed to introduce new logic without evidence of relevant failing tests. However, stubs and simple implementation to make imports and test infrastructure work is fine.
80
+ - In the refactor phase, it is perfectly fine to refactor both test and implementation code. That said, completely new functionality is not allowed. Types, clean up, abstractions, and helpers are allowed as long as they do not introduce new behavior.
81
+ - Adding types, interfaces, or a constant in order to replace magic values is perfectly fine during refactoring.
82
+ - Provide the agent with helpful directions so that they do not get stuck when blocking them.
83
+
84
+ ## Continue Conversation
85
+
86
+ User response to the last message: $ARGUMENTS
87
+
88
+ Please continue with TDD approach based on the above response.
89
+
90
+ ## 🛡 Project Rules (Injected into every command)
91
+
92
+ 1. **NO BROKEN BUILDS:**
93
+ - Run `pnpm test` before every `/commit`
94
+ - Ensure all tests pass
95
+ - Fix any type errors immediately
96
+
97
+ 2. **API DEVELOPMENT:**
98
+ - All new APIs MUST have Zod request/response schemas
99
+ - All APIs MUST be documented in both:
100
+ - OpenAPI spec ([src/lib/openapi/](src/lib/openapi/))
101
+ - API test manifest ([src/app/api-test/api-tests-manifest.json](src/app/api-test/api-tests-manifest.json))
102
+ - Test ALL parameters and edge cases
103
+ - Include code examples and real-world outputs
104
+
105
+ 3. **TDD WORKFLOW:**
106
+ - ALWAYS use /red → /green → /refactor cycle
107
+ - NEVER write implementation without failing test first
108
+ - Use /cycle for feature development
109
+ - Use characterization tests for refactoring
110
+
111
+ 4. **API KEY MANAGEMENT:**
112
+ - Support three loading methods:
113
+ - Server environment variables
114
+ - NEXT*PUBLIC* variables (client-side)
115
+ - Custom headers (X-OpenAI-Key, X-Anthropic-Key, etc.)
116
+ - Never hardcode API keys
117
+ - Always validate key availability before use
118
+
119
+ 5. **COMPREHENSIVE TESTING:**
120
+ - When researching APIs, read actual implementation code
121
+ - Discover ALL possible parameters (not just documented ones)
122
+ - Test with various parameter combinations
123
+ - Document custom headers, query params, request/response schemas
124
+ - Include validation rules and testing notes
125
+
126
+ 6. **NO UI BLOAT:**
127
+ - This is an API project with minimal frontend
128
+ - Only keep necessary test/documentation interfaces
129
+ - Delete unused components immediately
130
+ - No unnecessary UI libraries or features
131
+
132
+ 7. **DOCUMENTATION:**
133
+ - If you change an API, you MUST update:
134
+ - OpenAPI spec
135
+ - api-tests-manifest.json
136
+ - Code examples
137
+ - Testing notes
138
+ - Document expected behavior and edge cases
139
+ - Include real-world output examples