superkit-mcp-server 1.2.3 → 1.2.4

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 (161) 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/tools/sessionManager.js +79 -10
  20. package/build/tools/todoTools.js +39 -39
  21. package/build/tools/validators/__tests__/apiSchema.test.js +23 -23
  22. package/build/tools/validators/__tests__/convertRules.test.js +5 -5
  23. package/build/tools/validators/__tests__/frontendDesign.test.js +12 -12
  24. package/build/tools/validators/__tests__/geoChecker.test.js +19 -19
  25. package/build/tools/validators/__tests__/mobileAudit.test.js +12 -12
  26. package/build/tools/validators/__tests__/reactPerformanceChecker.test.js +17 -17
  27. package/build/tools/validators/__tests__/securityScan.test.js +6 -6
  28. package/build/tools/validators/__tests__/seoChecker.test.js +16 -16
  29. package/build/tools/validators/__tests__/typeCoverage.test.js +14 -14
  30. package/commands/README.md +122 -122
  31. package/commands/ask.toml +72 -72
  32. package/commands/brainstorm.toml +119 -119
  33. package/commands/chat.toml +77 -77
  34. package/commands/code-preview.toml +37 -37
  35. package/commands/code.toml +28 -28
  36. package/commands/content.toml +200 -200
  37. package/commands/cook.toml +77 -77
  38. package/commands/copywrite.toml +131 -131
  39. package/commands/db.toml +192 -192
  40. package/commands/debug.toml +166 -166
  41. package/commands/design.toml +158 -158
  42. package/commands/dev-rules.toml +14 -14
  43. package/commands/do.toml +117 -117
  44. package/commands/doc-rules.toml +14 -14
  45. package/commands/docs.toml +148 -148
  46. package/commands/fix.toml +440 -440
  47. package/commands/fullstack.toml +175 -175
  48. package/commands/git.toml +235 -235
  49. package/commands/help.toml +84 -84
  50. package/commands/integrate.toml +127 -127
  51. package/commands/journal.toml +136 -136
  52. package/commands/kit-setup.toml +40 -40
  53. package/commands/mcp.toml +183 -183
  54. package/commands/orchestration.toml +15 -15
  55. package/commands/plan.toml +171 -171
  56. package/commands/pm.toml +148 -148
  57. package/commands/pr.toml +50 -50
  58. package/commands/project.toml +32 -32
  59. package/commands/research.toml +117 -117
  60. package/commands/review-pr.toml +63 -63
  61. package/commands/review.toml +190 -190
  62. package/commands/scout-ext.toml +97 -97
  63. package/commands/scout.toml +79 -79
  64. package/commands/screenshot.toml +65 -65
  65. package/commands/session.toml +102 -102
  66. package/commands/skill.toml +384 -384
  67. package/commands/status.toml +22 -22
  68. package/commands/team.toml +56 -56
  69. package/commands/test.toml +164 -164
  70. package/commands/ticket.toml +70 -70
  71. package/commands/use.toml +106 -106
  72. package/commands/video.toml +83 -83
  73. package/commands/watzup.toml +71 -71
  74. package/commands/workflow.toml +14 -14
  75. package/package.json +35 -35
  76. package/skills/meta/README.md +30 -30
  77. package/skills/meta/api-design/SKILL.md +134 -134
  78. package/skills/meta/code-review/SKILL.md +44 -44
  79. package/skills/meta/code-review/checklists/pre-merge.md +25 -25
  80. package/skills/meta/code-review/workflows/architecture-pass.md +26 -26
  81. package/skills/meta/code-review/workflows/performance-pass.md +27 -27
  82. package/skills/meta/code-review/workflows/security-pass.md +29 -29
  83. package/skills/meta/compound-docs/SKILL.md +133 -133
  84. package/skills/meta/debug/SKILL.md +40 -40
  85. package/skills/meta/debug/templates/bug-report.template.md +31 -31
  86. package/skills/meta/debug/workflows/reproduce-issue.md +20 -20
  87. package/skills/meta/docker/SKILL.md +126 -126
  88. package/skills/meta/examples/supabase/SKILL.md +46 -46
  89. package/skills/meta/examples/supabase/references/best-practices.md +319 -319
  90. package/skills/meta/examples/supabase/references/common-patterns.md +373 -373
  91. package/skills/meta/examples/supabase/templates/migration-template.sql +49 -49
  92. package/skills/meta/examples/supabase/templates/rls-policy-template.sql +77 -77
  93. package/skills/meta/examples/supabase/workflows/debugging.md +260 -260
  94. package/skills/meta/examples/supabase/workflows/migration-workflow.md +211 -211
  95. package/skills/meta/examples/supabase/workflows/rls-policies.md +244 -244
  96. package/skills/meta/examples/supabase/workflows/schema-design.md +321 -321
  97. package/skills/meta/file-todos/SKILL.md +88 -88
  98. package/skills/meta/mobile/SKILL.md +140 -140
  99. package/skills/meta/nextjs/SKILL.md +101 -101
  100. package/skills/meta/performance/SKILL.md +130 -130
  101. package/skills/meta/react-patterns/SKILL.md +83 -83
  102. package/skills/meta/security/SKILL.md +114 -114
  103. package/skills/meta/session-resume/SKILL.md +96 -96
  104. package/skills/meta/tailwind/SKILL.md +139 -139
  105. package/skills/meta/testing/SKILL.md +43 -43
  106. package/skills/meta/testing/references/vitest-patterns.md +45 -45
  107. package/skills/meta/testing/templates/component-test.template.tsx +37 -37
  108. package/skills/tech/alpha-vantage/SKILL.md +142 -142
  109. package/skills/tech/alpha-vantage/references/commodities.md +153 -153
  110. package/skills/tech/alpha-vantage/references/economic-indicators.md +158 -158
  111. package/skills/tech/alpha-vantage/references/forex-crypto.md +154 -154
  112. package/skills/tech/alpha-vantage/references/fundamentals.md +223 -223
  113. package/skills/tech/alpha-vantage/references/intelligence.md +138 -138
  114. package/skills/tech/alpha-vantage/references/options.md +93 -93
  115. package/skills/tech/alpha-vantage/references/technical-indicators.md +374 -374
  116. package/skills/tech/alpha-vantage/references/time-series.md +157 -157
  117. package/skills/tech/financial-modeling/SKILL.md +18 -18
  118. package/skills/tech/financial-modeling/skills/3-statements/SKILL.md +368 -368
  119. package/skills/tech/financial-modeling/skills/3-statements/references/formatting.md +118 -118
  120. package/skills/tech/financial-modeling/skills/3-statements/references/formulas.md +292 -292
  121. package/skills/tech/financial-modeling/skills/3-statements/references/sec-filings.md +125 -125
  122. package/skills/tech/financial-modeling/skills/dcf-model/SKILL.md +1210 -1210
  123. package/skills/tech/financial-modeling/skills/dcf-model/TROUBLESHOOTING.md +40 -40
  124. package/skills/tech/financial-modeling/skills/dcf-model/requirements.txt +8 -8
  125. package/skills/tech/financial-modeling/skills/dcf-model/scripts/validate_dcf.py +292 -292
  126. package/skills/tech/financial-modeling/skills/lbo-model/SKILL.md +236 -236
  127. package/skills/tech/financial-modeling/skills/merger-model/SKILL.md +108 -108
  128. package/skills/workflows/README.md +203 -203
  129. package/skills/workflows/adr.md +174 -174
  130. package/skills/workflows/changelog.md +74 -74
  131. package/skills/workflows/compound.md +323 -323
  132. package/skills/workflows/compound_health.md +74 -74
  133. package/skills/workflows/create-agent-skill.md +138 -138
  134. package/skills/workflows/cycle.md +144 -144
  135. package/skills/workflows/deploy-docs.md +84 -84
  136. package/skills/workflows/development-rules.md +42 -42
  137. package/skills/workflows/doc.md +95 -95
  138. package/skills/workflows/documentation-management.md +34 -34
  139. package/skills/workflows/explore.md +146 -146
  140. package/skills/workflows/generate_command.md +106 -106
  141. package/skills/workflows/heal-skill.md +97 -97
  142. package/skills/workflows/housekeeping.md +229 -229
  143. package/skills/workflows/kit-setup.md +102 -102
  144. package/skills/workflows/map-codebase.md +78 -78
  145. package/skills/workflows/orchestration-protocol.md +43 -43
  146. package/skills/workflows/plan-compound.md +439 -439
  147. package/skills/workflows/plan_review.md +269 -269
  148. package/skills/workflows/primary-workflow.md +37 -37
  149. package/skills/workflows/promote_pattern.md +86 -86
  150. package/skills/workflows/release-docs.md +82 -82
  151. package/skills/workflows/report-bug.md +135 -135
  152. package/skills/workflows/reproduce-bug.md +118 -118
  153. package/skills/workflows/resolve_pr.md +133 -133
  154. package/skills/workflows/resolve_todo.md +128 -128
  155. package/skills/workflows/review-compound.md +376 -376
  156. package/skills/workflows/skill-review.md +127 -127
  157. package/skills/workflows/specs.md +257 -257
  158. package/skills/workflows/triage-sprint.md +102 -102
  159. package/skills/workflows/triage.md +152 -152
  160. package/skills/workflows/work.md +399 -399
  161. 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
+