@sylix/coworker 2.0.10 → 2.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/commands/slash/config.d.ts.map +1 -1
  2. package/dist/commands/slash/config.js +23 -5
  3. package/dist/commands/slash/config.js.map +1 -1
  4. package/dist/commands/slash/todo.js +1 -1
  5. package/dist/commands/slash/todo.js.map +1 -1
  6. package/dist/core/CoWorkerAgent.d.ts.map +1 -1
  7. package/dist/core/CoWorkerAgent.js +6 -3
  8. package/dist/core/CoWorkerAgent.js.map +1 -1
  9. package/dist/permissions/PermissionInterceptor.js +1 -1
  10. package/dist/permissions/PermissionInterceptor.js.map +1 -1
  11. package/dist/skills/defaults/accessibility/screen-reader-testing.md +545 -0
  12. package/dist/skills/defaults/accessibility/wcag-audit-patterns.md +555 -0
  13. package/dist/skills/defaults/ai-ml/rag.md +276 -0
  14. package/dist/skills/defaults/backend-development/api-design-principles.md +528 -0
  15. package/dist/skills/defaults/backend-development/api-design.md +285 -0
  16. package/dist/skills/defaults/backend-development/architecture-patterns.md +494 -0
  17. package/dist/skills/defaults/backend-development/async-python.md +237 -0
  18. package/dist/skills/defaults/backend-development/auth-implementation-patterns.md +638 -0
  19. package/dist/skills/defaults/backend-development/bazel-build-optimization.md +387 -0
  20. package/dist/skills/defaults/backend-development/billing-automation/SKILL.md +566 -0
  21. package/dist/skills/defaults/backend-development/code-review-excellence.md +538 -0
  22. package/dist/skills/defaults/backend-development/cqrs-implementation.md +554 -0
  23. package/dist/skills/defaults/backend-development/database-design.md +305 -0
  24. package/dist/skills/defaults/backend-development/debugging-strategies.md +536 -0
  25. package/dist/skills/defaults/backend-development/e2e-testing-patterns.md +544 -0
  26. package/dist/skills/defaults/backend-development/error-handling-patterns.md +641 -0
  27. package/dist/skills/defaults/backend-development/fastapi-templates.md +559 -0
  28. package/dist/skills/defaults/backend-development/fastapi.md +309 -0
  29. package/dist/skills/defaults/backend-development/git-advanced-workflows.md +405 -0
  30. package/dist/skills/defaults/backend-development/microservices-patterns.md +595 -0
  31. package/dist/skills/defaults/backend-development/microservices.md +284 -0
  32. package/dist/skills/defaults/backend-development/monorepo-management.md +623 -0
  33. package/dist/skills/defaults/backend-development/nodejs-backend-patterns.md +1048 -0
  34. package/dist/skills/defaults/backend-development/nx-workspace-patterns.md +457 -0
  35. package/dist/skills/defaults/backend-development/paypal-integration/SKILL.md +478 -0
  36. package/dist/skills/defaults/backend-development/pci-compliance/SKILL.md +480 -0
  37. package/dist/skills/defaults/backend-development/python-anti-patterns.md +349 -0
  38. package/dist/skills/defaults/backend-development/python-background-jobs.md +364 -0
  39. package/dist/skills/defaults/backend-development/python-code-style.md +360 -0
  40. package/dist/skills/defaults/backend-development/python-configuration.md +368 -0
  41. package/dist/skills/defaults/backend-development/python-design-patterns.md +296 -0
  42. package/dist/skills/defaults/backend-development/python-error-handling.md +323 -0
  43. package/dist/skills/defaults/backend-development/python-packaging.md +887 -0
  44. package/dist/skills/defaults/backend-development/python-performance-optimization.md +874 -0
  45. package/dist/skills/defaults/backend-development/python-project-structure.md +252 -0
  46. package/dist/skills/defaults/backend-development/python-resilience.md +376 -0
  47. package/dist/skills/defaults/backend-development/python-resource-management.md +421 -0
  48. package/dist/skills/defaults/backend-development/python-type-safety.md +428 -0
  49. package/dist/skills/defaults/backend-development/sql-optimization-patterns.md +509 -0
  50. package/dist/skills/defaults/backend-development/stripe-integration/SKILL.md +522 -0
  51. package/dist/skills/defaults/backend-development/turborepo-caching.md +376 -0
  52. package/dist/skills/defaults/blockchain/defi-protocol-templates.md +430 -0
  53. package/dist/skills/defaults/blockchain/nft-standards.md +364 -0
  54. package/dist/skills/defaults/blockchain/solidity-security.md +514 -0
  55. package/dist/skills/defaults/blockchain/web3-testing.md +360 -0
  56. package/dist/skills/defaults/business/competitive-landscape/SKILL.md +527 -0
  57. package/dist/skills/defaults/business/market-sizing-analysis/SKILL.md +451 -0
  58. package/dist/skills/defaults/business/startup-financial-modeling/SKILL.md +494 -0
  59. package/dist/skills/defaults/business/startup-metrics-framework/SKILL.md +564 -0
  60. package/dist/skills/defaults/business/team-composition-analysis.md +437 -0
  61. package/dist/skills/defaults/compliance/employment-contract-templates/SKILL.md +527 -0
  62. package/dist/skills/defaults/compliance/gdpr-data-handling/SKILL.md +630 -0
  63. package/dist/skills/defaults/data-engineering/airflow-dag-patterns.md +436 -0
  64. package/dist/skills/defaults/data-engineering/airflow.md +519 -0
  65. package/dist/skills/defaults/data-engineering/data-quality.md +583 -0
  66. package/dist/skills/defaults/data-engineering/dbt-transformation-patterns.md +482 -0
  67. package/dist/skills/defaults/data-engineering/dbt.md +556 -0
  68. package/dist/skills/defaults/data-engineering/ml-pipeline-workflow/SKILL.md +247 -0
  69. package/dist/skills/defaults/data-engineering/spark-optimization.md +348 -0
  70. package/dist/skills/defaults/data-engineering/spark.md +411 -0
  71. package/dist/skills/defaults/database/postgresql.md +202 -0
  72. package/dist/skills/defaults/debugging/systematic-debugging.md +249 -0
  73. package/dist/skills/defaults/devops/architecture-decision-records.md +448 -0
  74. package/dist/skills/defaults/devops/changelog-automation.md +580 -0
  75. package/dist/skills/defaults/devops/cicd.md +314 -0
  76. package/dist/skills/defaults/devops/cloud.md +263 -0
  77. package/dist/skills/defaults/devops/code-review-excellence.md +299 -0
  78. package/dist/skills/defaults/devops/cost-optimization.md +295 -0
  79. package/dist/skills/defaults/devops/deployment-pipeline-design.md +356 -0
  80. package/dist/skills/defaults/devops/docker.md +281 -0
  81. package/dist/skills/defaults/devops/git-workflows.md +205 -0
  82. package/dist/skills/defaults/devops/github-actions.md +311 -0
  83. package/dist/skills/defaults/devops/gitlab-ci-patterns.md +266 -0
  84. package/dist/skills/defaults/devops/hybrid-cloud-networking.md +241 -0
  85. package/dist/skills/defaults/devops/istio-traffic-management.md +327 -0
  86. package/dist/skills/defaults/devops/kubernetes.md +339 -0
  87. package/dist/skills/defaults/devops/linkerd-patterns.md +311 -0
  88. package/dist/skills/defaults/devops/multi-cloud-architecture.md +181 -0
  89. package/dist/skills/defaults/devops/observability.md +243 -0
  90. package/dist/skills/defaults/devops/openapi-spec-generation.md +1024 -0
  91. package/dist/skills/defaults/devops/postmortem-writing.md +396 -0
  92. package/dist/skills/defaults/devops/prometheus-configuration.md +265 -0
  93. package/dist/skills/defaults/devops/secrets-management.md +341 -0
  94. package/dist/skills/defaults/devops/service-mesh-observability.md +385 -0
  95. package/dist/skills/defaults/devops/terraform-module-library.md +244 -0
  96. package/dist/skills/defaults/finance/backtesting-frameworks/SKILL.md +663 -0
  97. package/dist/skills/defaults/finance/risk-metrics-calculation/SKILL.md +557 -0
  98. package/dist/skills/defaults/frontend/accessibility-compliance.md +420 -0
  99. package/dist/skills/defaults/frontend/design-system-patterns.md +337 -0
  100. package/dist/skills/defaults/frontend/interaction-design.md +327 -0
  101. package/dist/skills/defaults/frontend/javascript.md +311 -0
  102. package/dist/skills/defaults/frontend/modern-javascript-patterns.md +927 -0
  103. package/dist/skills/defaults/frontend/react-native-design.md +440 -0
  104. package/dist/skills/defaults/frontend/react.md +345 -0
  105. package/dist/skills/defaults/frontend/responsive-design.md +472 -0
  106. package/dist/skills/defaults/frontend/tailwind-design-system.md +337 -0
  107. package/dist/skills/defaults/frontend/typescript-advanced-types.md +724 -0
  108. package/dist/skills/defaults/frontend/typescript.md +334 -0
  109. package/dist/skills/defaults/frontend/visual-design-foundations.md +326 -0
  110. package/dist/skills/defaults/frontend/web-component-design.md +279 -0
  111. package/dist/skills/defaults/game-development/godot-gdscript-patterns.md +188 -0
  112. package/dist/skills/defaults/game-development/unity-ecs-patterns.md +594 -0
  113. package/dist/skills/defaults/kubernetes/gitops-workflow.md +285 -0
  114. package/dist/skills/defaults/kubernetes/gitops.md +280 -0
  115. package/dist/skills/defaults/kubernetes/helm-chart-scaffolding.md +553 -0
  116. package/dist/skills/defaults/kubernetes/helm.md +343 -0
  117. package/dist/skills/defaults/kubernetes/k8s-manifest-generator.md +501 -0
  118. package/dist/skills/defaults/kubernetes/k8s-security-policies.md +342 -0
  119. package/dist/skills/defaults/kubernetes/manifests.md +330 -0
  120. package/dist/skills/defaults/kubernetes/security.md +337 -0
  121. package/dist/skills/defaults/llm-application/embedding-strategies.md +608 -0
  122. package/dist/skills/defaults/llm-application/hybrid-search-implementation.md +570 -0
  123. package/dist/skills/defaults/llm-application/hybrid-search.md +570 -0
  124. package/dist/skills/defaults/llm-application/langchain-architecture.md +666 -0
  125. package/dist/skills/defaults/llm-application/langchain.md +259 -0
  126. package/dist/skills/defaults/llm-application/llm-evaluation.md +695 -0
  127. package/dist/skills/defaults/llm-application/prompt-engineering-patterns.md +449 -0
  128. package/dist/skills/defaults/llm-application/prompt-engineering.md +219 -0
  129. package/dist/skills/defaults/llm-application/rag-implementation.md +434 -0
  130. package/dist/skills/defaults/llm-application/similarity-search-patterns.md +560 -0
  131. package/dist/skills/defaults/llm-application/similarity-search.md +560 -0
  132. package/dist/skills/defaults/llm-application/vector-index-tuning.md +523 -0
  133. package/dist/skills/defaults/mobile/mobile-android-design.md +440 -0
  134. package/dist/skills/defaults/mobile/mobile-ios-design.md +266 -0
  135. package/dist/skills/defaults/monitoring/distributed-tracing.md +436 -0
  136. package/dist/skills/defaults/monitoring/grafana-dashboards.md +370 -0
  137. package/dist/skills/defaults/monitoring/prometheus-configuration.md +379 -0
  138. package/dist/skills/defaults/monitoring/slo-implementation.md +323 -0
  139. package/dist/skills/defaults/refactoring/code-refactoring.md +349 -0
  140. package/dist/skills/defaults/security/anti-reversing-techniques/SKILL.md +559 -0
  141. package/dist/skills/defaults/security/auditor.md +168 -0
  142. package/dist/skills/defaults/security/binary-analysis-patterns/SKILL.md +438 -0
  143. package/dist/skills/defaults/security/memory-forensics/SKILL.md +483 -0
  144. package/dist/skills/defaults/security/mtls-configuration.md +349 -0
  145. package/dist/skills/defaults/security/protocol-reverse-engineering/SKILL.md +520 -0
  146. package/dist/skills/defaults/security/sast-configuration.md +182 -0
  147. package/dist/skills/defaults/security/security.md +313 -0
  148. package/dist/skills/defaults/security/stride-analysis.md +273 -0
  149. package/dist/skills/defaults/security/threat-mitigation-mapping.md +290 -0
  150. package/dist/skills/defaults/systems/bash-defensive-patterns/SKILL.md +539 -0
  151. package/dist/skills/defaults/systems/bats-testing-patterns/SKILL.md +631 -0
  152. package/dist/skills/defaults/systems/go-concurrency-patterns.md +657 -0
  153. package/dist/skills/defaults/systems/memory-safety-patterns.md +605 -0
  154. package/dist/skills/defaults/systems/rust-async-patterns.md +519 -0
  155. package/dist/skills/defaults/systems/shellcheck-configuration/SKILL.md +456 -0
  156. package/dist/skills/defaults/team-collaboration/multi-reviewer-patterns.md +126 -0
  157. package/dist/skills/defaults/team-collaboration/parallel-feature-development.md +151 -0
  158. package/dist/skills/defaults/testing/javascript-testing-patterns.md +1021 -0
  159. package/dist/skills/defaults/testing/python-testing-patterns.md +351 -0
  160. package/dist/skills/defaults/testing/testing.md +332 -0
  161. package/dist/skills/defaults/workflows/context-driven-development.md +384 -0
  162. package/dist/skills/defaults/workflows/track-management.md +592 -0
  163. package/dist/skills/defaults/workflows/workflow-patterns.md +622 -0
  164. package/dist/skills/index.d.ts +11 -0
  165. package/dist/skills/index.d.ts.map +1 -0
  166. package/dist/skills/index.js +129 -0
  167. package/dist/skills/index.js.map +1 -0
  168. package/dist/utils/character.js +6 -9
  169. package/dist/utils/character.js.map +1 -1
  170. package/dist/utils/contextManager.js +3 -7
  171. package/dist/utils/contextManager.js.map +1 -1
  172. package/dist/utils/inputbar.d.ts.map +1 -1
  173. package/dist/utils/inputbar.js +8 -1
  174. package/dist/utils/inputbar.js.map +1 -1
  175. package/dist/utils/output.d.ts.map +1 -1
  176. package/dist/utils/output.js +3 -35
  177. package/dist/utils/output.js.map +1 -1
  178. package/package.json +1 -1
@@ -0,0 +1,536 @@
1
+ ---
2
+ name: debugging-strategies
3
+ description: Master systematic debugging techniques, profiling tools, and root cause analysis to efficiently track down bugs across any codebase or technology stack. Use when investigating bugs, performance issues, or unexpected behavior.
4
+ ---
5
+
6
+ # Debugging Strategies
7
+
8
+ Transform debugging from frustrating guesswork into systematic problem-solving with proven strategies, powerful tools, and methodical approaches.
9
+
10
+ ## When to Use This Skill
11
+
12
+ - Tracking down elusive bugs
13
+ - Investigating performance issues
14
+ - Understanding unfamiliar codebases
15
+ - Debugging production issues
16
+ - Analyzing crash dumps and stack traces
17
+ - Profiling application performance
18
+ - Investigating memory leaks
19
+ - Debugging distributed systems
20
+
21
+ ## Core Principles
22
+
23
+ ### 1. The Scientific Method
24
+
25
+ **1. Observe**: What's the actual behavior?
26
+ **2. Hypothesize**: What could be causing it?
27
+ **3. Experiment**: Test your hypothesis
28
+ **4. Analyze**: Did it prove/disprove your theory?
29
+ **5. Repeat**: Until you find the root cause
30
+
31
+ ### 2. Debugging Mindset
32
+
33
+ **Don't Assume:**
34
+
35
+ - "It can't be X" - Yes it can
36
+ - "I didn't change Y" - Check anyway
37
+ - "It works on my machine" - Find out why
38
+
39
+ **Do:**
40
+
41
+ - Reproduce consistently
42
+ - Isolate the problem
43
+ - Keep detailed notes
44
+ - Question everything
45
+ - Take breaks when stuck
46
+
47
+ ### 3. Rubber Duck Debugging
48
+
49
+ Explain your code and problem out loud (to a rubber duck, colleague, or yourself). Often reveals the issue.
50
+
51
+ ## Systematic Debugging Process
52
+
53
+ ### Phase 1: Reproduce
54
+
55
+ ```markdown
56
+ ## Reproduction Checklist
57
+
58
+ 1. **Can you reproduce it?**
59
+ - Always? Sometimes? Randomly?
60
+ - Specific conditions needed?
61
+ - Can others reproduce it?
62
+
63
+ 2. **Create minimal reproduction**
64
+ - Simplify to smallest example
65
+ - Remove unrelated code
66
+ - Isolate the problem
67
+
68
+ 3. **Document steps**
69
+ - Write down exact steps
70
+ - Note environment details
71
+ - Capture error messages
72
+ ```
73
+
74
+ ### Phase 2: Gather Information
75
+
76
+ ```markdown
77
+ ## Information Collection
78
+
79
+ 1. **Error Messages**
80
+ - Full stack trace
81
+ - Error codes
82
+ - Console/log output
83
+
84
+ 2. **Environment**
85
+ - OS version
86
+ - Language/runtime version
87
+ - Dependencies versions
88
+ - Environment variables
89
+
90
+ 3. **Recent Changes**
91
+ - Git history
92
+ - Deployment timeline
93
+ - Configuration changes
94
+
95
+ 4. **Scope**
96
+ - Affects all users or specific ones?
97
+ - All browsers or specific ones?
98
+ - Production only or also dev?
99
+ ```
100
+
101
+ ### Phase 3: Form Hypothesis
102
+
103
+ ```markdown
104
+ ## Hypothesis Formation
105
+
106
+ Based on gathered info, ask:
107
+
108
+ 1. **What changed?**
109
+ - Recent code changes
110
+ - Dependency updates
111
+ - Infrastructure changes
112
+
113
+ 2. **What's different?**
114
+ - Working vs broken environment
115
+ - Working vs broken user
116
+ - Before vs after
117
+
118
+ 3. **Where could this fail?**
119
+ - Input validation
120
+ - Business logic
121
+ - Data layer
122
+ - External services
123
+ ```
124
+
125
+ ### Phase 4: Test & Verify
126
+
127
+ ```markdown
128
+ ## Testing Strategies
129
+
130
+ 1. **Binary Search**
131
+ - Comment out half the code
132
+ - Narrow down problematic section
133
+ - Repeat until found
134
+
135
+ 2. **Add Logging**
136
+ - Strategic console.log/print
137
+ - Track variable values
138
+ - Trace execution flow
139
+
140
+ 3. **Isolate Components**
141
+ - Test each piece separately
142
+ - Mock dependencies
143
+ - Remove complexity
144
+
145
+ 4. **Compare Working vs Broken**
146
+ - Diff configurations
147
+ - Diff environments
148
+ - Diff data
149
+ ```
150
+
151
+ ## Debugging Tools
152
+
153
+ ### JavaScript/TypeScript Debugging
154
+
155
+ ```typescript
156
+ // Chrome DevTools Debugger
157
+ function processOrder(order: Order) {
158
+ debugger; // Execution pauses here
159
+
160
+ const total = calculateTotal(order);
161
+ console.log("Total:", total);
162
+
163
+ // Conditional breakpoint
164
+ if (order.items.length > 10) {
165
+ debugger; // Only breaks if condition true
166
+ }
167
+
168
+ return total;
169
+ }
170
+
171
+ // Console debugging techniques
172
+ console.log("Value:", value); // Basic
173
+ console.table(arrayOfObjects); // Table format
174
+ console.time("operation");
175
+ /* code */ console.timeEnd("operation"); // Timing
176
+ console.trace(); // Stack trace
177
+ console.assert(value > 0, "Value must be positive"); // Assertion
178
+
179
+ // Performance profiling
180
+ performance.mark("start-operation");
181
+ // ... operation code
182
+ performance.mark("end-operation");
183
+ performance.measure("operation", "start-operation", "end-operation");
184
+ console.log(performance.getEntriesByType("measure"));
185
+ ```
186
+
187
+ **VS Code Debugger Configuration:**
188
+
189
+ ```json
190
+ // .vscode/launch.json
191
+ {
192
+ "version": "0.2.0",
193
+ "configurations": [
194
+ {
195
+ "type": "node",
196
+ "request": "launch",
197
+ "name": "Debug Program",
198
+ "program": "${workspaceFolder}/src/index.ts",
199
+ "preLaunchTask": "tsc: build - tsconfig.json",
200
+ "outFiles": ["${workspaceFolder}/dist/**/*.js"],
201
+ "skipFiles": ["<node_internals>/**"]
202
+ },
203
+ {
204
+ "type": "node",
205
+ "request": "launch",
206
+ "name": "Debug Tests",
207
+ "program": "${workspaceFolder}/node_modules/jest/bin/jest",
208
+ "args": ["--runInBand", "--no-cache"],
209
+ "console": "integratedTerminal"
210
+ }
211
+ ]
212
+ }
213
+ ```
214
+
215
+ ### Python Debugging
216
+
217
+ ```python
218
+ # Built-in debugger (pdb)
219
+ import pdb
220
+
221
+ def calculate_total(items):
222
+ total = 0
223
+ pdb.set_trace() # Debugger starts here
224
+
225
+ for item in items:
226
+ total += item.price * item.quantity
227
+
228
+ return total
229
+
230
+ # Breakpoint (Python 3.7+)
231
+ def process_order(order):
232
+ breakpoint() # More convenient than pdb.set_trace()
233
+ # ... code
234
+
235
+ # Post-mortem debugging
236
+ try:
237
+ risky_operation()
238
+ except Exception:
239
+ import pdb
240
+ pdb.post_mortem() # Debug at exception point
241
+
242
+ # IPython debugging (ipdb)
243
+ from ipdb import set_trace
244
+ set_trace() # Better interface than pdb
245
+
246
+ # Logging for debugging
247
+ import logging
248
+ logging.basicConfig(level=logging.DEBUG)
249
+ logger = logging.getLogger(__name__)
250
+
251
+ def fetch_user(user_id):
252
+ logger.debug(f'Fetching user: {user_id}')
253
+ user = db.query(User).get(user_id)
254
+ logger.debug(f'Found user: {user}')
255
+ return user
256
+
257
+ # Profile performance
258
+ import cProfile
259
+ import pstats
260
+
261
+ cProfile.run('slow_function()', 'profile_stats')
262
+ stats = pstats.Stats('profile_stats')
263
+ stats.sort_stats('cumulative')
264
+ stats.print_stats(10) # Top 10 slowest
265
+ ```
266
+
267
+ ### Go Debugging
268
+
269
+ ```go
270
+ // Delve debugger
271
+ // Install: go install github.com/go-delve/delve/cmd/dlv@latest
272
+ // Run: dlv debug main.go
273
+
274
+ import (
275
+ "fmt"
276
+ "runtime"
277
+ "runtime/debug"
278
+ )
279
+
280
+ // Print stack trace
281
+ func debugStack() {
282
+ debug.PrintStack()
283
+ }
284
+
285
+ // Panic recovery with debugging
286
+ func processRequest() {
287
+ defer func() {
288
+ if r := recover(); r != nil {
289
+ fmt.Println("Panic:", r)
290
+ debug.PrintStack()
291
+ }
292
+ }()
293
+
294
+ // ... code that might panic
295
+ }
296
+
297
+ // Memory profiling
298
+ import _ "net/http/pprof"
299
+ // Visit http://localhost:6060/debug/pprof/
300
+
301
+ // CPU profiling
302
+ import (
303
+ "os"
304
+ "runtime/pprof"
305
+ )
306
+
307
+ f, _ := os.Create("cpu.prof")
308
+ pprof.StartCPUProfile(f)
309
+ defer pprof.StopCPUProfile()
310
+ // ... code to profile
311
+ ```
312
+
313
+ ## Advanced Debugging Techniques
314
+
315
+ ### Technique 1: Binary Search Debugging
316
+
317
+ ```bash
318
+ # Git bisect for finding regression
319
+ git bisect start
320
+ git bisect bad # Current commit is bad
321
+ git bisect good v1.0.0 # v1.0.0 was good
322
+
323
+ # Git checks out middle commit
324
+ # Test it, then:
325
+ git bisect good # if it works
326
+ git bisect bad # if it's broken
327
+
328
+ # Continue until bug found
329
+ git bisect reset # when done
330
+ ```
331
+
332
+ ### Technique 2: Differential Debugging
333
+
334
+ Compare working vs broken:
335
+
336
+ ```markdown
337
+ ## What's Different?
338
+
339
+ | Aspect | Working | Broken |
340
+ | ------------ | ----------- | -------------- |
341
+ | Environment | Development | Production |
342
+ | Node version | 18.16.0 | 18.15.0 |
343
+ | Data | Empty DB | 1M records |
344
+ | User | Admin | Regular user |
345
+ | Browser | Chrome | Safari |
346
+ | Time | During day | After midnight |
347
+
348
+ Hypothesis: Time-based issue? Check timezone handling.
349
+ ```
350
+
351
+ ### Technique 3: Trace Debugging
352
+
353
+ ```typescript
354
+ // Function call tracing
355
+ function trace(
356
+ target: any,
357
+ propertyKey: string,
358
+ descriptor: PropertyDescriptor,
359
+ ) {
360
+ const originalMethod = descriptor.value;
361
+
362
+ descriptor.value = function (...args: any[]) {
363
+ console.log(`Calling ${propertyKey} with args:`, args);
364
+ const result = originalMethod.apply(this, args);
365
+ console.log(`${propertyKey} returned:`, result);
366
+ return result;
367
+ };
368
+
369
+ return descriptor;
370
+ }
371
+
372
+ class OrderService {
373
+ @trace
374
+ calculateTotal(items: Item[]): number {
375
+ return items.reduce((sum, item) => sum + item.price, 0);
376
+ }
377
+ }
378
+ ```
379
+
380
+ ### Technique 4: Memory Leak Detection
381
+
382
+ ```typescript
383
+ // Chrome DevTools Memory Profiler
384
+ // 1. Take heap snapshot
385
+ // 2. Perform action
386
+ // 3. Take another snapshot
387
+ // 4. Compare snapshots
388
+
389
+ // Node.js memory debugging
390
+ if (process.memoryUsage().heapUsed > 500 * 1024 * 1024) {
391
+ console.warn("High memory usage:", process.memoryUsage());
392
+
393
+ // Generate heap dump
394
+ require("v8").writeHeapSnapshot();
395
+ }
396
+
397
+ // Find memory leaks in tests
398
+ let beforeMemory: number;
399
+
400
+ beforeEach(() => {
401
+ beforeMemory = process.memoryUsage().heapUsed;
402
+ });
403
+
404
+ afterEach(() => {
405
+ const afterMemory = process.memoryUsage().heapUsed;
406
+ const diff = afterMemory - beforeMemory;
407
+
408
+ if (diff > 10 * 1024 * 1024) {
409
+ // 10MB threshold
410
+ console.warn(`Possible memory leak: ${diff / 1024 / 1024}MB`);
411
+ }
412
+ });
413
+ ```
414
+
415
+ ## Debugging Patterns by Issue Type
416
+
417
+ ### Pattern 1: Intermittent Bugs
418
+
419
+ ```markdown
420
+ ## Strategies for Flaky Bugs
421
+
422
+ 1. **Add extensive logging**
423
+ - Log timing information
424
+ - Log all state transitions
425
+ - Log external interactions
426
+
427
+ 2. **Look for race conditions**
428
+ - Concurrent access to shared state
429
+ - Async operations completing out of order
430
+ - Missing synchronization
431
+
432
+ 3. **Check timing dependencies**
433
+ - setTimeout/setInterval
434
+ - Promise resolution order
435
+ - Animation frame timing
436
+
437
+ 4. **Stress test**
438
+ - Run many times
439
+ - Vary timing
440
+ - Simulate load
441
+ ```
442
+
443
+ ### Pattern 2: Performance Issues
444
+
445
+ ```markdown
446
+ ## Performance Debugging
447
+
448
+ 1. **Profile first**
449
+ - Don't optimize blindly
450
+ - Measure before and after
451
+ - Find bottlenecks
452
+
453
+ 2. **Common culprits**
454
+ - N+1 queries
455
+ - Unnecessary re-renders
456
+ - Large data processing
457
+ - Synchronous I/O
458
+
459
+ 3. **Tools**
460
+ - Browser DevTools Performance tab
461
+ - Lighthouse
462
+ - Python: cProfile, line_profiler
463
+ - Node: clinic.js, 0x
464
+ ```
465
+
466
+ ### Pattern 3: Production Bugs
467
+
468
+ ```markdown
469
+ ## Production Debugging
470
+
471
+ 1. **Gather evidence**
472
+ - Error tracking (Sentry, Bugsnag)
473
+ - Application logs
474
+ - User reports
475
+ - Metrics/monitoring
476
+
477
+ 2. **Reproduce locally**
478
+ - Use production data (anonymized)
479
+ - Match environment
480
+ - Follow exact steps
481
+
482
+ 3. **Safe investigation**
483
+ - Don't change production
484
+ - Use feature flags
485
+ - Add monitoring/logging
486
+ - Test fixes in staging
487
+ ```
488
+
489
+ ## Best Practices
490
+
491
+ 1. **Reproduce First**: Can't fix what you can't reproduce
492
+ 2. **Isolate the Problem**: Remove complexity until minimal case
493
+ 3. **Read Error Messages**: They're usually helpful
494
+ 4. **Check Recent Changes**: Most bugs are recent
495
+ 5. **Use Version Control**: Git bisect, blame, history
496
+ 6. **Take Breaks**: Fresh eyes see better
497
+ 7. **Document Findings**: Help future you
498
+ 8. **Fix Root Cause**: Not just symptoms
499
+
500
+ ## Common Debugging Mistakes
501
+
502
+ - **Making Multiple Changes**: Change one thing at a time
503
+ - **Not Reading Error Messages**: Read the full stack trace
504
+ - **Assuming It's Complex**: Often it's simple
505
+ - **Debug Logging in Prod**: Remove before shipping
506
+ - **Not Using Debugger**: console.log isn't always best
507
+ - **Giving Up Too Soon**: Persistence pays off
508
+ - **Not Testing the Fix**: Verify it actually works
509
+
510
+ ## Quick Debugging Checklist
511
+
512
+ ```markdown
513
+ ## When Stuck, Check:
514
+
515
+ - [ ] Spelling errors (typos in variable names)
516
+ - [ ] Case sensitivity (fileName vs filename)
517
+ - [ ] Null/undefined values
518
+ - [ ] Array index off-by-one
519
+ - [ ] Async timing (race conditions)
520
+ - [ ] Scope issues (closure, hoisting)
521
+ - [ ] Type mismatches
522
+ - [ ] Missing dependencies
523
+ - [ ] Environment variables
524
+ - [ ] File paths (absolute vs relative)
525
+ - [ ] Cache issues (clear cache)
526
+ - [ ] Stale data (refresh database)
527
+ ```
528
+
529
+ ## Resources
530
+
531
+ - **references/debugging-tools-guide.md**: Comprehensive tool documentation
532
+ - **references/performance-profiling.md**: Performance debugging guide
533
+ - **references/production-debugging.md**: Debugging live systems
534
+ - **assets/debugging-checklist.md**: Quick reference checklist
535
+ - **assets/common-bugs.md**: Common bug patterns
536
+ - **scripts/debug-helper.ts**: Debugging utility functions