claude-mpm 5.4.59__py3-none-any.whl → 5.4.62__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.

Potentially problematic release.


This version of claude-mpm might be problematic. Click here for more details.

Files changed (128) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +5 -0
  3. claude_mpm/scripts/start_activity_logging.py +0 -0
  4. claude_mpm/services/agents/deployment/agent_template_builder.py +8 -0
  5. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
  6. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
  7. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
  8. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
  9. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
  10. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
  11. claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
  12. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
  13. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
  14. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
  15. claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
  16. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
  17. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
  18. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
  19. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
  20. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
  21. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
  22. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
  23. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
  24. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
  25. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
  26. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
  27. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
  28. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
  29. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
  30. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
  31. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
  32. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
  33. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
  34. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
  35. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
  36. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
  37. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
  38. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -0
  39. claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
  40. claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
  41. claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
  42. claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
  43. claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
  44. claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
  45. claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
  46. claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
  47. claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
  48. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +86 -0
  49. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
  50. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
  51. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
  52. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
  53. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
  54. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
  55. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
  56. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
  57. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
  58. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
  59. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
  60. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
  61. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
  62. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
  63. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
  64. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
  65. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
  66. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
  67. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
  68. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
  69. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
  70. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
  71. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
  72. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
  73. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
  74. claude_mpm/skills/bundled/pm/pm-delegation-patterns/SKILL.md +167 -0
  75. claude_mpm/skills/bundled/pm/pm-git-file-tracking/SKILL.md +113 -0
  76. claude_mpm/skills/bundled/pm/pm-pr-workflow/SKILL.md +124 -0
  77. claude_mpm/skills/bundled/pm/pm-ticketing-integration/SKILL.md +154 -0
  78. claude_mpm/skills/bundled/pm/pm-verification-protocols/SKILL.md +198 -0
  79. claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
  80. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
  81. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
  82. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
  83. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
  84. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
  85. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
  86. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
  87. claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
  88. claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
  89. claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
  90. claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
  91. claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
  92. claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
  93. claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
  94. claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
  95. claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
  96. claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
  97. claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
  98. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +119 -0
  99. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
  100. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
  101. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
  102. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
  103. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
  104. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
  105. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
  106. claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
  107. claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
  108. claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
  109. claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
  110. claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
  111. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
  112. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
  113. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
  114. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
  115. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
  116. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
  117. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
  118. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
  119. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
  120. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
  121. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
  122. {claude_mpm-5.4.59.dist-info → claude_mpm-5.4.62.dist-info}/METADATA +1 -1
  123. {claude_mpm-5.4.59.dist-info → claude_mpm-5.4.62.dist-info}/RECORD +127 -10
  124. {claude_mpm-5.4.59.dist-info → claude_mpm-5.4.62.dist-info}/WHEEL +0 -0
  125. {claude_mpm-5.4.59.dist-info → claude_mpm-5.4.62.dist-info}/entry_points.txt +0 -0
  126. {claude_mpm-5.4.59.dist-info → claude_mpm-5.4.62.dist-info}/licenses/LICENSE +0 -0
  127. {claude_mpm-5.4.59.dist-info → claude_mpm-5.4.62.dist-info}/licenses/LICENSE-FAQ.md +0 -0
  128. {claude_mpm-5.4.59.dist-info → claude_mpm-5.4.62.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,452 @@
1
+ # Real-World Debugging Examples
2
+
3
+ > **Part of**: [Systematic Debugging](../SKILL.md)
4
+ > **Category**: debugging
5
+ > **Reading Level**: Intermediate
6
+
7
+ ## Purpose
8
+
9
+ Real-world scenarios demonstrating systematic debugging in action, with step-by-step walkthroughs showing how to apply the four-phase process.
10
+
11
+ ## Example 1: API Integration Failure
12
+
13
+ ### Symptom
14
+
15
+ ```
16
+ Error: API request failed with status 401
17
+ Tests pass locally but fail in CI
18
+ ```
19
+
20
+ ### Phase 1: Root Cause Investigation
21
+
22
+ **Read Error:**
23
+ ```
24
+ HTTP 401 Unauthorized
25
+ Response: {"error": "Invalid API key"}
26
+ ```
27
+
28
+ **Reproduce:**
29
+ - ✓ Runs successfully locally
30
+ - ✗ Fails in CI every time
31
+ - Difference: Local has `.env` file, CI uses environment variables
32
+
33
+ **Check Changes:**
34
+ ```bash
35
+ git log --oneline --since="3 days ago"
36
+ # Found: "Add API key authentication" 2 days ago
37
+ ```
38
+
39
+ **Gather Evidence:**
40
+ ```bash
41
+ # In CI config
42
+ echo "API_KEY present: ${API_KEY:+YES}${API_KEY:-NO}"
43
+ # Output: API_KEY present: NO
44
+
45
+ # In local env
46
+ echo $API_KEY
47
+ # Output: sk-abc123...
48
+ ```
49
+
50
+ **Root cause identified**: API_KEY environment variable not set in CI
51
+
52
+ ### Phase 2: Pattern Analysis
53
+
54
+ **Find working examples:**
55
+ ```yaml
56
+ # Other workflows using secrets
57
+ env:
58
+ DATABASE_URL: ${{ secrets.DATABASE_URL }} # Works
59
+ API_KEY: ${{ secrets.API_KEY }} # Missing!
60
+ ```
61
+
62
+ **Identify difference**: DATABASE_URL configured in GitHub secrets, API_KEY is not
63
+
64
+ ### Phase 3: Hypothesis and Testing
65
+
66
+ **Hypothesis**: "API_KEY secret not configured in GitHub repository settings"
67
+
68
+ **Test**: Check repository settings → Secrets → API_KEY not found
69
+
70
+ **Confirmed**: Secret needs to be added
71
+
72
+ ### Phase 4: Implementation
73
+
74
+ **Test case** (manual verification):
75
+ ```bash
76
+ # After adding secret, check in CI
77
+ echo "API_KEY set: ${API_KEY:+YES}"
78
+ # Expected: YES
79
+ ```
80
+
81
+ **Fix**: Add API_KEY to GitHub repository secrets
82
+
83
+ **Verify**: CI build passes, API calls succeed
84
+
85
+ **Time**: 15 minutes with systematic approach vs 2+ hours guessing
86
+
87
+ ## Example 2: Intermittent Test Failure
88
+
89
+ ### Symptom
90
+
91
+ ```
92
+ Test 'processes user data' fails randomly
93
+ Passes 80% of the time, fails 20%
94
+ No clear pattern to failures
95
+ ```
96
+
97
+ ### Phase 1: Root Cause Investigation
98
+
99
+ **Read Error:**
100
+ ```
101
+ Expected: { id: 1, name: 'Alice', role: 'admin' }
102
+ Received: { id: 1, name: 'Alice', role: 'user' }
103
+ ```
104
+
105
+ **Reproduce:**
106
+ - Run test 10 times → fails 2-3 times
107
+ - Failure seems random
108
+ - Not time-dependent
109
+
110
+ **Check Recent Changes:**
111
+ ```bash
112
+ git diff HEAD~1 -- tests/user.test.ts
113
+ # No changes to test
114
+ # But role assignment logic changed
115
+ ```
116
+
117
+ **Gather Evidence:**
118
+ ```typescript
119
+ // Add logging
120
+ test('processes user data', async () => {
121
+ console.log('Test start:', new Date().toISOString());
122
+ const user = await createUser({ name: 'Alice', role: 'admin' });
123
+ console.log('User created:', user);
124
+ console.log('Role at creation:', user.role);
125
+ // ...
126
+ });
127
+ ```
128
+
129
+ **Pattern found**: Role correct at creation, changes later
130
+
131
+ **Trace Data Flow:**
132
+ ```typescript
133
+ // Step through code
134
+ createUser() → saveToDatabase() → applyDefaults() → role changes!
135
+
136
+ // applyDefaults has bug:
137
+ function applyDefaults(user) {
138
+ return {
139
+ ...user,
140
+ role: user.role || 'user' // BUG: 'user' overwrites existing role
141
+ };
142
+ }
143
+ ```
144
+
145
+ ### Phase 2: Pattern Analysis
146
+
147
+ **Find working examples:**
148
+ ```typescript
149
+ // Correct default handling
150
+ function applyDefaults(user) {
151
+ return {
152
+ role: 'user', // Default first
153
+ ...user, // Then overrides
154
+ };
155
+ }
156
+ ```
157
+
158
+ **Identify difference**: Order of spread operator matters
159
+
160
+ ### Phase 3: Hypothesis and Testing
161
+
162
+ **Hypothesis**: "Spread operator order causes role to be overwritten with default"
163
+
164
+ **Test**:
165
+ ```typescript
166
+ // Minimal test
167
+ const result = { ...{ name: 'Alice', role: 'admin' }, role: 'user' };
168
+ console.log(result.role); // 'user' - overwrites!
169
+
170
+ const correct = { role: 'user', ...{ name: 'Alice', role: 'admin' } };
171
+ console.log(correct.role); // 'admin' - correct!
172
+ ```
173
+
174
+ **Confirmed**: Spread order is the issue
175
+
176
+ ### Phase 4: Implementation
177
+
178
+ **Test case**:
179
+ ```typescript
180
+ test('preserves existing role when applying defaults', () => {
181
+ const user = { name: 'Alice', role: 'admin' };
182
+ const result = applyDefaults(user);
183
+ expect(result.role).toBe('admin');
184
+ });
185
+ ```
186
+
187
+ **Fix**:
188
+ ```typescript
189
+ function applyDefaults(user) {
190
+ return {
191
+ role: 'user', // Default first
192
+ status: 'active',
193
+ ...user, // User values override
194
+ };
195
+ }
196
+ ```
197
+
198
+ **Verify**: Test passes 100 consecutive times, no more intermittent failures
199
+
200
+ ## Example 3: Performance Degradation
201
+
202
+ ### Symptom
203
+
204
+ ```
205
+ Dashboard loads in 5+ seconds (was <1 second)
206
+ Users complaining about slowness
207
+ No recent deploys
208
+ ```
209
+
210
+ ### Phase 1: Root Cause Investigation
211
+
212
+ **Read Error**: No explicit error, just slow performance
213
+
214
+ **Reproduce**:
215
+ ```bash
216
+ # Measure consistently
217
+ time curl http://localhost:3000/dashboard
218
+ # ~5.2 seconds consistently
219
+ ```
220
+
221
+ **Check Recent Changes**:
222
+ ```bash
223
+ git log --oneline --since="1 week ago" -- src/dashboard/
224
+ # No code changes to dashboard
225
+
226
+ git log --oneline --since="1 week ago" -- database/
227
+ # Found: "Add index to improve user queries" 3 days ago
228
+ ```
229
+
230
+ **Gather Evidence**:
231
+ ```sql
232
+ -- Enable query logging
233
+ SET log_min_duration_statement = 100;
234
+
235
+ -- Analyze slow queries
236
+ EXPLAIN ANALYZE SELECT * FROM user_activity
237
+ WHERE user_id = 123
238
+ ORDER BY created_at DESC;
239
+
240
+ -- Output shows: Seq Scan on user_activity (cost=0.00..45678.23 rows=500000)
241
+ ```
242
+
243
+ **Pattern found**: Query doing sequential scan despite new index
244
+
245
+ ### Phase 2: Pattern Analysis
246
+
247
+ **Check index**:
248
+ ```sql
249
+ \d user_activity
250
+ -- Indexes:
251
+ -- "user_activity_user_created_idx" btree (user_id, created_at)
252
+
253
+ -- But query doesn't use it!
254
+ ```
255
+
256
+ **Find working examples**:
257
+ ```sql
258
+ -- This query uses index
259
+ SELECT * FROM user_sessions WHERE user_id = 123;
260
+
261
+ -- Our query doesn't - why?
262
+ SELECT * FROM user_activity WHERE user_id = 123 ORDER BY created_at DESC;
263
+ ```
264
+
265
+ **Identify difference**: ORDER BY direction (DESC) doesn't match index (ASC)
266
+
267
+ ### Phase 3: Hypothesis and Testing
268
+
269
+ **Hypothesis**: "Index not used because ORDER BY DESC doesn't match index order ASC"
270
+
271
+ **Test**:
272
+ ```sql
273
+ -- Drop and recreate with DESC
274
+ DROP INDEX user_activity_user_created_idx;
275
+ CREATE INDEX user_activity_user_created_idx
276
+ ON user_activity (user_id, created_at DESC);
277
+
278
+ -- Test query performance
279
+ EXPLAIN ANALYZE SELECT * FROM user_activity
280
+ WHERE user_id = 123
281
+ ORDER BY created_at DESC;
282
+
283
+ -- Output: Index Scan using user_activity_user_created_idx (cost=0.43..123.45)
284
+ ```
285
+
286
+ **Confirmed**: Index now used, performance improved
287
+
288
+ ### Phase 4: Implementation
289
+
290
+ **Test case**:
291
+ ```typescript
292
+ test('dashboard loads in under 1 second', async () => {
293
+ const start = Date.now();
294
+ await fetch('/dashboard');
295
+ const duration = Date.now() - start;
296
+ expect(duration).toBeLessThan(1000);
297
+ });
298
+ ```
299
+
300
+ **Fix**: Update index definition to match query pattern
301
+
302
+ **Verify**:
303
+ - Dashboard loads in 0.4 seconds
304
+ - All other queries still work
305
+ - No performance regressions
306
+
307
+ ## Example 4: Multi-Component System Failure
308
+
309
+ ### Symptom
310
+
311
+ ```
312
+ iOS app code signing fails in CI
313
+ Error: "No identity found"
314
+ Works on developer machines
315
+ ```
316
+
317
+ ### Phase 1: Root Cause Investigation
318
+
319
+ **Read Error**:
320
+ ```
321
+ error: No signing certificate "iOS Distribution" found
322
+ codesign failed with exit code 1
323
+ ```
324
+
325
+ **Reproduce**:
326
+ - ✓ Works locally with Xcode
327
+ - ✗ Fails in CI every time
328
+ - Multi-layer system: CI → build → keychain → signing
329
+
330
+ **Gather Evidence at Each Layer**:
331
+ ```bash
332
+ # Layer 1: CI environment
333
+ echo "=== Secrets available ==="
334
+ echo "CERT_P12: ${CERT_P12:+SET}${CERT_P12:-UNSET}"
335
+ echo "CERT_PASSWORD: ${CERT_PASSWORD:+SET}${CERT_PASSWORD:-UNSET}"
336
+ # Output: Both SET
337
+
338
+ # Layer 2: Keychain setup
339
+ echo "=== Keychain state ==="
340
+ security list-keychains
341
+ security find-identity -v -p codesigning
342
+ # Output: No identities found
343
+
344
+ # Layer 3: Certificate import
345
+ security import cert.p12 -k ~/Library/Keychains/build.keychain -P "$CERT_PASSWORD" -T /usr/bin/codesign
346
+ echo "Import exit code: $?"
347
+ # Output: Exit code 0 (success)
348
+
349
+ # But still no identity!
350
+ security find-identity -v -p codesigning
351
+ # Output: Still no identities
352
+ ```
353
+
354
+ **Pattern found**: Import succeeds but identity not available
355
+
356
+ ### Phase 2: Pattern Analysis
357
+
358
+ **Find working examples**:
359
+ ```bash
360
+ # Local machine
361
+ security find-identity -v
362
+ # Shows many identities in login keychain
363
+
364
+ # CI (after import)
365
+ security find-identity -v
366
+ # Shows nothing
367
+ ```
368
+
369
+ **Compare keychain paths**:
370
+ ```bash
371
+ # Local
372
+ security list-keychains
373
+ # "~/Library/Keychains/login.keychain-db"
374
+
375
+ # CI
376
+ security list-keychains
377
+ # Custom build.keychain not in search list!
378
+ ```
379
+
380
+ **Identify difference**: Keychain created but not added to search list
381
+
382
+ ### Phase 3: Hypothesis and Testing
383
+
384
+ **Hypothesis**: "Identity imported but keychain not in search list, so codesign can't find it"
385
+
386
+ **Test**:
387
+ ```bash
388
+ # Add keychain to search list
389
+ security list-keychains -s ~/Library/Keychains/build.keychain-db
390
+
391
+ # Check if identity now visible
392
+ security find-identity -v -p codesigning
393
+ # Output: Shows imported identity!
394
+ ```
395
+
396
+ **Confirmed**: Keychain search list was the issue
397
+
398
+ ### Phase 4: Implementation
399
+
400
+ **Test case** (integration test in CI):
401
+ ```bash
402
+ # After fix, verify identity available
403
+ security find-identity -v -p codesigning | grep "iOS Distribution" || exit 1
404
+ ```
405
+
406
+ **Fix**:
407
+ ```bash
408
+ # Complete keychain setup
409
+ security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
410
+ security list-keychains -s ~/Library/Keychains/build.keychain-db # Add to search
411
+ security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
412
+ security import cert.p12 -k build.keychain -P "$CERT_PASSWORD" -T /usr/bin/codesign
413
+ security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PASSWORD" build.keychain
414
+ ```
415
+
416
+ **Verify**: Code signing succeeds in CI
417
+
418
+ **Time**: 45 minutes systematic vs 4+ hours of random attempts
419
+
420
+ ## Key Patterns Across Examples
421
+
422
+ ### Common Root Causes
423
+ 1. **Configuration differences** (Example 1): Local vs CI environment
424
+ 2. **Timing/order issues** (Example 2): Race conditions, initialization order
425
+ 3. **Hidden assumptions** (Example 3): Index order matching query
426
+ 4. **Multi-layer problems** (Example 4): Issue at component boundaries
427
+
428
+ ### Systematic Approach Benefits
429
+ - **Faster resolution**: 15-45 minutes vs 2-4 hours
430
+ - **First-time fix**: 95%+ success rate
431
+ - **No new bugs**: Targeted fixes don't break other things
432
+ - **Knowledge gained**: Understanding root cause prevents recurrence
433
+
434
+ ### Red Flags That Would Have Failed
435
+ - "Just try adding the secret" (skips investigation)
436
+ - "Add try-catch around failing code" (masks problem)
437
+ - "Increase timeout" (hides real issue)
438
+ - "Maybe clear cache?" (random guess)
439
+
440
+ ## Summary
441
+
442
+ Systematic debugging:
443
+ 1. Saves time (15-45 min vs 2-4 hours)
444
+ 2. Fixes correctly first time (95% vs 40%)
445
+ 3. Prevents new bugs (targeted vs random changes)
446
+ 4. Builds understanding (root cause vs symptom)
447
+
448
+ ## Related References
449
+
450
+ - [Workflow](workflow.md): Complete four-phase process
451
+ - [Troubleshooting](troubleshooting.md): When debugging gets stuck
452
+ - [Anti-patterns](anti-patterns.md): Common mistakes to avoid