claude-mpm 4.20.3__py3-none-any.whl → 4.25.10__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 (454) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_PM.md +23 -6
  3. claude_mpm/agents/OUTPUT_STYLE.md +3 -48
  4. claude_mpm/agents/PM_INSTRUCTIONS.md +1783 -34
  5. claude_mpm/agents/WORKFLOW.md +75 -2
  6. claude_mpm/agents/base_agent.json +6 -3
  7. claude_mpm/agents/frontmatter_validator.py +1 -1
  8. claude_mpm/agents/templates/api_qa.json +5 -2
  9. claude_mpm/agents/templates/circuit_breakers.md +108 -2
  10. claude_mpm/agents/templates/documentation.json +33 -6
  11. claude_mpm/agents/templates/javascript_engineer_agent.json +380 -0
  12. claude_mpm/agents/templates/php-engineer.json +10 -4
  13. claude_mpm/agents/templates/pm_red_flags.md +89 -19
  14. claude_mpm/agents/templates/project_organizer.json +7 -3
  15. claude_mpm/agents/templates/qa.json +2 -1
  16. claude_mpm/agents/templates/react_engineer.json +1 -0
  17. claude_mpm/agents/templates/research.json +82 -12
  18. claude_mpm/agents/templates/security.json +4 -4
  19. claude_mpm/agents/templates/tauri_engineer.json +274 -0
  20. claude_mpm/agents/templates/ticketing.json +10 -6
  21. claude_mpm/agents/templates/version_control.json +4 -2
  22. claude_mpm/agents/templates/web_qa.json +2 -1
  23. claude_mpm/cli/README.md +253 -0
  24. claude_mpm/cli/__init__.py +11 -1
  25. claude_mpm/cli/commands/aggregate.py +1 -1
  26. claude_mpm/cli/commands/analyze.py +3 -3
  27. claude_mpm/cli/commands/cleanup.py +1 -1
  28. claude_mpm/cli/commands/configure_agent_display.py +4 -4
  29. claude_mpm/cli/commands/debug.py +12 -12
  30. claude_mpm/cli/commands/hook_errors.py +277 -0
  31. claude_mpm/cli/commands/mcp_install_commands.py +1 -1
  32. claude_mpm/cli/commands/mcp_install_commands.py.backup +284 -0
  33. claude_mpm/cli/commands/mpm_init/README.md +365 -0
  34. claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
  35. claude_mpm/cli/commands/mpm_init/core.py +573 -0
  36. claude_mpm/cli/commands/mpm_init/display.py +341 -0
  37. claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
  38. claude_mpm/cli/commands/mpm_init/modes.py +397 -0
  39. claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
  40. claude_mpm/cli/commands/mpm_init_cli.py +396 -0
  41. claude_mpm/cli/commands/mpm_init_handler.py +67 -1
  42. claude_mpm/cli/commands/run.py +124 -128
  43. claude_mpm/cli/commands/skills.py +522 -34
  44. claude_mpm/cli/executor.py +56 -0
  45. claude_mpm/cli/interactive/agent_wizard.py +5 -5
  46. claude_mpm/cli/parsers/base_parser.py +28 -0
  47. claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
  48. claude_mpm/cli/parsers/skills_parser.py +138 -0
  49. claude_mpm/cli/startup.py +111 -8
  50. claude_mpm/cli/startup_display.py +480 -0
  51. claude_mpm/cli/utils.py +1 -1
  52. claude_mpm/cli_module/commands.py +1 -1
  53. claude_mpm/cli_module/refactoring_guide.md +253 -0
  54. claude_mpm/commands/mpm-help.md +3 -0
  55. claude_mpm/commands/mpm-init.md +19 -3
  56. claude_mpm/commands/mpm-resume.md +372 -0
  57. claude_mpm/commands/mpm-tickets.md +56 -7
  58. claude_mpm/commands/mpm.md +1 -0
  59. claude_mpm/config/agent_capabilities.yaml +658 -0
  60. claude_mpm/config/async_logging_config.yaml +145 -0
  61. claude_mpm/constants.py +12 -0
  62. claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +34 -0
  63. claude_mpm/core/api_validator.py +1 -1
  64. claude_mpm/core/claude_runner.py +14 -1
  65. claude_mpm/core/config.py +8 -0
  66. claude_mpm/core/constants.py +1 -1
  67. claude_mpm/core/framework/processors/metadata_processor.py +1 -1
  68. claude_mpm/core/hook_error_memory.py +381 -0
  69. claude_mpm/core/hook_manager.py +41 -2
  70. claude_mpm/core/interactive_session.py +48 -3
  71. claude_mpm/core/interfaces.py +56 -1
  72. claude_mpm/core/logger.py +3 -1
  73. claude_mpm/core/oneshot_session.py +39 -0
  74. claude_mpm/d2/.gitignore +22 -0
  75. claude_mpm/d2/ARCHITECTURE_COMPARISON.md +273 -0
  76. claude_mpm/d2/FLASK_INTEGRATION.md +156 -0
  77. claude_mpm/d2/IMPLEMENTATION_SUMMARY.md +452 -0
  78. claude_mpm/d2/QUICKSTART.md +186 -0
  79. claude_mpm/d2/README.md +232 -0
  80. claude_mpm/d2/STORE_FIX_SUMMARY.md +167 -0
  81. claude_mpm/d2/SVELTE5_STORES_GUIDE.md +180 -0
  82. claude_mpm/d2/TESTING.md +288 -0
  83. claude_mpm/d2/index.html +118 -0
  84. claude_mpm/d2/package.json +19 -0
  85. claude_mpm/d2/src/App.svelte +110 -0
  86. claude_mpm/d2/src/components/Header.svelte +153 -0
  87. claude_mpm/d2/src/components/MainContent.svelte +74 -0
  88. claude_mpm/d2/src/components/Sidebar.svelte +85 -0
  89. claude_mpm/d2/src/components/tabs/EventsTab.svelte +326 -0
  90. claude_mpm/d2/src/lib/socketio.js +144 -0
  91. claude_mpm/d2/src/main.js +7 -0
  92. claude_mpm/d2/src/stores/events.js +114 -0
  93. claude_mpm/d2/src/stores/socket.js +108 -0
  94. claude_mpm/d2/src/stores/theme.js +65 -0
  95. claude_mpm/d2/svelte.config.js +12 -0
  96. claude_mpm/d2/vite.config.js +15 -0
  97. claude_mpm/dashboard/.claude-mpm/memories/README.md +36 -0
  98. claude_mpm/dashboard/BUILD_NUMBER +1 -0
  99. claude_mpm/dashboard/README.md +121 -0
  100. claude_mpm/dashboard/VERSION +1 -0
  101. claude_mpm/dashboard/react/components/DataInspector/DataInspector.tsx +273 -0
  102. claude_mpm/dashboard/react/components/ErrorBoundary.tsx +75 -0
  103. claude_mpm/dashboard/react/components/EventViewer/EventViewer.tsx +141 -0
  104. claude_mpm/dashboard/react/components/shared/ConnectionStatus.tsx +36 -0
  105. claude_mpm/dashboard/react/components/shared/FilterBar.tsx +89 -0
  106. claude_mpm/dashboard/react/contexts/DashboardContext.tsx +215 -0
  107. claude_mpm/dashboard/react/entries/events.tsx +165 -0
  108. claude_mpm/dashboard/react/hooks/useEvents.ts +191 -0
  109. claude_mpm/dashboard/react/hooks/useSocket.ts +225 -0
  110. claude_mpm/dashboard/static/built/REFACTORING_SUMMARY.md +170 -0
  111. claude_mpm/dashboard/static/built/components/activity-tree.js.map +1 -0
  112. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +101 -101
  113. claude_mpm/dashboard/static/built/components/agent-inference.js.map +1 -0
  114. claude_mpm/dashboard/static/built/components/build-tracker.js +59 -59
  115. claude_mpm/dashboard/static/built/components/code-simple.js +107 -107
  116. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +29 -29
  117. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +24 -24
  118. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +27 -27
  119. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +25 -25
  120. claude_mpm/dashboard/static/built/components/code-tree.js.map +1 -0
  121. claude_mpm/dashboard/static/built/components/code-viewer.js.map +1 -0
  122. claude_mpm/dashboard/static/built/components/connection-debug.js +101 -101
  123. claude_mpm/dashboard/static/built/components/diff-viewer.js +113 -113
  124. claude_mpm/dashboard/static/built/components/event-processor.js.map +1 -0
  125. claude_mpm/dashboard/static/built/components/event-viewer.js.map +1 -0
  126. claude_mpm/dashboard/static/built/components/export-manager.js.map +1 -0
  127. claude_mpm/dashboard/static/built/components/file-change-tracker.js +57 -57
  128. claude_mpm/dashboard/static/built/components/file-change-viewer.js +74 -74
  129. claude_mpm/dashboard/static/built/components/file-tool-tracker.js.map +1 -0
  130. claude_mpm/dashboard/static/built/components/file-viewer.js.map +1 -0
  131. claude_mpm/dashboard/static/built/components/hud-library-loader.js.map +1 -0
  132. claude_mpm/dashboard/static/built/components/hud-manager.js.map +1 -0
  133. claude_mpm/dashboard/static/built/components/hud-visualizer.js.map +1 -0
  134. claude_mpm/dashboard/static/built/components/module-viewer.js.map +1 -0
  135. claude_mpm/dashboard/static/built/components/session-manager.js.map +1 -0
  136. claude_mpm/dashboard/static/built/components/socket-manager.js.map +1 -0
  137. claude_mpm/dashboard/static/built/components/ui-state-manager.js.map +1 -0
  138. claude_mpm/dashboard/static/built/components/unified-data-viewer.js.map +1 -0
  139. claude_mpm/dashboard/static/built/components/working-directory.js.map +1 -0
  140. claude_mpm/dashboard/static/built/connection-manager.js +76 -76
  141. claude_mpm/dashboard/static/built/dashboard.js.map +1 -0
  142. claude_mpm/dashboard/static/built/extension-error-handler.js +22 -22
  143. claude_mpm/dashboard/static/built/react/events.js.map +1 -0
  144. claude_mpm/dashboard/static/built/shared/dom-helpers.js +9 -9
  145. claude_mpm/dashboard/static/built/shared/event-bus.js +5 -5
  146. claude_mpm/dashboard/static/built/shared/logger.js +16 -16
  147. claude_mpm/dashboard/static/built/shared/tooltip-service.js +6 -6
  148. claude_mpm/dashboard/static/built/socket-client.js.map +1 -0
  149. claude_mpm/dashboard/static/css/activity.css +69 -69
  150. claude_mpm/dashboard/static/css/connection-status.css +10 -10
  151. claude_mpm/dashboard/static/css/dashboard.css +15 -15
  152. claude_mpm/dashboard/static/index.html +22 -22
  153. claude_mpm/dashboard/static/js/REFACTORING_SUMMARY.md +170 -0
  154. claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
  155. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
  156. claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
  157. claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
  158. claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
  159. claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
  160. claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
  161. claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
  162. claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
  163. claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
  164. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
  165. claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
  166. claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
  167. claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
  168. claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
  169. claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
  170. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
  171. claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
  172. claude_mpm/dashboard/static/js/connection-manager.js +76 -76
  173. claude_mpm/dashboard/static/js/dashboard.js +76 -58
  174. claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
  175. claude_mpm/dashboard/static/js/shared/dom-helpers.js +9 -9
  176. claude_mpm/dashboard/static/js/shared/event-bus.js +5 -5
  177. claude_mpm/dashboard/static/js/shared/logger.js +16 -16
  178. claude_mpm/dashboard/static/js/shared/tooltip-service.js +6 -6
  179. claude_mpm/dashboard/static/js/socket-client.js +138 -121
  180. claude_mpm/dashboard/static/navigation-test-results.md +118 -0
  181. claude_mpm/dashboard/static/production/main.html +21 -21
  182. claude_mpm/dashboard/static/test-archive/dashboard.html +22 -22
  183. claude_mpm/dashboard/templates/.claude-mpm/memories/README.md +36 -0
  184. claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +39 -0
  185. claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +38 -0
  186. claude_mpm/dashboard/templates/code_simple.html +23 -23
  187. claude_mpm/dashboard/templates/index.html +18 -18
  188. claude_mpm/hooks/README.md +143 -0
  189. claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
  190. claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
  191. claude_mpm/hooks/claude_hooks/installer.py +45 -0
  192. claude_mpm/hooks/templates/README.md +180 -0
  193. claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
  194. claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
  195. claude_mpm/hooks/templates/settings.json.example +147 -0
  196. claude_mpm/schemas/agent_schema.json +596 -0
  197. claude_mpm/schemas/frontmatter_schema.json +165 -0
  198. claude_mpm/scripts/claude-hook-handler.sh +3 -3
  199. claude_mpm/scripts/start_activity_logging.py +3 -1
  200. claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
  201. claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
  202. claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
  203. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
  204. claude_mpm/services/agents/loading/framework_agent_loader.py +8 -8
  205. claude_mpm/services/agents/local_template_manager.py +3 -1
  206. claude_mpm/services/cli/session_pause_manager.py +504 -0
  207. claude_mpm/services/cli/session_resume_helper.py +36 -16
  208. claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
  209. claude_mpm/services/core/base.py +26 -11
  210. claude_mpm/services/core/interfaces.py +56 -1
  211. claude_mpm/services/core/models/agent_config.py +3 -0
  212. claude_mpm/services/core/models/process.py +4 -0
  213. claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
  214. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  215. claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
  216. claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
  217. claude_mpm/services/diagnostics/doctor_reporter.py +6 -4
  218. claude_mpm/services/diagnostics/models.py +21 -0
  219. claude_mpm/services/event_bus/README.md +244 -0
  220. claude_mpm/services/event_bus/direct_relay.py +3 -3
  221. claude_mpm/services/event_bus/event_bus.py +36 -3
  222. claude_mpm/services/event_bus/relay.py +23 -7
  223. claude_mpm/services/events/README.md +303 -0
  224. claude_mpm/services/events/consumers/logging.py +1 -2
  225. claude_mpm/services/framework_claude_md_generator/README.md +119 -0
  226. claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
  227. claude_mpm/services/local_ops/__init__.py +2 -0
  228. claude_mpm/services/local_ops/process_manager.py +1 -1
  229. claude_mpm/services/local_ops/resource_monitor.py +2 -2
  230. claude_mpm/services/mcp_gateway/README.md +185 -0
  231. claude_mpm/services/mcp_gateway/auto_configure.py +31 -25
  232. claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
  233. claude_mpm/services/mcp_gateway/core/process_pool.py +19 -10
  234. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
  235. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
  236. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +26 -21
  237. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
  238. claude_mpm/services/memory/failure_tracker.py +19 -4
  239. claude_mpm/services/memory/optimizer.py +1 -1
  240. claude_mpm/services/model/model_router.py +8 -9
  241. claude_mpm/services/monitor/daemon.py +1 -1
  242. claude_mpm/services/monitor/server.py +2 -2
  243. claude_mpm/services/native_agent_converter.py +356 -0
  244. claude_mpm/services/port_manager.py +1 -1
  245. claude_mpm/services/project/documentation_manager.py +2 -1
  246. claude_mpm/services/project/toolchain_analyzer.py +3 -1
  247. claude_mpm/services/runner_configuration_service.py +1 -0
  248. claude_mpm/services/self_upgrade_service.py +165 -7
  249. claude_mpm/services/skills_config.py +547 -0
  250. claude_mpm/services/skills_deployer.py +955 -0
  251. claude_mpm/services/socketio/handlers/connection.py +1 -1
  252. claude_mpm/services/socketio/handlers/connection.py.backup +217 -0
  253. claude_mpm/services/socketio/handlers/git.py +2 -2
  254. claude_mpm/services/socketio/handlers/hook.py.backup +154 -0
  255. claude_mpm/services/static/.gitkeep +2 -0
  256. claude_mpm/services/system_instructions_service.py +1 -3
  257. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
  258. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
  259. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
  260. claude_mpm/services/version_control/VERSION +1 -0
  261. claude_mpm/services/version_control/conflict_resolution.py +6 -4
  262. claude_mpm/services/visualization/mermaid_generator.py +2 -3
  263. claude_mpm/skills/__init__.py +3 -3
  264. claude_mpm/skills/agent_skills_injector.py +42 -49
  265. claude_mpm/skills/bundled/.gitkeep +2 -0
  266. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +4 -0
  267. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +108 -114
  268. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
  269. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
  270. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
  271. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
  272. claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
  273. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +46 -41
  274. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
  275. claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
  276. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +36 -73
  277. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
  278. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
  279. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +100 -125
  280. claude_mpm/skills/bundled/debugging/root-cause-tracing/find-polluter.sh +63 -0
  281. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
  282. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
  283. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
  284. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
  285. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +28 -72
  286. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +11 -0
  287. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
  288. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
  289. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +272 -0
  290. claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
  291. claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
  292. claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
  293. claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
  294. claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
  295. claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
  296. claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
  297. claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
  298. claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
  299. claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
  300. claude_mpm/skills/bundled/main/artifacts-builder/LICENSE.txt +202 -0
  301. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +13 -1
  302. claude_mpm/skills/bundled/main/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  303. claude_mpm/skills/bundled/main/artifacts-builder/scripts/init-artifact.sh +322 -0
  304. claude_mpm/skills/bundled/main/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  305. claude_mpm/skills/bundled/main/internal-comms/LICENSE.txt +202 -0
  306. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +11 -0
  307. claude_mpm/skills/bundled/main/mcp-builder/LICENSE.txt +202 -0
  308. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +109 -277
  309. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
  310. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
  311. claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +17 -10
  312. claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +92 -39
  313. claude_mpm/skills/bundled/main/mcp-builder/scripts/example_evaluation.xml +22 -0
  314. claude_mpm/skills/bundled/main/mcp-builder/scripts/requirements.txt +2 -0
  315. claude_mpm/skills/bundled/main/skill-creator/LICENSE.txt +202 -0
  316. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +135 -155
  317. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
  318. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
  319. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
  320. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
  321. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
  322. claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +13 -12
  323. claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +5 -3
  324. claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +19 -12
  325. claude_mpm/skills/bundled/performance-profiling.md +6 -0
  326. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
  327. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
  328. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
  329. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
  330. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
  331. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
  332. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
  333. claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
  334. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
  335. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
  336. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
  337. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
  338. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
  339. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
  340. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
  341. claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
  342. claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
  343. claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
  344. claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
  345. claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
  346. claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
  347. claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
  348. claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
  349. claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
  350. claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
  351. claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
  352. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +21 -25
  353. claude_mpm/skills/bundled/testing/condition-based-waiting/example.ts +158 -0
  354. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
  355. claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
  356. claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
  357. claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
  358. claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
  359. claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
  360. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +86 -250
  361. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
  362. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
  363. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
  364. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
  365. claude_mpm/skills/bundled/testing/webapp-testing/LICENSE.txt +202 -0
  366. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +145 -57
  367. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
  368. claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +6 -6
  369. claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +13 -9
  370. claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +8 -8
  371. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
  372. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
  373. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +37 -15
  374. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
  375. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
  376. claude_mpm/skills/skills_registry.py +44 -48
  377. claude_mpm/skills/skills_service.py +117 -108
  378. claude_mpm/templates/questions/EXAMPLES.md +501 -0
  379. claude_mpm/templates/questions/__init__.py +43 -0
  380. claude_mpm/templates/questions/base.py +193 -0
  381. claude_mpm/templates/questions/pr_strategy.py +314 -0
  382. claude_mpm/templates/questions/project_init.py +388 -0
  383. claude_mpm/templates/questions/ticket_mgmt.py +397 -0
  384. claude_mpm/tools/README_SOCKETIO_DEBUG.md +224 -0
  385. claude_mpm/tools/__main__.py +8 -8
  386. claude_mpm/tools/code_tree_analyzer/README.md +64 -0
  387. claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
  388. claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
  389. claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
  390. claude_mpm/tools/code_tree_analyzer/core.py +380 -0
  391. claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
  392. claude_mpm/tools/code_tree_analyzer/events.py +168 -0
  393. claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
  394. claude_mpm/tools/code_tree_analyzer/models.py +39 -0
  395. claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
  396. claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
  397. claude_mpm/utils/agent_dependency_loader.py +3 -3
  398. claude_mpm/utils/dependency_cache.py +3 -1
  399. claude_mpm/utils/gitignore.py +241 -0
  400. claude_mpm/utils/log_cleanup.py +3 -3
  401. claude_mpm/utils/robust_installer.py +3 -5
  402. claude_mpm/utils/structured_questions.py +619 -0
  403. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/METADATA +218 -31
  404. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/RECORD +409 -246
  405. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
  406. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
  407. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
  408. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
  409. claude_mpm/cli/commands/mpm_init.py +0 -2093
  410. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
  411. claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
  412. claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
  413. claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
  414. claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
  415. claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
  416. claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
  417. claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
  418. claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
  419. claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
  420. claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
  421. claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
  422. claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
  423. claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
  424. claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
  425. claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
  426. claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
  427. claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
  428. claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  429. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  430. claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
  431. claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
  432. claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
  433. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
  434. claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
  435. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
  436. claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
  437. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
  438. claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  439. claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
  440. claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
  441. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
  442. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  443. claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
  444. claude_mpm/dashboard/static/dist/dashboard.js +0 -2
  445. claude_mpm/dashboard/static/dist/react/events.js +0 -30
  446. claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  447. claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
  448. claude_mpm/skills/bundled/debugging/verification-before-completion/references/common-failures.md +0 -213
  449. claude_mpm/tools/code_tree_analyzer.py +0 -1825
  450. /claude_mpm/skills/bundled/collaboration/requesting-code-review/{code-reviewer.md → references/code-reviewer-template.md} +0 -0
  451. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/WHEEL +0 -0
  452. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/entry_points.txt +0 -0
  453. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/licenses/LICENSE +0 -0
  454. {claude_mpm-4.20.3.dist-info → claude_mpm-4.25.10.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,312 @@
1
+ # Plan Structure Templates
2
+
3
+ ## Standard Plan Document Header
4
+
5
+ **Every plan MUST start with this header:**
6
+
7
+ ```markdown
8
+ # [Feature Name] Implementation Plan
9
+
10
+ > **For Claude:** Use `${SUPERPOWERS_SKILLS_ROOT}/skills/collaboration/executing-plans/SKILL.md` to implement this plan task-by-task.
11
+
12
+ **Goal:** [One sentence describing what this builds]
13
+
14
+ **Architecture:** [2-3 sentences about approach]
15
+
16
+ **Tech Stack:** [Key technologies/libraries]
17
+
18
+ ---
19
+ ```
20
+
21
+ ## Task Template Structure
22
+
23
+ ```markdown
24
+ ### Task N: [Component Name]
25
+
26
+ **Files:**
27
+ - Create: `exact/path/to/file.py`
28
+ - Modify: `exact/path/to/existing.py:123-145`
29
+ - Test: `tests/exact/path/to/test.py`
30
+
31
+ **Step 1: Write the failing test**
32
+
33
+ ```python
34
+ def test_specific_behavior():
35
+ result = function(input)
36
+ assert result == expected
37
+ ```
38
+
39
+ **Step 2: Run test to verify it fails**
40
+
41
+ Run: `pytest tests/path/test.py::test_name -v`
42
+ Expected: FAIL with "function not defined"
43
+
44
+ **Step 3: Write minimal implementation**
45
+
46
+ ```python
47
+ def function(input):
48
+ return expected
49
+ ```
50
+
51
+ **Step 4: Run test to verify it passes**
52
+
53
+ Run: `pytest tests/path/test.py::test_name -v`
54
+ Expected: PASS
55
+
56
+ **Step 5: Commit**
57
+
58
+ ```bash
59
+ git add tests/path/test.py src/path/file.py
60
+ git commit -m "feat: add specific feature"
61
+ ```
62
+ ```
63
+
64
+ ## Bite-Sized Task Examples
65
+
66
+ ### Example 1: Database Model
67
+
68
+ ```markdown
69
+ ### Task 1: User Model and Schema
70
+
71
+ **Files:**
72
+ - Create: `src/models/user.py`
73
+ - Create: `tests/models/test_user.py`
74
+ - Create: `migrations/001_create_users_table.sql`
75
+
76
+ **Step 1: Write the failing test**
77
+
78
+ ```python
79
+ def test_user_model_creation():
80
+ user = User(username="alice", email="alice@example.com")
81
+ assert user.username == "alice"
82
+ assert user.email == "alice@example.com"
83
+ assert user.created_at is not None
84
+ ```
85
+
86
+ **Step 2: Run test to verify it fails**
87
+
88
+ Run: `pytest tests/models/test_user.py::test_user_model_creation -v`
89
+ Expected: FAIL with "ModuleNotFoundError: No module named 'models.user'"
90
+
91
+ **Step 3: Write minimal implementation**
92
+
93
+ In `src/models/user.py`:
94
+ ```python
95
+ from datetime import datetime
96
+ from dataclasses import dataclass
97
+
98
+ @dataclass
99
+ class User:
100
+ username: str
101
+ email: str
102
+ created_at: datetime = None
103
+
104
+ def __post_init__(self):
105
+ if self.created_at is None:
106
+ self.created_at = datetime.utcnow()
107
+ ```
108
+
109
+ **Step 4: Run test to verify it passes**
110
+
111
+ Run: `pytest tests/models/test_user.py::test_user_model_creation -v`
112
+ Expected: PASS
113
+
114
+ **Step 5: Commit**
115
+
116
+ ```bash
117
+ git add src/models/user.py tests/models/test_user.py
118
+ git commit -m "feat: add User model with basic fields"
119
+ ```
120
+ ```
121
+
122
+ ### Example 2: API Endpoint
123
+
124
+ ```markdown
125
+ ### Task 3: GET /users/:id Endpoint
126
+
127
+ **Files:**
128
+ - Modify: `src/api/routes.py:15` (add route)
129
+ - Create: `src/api/handlers/users.py`
130
+ - Create: `tests/api/test_users_endpoint.py`
131
+
132
+ **Step 1: Write the failing test**
133
+
134
+ ```python
135
+ def test_get_user_by_id(client, db_with_users):
136
+ response = client.get("/users/1")
137
+ assert response.status_code == 200
138
+ assert response.json["username"] == "alice"
139
+ assert response.json["email"] == "alice@example.com"
140
+ ```
141
+
142
+ **Step 2: Run test to verify it fails**
143
+
144
+ Run: `pytest tests/api/test_users_endpoint.py::test_get_user_by_id -v`
145
+ Expected: FAIL with "404 Not Found"
146
+
147
+ **Step 3: Write minimal implementation**
148
+
149
+ In `src/api/handlers/users.py`:
150
+ ```python
151
+ from flask import jsonify
152
+ from src.models.user import User
153
+ from src.db import get_db
154
+
155
+ def get_user(user_id):
156
+ db = get_db()
157
+ user = db.query(User).filter(User.id == user_id).first()
158
+ if not user:
159
+ return jsonify({"error": "User not found"}), 404
160
+ return jsonify({
161
+ "id": user.id,
162
+ "username": user.username,
163
+ "email": user.email
164
+ })
165
+ ```
166
+
167
+ In `src/api/routes.py` at line 15:
168
+ ```python
169
+ from src.api.handlers.users import get_user
170
+
171
+ # Add this route
172
+ app.route("/users/<int:user_id>", methods=["GET"])(get_user)
173
+ ```
174
+
175
+ **Step 4: Run test to verify it passes**
176
+
177
+ Run: `pytest tests/api/test_users_endpoint.py::test_get_user_by_id -v`
178
+ Expected: PASS
179
+
180
+ **Step 5: Commit**
181
+
182
+ ```bash
183
+ git add src/api/handlers/users.py src/api/routes.py tests/api/test_users_endpoint.py
184
+ git commit -m "feat: add GET /users/:id endpoint"
185
+ ```
186
+ ```
187
+
188
+ ## Granularity Guidelines
189
+
190
+ **Each step should take 2-5 minutes:**
191
+
192
+ ✅ **Good granularity:**
193
+ - "Write the failing test" - single test function
194
+ - "Run it to make sure it fails" - one command
195
+ - "Implement the minimal code to make the test pass" - focused function
196
+ - "Run the tests and make sure they pass" - verify
197
+ - "Commit" - checkpoint
198
+
199
+ ❌ **Too large (split these up):**
200
+ - "Implement the user authentication system" - needs 10+ tasks
201
+ - "Add validation and error handling" - multiple tests/steps
202
+ - "Create all the models" - one task per model
203
+
204
+ ❌ **Too small (combine these):**
205
+ - "Import the datetime module" - part of implementation step
206
+ - "Type the function signature" - part of implementation step
207
+ - "Add one line of code" - too granular
208
+
209
+ ## Multi-File Task Structure
210
+
211
+ When a task involves multiple related files:
212
+
213
+ ```markdown
214
+ ### Task 4: Email Validation with Helper
215
+
216
+ **Files:**
217
+ - Create: `src/utils/validators.py`
218
+ - Create: `tests/utils/test_validators.py`
219
+ - Modify: `src/models/user.py:12` (use validator)
220
+ - Modify: `tests/models/test_user.py` (add validation tests)
221
+
222
+ **Step 1: Write failing test for validator**
223
+
224
+ In `tests/utils/test_validators.py`:
225
+ ```python
226
+ def test_validate_email_valid():
227
+ assert validate_email("alice@example.com") == True
228
+
229
+ def test_validate_email_invalid():
230
+ assert validate_email("not-an-email") == False
231
+ ```
232
+
233
+ **Step 2: Run validator test to verify it fails**
234
+
235
+ Run: `pytest tests/utils/test_validators.py -v`
236
+ Expected: FAIL with "NameError: name 'validate_email' is not defined"
237
+
238
+ **Step 3: Implement email validator**
239
+
240
+ In `src/utils/validators.py`:
241
+ ```python
242
+ import re
243
+
244
+ def validate_email(email: str) -> bool:
245
+ pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
246
+ return bool(re.match(pattern, email))
247
+ ```
248
+
249
+ **Step 4: Run validator test to verify it passes**
250
+
251
+ Run: `pytest tests/utils/test_validators.py -v`
252
+ Expected: PASS (both tests)
253
+
254
+ **Step 5: Write failing test for User model validation**
255
+
256
+ In `tests/models/test_user.py`:
257
+ ```python
258
+ def test_user_model_rejects_invalid_email():
259
+ with pytest.raises(ValueError, match="Invalid email"):
260
+ User(username="alice", email="not-an-email")
261
+ ```
262
+
263
+ **Step 6: Run User model test to verify it fails**
264
+
265
+ Run: `pytest tests/models/test_user.py::test_user_model_rejects_invalid_email -v`
266
+ Expected: FAIL (no validation yet)
267
+
268
+ **Step 7: Add validation to User model**
269
+
270
+ In `src/models/user.py` at line 12:
271
+ ```python
272
+ from src.utils.validators import validate_email
273
+
274
+ @dataclass
275
+ class User:
276
+ username: str
277
+ email: str
278
+ created_at: datetime = None
279
+
280
+ def __post_init__(self):
281
+ if not validate_email(self.email):
282
+ raise ValueError(f"Invalid email: {self.email}")
283
+ if self.created_at is None:
284
+ self.created_at = datetime.utcnow()
285
+ ```
286
+
287
+ **Step 8: Run User model test to verify it passes**
288
+
289
+ Run: `pytest tests/models/test_user.py::test_user_model_rejects_invalid_email -v`
290
+ Expected: PASS
291
+
292
+ **Step 9: Run all tests to ensure nothing broke**
293
+
294
+ Run: `pytest tests/ -v`
295
+ Expected: All tests PASS
296
+
297
+ **Step 10: Commit**
298
+
299
+ ```bash
300
+ git add src/utils/validators.py tests/utils/test_validators.py src/models/user.py tests/models/test_user.py
301
+ git commit -m "feat: add email validation to User model"
302
+ ```
303
+ ```
304
+
305
+ ## Plan File Naming Convention
306
+
307
+ Save plans to: `docs/plans/YYYY-MM-DD-<feature-name>.md`
308
+
309
+ **Examples:**
310
+ - `docs/plans/2025-01-15-user-authentication.md`
311
+ - `docs/plans/2025-01-16-api-rate-limiting.md`
312
+ - `docs/plans/2025-01-17-database-migration-users.md`
@@ -2,8 +2,24 @@
2
2
  name: Root Cause Tracing
3
3
  description: Systematically trace bugs backward through call stack to find original trigger
4
4
  when_to_use: when errors occur deep in execution and you need to trace back to find the original trigger
5
- version: 1.1.0
5
+ version: 2.0.0
6
6
  languages: all
7
+ progressive_disclosure:
8
+ entry_point:
9
+ summary: "Trace bugs backward through call chains to find original triggers instead of fixing symptoms"
10
+ when_to_use: "When errors manifest deep in execution, unclear data origins, or long call chains. Use AFTER systematic-debugging Phase 1."
11
+ quick_start: "1. Observe symptom 2. Find immediate cause 3. Ask what called this 4. Keep tracing up 5. Fix at source + add defense"
12
+ references:
13
+ - tracing-techniques.md
14
+ - examples.md
15
+ - advanced-techniques.md
16
+ - integration.md
17
+ context_limit: 800
18
+ tags:
19
+ - debugging
20
+ - root-cause
21
+ - tracing
22
+ - call-stack
7
23
  ---
8
24
 
9
25
  # Root Cause Tracing
@@ -14,159 +30,115 @@ Bugs often manifest deep in the call stack (git init in wrong directory, file cr
14
30
 
15
31
  **Core principle:** Trace backward through the call chain until you find the original trigger, then fix at the source.
16
32
 
17
- ## When to Use
18
-
19
- ```dot
20
- digraph when_to_use {
21
- "Bug appears deep in stack?" [shape=diamond];
22
- "Can trace backwards?" [shape=diamond];
23
- "Fix at symptom point" [shape=box];
24
- "Trace to original trigger" [shape=box];
25
- "BETTER: Also add defense-in-depth" [shape=box];
26
-
27
- "Bug appears deep in stack?" -> "Can trace backwards?" [label="yes"];
28
- "Can trace backwards?" -> "Trace to original trigger" [label="yes"];
29
- "Can trace backwards?" -> "Fix at symptom point" [label="no - dead end"];
30
- "Trace to original trigger" -> "BETTER: Also add defense-in-depth";
31
- }
32
- ```
33
+ This skill is a specialized technique within the systematic-debugging workflow, typically applied during Phase 1 (Root Cause Investigation) when dealing with deep call stacks.
34
+
35
+ ## When to Use This Skill
33
36
 
34
- **Use when:**
37
+ **Use root-cause-tracing when:**
35
38
  - Error happens deep in execution (not at entry point)
36
39
  - Stack trace shows long call chain
37
40
  - Unclear where invalid data originated
38
41
  - Need to find which test/code triggers the problem
42
+ - Symptom appears far from actual cause
39
43
 
40
- ## The Tracing Process
44
+ **Relationship with systematic-debugging:**
45
+ - systematic-debugging: The overall framework (Phases 1-4)
46
+ - root-cause-tracing: A specific technique for Phase 1 investigation
47
+ - Use root-cause-tracing WITHIN systematic-debugging Phase 1
48
+
49
+ ## The Iron Law
41
50
 
42
- ### 1. Observe the Symptom
43
51
  ```
44
- Error: git init failed in /Users/jesse/project/packages/core
52
+ NEVER FIX JUST WHERE THE ERROR APPEARS
53
+ ALWAYS TRACE BACK TO FIND THE ORIGINAL TRIGGER
45
54
  ```
46
55
 
47
- ### 2. Find Immediate Cause
48
- **What code directly causes this?**
49
- ```typescript
50
- await execFileAsync('git', ['init'], { cwd: projectDir });
51
- ```
56
+ Fixing symptoms creates bandaid solutions that mask root problems.
52
57
 
53
- ### 3. Ask: What Called This?
54
- ```typescript
55
- WorktreeManager.createSessionWorktree(projectDir, sessionId)
56
- → called by Session.initializeWorkspace()
57
- → called by Session.create()
58
- → called by test at Project.create()
59
- ```
58
+ ## Core Principles
60
59
 
61
- ### 4. Keep Tracing Up
62
- **What value was passed?**
63
- - `projectDir = ''` (empty string!)
64
- - Empty string as `cwd` resolves to `process.cwd()`
65
- - That's the source code directory!
66
-
67
- ### 5. Find Original Trigger
68
- **Where did empty string come from?**
69
- ```typescript
70
- const context = setupCoreTest(); // Returns { tempDir: '' }
71
- Project.create('name', context.tempDir); // Accessed before beforeEach!
72
- ```
60
+ 1. **Trace Backward**: Follow call chain from symptom to source
61
+ 2. **Find Original Trigger**: Identify where bad data/state originated
62
+ 3. **Fix at Source**: Address root cause, not symptom
63
+ 4. **Defense-in-Depth**: Add validation at each layer after fixing source
64
+
65
+ ## Quick Start
73
66
 
74
- ## Adding Stack Traces
67
+ ### The 5-Step Trace Process
75
68
 
76
- When you can't trace manually, add instrumentation:
69
+ 1. **Observe the Symptom**: What error message? What failed operation?
70
+ 2. **Find Immediate Cause**: What code directly causes this error?
71
+ 3. **Ask What Called This**: Trace one level up the call stack
72
+ 4. **Keep Tracing Up**: Continue until you find the original trigger
73
+ 5. **Fix at Source + Defense**: Fix root cause and add layer validation
77
74
 
78
- ```typescript
79
- // Before the problematic operation
80
- async function gitInit(directory: string) {
81
- const stack = new Error().stack;
82
- console.error('DEBUG git init:', {
83
- directory,
84
- cwd: process.cwd(),
85
- nodeEnv: process.env.NODE_ENV,
86
- stack,
87
- });
75
+ ### Decision Tree
88
76
 
89
- await execFileAsync('git', ['init'], { cwd: directory });
90
- }
77
+ ```
78
+ Error appears deep in stack?
79
+ → Yes: Start tracing backward
80
+ → Can identify caller? → Trace one level up → Repeat
81
+ → Cannot identify caller? → Add instrumentation (see advanced-techniques.md)
82
+ → No: May not need tracing (error at entry point)
91
83
  ```
92
84
 
93
- **Critical:** Use `console.error()` in tests (not logger - may not show)
85
+ ## The Tracing Process
94
86
 
95
- **Run and capture:**
96
- ```bash
97
- npm test 2>&1 | grep 'DEBUG git init'
87
+ **Example: Git init in wrong directory**
88
+ ```
89
+ Error symptom execFileAsync('git', ['init'], { cwd: '' })
90
+ ← WorktreeManager.createSessionWorktree(projectDir='')
91
+ ← Session.create() → Project.create() → Test code
92
+ ← ROOT CAUSE: setupCoreTest() returns { tempDir: '' } before beforeEach
98
93
  ```
99
94
 
100
- **Analyze stack traces:**
101
- - Look for test file names
102
- - Find the line number triggering the call
103
- - Identify the pattern (same test? same parameter?)
95
+ **At each level ask:** Where did this value come from? Is this the origin?
104
96
 
105
- ## Finding Which Test Causes Pollution
97
+ **For detailed tracing methodology, see [Tracing Techniques](references/tracing-techniques.md)**
98
+ **For complete real-world examples, see [Examples](references/examples.md)**
106
99
 
107
- If something appears during tests but you don't know which test:
100
+ ## After Finding Root Cause
108
101
 
109
- Use the bisection script: @find-polluter.sh
102
+ **Fix at source** (throw if accessed before initialization) + **Add defense-in-depth** (validate at Project.create, WorkspaceManager, environment guards, instrumentation).
110
103
 
111
- ```bash
112
- ./find-polluter.sh '.git' 'src/**/*.test.ts'
113
- ```
104
+ This prevents similar bugs and catches issues earlier.
114
105
 
115
- Runs tests one-by-one, stops at first polluter. See script for usage.
116
-
117
- ## Real Example: Empty projectDir
118
-
119
- **Symptom:** `.git` created in `packages/core/` (source code)
120
-
121
- **Trace chain:**
122
- 1. `git init` runs in `process.cwd()` ← empty cwd parameter
123
- 2. WorktreeManager called with empty projectDir
124
- 3. Session.create() passed empty string
125
- 4. Test accessed `context.tempDir` before beforeEach
126
- 5. setupCoreTest() returns `{ tempDir: '' }` initially
127
-
128
- **Root cause:** Top-level variable initialization accessing empty value
129
-
130
- **Fix:** Made tempDir a getter that throws if accessed before beforeEach
131
-
132
- **Also added defense-in-depth:**
133
- - Layer 1: Project.create() validates directory
134
- - Layer 2: WorkspaceManager validates not empty
135
- - Layer 3: NODE_ENV guard refuses git init outside tmpdir
136
- - Layer 4: Stack trace logging before git init
137
-
138
- ## Key Principle
139
-
140
- ```dot
141
- digraph principle {
142
- "Found immediate cause" [shape=ellipse];
143
- "Can trace one level up?" [shape=diamond];
144
- "Trace backwards" [shape=box];
145
- "Is this the source?" [shape=diamond];
146
- "Fix at source" [shape=box];
147
- "Add validation at each layer" [shape=box];
148
- "Bug impossible" [shape=doublecircle];
149
- "NEVER fix just the symptom" [shape=octagon, style=filled, fillcolor=red, fontcolor=white];
150
-
151
- "Found immediate cause" -> "Can trace one level up?";
152
- "Can trace one level up?" -> "Trace backwards" [label="yes"];
153
- "Can trace one level up?" -> "NEVER fix just the symptom" [label="no"];
154
- "Trace backwards" -> "Is this the source?";
155
- "Is this the source?" -> "Trace backwards" [label="no - keeps going"];
156
- "Is this the source?" -> "Fix at source" [label="yes"];
157
- "Fix at source" -> "Add validation at each layer";
158
- "Add validation at each layer" -> "Bug impossible";
159
- }
160
- ```
106
+ ## Navigation
107
+
108
+ For detailed information:
109
+ - **[Tracing Techniques](references/tracing-techniques.md)**: Complete tracing methodology, patterns, and decision trees
110
+ - **[Examples](references/examples.md)**: Real-world debugging scenarios with full trace chains
111
+ - **[Advanced Techniques](references/advanced-techniques.md)**: Stack traces, instrumentation, test pollution detection
112
+ - **[Integration](references/integration.md)**: How to use with systematic-debugging and other skills
113
+
114
+ ## Key Reminders
161
115
 
162
- **NEVER fix just where the error appears.** Trace back to find the original trigger.
116
+ - NEVER fix just where the error appears
117
+ - ALWAYS trace back to find the original trigger
118
+ - Use `console.error()` for debugging in tests (logger may be suppressed)
119
+ - Log BEFORE the dangerous operation, not after it fails
120
+ - Include context: directory, cwd, environment, timestamps
121
+ - Add defense-in-depth after fixing source
122
+ - Document your trace as you go (write down the call chain)
163
123
 
164
- ## Stack Trace Tips
124
+ ## Red Flags - STOP
165
125
 
166
- **In tests:** Use `console.error()` not logger - logger may be suppressed
167
- **Before operation:** Log before the dangerous operation, not after it fails
168
- **Include context:** Directory, cwd, environment variables, timestamps
169
- **Capture stack:** `new Error().stack` shows complete call chain
126
+ If you catch yourself thinking:
127
+ - "I'll just add validation here" (without finding source)
128
+ - "This will prevent the error" (symptom fix)
129
+ - "Too hard to trace back" (add instrumentation instead)
130
+ - "Quick fix for now" (creates technical debt)
131
+
132
+ **ALL of these mean: Continue tracing to find root cause.**
133
+
134
+ ## Integration with Other Skills
135
+
136
+ - **systematic-debugging**: Use root-cause-tracing during Phase 1
137
+ - **defense-in-depth**: Add after finding root cause
138
+ - **verification-before-completion**: Verify fix worked at source
139
+ - **test-driven-development**: Write test for root cause, not symptom
140
+
141
+ See [Integration](references/integration.md) for complete workflow examples.
170
142
 
171
143
  ## Real-World Impact
172
144
 
@@ -175,3 +147,6 @@ From debugging session (2025-10-03):
175
147
  - Fixed at source (getter validation)
176
148
  - Added 4 layers of defense
177
149
  - 1847 tests passed, zero pollution
150
+ - Time saved: 3+ hours vs symptom-fix approach
151
+
152
+ **Bottom line:** Tracing takes 15-30 minutes. Symptom fixes take hours of whack-a-mole.
@@ -0,0 +1,63 @@
1
+ #!/bin/bash
2
+ # Bisection script to find which test creates unwanted files/state
3
+ # Usage: ./find-polluter.sh <file_or_dir_to_check> <test_pattern>
4
+ # Example: ./find-polluter.sh '.git' 'src/**/*.test.ts'
5
+
6
+ set -e
7
+
8
+ if [ $# -ne 2 ]; then
9
+ echo "Usage: $0 <file_to_check> <test_pattern>"
10
+ echo "Example: $0 '.git' 'src/**/*.test.ts'"
11
+ exit 1
12
+ fi
13
+
14
+ POLLUTION_CHECK="$1"
15
+ TEST_PATTERN="$2"
16
+
17
+ echo "🔍 Searching for test that creates: $POLLUTION_CHECK"
18
+ echo "Test pattern: $TEST_PATTERN"
19
+ echo ""
20
+
21
+ # Get list of test files
22
+ TEST_FILES=$(find . -path "$TEST_PATTERN" | sort)
23
+ TOTAL=$(echo "$TEST_FILES" | wc -l | tr -d ' ')
24
+
25
+ echo "Found $TOTAL test files"
26
+ echo ""
27
+
28
+ COUNT=0
29
+ for TEST_FILE in $TEST_FILES; do
30
+ COUNT=$((COUNT + 1))
31
+
32
+ # Skip if pollution already exists
33
+ if [ -e "$POLLUTION_CHECK" ]; then
34
+ echo "⚠️ Pollution already exists before test $COUNT/$TOTAL"
35
+ echo " Skipping: $TEST_FILE"
36
+ continue
37
+ fi
38
+
39
+ echo "[$COUNT/$TOTAL] Testing: $TEST_FILE"
40
+
41
+ # Run the test
42
+ npm test "$TEST_FILE" > /dev/null 2>&1 || true
43
+
44
+ # Check if pollution appeared
45
+ if [ -e "$POLLUTION_CHECK" ]; then
46
+ echo ""
47
+ echo "🎯 FOUND POLLUTER!"
48
+ echo " Test: $TEST_FILE"
49
+ echo " Created: $POLLUTION_CHECK"
50
+ echo ""
51
+ echo "Pollution details:"
52
+ ls -la "$POLLUTION_CHECK"
53
+ echo ""
54
+ echo "To investigate:"
55
+ echo " npm test $TEST_FILE # Run just this test"
56
+ echo " cat $TEST_FILE # Review test code"
57
+ exit 1
58
+ fi
59
+ done
60
+
61
+ echo ""
62
+ echo "✅ No polluter found - all tests clean!"
63
+ exit 0