claude-mpm 5.4.55__py3-none-any.whl → 5.4.85__py3-none-any.whl

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 (173) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/CLAUDE_MPM_FOUNDERS_OUTPUT_STYLE.md +405 -0
  3. claude_mpm/agents/CLAUDE_MPM_OUTPUT_STYLE.md +63 -241
  4. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +109 -1925
  5. claude_mpm/agents/PM_INSTRUCTIONS.md +36 -9
  6. claude_mpm/cli/__init__.py +5 -1
  7. claude_mpm/cli/commands/agents.py +2 -4
  8. claude_mpm/cli/commands/agents_reconcile.py +197 -0
  9. claude_mpm/cli/commands/configure.py +620 -21
  10. claude_mpm/cli/commands/skills.py +166 -14
  11. claude_mpm/cli/executor.py +1 -0
  12. claude_mpm/cli/interactive/__init__.py +10 -0
  13. claude_mpm/cli/interactive/agent_wizard.py +30 -50
  14. claude_mpm/cli/interactive/questionary_styles.py +65 -0
  15. claude_mpm/cli/interactive/skill_selector.py +481 -0
  16. claude_mpm/cli/parsers/base_parser.py +5 -0
  17. claude_mpm/cli/startup.py +223 -388
  18. claude_mpm/constants.py +1 -0
  19. claude_mpm/core/claude_runner.py +2 -2
  20. claude_mpm/core/interactive_session.py +7 -7
  21. claude_mpm/core/output_style_manager.py +21 -13
  22. claude_mpm/core/unified_config.py +50 -8
  23. claude_mpm/core/unified_paths.py +30 -13
  24. claude_mpm/scripts/start_activity_logging.py +0 -0
  25. claude_mpm/services/agents/deployment/agent_template_builder.py +8 -0
  26. claude_mpm/services/agents/deployment/deployment_reconciler.py +577 -0
  27. claude_mpm/services/agents/deployment/startup_reconciliation.py +138 -0
  28. claude_mpm/services/agents/sources/git_source_sync_service.py +7 -4
  29. claude_mpm/services/agents/startup_sync.py +5 -2
  30. claude_mpm/services/pm_skills_deployer.py +4 -0
  31. claude_mpm/services/skills/git_skill_source_manager.py +24 -8
  32. claude_mpm/services/skills/selective_skill_deployer.py +82 -83
  33. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
  34. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
  35. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
  36. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
  37. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
  38. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
  39. claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
  40. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
  41. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
  42. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
  43. claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
  44. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
  45. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
  46. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
  47. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
  48. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
  49. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
  50. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
  51. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
  52. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
  53. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
  54. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
  55. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
  56. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
  57. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
  58. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
  59. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
  60. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
  61. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
  62. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
  63. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
  64. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
  65. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
  66. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -0
  67. claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
  68. claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
  69. claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
  70. claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
  71. claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
  72. claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
  73. claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
  74. claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
  75. claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
  76. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +86 -0
  77. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
  78. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
  79. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
  80. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
  81. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
  82. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
  83. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
  84. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
  85. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
  86. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
  87. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
  88. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
  89. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
  90. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
  91. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
  92. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
  93. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
  94. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
  95. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
  96. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
  97. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
  98. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
  99. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
  100. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
  101. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
  102. claude_mpm/skills/bundled/pm/pm-bug-reporting/pm-bug-reporting.md +248 -0
  103. claude_mpm/skills/bundled/pm/pm-delegation-patterns/SKILL.md +167 -0
  104. claude_mpm/skills/bundled/pm/pm-git-file-tracking/SKILL.md +113 -0
  105. claude_mpm/skills/bundled/pm/pm-pr-workflow/SKILL.md +124 -0
  106. claude_mpm/skills/bundled/pm/pm-teaching-mode/SKILL.md +657 -0
  107. claude_mpm/skills/bundled/pm/pm-ticketing-integration/SKILL.md +154 -0
  108. claude_mpm/skills/bundled/pm/pm-verification-protocols/SKILL.md +198 -0
  109. claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
  110. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
  111. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
  112. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
  113. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
  114. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
  115. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
  116. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
  117. claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
  118. claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
  119. claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
  120. claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
  121. claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
  122. claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
  123. claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
  124. claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
  125. claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
  126. claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
  127. claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
  128. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +119 -0
  129. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
  130. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
  131. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
  132. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
  133. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
  134. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
  135. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
  136. claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
  137. claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
  138. claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
  139. claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
  140. claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
  141. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
  142. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
  143. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
  144. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
  145. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
  146. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
  147. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
  148. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
  149. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
  150. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
  151. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
  152. claude_mpm/utils/agent_dependency_loader.py +103 -4
  153. claude_mpm/utils/robust_installer.py +45 -24
  154. {claude_mpm-5.4.55.dist-info → claude_mpm-5.4.85.dist-info}/METADATA +47 -23
  155. {claude_mpm-5.4.55.dist-info → claude_mpm-5.4.85.dist-info}/RECORD +159 -47
  156. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  157. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
  158. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  159. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  160. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
  161. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  162. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  163. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
  164. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
  165. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  166. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
  167. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  168. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  169. {claude_mpm-5.4.55.dist-info → claude_mpm-5.4.85.dist-info}/WHEEL +0 -0
  170. {claude_mpm-5.4.55.dist-info → claude_mpm-5.4.85.dist-info}/entry_points.txt +0 -0
  171. {claude_mpm-5.4.55.dist-info → claude_mpm-5.4.85.dist-info}/licenses/LICENSE +0 -0
  172. {claude_mpm-5.4.55.dist-info → claude_mpm-5.4.85.dist-info}/licenses/LICENSE-FAQ.md +0 -0
  173. {claude_mpm-5.4.55.dist-info → claude_mpm-5.4.85.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,470 @@
1
+ # TDD Integration with Other Skills
2
+
3
+ > **Part of**: [Test-Driven Development](../SKILL.md)
4
+ > **Category**: testing
5
+ > **Reading Level**: Intermediate
6
+
7
+ ## Purpose
8
+
9
+ How to integrate test-driven development with other development skills and workflows, including debugging, refactoring, and defensive programming.
10
+
11
+ ## TDD + Systematic Debugging
12
+
13
+ ### Integration Point: Bug Reproduction
14
+
15
+ When a bug is found, combine TDD with systematic debugging:
16
+
17
+ **Process:**
18
+
19
+ 1. **Systematic Debugging Phase 1**: Investigate root cause
20
+ - Read error messages
21
+ - Reproduce consistently
22
+ - Gather evidence
23
+ - Form hypothesis
24
+
25
+ 2. **TDD RED**: Write failing test reproducing bug
26
+ ```typescript
27
+ test('handles empty array without error', () => {
28
+ const result = processArray([]);
29
+ expect(result).toEqual([]); // Currently fails
30
+ });
31
+ ```
32
+
33
+ 3. **Systematic Debugging Phase 4**: Verify hypothesis
34
+ - Test confirms bug exists
35
+ - Test shows exact failing case
36
+
37
+ 4. **TDD GREEN**: Fix implementation
38
+ ```typescript
39
+ function processArray(items: Item[]): Result[] {
40
+ if (items.length === 0) {
41
+ return []; // Fix edge case
42
+ }
43
+ return items.map(transform);
44
+ }
45
+ ```
46
+
47
+ 5. **TDD Verify GREEN**: Confirm fix
48
+ - Test passes
49
+ - Bug resolved
50
+ - Regression protection added
51
+
52
+ ### Example: Complete Bug Fix Workflow
53
+
54
+ **Bug Report:** "Application crashes when user has no items"
55
+
56
+ **Step 1: Systematic Investigation**
57
+ ```
58
+ Error: Cannot read property 'map' of undefined
59
+ Stack trace shows: processArray called with undefined
60
+
61
+ Root cause: items parameter is undefined when user has no items
62
+ ```
63
+
64
+ **Step 2: Write Failing Test**
65
+ ```typescript
66
+ test('handles undefined items gracefully', () => {
67
+ const result = processArray(undefined);
68
+ expect(result).toEqual([]);
69
+ });
70
+
71
+ // Run test
72
+ // FAIL: TypeError: Cannot read property 'map' of undefined
73
+ // ✓ Test reproduces bug
74
+ ```
75
+
76
+ **Step 3: Minimal Fix**
77
+ ```typescript
78
+ function processArray(items?: Item[]): Result[] {
79
+ if (!items || items.length === 0) {
80
+ return [];
81
+ }
82
+ return items.map(transform);
83
+ }
84
+ ```
85
+
86
+ **Step 4: Verify Fix**
87
+ ```bash
88
+ $ npm test
89
+ PASS: handles undefined items gracefully
90
+ PASS: processes normal array (existing test)
91
+ ```
92
+
93
+ **Benefit:** Bug fixed with permanent regression protection.
94
+
95
+ ## TDD + Refactoring
96
+
97
+ ### Integration Point: Safe Refactoring
98
+
99
+ Tests enable confident refactoring by catching breaks immediately.
100
+
101
+ **Workflow:**
102
+
103
+ 1. **Ensure Tests Exist**: Before refactoring, verify comprehensive test coverage
104
+ 2. **Verify GREEN**: All tests pass before starting
105
+ 3. **Refactor**: Make structural changes
106
+ 4. **Verify GREEN**: Tests still pass = behavior preserved
107
+ 5. **Repeat**: Continue refactoring with confidence
108
+
109
+ ### Example: Extract Service Layer
110
+
111
+ **Before Refactoring:**
112
+ ```typescript
113
+ // All logic in controller
114
+ class UserController {
115
+ async register(req, res) {
116
+ // Validation
117
+ if (!req.body.email.includes('@')) {
118
+ return res.status(400).json({ error: 'Invalid email' });
119
+ }
120
+
121
+ // Business logic
122
+ const user = await db.users.create(req.body);
123
+
124
+ // Response
125
+ return res.json({ user });
126
+ }
127
+ }
128
+
129
+ // Tests exist
130
+ describe('User Registration', () => {
131
+ test('registers valid user', async () => {
132
+ const response = await request(app)
133
+ .post('/register')
134
+ .send({ email: 'test@example.com', name: 'Test' });
135
+
136
+ expect(response.status).toBe(200);
137
+ expect(response.body.user).toBeDefined();
138
+ });
139
+
140
+ test('rejects invalid email', async () => {
141
+ const response = await request(app)
142
+ .post('/register')
143
+ .send({ email: 'invalid', name: 'Test' });
144
+
145
+ expect(response.status).toBe(400);
146
+ });
147
+ });
148
+ ```
149
+
150
+ **Refactoring Process:**
151
+
152
+ 1. **Verify GREEN**: Tests pass ✓
153
+
154
+ 2. **Extract validation**:
155
+ ```typescript
156
+ function validateEmail(email: string): boolean {
157
+ return email.includes('@');
158
+ }
159
+
160
+ class UserController {
161
+ async register(req, res) {
162
+ if (!validateEmail(req.body.email)) {
163
+ return res.status(400).json({ error: 'Invalid email' });
164
+ }
165
+ const user = await db.users.create(req.body);
166
+ return res.json({ user });
167
+ }
168
+ }
169
+ ```
170
+
171
+ 3. **Verify GREEN**: Tests pass ✓
172
+
173
+ 4. **Extract service**:
174
+ ```typescript
175
+ class UserService {
176
+ async createUser(data: UserData): Promise<User> {
177
+ if (!validateEmail(data.email)) {
178
+ throw new Error('Invalid email');
179
+ }
180
+ return db.users.create(data);
181
+ }
182
+ }
183
+
184
+ class UserController {
185
+ async register(req, res) {
186
+ try {
187
+ const user = await this.userService.createUser(req.body);
188
+ return res.json({ user });
189
+ } catch (error) {
190
+ return res.status(400).json({ error: error.message });
191
+ }
192
+ }
193
+ }
194
+ ```
195
+
196
+ 5. **Verify GREEN**: Tests pass ✓
197
+
198
+ **Result:** Refactored safely, behavior preserved, tests confirm correctness.
199
+
200
+ ## TDD + Defense in Depth
201
+
202
+ ### Integration Point: Validation at Boundaries
203
+
204
+ After TDD implementation, add defensive validation layers.
205
+
206
+ **Workflow:**
207
+
208
+ 1. **TDD Implementation**: Build feature with tests
209
+ 2. **Add Input Validation**: Test-drive validation at entry points
210
+ 3. **Add Precondition Checks**: Test-drive assertions in functions
211
+ 4. **Add Error Handling**: Test-drive error cases
212
+
213
+ ### Example: Building Robust Payment Processing
214
+
215
+ **Phase 1: Core Functionality (TDD)**
216
+ ```typescript
217
+ test('processes payment successfully', async () => {
218
+ const result = await processPayment({
219
+ amount: 100,
220
+ cardNumber: '4111111111111111',
221
+ cvv: '123'
222
+ });
223
+
224
+ expect(result.success).toBe(true);
225
+ expect(result.transactionId).toBeDefined();
226
+ });
227
+
228
+ function processPayment(payment: Payment): Promise<PaymentResult> {
229
+ return paymentGateway.charge(payment);
230
+ }
231
+ ```
232
+
233
+ **Phase 2: Add Validation (TDD)**
234
+ ```typescript
235
+ test('rejects negative amounts', async () => {
236
+ await expect(
237
+ processPayment({ amount: -100, cardNumber: '4111', cvv: '123' })
238
+ ).rejects.toThrow('Amount must be positive');
239
+ });
240
+
241
+ test('validates card number format', async () => {
242
+ await expect(
243
+ processPayment({ amount: 100, cardNumber: 'invalid', cvv: '123' })
244
+ ).rejects.toThrow('Invalid card number');
245
+ });
246
+
247
+ function processPayment(payment: Payment): Promise<PaymentResult> {
248
+ if (payment.amount <= 0) {
249
+ throw new Error('Amount must be positive');
250
+ }
251
+ if (!isValidCardNumber(payment.cardNumber)) {
252
+ throw new Error('Invalid card number');
253
+ }
254
+ return paymentGateway.charge(payment);
255
+ }
256
+ ```
257
+
258
+ **Phase 3: Add Defensive Checks (TDD)**
259
+ ```typescript
260
+ test('handles gateway timeout', async () => {
261
+ paymentGateway.charge = jest.fn().mockRejectedValue(new Error('Timeout'));
262
+
263
+ const result = await processPayment({
264
+ amount: 100,
265
+ cardNumber: '4111111111111111',
266
+ cvv: '123'
267
+ });
268
+
269
+ expect(result.success).toBe(false);
270
+ expect(result.error).toBe('Payment gateway timeout');
271
+ });
272
+
273
+ async function processPayment(payment: Payment): Promise<PaymentResult> {
274
+ // Validation
275
+ validatePayment(payment);
276
+
277
+ // Defensive processing
278
+ try {
279
+ return await paymentGateway.charge(payment);
280
+ } catch (error) {
281
+ if (error.message.includes('Timeout')) {
282
+ return { success: false, error: 'Payment gateway timeout' };
283
+ }
284
+ throw error;
285
+ }
286
+ }
287
+ ```
288
+
289
+ **Result:** Robust system built incrementally with TDD, each layer tested.
290
+
291
+ ## TDD + Verification Before Completion
292
+
293
+ ### Integration Point: Completion Checklist
294
+
295
+ Before marking work complete, verify TDD was followed.
296
+
297
+ **Checklist:**
298
+
299
+ - [ ] Every new function/method has tests
300
+ - [ ] Watched each test fail before implementing
301
+ - [ ] Each test failed for expected reason (feature missing, not typo)
302
+ - [ ] Wrote minimal code to pass each test
303
+ - [ ] All tests pass
304
+ - [ ] No warnings in test output
305
+ - [ ] Tests use real code (mocks only if unavoidable)
306
+ - [ ] Edge cases covered
307
+ - [ ] Error cases tested
308
+
309
+ **If can't check all boxes:** Return to TDD process.
310
+
311
+ ### Example: Code Review with TDD Verification
312
+
313
+ **Pull Request Checklist:**
314
+
315
+ ```markdown
316
+ ## TDD Verification
317
+
318
+ - [x] All new code has corresponding tests
319
+ - [x] Tests were written before implementation
320
+ - [x] Watched tests fail with correct error messages
321
+ - [x] Tests pass after implementation
322
+ - [x] Edge cases tested: empty input, null values, invalid data
323
+ - [x] Error cases tested: network failures, validation errors
324
+ - [x] No test warnings or errors in output
325
+ - [ ] Considered security implications
326
+
327
+ Test Coverage: 95%
328
+ New Tests: 12
329
+ Modified Tests: 3
330
+ ```
331
+
332
+ **If checklist incomplete:** Request changes to follow TDD properly.
333
+
334
+ ## TDD + Continuous Integration
335
+
336
+ ### Integration Point: Automated Test Runs
337
+
338
+ CI/CD pipeline runs tests automatically, ensuring TDD benefits persist.
339
+
340
+ **CI Configuration:**
341
+
342
+ ```yaml
343
+ # .github/workflows/test.yml
344
+ name: Test
345
+
346
+ on: [push, pull_request]
347
+
348
+ jobs:
349
+ test:
350
+ runs-on: ubuntu-latest
351
+
352
+ steps:
353
+ - uses: actions/checkout@v3
354
+
355
+ - name: Setup Node
356
+ uses: actions/setup-node@v3
357
+ with:
358
+ node-version: '18'
359
+
360
+ - name: Install dependencies
361
+ run: npm ci
362
+
363
+ - name: Run tests
364
+ run: npm test -- --coverage
365
+
366
+ - name: Check coverage threshold
367
+ run: |
368
+ COVERAGE=$(npm test -- --coverage --silent | grep "All files" | awk '{print $10}' | tr -d '%')
369
+ if [ $COVERAGE -lt 80 ]; then
370
+ echo "Coverage $COVERAGE% is below 80%"
371
+ exit 1
372
+ fi
373
+
374
+ - name: Fail if warnings
375
+ run: npm test -- --maxWarnings=0
376
+ ```
377
+
378
+ **Benefits:**
379
+ - Every commit runs tests
380
+ - Prevents regression
381
+ - Enforces coverage requirements
382
+ - Blocks merging if tests fail
383
+
384
+ ## TDD + Code Review
385
+
386
+ ### Integration Point: Review Process
387
+
388
+ Code reviews verify TDD practices were followed.
389
+
390
+ **Review Checklist for Reviewers:**
391
+
392
+ **Tests Quality:**
393
+ - [ ] Tests exist for all new code
394
+ - [ ] Tests are clear and focused (one behavior each)
395
+ - [ ] Tests verify behavior, not implementation
396
+ - [ ] Minimal use of mocks
397
+ - [ ] Edge cases covered
398
+ - [ ] Error cases covered
399
+
400
+ **TDD Evidence:**
401
+ - [ ] Commit history shows test-then-implementation pattern
402
+ - [ ] Tests are simple and clear
403
+ - [ ] Implementation is minimal (no over-engineering)
404
+ - [ ] Code structure suggests test-driven design
405
+
406
+ **Red Flags:**
407
+ - [ ] Tests added in separate "add tests" commit
408
+ - [ ] Tests appear to verify existing implementation
409
+ - [ ] Over-complicated implementation
410
+ - [ ] Tests pass immediately (never failed)
411
+
412
+ ### Example Review Comments
413
+
414
+ **Good TDD:**
415
+ ```
416
+ ✓ Clean test-driven design
417
+ ✓ Tests clearly show requirements
418
+ ✓ Implementation is minimal and focused
419
+ ✓ Excellent TDD practice!
420
+ ```
421
+
422
+ **Needs Improvement:**
423
+ ```
424
+ ⚠ Tests appear to be written after implementation
425
+ ⚠ Test passes immediately - did you watch it fail?
426
+ ⚠ Implementation more complex than tests require
427
+ ⚠ Please follow RED/GREEN/REFACTOR cycle
428
+ ```
429
+
430
+ ## TDD + Pair Programming
431
+
432
+ ### Integration Point: Real-time Collaboration
433
+
434
+ Pair programming enforces TDD discipline through peer accountability.
435
+
436
+ **Ping-Pong Pattern:**
437
+
438
+ 1. **Developer A**: Write failing test
439
+ 2. **Developer B**: Make test pass
440
+ 3. **Both**: Refactor together
441
+ 4. **Developer B**: Write next failing test
442
+ 5. **Developer A**: Make test pass
443
+ 6. **Repeat**
444
+
445
+ **Benefits:**
446
+ - Enforces test-first (partner won't let you skip)
447
+ - Catches anti-patterns immediately
448
+ - Shared understanding of requirements
449
+ - Better test design from two perspectives
450
+
451
+ ## Summary
452
+
453
+ **TDD Integrations:**
454
+
455
+ 1. **Systematic Debugging**: Write failing test to reproduce bug
456
+ 2. **Refactoring**: Tests enable safe structural changes
457
+ 3. **Defense in Depth**: Test-drive validation and error handling
458
+ 4. **Verification**: Checklist ensures TDD was followed
459
+ 5. **CI/CD**: Automated test runs preserve TDD benefits
460
+ 6. **Code Review**: Verify TDD practices in review
461
+ 7. **Pair Programming**: Enforce TDD through collaboration
462
+
463
+ **Key Principle**: TDD integrates with all development practices by providing test-based foundation for confidence.
464
+
465
+ ## Related References
466
+
467
+ - [Workflow](workflow.md): Complete RED/GREEN/REFACTOR cycle
468
+ - [Examples](examples.md): Real-world TDD scenarios
469
+ - [Philosophy](philosophy.md): Why TDD works
470
+ - [Anti-patterns](anti-patterns.md): Common mistakes