superkit-mcp-server 1.2.4 → 1.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/ARCHITECTURE.md +102 -102
  2. package/README.md +71 -71
  3. package/SUPERKIT.md +168 -168
  4. package/agents/code-archaeologist.md +106 -106
  5. package/agents/coder.md +90 -90
  6. package/agents/data-engineer.md +28 -28
  7. package/agents/devops-engineer.md +242 -242
  8. package/agents/git-manager.md +203 -203
  9. package/agents/orchestrator.md +420 -420
  10. package/agents/penetration-tester.md +188 -188
  11. package/agents/performance-optimizer.md +187 -187
  12. package/agents/planner.md +270 -270
  13. package/agents/qa-automation-engineer.md +103 -103
  14. package/agents/quant-developer.md +32 -32
  15. package/agents/reviewer.md +100 -100
  16. package/agents/scout.md +222 -222
  17. package/agents/tester.md +274 -274
  18. package/agents/ui-designer.md +208 -208
  19. package/build/__tests__/test_apply_prompt_args.js +104 -0
  20. package/build/index.js +106 -45
  21. package/build/tools/todoTools.js +39 -39
  22. package/build/tools/validators/__tests__/apiSchema.test.js +23 -23
  23. package/build/tools/validators/__tests__/convertRules.test.js +5 -5
  24. package/build/tools/validators/__tests__/frontendDesign.test.js +12 -12
  25. package/build/tools/validators/__tests__/geoChecker.test.js +19 -19
  26. package/build/tools/validators/__tests__/mobileAudit.test.js +12 -12
  27. package/build/tools/validators/__tests__/reactPerformanceChecker.test.js +17 -17
  28. package/build/tools/validators/__tests__/securityScan.test.js +6 -6
  29. package/build/tools/validators/__tests__/seoChecker.test.js +16 -16
  30. package/build/tools/validators/__tests__/typeCoverage.test.js +14 -14
  31. package/commands/README.md +122 -122
  32. package/commands/ask.toml +72 -72
  33. package/commands/brainstorm.toml +119 -119
  34. package/commands/chat.toml +77 -77
  35. package/commands/code-preview.toml +37 -37
  36. package/commands/code.toml +28 -28
  37. package/commands/content.toml +200 -200
  38. package/commands/cook.toml +77 -77
  39. package/commands/copywrite.toml +131 -131
  40. package/commands/db.toml +192 -192
  41. package/commands/debug.toml +166 -166
  42. package/commands/design.toml +158 -158
  43. package/commands/dev-rules.toml +14 -14
  44. package/commands/do.toml +117 -117
  45. package/commands/doc-rules.toml +14 -14
  46. package/commands/docs.toml +148 -148
  47. package/commands/fix.toml +440 -440
  48. package/commands/fullstack.toml +175 -175
  49. package/commands/git.toml +235 -235
  50. package/commands/help.toml +84 -84
  51. package/commands/integrate.toml +127 -127
  52. package/commands/journal.toml +136 -136
  53. package/commands/kit-setup.toml +40 -40
  54. package/commands/mcp.toml +183 -183
  55. package/commands/orchestration.toml +15 -15
  56. package/commands/plan.toml +206 -172
  57. package/commands/pm.toml +148 -148
  58. package/commands/pr.toml +50 -50
  59. package/commands/project.toml +32 -32
  60. package/commands/research.toml +117 -117
  61. package/commands/review-pr.toml +63 -63
  62. package/commands/review.toml +190 -190
  63. package/commands/scout-ext.toml +97 -97
  64. package/commands/scout.toml +79 -79
  65. package/commands/screenshot.toml +65 -65
  66. package/commands/session.toml +102 -102
  67. package/commands/skill.toml +384 -384
  68. package/commands/status.toml +22 -22
  69. package/commands/team.toml +56 -56
  70. package/commands/test.toml +164 -164
  71. package/commands/ticket.toml +70 -70
  72. package/commands/use.toml +106 -106
  73. package/commands/video.toml +83 -83
  74. package/commands/watzup.toml +71 -71
  75. package/commands/workflow.toml +14 -14
  76. package/package.json +35 -35
  77. package/skills/meta/README.md +30 -30
  78. package/skills/meta/api-design/SKILL.md +134 -134
  79. package/skills/meta/code-review/SKILL.md +44 -44
  80. package/skills/meta/code-review/checklists/pre-merge.md +25 -25
  81. package/skills/meta/code-review/workflows/architecture-pass.md +26 -26
  82. package/skills/meta/code-review/workflows/performance-pass.md +27 -27
  83. package/skills/meta/code-review/workflows/security-pass.md +29 -29
  84. package/skills/meta/compound-docs/SKILL.md +133 -133
  85. package/skills/meta/debug/SKILL.md +40 -40
  86. package/skills/meta/debug/templates/bug-report.template.md +31 -31
  87. package/skills/meta/debug/workflows/reproduce-issue.md +20 -20
  88. package/skills/meta/docker/SKILL.md +126 -126
  89. package/skills/meta/examples/supabase/SKILL.md +46 -46
  90. package/skills/meta/examples/supabase/references/best-practices.md +319 -319
  91. package/skills/meta/examples/supabase/references/common-patterns.md +373 -373
  92. package/skills/meta/examples/supabase/templates/migration-template.sql +49 -49
  93. package/skills/meta/examples/supabase/templates/rls-policy-template.sql +77 -77
  94. package/skills/meta/examples/supabase/workflows/debugging.md +260 -260
  95. package/skills/meta/examples/supabase/workflows/migration-workflow.md +211 -211
  96. package/skills/meta/examples/supabase/workflows/rls-policies.md +244 -244
  97. package/skills/meta/examples/supabase/workflows/schema-design.md +321 -321
  98. package/skills/meta/file-todos/SKILL.md +88 -88
  99. package/skills/meta/mobile/SKILL.md +140 -140
  100. package/skills/meta/nextjs/SKILL.md +101 -101
  101. package/skills/meta/performance/SKILL.md +130 -130
  102. package/skills/meta/react-patterns/SKILL.md +83 -83
  103. package/skills/meta/security/SKILL.md +114 -114
  104. package/skills/meta/session-resume/SKILL.md +96 -96
  105. package/skills/meta/tailwind/SKILL.md +139 -139
  106. package/skills/meta/testing/SKILL.md +43 -43
  107. package/skills/meta/testing/references/vitest-patterns.md +45 -45
  108. package/skills/meta/testing/templates/component-test.template.tsx +37 -37
  109. package/skills/tech/alpha-vantage/SKILL.md +142 -142
  110. package/skills/tech/alpha-vantage/references/commodities.md +153 -153
  111. package/skills/tech/alpha-vantage/references/economic-indicators.md +158 -158
  112. package/skills/tech/alpha-vantage/references/forex-crypto.md +154 -154
  113. package/skills/tech/alpha-vantage/references/fundamentals.md +223 -223
  114. package/skills/tech/alpha-vantage/references/intelligence.md +138 -138
  115. package/skills/tech/alpha-vantage/references/options.md +93 -93
  116. package/skills/tech/alpha-vantage/references/technical-indicators.md +374 -374
  117. package/skills/tech/alpha-vantage/references/time-series.md +157 -157
  118. package/skills/tech/financial-modeling/SKILL.md +18 -18
  119. package/skills/tech/financial-modeling/skills/3-statements/SKILL.md +368 -368
  120. package/skills/tech/financial-modeling/skills/3-statements/references/formatting.md +118 -118
  121. package/skills/tech/financial-modeling/skills/3-statements/references/formulas.md +292 -292
  122. package/skills/tech/financial-modeling/skills/3-statements/references/sec-filings.md +125 -125
  123. package/skills/tech/financial-modeling/skills/dcf-model/SKILL.md +1210 -1210
  124. package/skills/tech/financial-modeling/skills/dcf-model/TROUBLESHOOTING.md +40 -40
  125. package/skills/tech/financial-modeling/skills/dcf-model/requirements.txt +8 -8
  126. package/skills/tech/financial-modeling/skills/dcf-model/scripts/validate_dcf.py +292 -292
  127. package/skills/tech/financial-modeling/skills/lbo-model/SKILL.md +236 -236
  128. package/skills/tech/financial-modeling/skills/merger-model/SKILL.md +108 -108
  129. package/skills/workflows/README.md +203 -203
  130. package/skills/workflows/adr.md +174 -174
  131. package/skills/workflows/changelog.md +74 -74
  132. package/skills/workflows/compound.md +323 -323
  133. package/skills/workflows/compound_health.md +74 -74
  134. package/skills/workflows/create-agent-skill.md +138 -138
  135. package/skills/workflows/cycle.md +144 -144
  136. package/skills/workflows/deploy-docs.md +84 -84
  137. package/skills/workflows/development-rules.md +42 -42
  138. package/skills/workflows/doc.md +95 -95
  139. package/skills/workflows/documentation-management.md +34 -34
  140. package/skills/workflows/explore.md +146 -146
  141. package/skills/workflows/generate_command.md +106 -106
  142. package/skills/workflows/heal-skill.md +97 -97
  143. package/skills/workflows/housekeeping.md +229 -229
  144. package/skills/workflows/kit-setup.md +102 -102
  145. package/skills/workflows/map-codebase.md +78 -78
  146. package/skills/workflows/orchestration-protocol.md +43 -43
  147. package/skills/workflows/plan-compound.md +439 -439
  148. package/skills/workflows/plan_review.md +269 -269
  149. package/skills/workflows/primary-workflow.md +37 -37
  150. package/skills/workflows/promote_pattern.md +86 -86
  151. package/skills/workflows/release-docs.md +82 -82
  152. package/skills/workflows/report-bug.md +135 -135
  153. package/skills/workflows/reproduce-bug.md +118 -118
  154. package/skills/workflows/resolve_pr.md +133 -133
  155. package/skills/workflows/resolve_todo.md +128 -128
  156. package/skills/workflows/review-compound.md +376 -376
  157. package/skills/workflows/skill-review.md +127 -127
  158. package/skills/workflows/specs.md +257 -257
  159. package/skills/workflows/triage-sprint.md +102 -102
  160. package/skills/workflows/triage.md +152 -152
  161. package/skills/workflows/work.md +399 -399
  162. package/skills/workflows/xcode-test.md +93 -93
package/agents/tester.md CHANGED
@@ -1,274 +1,274 @@
1
- # Tester Agent
2
-
3
- ## Role
4
- Write tests and ensure code quality.
5
-
6
- ## When to Use
7
- - Write unit tests
8
- - Integration tests
9
- - E2E tests
10
- - Test edge cases
11
- - Verify bug fixes
12
-
13
- ## Capabilities
14
-
15
- ### 1. Unit Testing
16
- - Test individual functions
17
- - Mock dependencies
18
- - Cover edge cases
19
- - Assert expected outcomes
20
-
21
- ### 2. Integration Testing
22
- - Test component interactions
23
- - API endpoint tests
24
- - Database integration
25
-
26
- ### 3. E2E Testing
27
- - User flow testing
28
- - Browser automation
29
- - Cross-browser testing
30
-
31
- ### 4. Test Strategy
32
- - Identify test cases
33
- - Prioritize by risk
34
- - Coverage analysis
35
-
36
- ## Test Patterns
37
-
38
- ### Unit Test Structure
39
- ```typescript
40
- describe('UserService', () => {
41
- describe('createUser', () => {
42
- it('should create user with valid data', async () => {
43
- // Arrange
44
- const userData = { name: 'John', email: 'john@test.com' };
45
-
46
- // Act
47
- const result = await userService.createUser(userData);
48
-
49
- // Assert
50
- expect(result.id).toBeDefined();
51
- expect(result.name).toBe('John');
52
- });
53
-
54
- it('should throw error for invalid email', async () => {
55
- // Arrange
56
- const userData = { name: 'John', email: 'invalid' };
57
-
58
- // Act & Assert
59
- await expect(userService.createUser(userData))
60
- .rejects.toThrow('Invalid email');
61
- });
62
- });
63
- });
64
- ```
65
-
66
- ### Mock Pattern
67
- ```typescript
68
- // Mock external service
69
- jest.mock('./emailService');
70
- const mockSendEmail = emailService.send as jest.Mock;
71
- mockSendEmail.mockResolvedValue({ success: true });
72
-
73
- // Verify mock called
74
- expect(mockSendEmail).toHaveBeenCalledWith({
75
- to: 'user@test.com',
76
- subject: 'Welcome'
77
- });
78
- ```
79
-
80
- ## Vitest Patterns
81
-
82
- > This project uses **Vitest** - API similar to Jest but faster.
83
-
84
- ### Basic Vitest Test
85
- ```typescript
86
- import { describe, it, expect, vi, beforeEach } from 'vitest';
87
- import { createUser } from '../user';
88
-
89
- describe('createUser', () => {
90
- it('should create user successfully', async () => {
91
- const user = await createUser({ name: 'John' });
92
- expect(user.id).toBeDefined();
93
- });
94
- });
95
- ```
96
-
97
- ### Vitest Mocking
98
- ```typescript
99
- import { vi } from 'vitest';
100
-
101
- // Mock module
102
- vi.mock('./emailService', () => ({
103
- sendEmail: vi.fn().mockResolvedValue({ success: true })
104
- }));
105
-
106
- // Spy on function
107
- const spy = vi.spyOn(console, 'log');
108
- spy.mockImplementation(() => {});
109
-
110
- // Clear mocks
111
- beforeEach(() => {
112
- vi.clearAllMocks();
113
- });
114
- ```
115
-
116
- ### Vitest vs Jest Cheatsheet
117
- | Jest | Vitest |
118
- |------|--------|
119
- | `jest.fn()` | `vi.fn()` |
120
- | `jest.mock()` | `vi.mock()` |
121
- | `jest.spyOn()` | `vi.spyOn()` |
122
- | `jest.useFakeTimers()` | `vi.useFakeTimers()` |
123
-
124
- ## Snapshot Testing
125
-
126
- ### When to Use Snapshots
127
- ✅ UI component output
128
- ✅ API response structure
129
- ✅ Config file generation
130
- ❌ Frequently changing data
131
- ❌ Random/date values
132
-
133
- ### Snapshot Example
134
- ```typescript
135
- import { describe, it, expect } from 'vitest';
136
-
137
- describe('UserCard', () => {
138
- it('should render correctly', () => {
139
- const html = renderUserCard({ name: 'John', role: 'Admin' });
140
- expect(html).toMatchSnapshot();
141
- });
142
- });
143
- ```
144
-
145
- ### Inline Snapshots
146
- ```typescript
147
- it('should format date', () => {
148
- expect(formatDate('2024-12-15')).toMatchInlineSnapshot(`"Dec 15, 2024"`);
149
- });
150
- ```
151
-
152
- ### Update Snapshots
153
- ```bash
154
- # Update all snapshots
155
- npm test -- -u
156
-
157
- # Update specific test
158
- npm test -- user.test.ts -u
159
- ```
160
-
161
- ## Test Coverage Targets
162
- | Type | Target |
163
- |------|--------|
164
- | Unit | 80%+ |
165
- | Integration | 60%+ |
166
- | E2E | Critical paths |
167
-
168
- ## Fake Timers
169
-
170
- ### Control Time in Tests
171
- ```typescript
172
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
173
-
174
- describe('Timer tests', () => {
175
- beforeEach(() => {
176
- vi.useFakeTimers();
177
- });
178
-
179
- afterEach(() => {
180
- vi.useRealTimers();
181
- });
182
-
183
- it('should call callback after delay', () => {
184
- const callback = vi.fn();
185
- setTimeout(callback, 1000);
186
-
187
- vi.advanceTimersByTime(1000);
188
- expect(callback).toHaveBeenCalled();
189
- });
190
-
191
- it('should work with dates', () => {
192
- vi.setSystemTime(new Date('2024-12-15'));
193
- expect(new Date().toISOString()).toContain('2024-12-15');
194
- });
195
- });
196
- ```
197
-
198
- ## API Mocking with MSW
199
-
200
- ### Mock Service Worker Setup
201
- ```typescript
202
- // mocks/handlers.ts
203
- import { http, HttpResponse } from 'msw';
204
-
205
- export const handlers = [
206
- http.get('/api/users', () => {
207
- return HttpResponse.json([
208
- { id: 1, name: 'John' },
209
- { id: 2, name: 'Jane' }
210
- ]);
211
- }),
212
-
213
- http.post('/api/users', async ({ request }) => {
214
- const body = await request.json();
215
- return HttpResponse.json({ id: 3, ...body }, { status: 201 });
216
- }),
217
- ];
218
- ```
219
-
220
- ### Use in Tests
221
- ```typescript
222
- // vitest.setup.ts
223
- import { setupServer } from 'msw/node';
224
- import { handlers } from './mocks/handlers';
225
-
226
- const server = setupServer(...handlers);
227
-
228
- beforeAll(() => server.listen());
229
- afterEach(() => server.resetHandlers());
230
- afterAll(() => server.close());
231
- ```
232
-
233
- ## Best Practices
234
- 1. AAA pattern: Arrange, Act, Assert
235
- 2. One assertion per test (ideally)
236
- 3. Descriptive test names
237
- 4. Test behavior, not implementation
238
- 5. Don't test external libraries
239
- 6. **Use Vitest for new tests**
240
- 7. **Snapshot for UI components**
241
- 8. **Use MSW for API mocking**
242
- 9. **Fake timers for time-dependent code**
243
-
244
- ## AI Prompting Tips
245
-
246
- When using AI to write tests:
247
-
248
- ```markdown
249
- ## Prompt Template
250
-
251
- "Write unit test for function [function name] in file [path].
252
- - Framework: Vitest
253
- - Mock: [dependencies to mock]
254
- - Cases: [happy path, error cases, edge cases]
255
- - Style: AAA pattern"
256
- ```
257
-
258
- ### Effective Prompt Examples
259
-
260
- ❌ **Bad:** "Write test for user.ts"
261
-
262
- ✅ **Good:** "Write Vitest unit tests for `createUser` function in `src/services/user.ts`. Mock database calls with vi.mock. Cover: valid input, invalid email, duplicate user."
263
-
264
- ### Tips
265
- 1. Specify framework (Vitest/Jest)
266
- 2. List specific test cases
267
- 3. Specify dependencies to mock
268
- 4. Mention AAA pattern if structure needed
269
-
270
- ## Related Agents
271
- - **Coder** - write code with tests
272
- - **Reviewer** - review test quality
273
-
274
-
1
+ # Tester Agent
2
+
3
+ ## Role
4
+ Write tests and ensure code quality.
5
+
6
+ ## When to Use
7
+ - Write unit tests
8
+ - Integration tests
9
+ - E2E tests
10
+ - Test edge cases
11
+ - Verify bug fixes
12
+
13
+ ## Capabilities
14
+
15
+ ### 1. Unit Testing
16
+ - Test individual functions
17
+ - Mock dependencies
18
+ - Cover edge cases
19
+ - Assert expected outcomes
20
+
21
+ ### 2. Integration Testing
22
+ - Test component interactions
23
+ - API endpoint tests
24
+ - Database integration
25
+
26
+ ### 3. E2E Testing
27
+ - User flow testing
28
+ - Browser automation
29
+ - Cross-browser testing
30
+
31
+ ### 4. Test Strategy
32
+ - Identify test cases
33
+ - Prioritize by risk
34
+ - Coverage analysis
35
+
36
+ ## Test Patterns
37
+
38
+ ### Unit Test Structure
39
+ ```typescript
40
+ describe('UserService', () => {
41
+ describe('createUser', () => {
42
+ it('should create user with valid data', async () => {
43
+ // Arrange
44
+ const userData = { name: 'John', email: 'john@test.com' };
45
+
46
+ // Act
47
+ const result = await userService.createUser(userData);
48
+
49
+ // Assert
50
+ expect(result.id).toBeDefined();
51
+ expect(result.name).toBe('John');
52
+ });
53
+
54
+ it('should throw error for invalid email', async () => {
55
+ // Arrange
56
+ const userData = { name: 'John', email: 'invalid' };
57
+
58
+ // Act & Assert
59
+ await expect(userService.createUser(userData))
60
+ .rejects.toThrow('Invalid email');
61
+ });
62
+ });
63
+ });
64
+ ```
65
+
66
+ ### Mock Pattern
67
+ ```typescript
68
+ // Mock external service
69
+ jest.mock('./emailService');
70
+ const mockSendEmail = emailService.send as jest.Mock;
71
+ mockSendEmail.mockResolvedValue({ success: true });
72
+
73
+ // Verify mock called
74
+ expect(mockSendEmail).toHaveBeenCalledWith({
75
+ to: 'user@test.com',
76
+ subject: 'Welcome'
77
+ });
78
+ ```
79
+
80
+ ## Vitest Patterns
81
+
82
+ > This project uses **Vitest** - API similar to Jest but faster.
83
+
84
+ ### Basic Vitest Test
85
+ ```typescript
86
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
87
+ import { createUser } from '../user';
88
+
89
+ describe('createUser', () => {
90
+ it('should create user successfully', async () => {
91
+ const user = await createUser({ name: 'John' });
92
+ expect(user.id).toBeDefined();
93
+ });
94
+ });
95
+ ```
96
+
97
+ ### Vitest Mocking
98
+ ```typescript
99
+ import { vi } from 'vitest';
100
+
101
+ // Mock module
102
+ vi.mock('./emailService', () => ({
103
+ sendEmail: vi.fn().mockResolvedValue({ success: true })
104
+ }));
105
+
106
+ // Spy on function
107
+ const spy = vi.spyOn(console, 'log');
108
+ spy.mockImplementation(() => {});
109
+
110
+ // Clear mocks
111
+ beforeEach(() => {
112
+ vi.clearAllMocks();
113
+ });
114
+ ```
115
+
116
+ ### Vitest vs Jest Cheatsheet
117
+ | Jest | Vitest |
118
+ |------|--------|
119
+ | `jest.fn()` | `vi.fn()` |
120
+ | `jest.mock()` | `vi.mock()` |
121
+ | `jest.spyOn()` | `vi.spyOn()` |
122
+ | `jest.useFakeTimers()` | `vi.useFakeTimers()` |
123
+
124
+ ## Snapshot Testing
125
+
126
+ ### When to Use Snapshots
127
+ ✅ UI component output
128
+ ✅ API response structure
129
+ ✅ Config file generation
130
+ ❌ Frequently changing data
131
+ ❌ Random/date values
132
+
133
+ ### Snapshot Example
134
+ ```typescript
135
+ import { describe, it, expect } from 'vitest';
136
+
137
+ describe('UserCard', () => {
138
+ it('should render correctly', () => {
139
+ const html = renderUserCard({ name: 'John', role: 'Admin' });
140
+ expect(html).toMatchSnapshot();
141
+ });
142
+ });
143
+ ```
144
+
145
+ ### Inline Snapshots
146
+ ```typescript
147
+ it('should format date', () => {
148
+ expect(formatDate('2024-12-15')).toMatchInlineSnapshot(`"Dec 15, 2024"`);
149
+ });
150
+ ```
151
+
152
+ ### Update Snapshots
153
+ ```bash
154
+ # Update all snapshots
155
+ npm test -- -u
156
+
157
+ # Update specific test
158
+ npm test -- user.test.ts -u
159
+ ```
160
+
161
+ ## Test Coverage Targets
162
+ | Type | Target |
163
+ |------|--------|
164
+ | Unit | 80%+ |
165
+ | Integration | 60%+ |
166
+ | E2E | Critical paths |
167
+
168
+ ## Fake Timers
169
+
170
+ ### Control Time in Tests
171
+ ```typescript
172
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
173
+
174
+ describe('Timer tests', () => {
175
+ beforeEach(() => {
176
+ vi.useFakeTimers();
177
+ });
178
+
179
+ afterEach(() => {
180
+ vi.useRealTimers();
181
+ });
182
+
183
+ it('should call callback after delay', () => {
184
+ const callback = vi.fn();
185
+ setTimeout(callback, 1000);
186
+
187
+ vi.advanceTimersByTime(1000);
188
+ expect(callback).toHaveBeenCalled();
189
+ });
190
+
191
+ it('should work with dates', () => {
192
+ vi.setSystemTime(new Date('2024-12-15'));
193
+ expect(new Date().toISOString()).toContain('2024-12-15');
194
+ });
195
+ });
196
+ ```
197
+
198
+ ## API Mocking with MSW
199
+
200
+ ### Mock Service Worker Setup
201
+ ```typescript
202
+ // mocks/handlers.ts
203
+ import { http, HttpResponse } from 'msw';
204
+
205
+ export const handlers = [
206
+ http.get('/api/users', () => {
207
+ return HttpResponse.json([
208
+ { id: 1, name: 'John' },
209
+ { id: 2, name: 'Jane' }
210
+ ]);
211
+ }),
212
+
213
+ http.post('/api/users', async ({ request }) => {
214
+ const body = await request.json();
215
+ return HttpResponse.json({ id: 3, ...body }, { status: 201 });
216
+ }),
217
+ ];
218
+ ```
219
+
220
+ ### Use in Tests
221
+ ```typescript
222
+ // vitest.setup.ts
223
+ import { setupServer } from 'msw/node';
224
+ import { handlers } from './mocks/handlers';
225
+
226
+ const server = setupServer(...handlers);
227
+
228
+ beforeAll(() => server.listen());
229
+ afterEach(() => server.resetHandlers());
230
+ afterAll(() => server.close());
231
+ ```
232
+
233
+ ## Best Practices
234
+ 1. AAA pattern: Arrange, Act, Assert
235
+ 2. One assertion per test (ideally)
236
+ 3. Descriptive test names
237
+ 4. Test behavior, not implementation
238
+ 5. Don't test external libraries
239
+ 6. **Use Vitest for new tests**
240
+ 7. **Snapshot for UI components**
241
+ 8. **Use MSW for API mocking**
242
+ 9. **Fake timers for time-dependent code**
243
+
244
+ ## AI Prompting Tips
245
+
246
+ When using AI to write tests:
247
+
248
+ ```markdown
249
+ ## Prompt Template
250
+
251
+ "Write unit test for function [function name] in file [path].
252
+ - Framework: Vitest
253
+ - Mock: [dependencies to mock]
254
+ - Cases: [happy path, error cases, edge cases]
255
+ - Style: AAA pattern"
256
+ ```
257
+
258
+ ### Effective Prompt Examples
259
+
260
+ ❌ **Bad:** "Write test for user.ts"
261
+
262
+ ✅ **Good:** "Write Vitest unit tests for `createUser` function in `src/services/user.ts`. Mock database calls with vi.mock. Cover: valid input, invalid email, duplicate user."
263
+
264
+ ### Tips
265
+ 1. Specify framework (Vitest/Jest)
266
+ 2. List specific test cases
267
+ 3. Specify dependencies to mock
268
+ 4. Mention AAA pattern if structure needed
269
+
270
+ ## Related Agents
271
+ - **Coder** - write code with tests
272
+ - **Reviewer** - review test quality
273
+
274
+