claude-mpm 4.16.0__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 (531) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_ENGINEER.md +286 -0
  3. claude_mpm/agents/BASE_PM.md +272 -23
  4. claude_mpm/agents/OUTPUT_STYLE.md +3 -48
  5. claude_mpm/agents/PM_INSTRUCTIONS.md +1821 -32
  6. claude_mpm/agents/WORKFLOW.md +75 -2
  7. claude_mpm/agents/agent_loader.py +4 -4
  8. claude_mpm/agents/base_agent.json +6 -3
  9. claude_mpm/agents/frontmatter_validator.py +1 -1
  10. claude_mpm/agents/templates/api_qa.json +5 -2
  11. claude_mpm/agents/templates/circuit_breakers.md +108 -2
  12. claude_mpm/agents/templates/documentation.json +33 -6
  13. claude_mpm/agents/templates/engineer.json +5 -1
  14. claude_mpm/agents/templates/javascript_engineer_agent.json +380 -0
  15. claude_mpm/agents/templates/php-engineer.json +10 -4
  16. claude_mpm/agents/templates/pm_red_flags.md +89 -19
  17. claude_mpm/agents/templates/project_organizer.json +7 -3
  18. claude_mpm/agents/templates/python_engineer.json +8 -3
  19. claude_mpm/agents/templates/qa.json +2 -1
  20. claude_mpm/agents/templates/react_engineer.json +1 -0
  21. claude_mpm/agents/templates/research.json +82 -12
  22. claude_mpm/agents/templates/rust_engineer.json +12 -7
  23. claude_mpm/agents/templates/security.json +4 -4
  24. claude_mpm/agents/templates/svelte-engineer.json +225 -0
  25. claude_mpm/agents/templates/tauri_engineer.json +274 -0
  26. claude_mpm/agents/templates/ticketing.json +10 -6
  27. claude_mpm/agents/templates/version_control.json +4 -2
  28. claude_mpm/agents/templates/web_qa.json +2 -1
  29. claude_mpm/cli/README.md +253 -0
  30. claude_mpm/cli/__init__.py +11 -1
  31. claude_mpm/cli/commands/__init__.py +2 -0
  32. claude_mpm/cli/commands/aggregate.py +1 -1
  33. claude_mpm/cli/commands/analyze.py +3 -3
  34. claude_mpm/cli/commands/cleanup.py +1 -1
  35. claude_mpm/cli/commands/configure_agent_display.py +4 -4
  36. claude_mpm/cli/commands/debug.py +12 -12
  37. claude_mpm/cli/commands/hook_errors.py +277 -0
  38. claude_mpm/cli/commands/mcp_install_commands.py +1 -1
  39. claude_mpm/cli/commands/mcp_install_commands.py.backup +284 -0
  40. claude_mpm/cli/commands/mpm_init/README.md +365 -0
  41. claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
  42. claude_mpm/cli/commands/mpm_init/core.py +573 -0
  43. claude_mpm/cli/commands/mpm_init/display.py +341 -0
  44. claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
  45. claude_mpm/cli/commands/mpm_init/modes.py +397 -0
  46. claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
  47. claude_mpm/cli/commands/mpm_init_cli.py +396 -0
  48. claude_mpm/cli/commands/mpm_init_handler.py +67 -1
  49. claude_mpm/cli/commands/run.py +124 -128
  50. claude_mpm/cli/commands/skills.py +922 -0
  51. claude_mpm/cli/executor.py +58 -0
  52. claude_mpm/cli/interactive/agent_wizard.py +5 -5
  53. claude_mpm/cli/parsers/base_parser.py +35 -0
  54. claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
  55. claude_mpm/cli/parsers/skills_parser.py +275 -0
  56. claude_mpm/cli/startup.py +168 -8
  57. claude_mpm/cli/startup_display.py +480 -0
  58. claude_mpm/cli/utils.py +1 -1
  59. claude_mpm/cli_module/commands.py +1 -1
  60. claude_mpm/cli_module/refactoring_guide.md +253 -0
  61. claude_mpm/commands/mpm-auto-configure.md +52 -0
  62. claude_mpm/commands/mpm-help.md +6 -0
  63. claude_mpm/commands/mpm-init.md +130 -8
  64. claude_mpm/commands/mpm-resume.md +372 -0
  65. claude_mpm/commands/mpm-tickets.md +56 -7
  66. claude_mpm/commands/mpm-version.md +113 -0
  67. claude_mpm/commands/mpm.md +2 -0
  68. claude_mpm/config/agent_capabilities.yaml +658 -0
  69. claude_mpm/config/agent_config.py +2 -2
  70. claude_mpm/config/async_logging_config.yaml +145 -0
  71. claude_mpm/constants.py +24 -0
  72. claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +34 -0
  73. claude_mpm/core/api_validator.py +1 -1
  74. claude_mpm/core/claude_runner.py +14 -1
  75. claude_mpm/core/config.py +50 -0
  76. claude_mpm/core/constants.py +1 -1
  77. claude_mpm/core/factories.py +1 -1
  78. claude_mpm/core/framework/processors/metadata_processor.py +1 -1
  79. claude_mpm/core/hook_error_memory.py +381 -0
  80. claude_mpm/core/hook_manager.py +41 -2
  81. claude_mpm/core/interactive_session.py +48 -3
  82. claude_mpm/core/interfaces.py +56 -1
  83. claude_mpm/core/logger.py +3 -1
  84. claude_mpm/core/oneshot_session.py +39 -0
  85. claude_mpm/core/optimized_agent_loader.py +3 -3
  86. claude_mpm/d2/.gitignore +22 -0
  87. claude_mpm/d2/ARCHITECTURE_COMPARISON.md +273 -0
  88. claude_mpm/d2/FLASK_INTEGRATION.md +156 -0
  89. claude_mpm/d2/IMPLEMENTATION_SUMMARY.md +452 -0
  90. claude_mpm/d2/QUICKSTART.md +186 -0
  91. claude_mpm/d2/README.md +232 -0
  92. claude_mpm/d2/STORE_FIX_SUMMARY.md +167 -0
  93. claude_mpm/d2/SVELTE5_STORES_GUIDE.md +180 -0
  94. claude_mpm/d2/TESTING.md +288 -0
  95. claude_mpm/d2/index.html +118 -0
  96. claude_mpm/d2/package.json +19 -0
  97. claude_mpm/d2/src/App.svelte +110 -0
  98. claude_mpm/d2/src/components/Header.svelte +153 -0
  99. claude_mpm/d2/src/components/MainContent.svelte +74 -0
  100. claude_mpm/d2/src/components/Sidebar.svelte +85 -0
  101. claude_mpm/d2/src/components/tabs/EventsTab.svelte +326 -0
  102. claude_mpm/d2/src/lib/socketio.js +144 -0
  103. claude_mpm/d2/src/main.js +7 -0
  104. claude_mpm/d2/src/stores/events.js +114 -0
  105. claude_mpm/d2/src/stores/socket.js +108 -0
  106. claude_mpm/d2/src/stores/theme.js +65 -0
  107. claude_mpm/d2/svelte.config.js +12 -0
  108. claude_mpm/d2/vite.config.js +15 -0
  109. claude_mpm/dashboard/.claude-mpm/memories/README.md +36 -0
  110. claude_mpm/dashboard/BUILD_NUMBER +1 -0
  111. claude_mpm/dashboard/README.md +121 -0
  112. claude_mpm/dashboard/VERSION +1 -0
  113. claude_mpm/dashboard/react/components/DataInspector/DataInspector.tsx +273 -0
  114. claude_mpm/dashboard/react/components/ErrorBoundary.tsx +75 -0
  115. claude_mpm/dashboard/react/components/EventViewer/EventViewer.tsx +141 -0
  116. claude_mpm/dashboard/react/components/shared/ConnectionStatus.tsx +36 -0
  117. claude_mpm/dashboard/react/components/shared/FilterBar.tsx +89 -0
  118. claude_mpm/dashboard/react/contexts/DashboardContext.tsx +215 -0
  119. claude_mpm/dashboard/react/entries/events.tsx +165 -0
  120. claude_mpm/dashboard/react/hooks/useEvents.ts +191 -0
  121. claude_mpm/dashboard/react/hooks/useSocket.ts +225 -0
  122. claude_mpm/dashboard/static/built/REFACTORING_SUMMARY.md +170 -0
  123. claude_mpm/dashboard/static/built/components/activity-tree.js.map +1 -0
  124. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +101 -101
  125. claude_mpm/dashboard/static/built/components/agent-inference.js.map +1 -0
  126. claude_mpm/dashboard/static/built/components/build-tracker.js +59 -59
  127. claude_mpm/dashboard/static/built/components/code-simple.js +107 -107
  128. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +29 -29
  129. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +24 -24
  130. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +27 -27
  131. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +25 -25
  132. claude_mpm/dashboard/static/built/components/code-tree.js.map +1 -0
  133. claude_mpm/dashboard/static/built/components/code-viewer.js.map +1 -0
  134. claude_mpm/dashboard/static/built/components/connection-debug.js +101 -101
  135. claude_mpm/dashboard/static/built/components/diff-viewer.js +113 -113
  136. claude_mpm/dashboard/static/built/components/event-processor.js.map +1 -0
  137. claude_mpm/dashboard/static/built/components/event-viewer.js.map +1 -0
  138. claude_mpm/dashboard/static/built/components/export-manager.js.map +1 -0
  139. claude_mpm/dashboard/static/built/components/file-change-tracker.js +57 -57
  140. claude_mpm/dashboard/static/built/components/file-change-viewer.js +74 -74
  141. claude_mpm/dashboard/static/built/components/file-tool-tracker.js.map +1 -0
  142. claude_mpm/dashboard/static/built/components/file-viewer.js.map +1 -0
  143. claude_mpm/dashboard/static/built/components/hud-library-loader.js.map +1 -0
  144. claude_mpm/dashboard/static/built/components/hud-manager.js.map +1 -0
  145. claude_mpm/dashboard/static/built/components/hud-visualizer.js.map +1 -0
  146. claude_mpm/dashboard/static/built/components/module-viewer.js.map +1 -0
  147. claude_mpm/dashboard/static/built/components/session-manager.js.map +1 -0
  148. claude_mpm/dashboard/static/built/components/socket-manager.js.map +1 -0
  149. claude_mpm/dashboard/static/built/components/ui-state-manager.js.map +1 -0
  150. claude_mpm/dashboard/static/built/components/unified-data-viewer.js.map +1 -0
  151. claude_mpm/dashboard/static/built/components/working-directory.js.map +1 -0
  152. claude_mpm/dashboard/static/built/connection-manager.js +76 -76
  153. claude_mpm/dashboard/static/built/dashboard.js.map +1 -0
  154. claude_mpm/dashboard/static/built/extension-error-handler.js +22 -22
  155. claude_mpm/dashboard/static/built/react/events.js.map +1 -0
  156. claude_mpm/dashboard/static/built/shared/dom-helpers.js +9 -9
  157. claude_mpm/dashboard/static/built/shared/event-bus.js +5 -5
  158. claude_mpm/dashboard/static/built/shared/logger.js +16 -16
  159. claude_mpm/dashboard/static/built/shared/tooltip-service.js +6 -6
  160. claude_mpm/dashboard/static/built/socket-client.js.map +1 -0
  161. claude_mpm/dashboard/static/css/activity.css +69 -69
  162. claude_mpm/dashboard/static/css/connection-status.css +10 -10
  163. claude_mpm/dashboard/static/css/dashboard.css +15 -15
  164. claude_mpm/dashboard/static/index.html +22 -22
  165. claude_mpm/dashboard/static/js/REFACTORING_SUMMARY.md +170 -0
  166. claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
  167. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
  168. claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
  169. claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
  170. claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
  171. claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
  172. claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
  173. claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
  174. claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
  175. claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
  176. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
  177. claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
  178. claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
  179. claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
  180. claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
  181. claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
  182. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
  183. claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
  184. claude_mpm/dashboard/static/js/connection-manager.js +76 -76
  185. claude_mpm/dashboard/static/js/dashboard.js +76 -58
  186. claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
  187. claude_mpm/dashboard/static/js/shared/dom-helpers.js +9 -9
  188. claude_mpm/dashboard/static/js/shared/event-bus.js +5 -5
  189. claude_mpm/dashboard/static/js/shared/logger.js +16 -16
  190. claude_mpm/dashboard/static/js/shared/tooltip-service.js +6 -6
  191. claude_mpm/dashboard/static/js/socket-client.js +138 -121
  192. claude_mpm/dashboard/static/navigation-test-results.md +118 -0
  193. claude_mpm/dashboard/static/production/main.html +21 -21
  194. claude_mpm/dashboard/static/test-archive/dashboard.html +22 -22
  195. claude_mpm/dashboard/templates/.claude-mpm/memories/README.md +36 -0
  196. claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +39 -0
  197. claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +38 -0
  198. claude_mpm/dashboard/templates/code_simple.html +23 -23
  199. claude_mpm/dashboard/templates/index.html +18 -18
  200. claude_mpm/hooks/README.md +143 -0
  201. claude_mpm/hooks/__init__.py +8 -0
  202. claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
  203. claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
  204. claude_mpm/hooks/claude_hooks/installer.py +45 -0
  205. claude_mpm/hooks/claude_hooks/response_tracking.py +35 -1
  206. claude_mpm/hooks/session_resume_hook.py +121 -0
  207. claude_mpm/hooks/templates/README.md +180 -0
  208. claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
  209. claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
  210. claude_mpm/hooks/templates/settings.json.example +147 -0
  211. claude_mpm/models/resume_log.py +340 -0
  212. claude_mpm/schemas/agent_schema.json +596 -0
  213. claude_mpm/schemas/frontmatter_schema.json +165 -0
  214. claude_mpm/scripts/claude-hook-handler.sh +3 -3
  215. claude_mpm/scripts/start_activity_logging.py +3 -1
  216. claude_mpm/services/agents/auto_config_manager.py +1 -1
  217. claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
  218. claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
  219. claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
  220. claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
  221. claude_mpm/services/agents/deployment/agent_validator.py +17 -1
  222. claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
  223. claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
  224. claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
  225. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
  226. claude_mpm/services/agents/loading/framework_agent_loader.py +8 -8
  227. claude_mpm/services/agents/local_template_manager.py +4 -2
  228. claude_mpm/services/agents/recommender.py +47 -0
  229. claude_mpm/services/cli/resume_service.py +617 -0
  230. claude_mpm/services/cli/session_manager.py +87 -0
  231. claude_mpm/services/cli/session_pause_manager.py +504 -0
  232. claude_mpm/services/cli/session_resume_helper.py +372 -0
  233. claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
  234. claude_mpm/services/core/base.py +26 -11
  235. claude_mpm/services/core/interfaces.py +56 -1
  236. claude_mpm/services/core/models/agent_config.py +3 -0
  237. claude_mpm/services/core/models/process.py +4 -0
  238. claude_mpm/services/core/path_resolver.py +1 -1
  239. claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
  240. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  241. claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
  242. claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
  243. claude_mpm/services/diagnostics/doctor_reporter.py +6 -4
  244. claude_mpm/services/diagnostics/models.py +21 -0
  245. claude_mpm/services/event_bus/README.md +244 -0
  246. claude_mpm/services/event_bus/direct_relay.py +3 -3
  247. claude_mpm/services/event_bus/event_bus.py +36 -3
  248. claude_mpm/services/event_bus/relay.py +23 -7
  249. claude_mpm/services/events/README.md +303 -0
  250. claude_mpm/services/events/consumers/logging.py +1 -2
  251. claude_mpm/services/framework_claude_md_generator/README.md +119 -0
  252. claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
  253. claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
  254. claude_mpm/services/local_ops/__init__.py +2 -0
  255. claude_mpm/services/local_ops/process_manager.py +1 -1
  256. claude_mpm/services/local_ops/resource_monitor.py +2 -2
  257. claude_mpm/services/mcp_config_manager.py +7 -131
  258. claude_mpm/services/mcp_gateway/README.md +185 -0
  259. claude_mpm/services/mcp_gateway/auto_configure.py +31 -25
  260. claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
  261. claude_mpm/services/mcp_gateway/core/process_pool.py +19 -10
  262. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
  263. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
  264. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +26 -21
  265. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
  266. claude_mpm/services/memory/failure_tracker.py +19 -4
  267. claude_mpm/services/memory/optimizer.py +1 -1
  268. claude_mpm/services/model/model_router.py +8 -9
  269. claude_mpm/services/monitor/daemon.py +1 -1
  270. claude_mpm/services/monitor/server.py +2 -2
  271. claude_mpm/services/native_agent_converter.py +356 -0
  272. claude_mpm/services/port_manager.py +1 -1
  273. claude_mpm/services/project/documentation_manager.py +2 -1
  274. claude_mpm/services/project/toolchain_analyzer.py +3 -1
  275. claude_mpm/services/runner_configuration_service.py +1 -0
  276. claude_mpm/services/self_upgrade_service.py +165 -7
  277. claude_mpm/services/session_manager.py +205 -1
  278. claude_mpm/services/skills_config.py +547 -0
  279. claude_mpm/services/skills_deployer.py +955 -0
  280. claude_mpm/services/socketio/handlers/connection.py +1 -1
  281. claude_mpm/services/socketio/handlers/connection.py.backup +217 -0
  282. claude_mpm/services/socketio/handlers/git.py +2 -2
  283. claude_mpm/services/socketio/handlers/hook.py.backup +154 -0
  284. claude_mpm/services/static/.gitkeep +2 -0
  285. claude_mpm/services/system_instructions_service.py +1 -3
  286. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
  287. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
  288. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
  289. claude_mpm/services/unified/deployment_strategies/local.py +1 -1
  290. claude_mpm/services/version_control/VERSION +1 -0
  291. claude_mpm/services/version_control/conflict_resolution.py +6 -4
  292. claude_mpm/services/version_service.py +104 -1
  293. claude_mpm/services/visualization/mermaid_generator.py +2 -3
  294. claude_mpm/skills/__init__.py +21 -0
  295. claude_mpm/skills/agent_skills_injector.py +324 -0
  296. claude_mpm/skills/bundled/.gitkeep +2 -0
  297. claude_mpm/skills/bundled/LICENSE_ATTRIBUTIONS.md +79 -0
  298. claude_mpm/skills/bundled/api-documentation.md +393 -0
  299. claude_mpm/skills/bundled/async-testing.md +571 -0
  300. claude_mpm/skills/bundled/code-review.md +143 -0
  301. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
  302. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
  303. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
  304. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
  305. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
  306. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
  307. claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
  308. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
  309. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
  310. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
  311. claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
  312. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
  313. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
  314. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
  315. claude_mpm/skills/bundled/database-migration.md +199 -0
  316. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
  317. claude_mpm/skills/bundled/debugging/root-cause-tracing/find-polluter.sh +63 -0
  318. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
  319. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
  320. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
  321. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
  322. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
  323. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
  324. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
  325. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
  326. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
  327. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
  328. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
  329. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
  330. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
  331. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
  332. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
  333. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
  334. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
  335. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
  336. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -0
  337. claude_mpm/skills/bundled/docker-containerization.md +194 -0
  338. claude_mpm/skills/bundled/express-local-dev.md +1429 -0
  339. claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
  340. claude_mpm/skills/bundled/git-workflow.md +414 -0
  341. claude_mpm/skills/bundled/imagemagick.md +204 -0
  342. claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
  343. claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
  344. claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
  345. claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
  346. claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
  347. claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
  348. claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
  349. claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
  350. claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
  351. claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
  352. claude_mpm/skills/bundled/json-data-handling.md +223 -0
  353. claude_mpm/skills/bundled/main/artifacts-builder/LICENSE.txt +202 -0
  354. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +86 -0
  355. claude_mpm/skills/bundled/main/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  356. claude_mpm/skills/bundled/main/artifacts-builder/scripts/init-artifact.sh +322 -0
  357. claude_mpm/skills/bundled/main/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  358. claude_mpm/skills/bundled/main/internal-comms/LICENSE.txt +202 -0
  359. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
  360. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
  361. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
  362. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
  363. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
  364. claude_mpm/skills/bundled/main/mcp-builder/LICENSE.txt +202 -0
  365. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
  366. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
  367. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
  368. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
  369. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
  370. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
  371. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
  372. claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +157 -0
  373. claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +425 -0
  374. claude_mpm/skills/bundled/main/mcp-builder/scripts/example_evaluation.xml +22 -0
  375. claude_mpm/skills/bundled/main/mcp-builder/scripts/requirements.txt +2 -0
  376. claude_mpm/skills/bundled/main/skill-creator/LICENSE.txt +202 -0
  377. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
  378. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
  379. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
  380. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
  381. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
  382. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
  383. claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +303 -0
  384. claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +113 -0
  385. claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +72 -0
  386. claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
  387. claude_mpm/skills/bundled/pdf.md +141 -0
  388. claude_mpm/skills/bundled/performance-profiling.md +573 -0
  389. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
  390. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
  391. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
  392. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
  393. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
  394. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
  395. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
  396. claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
  397. claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
  398. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
  399. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
  400. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
  401. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
  402. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
  403. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
  404. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
  405. claude_mpm/skills/bundled/security-scanning.md +327 -0
  406. claude_mpm/skills/bundled/systematic-debugging.md +473 -0
  407. claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
  408. claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
  409. claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
  410. claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
  411. claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
  412. claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
  413. claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
  414. claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
  415. claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
  416. claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
  417. claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
  418. claude_mpm/skills/bundled/test-driven-development.md +378 -0
  419. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +119 -0
  420. claude_mpm/skills/bundled/testing/condition-based-waiting/example.ts +158 -0
  421. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
  422. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
  423. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
  424. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
  425. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
  426. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
  427. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
  428. claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
  429. claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
  430. claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
  431. claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
  432. claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
  433. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
  434. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
  435. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
  436. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
  437. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
  438. claude_mpm/skills/bundled/testing/webapp-testing/LICENSE.txt +202 -0
  439. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
  440. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
  441. claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +35 -0
  442. claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +44 -0
  443. claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +34 -0
  444. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
  445. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
  446. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +129 -0
  447. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
  448. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
  449. claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
  450. claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
  451. claude_mpm/skills/bundled/xlsx.md +157 -0
  452. claude_mpm/skills/registry.py +97 -9
  453. claude_mpm/skills/skills_registry.py +347 -0
  454. claude_mpm/skills/skills_service.py +739 -0
  455. claude_mpm/templates/questions/EXAMPLES.md +501 -0
  456. claude_mpm/templates/questions/__init__.py +43 -0
  457. claude_mpm/templates/questions/base.py +193 -0
  458. claude_mpm/templates/questions/pr_strategy.py +314 -0
  459. claude_mpm/templates/questions/project_init.py +388 -0
  460. claude_mpm/templates/questions/ticket_mgmt.py +397 -0
  461. claude_mpm/tools/README_SOCKETIO_DEBUG.md +224 -0
  462. claude_mpm/tools/__main__.py +8 -8
  463. claude_mpm/tools/code_tree_analyzer/README.md +64 -0
  464. claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
  465. claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
  466. claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
  467. claude_mpm/tools/code_tree_analyzer/core.py +380 -0
  468. claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
  469. claude_mpm/tools/code_tree_analyzer/events.py +168 -0
  470. claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
  471. claude_mpm/tools/code_tree_analyzer/models.py +39 -0
  472. claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
  473. claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
  474. claude_mpm/utils/agent_dependency_loader.py +5 -5
  475. claude_mpm/utils/dependency_cache.py +3 -1
  476. claude_mpm/utils/gitignore.py +241 -0
  477. claude_mpm/utils/log_cleanup.py +3 -3
  478. claude_mpm/utils/robust_installer.py +3 -5
  479. claude_mpm/utils/structured_questions.py +619 -0
  480. claude_mpm-4.25.10.dist-info/METADATA +789 -0
  481. {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/RECORD +485 -240
  482. claude_mpm/agents/INSTRUCTIONS_OLD_DEPRECATED.md +0 -602
  483. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
  484. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
  485. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
  486. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
  487. claude_mpm/cli/commands/mpm_init.py +0 -2008
  488. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
  489. claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
  490. claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
  491. claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
  492. claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
  493. claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
  494. claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
  495. claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
  496. claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
  497. claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
  498. claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
  499. claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
  500. claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
  501. claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
  502. claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
  503. claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
  504. claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
  505. claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
  506. claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  507. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  508. claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
  509. claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
  510. claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
  511. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
  512. claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
  513. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
  514. claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
  515. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
  516. claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  517. claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
  518. claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
  519. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
  520. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  521. claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
  522. claude_mpm/dashboard/static/dist/dashboard.js +0 -2
  523. claude_mpm/dashboard/static/dist/react/events.js +0 -30
  524. claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  525. claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
  526. claude_mpm/tools/code_tree_analyzer.py +0 -1825
  527. claude_mpm-4.16.0.dist-info/METADATA +0 -453
  528. {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/WHEEL +0 -0
  529. {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/entry_points.txt +0 -0
  530. {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/licenses/LICENSE +0 -0
  531. {claude_mpm-4.16.0.dist-info → claude_mpm-4.25.10.dist-info}/top_level.txt +0 -0
@@ -15,10 +15,10 @@
15
15
 
16
16
  <!-- External Dependencies -->
17
17
  <script src="https://cdn.socket.io/4.7.5/socket.io.min.js"></script>
18
-
18
+
19
19
  <!-- D3.js for Activity Tree Visualization -->
20
20
  <script src="https://d3js.org/d3.v7.min.js"></script>
21
-
21
+
22
22
  <!-- Font Awesome for icons -->
23
23
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
24
24
 
@@ -141,7 +141,7 @@
141
141
  <body>
142
142
  <!-- Connection Notifications Area -->
143
143
  <div id="connection-notifications" class="connection-notifications"></div>
144
-
144
+
145
145
  <div class="container">
146
146
  <!-- Header Section -->
147
147
  <div class="header">
@@ -435,19 +435,19 @@
435
435
  // Set up working directory environment variables
436
436
  // These will be used by the working-directory component
437
437
  // The server will inject these values through a separate API call
438
-
438
+
439
439
  // Get the current working directory from the server
440
440
  fetch('/api/working-directory')
441
441
  .then(response => response.json())
442
442
  .then(data => {
443
443
  window.processWorkingDirectory = data.working_directory || '/Users/masa/Projects/claude-mpm';
444
444
  window.homeDirectory = data.home_directory || '/Users/masa';
445
-
445
+
446
446
  // Store in session storage for persistence
447
447
  if (window.processWorkingDirectory && window.processWorkingDirectory !== '/') {
448
448
  sessionStorage.setItem('currentWorkingDirectory', window.processWorkingDirectory);
449
449
  }
450
-
450
+
451
451
  // Dispatch event to notify components that working directory is ready
452
452
  window.dispatchEvent(new CustomEvent('workingDirectoryInitialized', {
453
453
  detail: {
@@ -462,10 +462,10 @@
462
462
  window.processWorkingDirectory = '/Users/masa/Projects/claude-mpm';
463
463
  window.homeDirectory = '/Users/masa';
464
464
  });
465
-
465
+
466
466
  // Add timestamp-based cache busting and ensure proper loading order
467
467
  const timestamp = Date.now();
468
-
468
+
469
469
  // Load modules sequentially to ensure dashboard.js loads first
470
470
  const loadModule = (src) => {
471
471
  return new Promise((resolve, reject) => {
@@ -477,7 +477,7 @@
477
477
  document.body.appendChild(script);
478
478
  });
479
479
  };
480
-
480
+
481
481
  // Load shared services first, then components
482
482
  // Load services sequentially to ensure dependencies are available
483
483
  loadModule('/static/js/shared/tooltip-service.js')
@@ -540,21 +540,21 @@
540
540
  console.error('[CRITICAL] Error loading dashboard modules:', error);
541
541
  console.error('Stack trace:', error.stack);
542
542
  });
543
-
543
+
544
544
  // Give modules time to execute and initialize dashboard
545
545
  setTimeout(() => {
546
546
  console.log('Checking dashboard initialization...');
547
-
547
+
548
548
  if (window.dashboard) {
549
549
  console.log('Dashboard found, checking auto-connect status...');
550
-
550
+
551
551
  // Force auto-connect if not already connected
552
552
  if (window.dashboard.socketManager) {
553
553
  const socketManager = window.dashboard.socketManager;
554
-
554
+
555
555
  if (!socketManager.isConnected() && !socketManager.isConnecting()) {
556
556
  console.log('Dashboard loaded but not connected, forcing auto-connect...');
557
-
557
+
558
558
  // Try to trigger auto-connect manually
559
559
  const params = new URLSearchParams(window.location.search);
560
560
  socketManager.initializeFromURL(params);
@@ -566,23 +566,23 @@
566
566
  }
567
567
  } else {
568
568
  console.warn('Dashboard still not initialized after module loading');
569
-
569
+
570
570
  // Try to manually trigger initialization
571
571
  if (document.readyState === 'complete' || document.readyState === 'interactive') {
572
572
  console.log('Document ready, attempting to trigger dashboard initialization...');
573
573
  document.dispatchEvent(new Event('DOMContentLoaded'));
574
574
  }
575
575
  }
576
-
576
+
577
577
  // Debug: Test connection settings button
578
578
  const connectionToggleBtn = document.getElementById('connection-toggle-btn');
579
579
  if (connectionToggleBtn) {
580
580
  console.log('Connection toggle button found, testing functionality...');
581
-
581
+
582
582
  // Add a debug click handler to ensure the button works
583
583
  connectionToggleBtn.addEventListener('click', () => {
584
584
  console.log('Connection toggle button clicked (debug handler)');
585
-
585
+
586
586
  if (window.dashboard && window.dashboard.socketManager) {
587
587
  console.log('Calling socketManager.toggleConnectionControls()');
588
588
  window.dashboard.socketManager.toggleConnectionControls();
@@ -0,0 +1,143 @@
1
+ # Claude Code Hooks System
2
+
3
+ This directory contains the Claude Code hook integration for claude-mpm.
4
+
5
+ ## Overview
6
+
7
+ The hook system allows claude-mpm to intercept and handle commands typed in Claude Code, particularly the `/mpm` commands.
8
+
9
+ ## Version Requirements
10
+
11
+ **Claude Code 1.0.92 or higher is required for hook monitoring features.**
12
+
13
+ Earlier versions of Claude Code do not support the matcher-based hook configuration format needed for real-time event monitoring. If you have an older version:
14
+ - The dashboard and other features will still work
15
+ - Real-time monitoring will not be available
16
+ - You'll see a clear message about the version requirement
17
+ - To enable monitoring, upgrade Claude Code to 1.0.92+
18
+
19
+ **Claude Code 2.0.30 or higher is required for PreToolUse input modification.**
20
+
21
+ This advanced feature allows hooks to modify tool inputs before execution, enabling:
22
+ - Context injection into file operations
23
+ - Security guards that validate and block dangerous operations
24
+ - Parameter enhancement with default values
25
+ - Logging and auditing of tool invocations
26
+
27
+ See [PreToolUse Hook Documentation](../../docs/developer/pretool-use-hooks.md) for details.
28
+
29
+ ## Architecture (v4.1.8+)
30
+
31
+ Claude MPM uses a **deployment-root hook architecture** where Claude Code directly calls a script within the claude-mpm installation. See [HOOK_ARCHITECTURE.md](../../docs/developer/HOOK_ARCHITECTURE.md) for details.
32
+
33
+ ## Structure
34
+
35
+ ```
36
+ hooks/
37
+ ├── claude_hooks/ # Claude Code hook implementation
38
+ │ ├── hook_handler.py # Main Python handler that processes events
39
+ │ ├── installer.py # Hook installation and configuration
40
+ │ ├── event_handlers.py # Event processing logic
41
+ │ ├── memory_integration.py # Memory system integration
42
+ │ ├── response_tracking.py # Response tracking
43
+ │ └── services/ # Service modules
44
+ │ ├── connection_manager.py # SocketIO/HTTP connections
45
+ │ ├── state_manager.py # State and delegation tracking
46
+ │ └── subagent_processor.py # Subagent response processing
47
+ ├── templates/ # Hook script templates
48
+ │ ├── pre_tool_use_template.py # Comprehensive PreToolUse template
49
+ │ ├── pre_tool_use_simple.py # Simple PreToolUse template
50
+ │ └── README.md # Template documentation
51
+ └── scripts/
52
+ └── claude-hook-handler.sh # Deployment-root hook script (called by Claude Code)
53
+ ```
54
+
55
+ ## Claude Code Hooks
56
+
57
+ The Claude Code hooks are the primary integration point between claude-mpm and Claude Code. They allow:
58
+
59
+ - Intercepting `/mpm` commands before they reach the LLM
60
+ - Providing custom responses and actions
61
+ - Blocking LLM processing when appropriate
62
+
63
+ ### Installation
64
+
65
+ To install the Claude Code hooks:
66
+
67
+ ```bash
68
+ # Using the configure command (recommended)
69
+ claude-mpm configure --install-hooks
70
+
71
+ # Or check your version compatibility first
72
+ claude-mpm configure --verify-hooks
73
+ ```
74
+
75
+ This will:
76
+ 1. Check your Claude Code version for compatibility
77
+ 2. If compatible (1.0.92+), create/update `~/.claude/settings.json` with hook configuration
78
+ 3. Install the smart hook script that dynamically finds claude-mpm
79
+ 4. Copy any custom commands to `~/.claude/commands/`
80
+
81
+ If your Claude Code version is older than 1.0.92:
82
+ - You'll see a message explaining the version requirement
83
+ - Hooks will not be installed to prevent configuration errors
84
+ - The system will continue to work without real-time monitoring
85
+
86
+ ### How It Works
87
+
88
+ 1. When you type in Claude Code, it triggers hook events
89
+ 2. Claude Code calls `hook_wrapper.sh` (the path in `~/.claude/settings.json`)
90
+ 3. The wrapper script:
91
+ - Detects if it's running from a local dev environment, npm, or PyPI installation
92
+ - Activates the appropriate Python environment
93
+ - Runs `hook_handler.py` with the event data
94
+ 4. The handler processes various event types:
95
+ - **UserPromptSubmit**: Checks if the prompt starts with `/mpm` and handles commands
96
+ - **PreToolUse**: Logs tool usage before execution
97
+ - **PostToolUse**: Logs tool results after execution
98
+ - **Stop**: Logs when a session or task stops
99
+ - **SubagentStop**: Logs when a subagent completes with agent type and ID
100
+ 5. For `/mpm` commands, it returns exit code 2 to block LLM processing
101
+ 6. All events are logged to project-specific log files in `.claude-mpm/logs/`
102
+
103
+ ### Available Commands
104
+
105
+ - `/mpm` - Show help and available commands
106
+ - `/mpm status` - Show claude-mpm status and environment
107
+ - `/mpm help` - Show detailed help
108
+
109
+ ### Debugging
110
+
111
+ To enable debug logging for hooks:
112
+
113
+ ```bash
114
+ export CLAUDE_MPM_LOG_LEVEL=DEBUG
115
+ ```
116
+
117
+ Then run Claude Code from that terminal. Hook events will be logged to `~/.claude-mpm/logs/`.
118
+
119
+ ## Legacy Hook System (Removed)
120
+
121
+ The `builtin/` directory that contained the old internal hook system has been removed. All hook functionality is now handled through the Claude Code hooks system.
122
+
123
+ ## Development
124
+
125
+ To add new `/mpm` commands:
126
+
127
+ 1. Edit `hook_handler.py` to handle the new command
128
+ 2. Update the help text in the `handle_mpm_help()` function
129
+ 3. Test by running Claude Code with the new command
130
+
131
+ ## Exit Codes
132
+
133
+ The hook system uses specific exit codes:
134
+
135
+ - `0` - Success, continue normal processing
136
+ - `2` - Block LLM processing (command was handled)
137
+ - Other - Error occurred
138
+
139
+ ## Environment Variables
140
+
141
+ - `CLAUDE_MPM_LOG_LEVEL` - Set to DEBUG for detailed logging
142
+ - `HOOK_EVENT_TYPE` - Set by Claude Code (UserPromptSubmit, PreToolUse, PostToolUse)
143
+ - `HOOK_DATA` - JSON data from Claude Code with event details
@@ -12,6 +12,11 @@ from .failure_learning import (
12
12
  from .kuzu_enrichment_hook import KuzuEnrichmentHook, get_kuzu_enrichment_hook
13
13
  from .kuzu_memory_hook import KuzuMemoryHook, get_kuzu_memory_hook
14
14
  from .kuzu_response_hook import KuzuResponseHook, get_kuzu_response_hook
15
+ from .session_resume_hook import (
16
+ SessionResumeStartupHook,
17
+ get_session_resume_hook,
18
+ trigger_session_resume_check,
19
+ )
15
20
 
16
21
  __all__ = [
17
22
  "BaseHook",
@@ -24,10 +29,13 @@ __all__ = [
24
29
  "KuzuMemoryHook",
25
30
  "KuzuResponseHook",
26
31
  "LearningExtractionHook",
32
+ "SessionResumeStartupHook",
27
33
  "get_failure_detection_hook",
28
34
  "get_fix_detection_hook",
29
35
  "get_kuzu_enrichment_hook",
30
36
  "get_kuzu_memory_hook",
31
37
  "get_kuzu_response_hook",
32
38
  "get_learning_extraction_hook",
39
+ "get_session_resume_hook",
40
+ "trigger_session_resume_check",
33
41
  ]
@@ -393,7 +393,9 @@ class EventHandlers:
393
393
  "status": (
394
394
  "success"
395
395
  if exit_code == 0
396
- else "blocked" if exit_code == 2 else "error"
396
+ else "blocked"
397
+ if exit_code == 2
398
+ else "error"
397
399
  ),
398
400
  "duration_ms": duration,
399
401
  "result_summary": result_data,
@@ -311,11 +311,12 @@ class ClaudeHookHandler:
311
311
  )
312
312
 
313
313
  # Route event to appropriate handler
314
- self._route_event(event)
314
+ # Handlers can optionally return modified input for PreToolUse events
315
+ modified_input = self._route_event(event)
315
316
 
316
317
  # Always continue execution (only if not already sent)
317
318
  if not _continue_sent:
318
- self._continue_execution()
319
+ self._continue_execution(modified_input)
319
320
  _continue_sent = True
320
321
 
321
322
  except Exception:
@@ -376,7 +377,7 @@ class ClaudeHookHandler:
376
377
  print(f"Error reading hook event: {e}", file=sys.stderr)
377
378
  return None
378
379
 
379
- def _route_event(self, event: dict) -> None:
380
+ def _route_event(self, event: dict) -> Optional[dict]:
380
381
  """
381
382
  Route event to appropriate handler based on type.
382
383
 
@@ -385,6 +386,9 @@ class ClaudeHookHandler:
385
386
 
386
387
  Args:
387
388
  event: Hook event dictionary
389
+
390
+ Returns:
391
+ Modified input for PreToolUse events (v2.0.30+), None otherwise
388
392
  """
389
393
  # Try multiple field names for compatibility
390
394
  hook_type = (
@@ -416,23 +420,36 @@ class ClaudeHookHandler:
416
420
  handler = event_handlers.get(hook_type)
417
421
  if handler:
418
422
  try:
419
- handler(event)
423
+ # Handlers can optionally return modified input
424
+ result = handler(event)
425
+ # Only PreToolUse handlers should return modified input
426
+ if hook_type == "PreToolUse" and result is not None:
427
+ return result
420
428
  except Exception as e:
421
429
  if DEBUG:
422
430
  print(f"Error handling {hook_type}: {e}", file=sys.stderr)
423
431
 
432
+ return None
433
+
424
434
  def handle_subagent_stop(self, event: dict):
425
435
  """Delegate subagent stop processing to the specialized processor."""
426
436
  self.subagent_processor.process_subagent_stop(event)
427
437
 
428
- def _continue_execution(self) -> None:
438
+ def _continue_execution(self, modified_input: Optional[dict] = None) -> None:
429
439
  """
430
- Send continue action to Claude.
440
+ Send continue action to Claude with optional input modification.
431
441
 
432
442
  WHY: Centralized response ensures consistent format
433
443
  and makes it easier to add response modifications.
444
+
445
+ Args:
446
+ modified_input: Modified tool parameters for PreToolUse hooks (v2.0.30+)
434
447
  """
435
- print(json.dumps({"action": "continue"}))
448
+ if modified_input is not None:
449
+ # Claude Code v2.0.30+ supports modifying PreToolUse tool inputs
450
+ print(json.dumps({"action": "continue", "tool_input": modified_input}))
451
+ else:
452
+ print(json.dumps({"action": "continue"}))
436
453
 
437
454
  # Delegation methods for compatibility with event_handlers
438
455
  def _track_delegation(self, session_id: str, agent_type: str, request_data=None):
@@ -192,6 +192,8 @@ main "$@"
192
192
 
193
193
  # Minimum Claude Code version required for hook monitoring
194
194
  MIN_CLAUDE_VERSION = "1.0.92"
195
+ # Minimum version for PreToolUse input modification support
196
+ MIN_PRETOOL_MODIFY_VERSION = "2.0.30"
195
197
 
196
198
  def __init__(self):
197
199
  """Initialize the hook installer."""
@@ -292,6 +294,42 @@ main "$@"
292
294
 
293
295
  return (True, f"Claude Code {version} is compatible with hook monitoring.")
294
296
 
297
+ def supports_pretool_modify(self) -> bool:
298
+ """
299
+ Check if the installed Claude Code version supports PreToolUse input modification.
300
+
301
+ PreToolUse input modification was added in Claude Code v2.0.30.
302
+
303
+ Returns:
304
+ True if version supports input modification, False otherwise
305
+ """
306
+ version = self.get_claude_version()
307
+
308
+ if version is None:
309
+ return False
310
+
311
+ def parse_version(v: str) -> List[int]:
312
+ """Parse semantic version string to list of integers."""
313
+ try:
314
+ return [int(x) for x in v.split(".")]
315
+ except (ValueError, AttributeError):
316
+ return [0]
317
+
318
+ current = parse_version(version)
319
+ required = parse_version(self.MIN_PRETOOL_MODIFY_VERSION)
320
+
321
+ # Compare versions
322
+ for i in range(max(len(current), len(required))):
323
+ curr_part = current[i] if i < len(current) else 0
324
+ req_part = required[i] if i < len(required) else 0
325
+
326
+ if curr_part < req_part:
327
+ return False
328
+ if curr_part > req_part:
329
+ return True
330
+
331
+ return True
332
+
295
333
  def get_hook_script_path(self) -> Path:
296
334
  """Get the path to the hook handler script based on installation method.
297
335
 
@@ -677,6 +715,7 @@ main "$@"
677
715
  # Check version compatibility
678
716
  claude_version = self.get_claude_version()
679
717
  is_compatible, version_message = self.is_version_compatible()
718
+ pretool_modify_supported = self.supports_pretool_modify()
680
719
 
681
720
  is_valid, issues = self.verify_hooks()
682
721
 
@@ -701,6 +740,12 @@ main "$@"
701
740
  "version_compatible": is_compatible,
702
741
  "version_message": version_message,
703
742
  "deployment_type": "deployment-root", # New field to indicate new architecture
743
+ "pretool_modify_supported": pretool_modify_supported, # v2.0.30+ feature
744
+ "pretool_modify_message": (
745
+ f"PreToolUse input modification supported (v{claude_version})"
746
+ if pretool_modify_supported
747
+ else f"PreToolUse input modification requires Claude Code {self.MIN_PRETOOL_MODIFY_VERSION}+ (current: {claude_version or 'unknown'})"
748
+ ),
704
749
  }
705
750
 
706
751
  # Check Claude settings for hook configuration
@@ -268,7 +268,10 @@ class ResponseTrackingManager:
268
268
  def track_stop_response(
269
269
  self, event: dict, session_id: str, metadata: dict, pending_prompts: dict
270
270
  ):
271
- """Track response for stop events."""
271
+ """Track response for stop events.
272
+
273
+ Captures Claude API stop_reason and usage data for context management.
274
+ """
272
275
  if not (self.response_tracking_enabled and self.response_tracker):
273
276
  return
274
277
 
@@ -294,6 +297,37 @@ class ResponseTrackingManager:
294
297
  # Add prompt timestamp to metadata
295
298
  metadata["prompt_timestamp"] = prompt_data.get("timestamp")
296
299
 
300
+ # Capture Claude API stop_reason if available
301
+ if "stop_reason" in event:
302
+ metadata["stop_reason"] = event["stop_reason"]
303
+ if DEBUG:
304
+ print(
305
+ f" - Captured stop_reason: {event['stop_reason']}",
306
+ file=sys.stderr,
307
+ )
308
+
309
+ # Capture Claude API usage data if available
310
+ if "usage" in event:
311
+ usage_data = event["usage"]
312
+ metadata["usage"] = {
313
+ "input_tokens": usage_data.get("input_tokens", 0),
314
+ "output_tokens": usage_data.get("output_tokens", 0),
315
+ "cache_creation_input_tokens": usage_data.get(
316
+ "cache_creation_input_tokens", 0
317
+ ),
318
+ "cache_read_input_tokens": usage_data.get(
319
+ "cache_read_input_tokens", 0
320
+ ),
321
+ }
322
+ if DEBUG:
323
+ total_tokens = usage_data.get(
324
+ "input_tokens", 0
325
+ ) + usage_data.get("output_tokens", 0)
326
+ print(
327
+ f" - Captured usage: {total_tokens} total tokens",
328
+ file=sys.stderr,
329
+ )
330
+
297
331
  # Track the main Claude response
298
332
  file_path = self.response_tracker.track_response(
299
333
  agent_name="claude_main",
@@ -0,0 +1,121 @@
1
+ """Session Resume Startup Hook.
2
+
3
+ WHY: This hook automatically checks for paused sessions on PM startup and displays
4
+ resume context to help users continue their work seamlessly.
5
+
6
+ DESIGN DECISIONS:
7
+ - Runs automatically on PM startup
8
+ - Non-blocking: doesn't prevent PM from starting if check fails
9
+ - Displays context to stdout for user visibility
10
+ - Integrates with existing session pause/resume infrastructure
11
+ """
12
+
13
+ from pathlib import Path
14
+ from typing import Any, Dict, Optional
15
+
16
+ from claude_mpm.core.logger import get_logger
17
+ from claude_mpm.services.cli.session_resume_helper import SessionResumeHelper
18
+
19
+ logger = get_logger(__name__)
20
+
21
+
22
+ class SessionResumeStartupHook:
23
+ """Hook for automatic session resume detection on PM startup."""
24
+
25
+ def __init__(self, project_path: Optional[Path] = None):
26
+ """Initialize the session resume hook.
27
+
28
+ Args:
29
+ project_path: Project root path (default: current directory)
30
+ """
31
+ self.project_path = project_path or Path.cwd()
32
+ self.resume_helper = SessionResumeHelper(self.project_path)
33
+ self._session_displayed = False
34
+
35
+ def on_pm_startup(self) -> Optional[Dict[str, Any]]:
36
+ """Execute on PM startup to check for paused sessions.
37
+
38
+ Returns:
39
+ Session data if paused session found, None otherwise
40
+ """
41
+ try:
42
+ # Check if we already displayed a session in this process
43
+ if self._session_displayed:
44
+ logger.debug("Session already displayed, skipping")
45
+ return None
46
+
47
+ # Check for paused sessions
48
+ session_data = self.resume_helper.check_and_display_resume_prompt()
49
+
50
+ if session_data:
51
+ self._session_displayed = True
52
+ logger.info("Paused session context displayed to user")
53
+
54
+ return session_data
55
+
56
+ except Exception as e:
57
+ logger.error(f"Failed to check for paused sessions: {e}", exc_info=True)
58
+ return None
59
+
60
+ def get_session_count(self) -> int:
61
+ """Get count of paused sessions.
62
+
63
+ Returns:
64
+ Number of paused sessions
65
+ """
66
+ try:
67
+ return self.resume_helper.get_session_count()
68
+ except Exception as e:
69
+ logger.error(f"Failed to get session count: {e}")
70
+ return 0
71
+
72
+ def clear_displayed_session(self, session_data: Dict[str, Any]) -> bool:
73
+ """Clear a session after it has been displayed and user has acknowledged.
74
+
75
+ Args:
76
+ session_data: Session data to clear
77
+
78
+ Returns:
79
+ True if successfully cleared, False otherwise
80
+ """
81
+ try:
82
+ return self.resume_helper.clear_session(session_data)
83
+ except Exception as e:
84
+ logger.error(f"Failed to clear session: {e}")
85
+ return False
86
+
87
+
88
+ # Global hook instance
89
+ _session_resume_hook: Optional[SessionResumeStartupHook] = None
90
+
91
+
92
+ def get_session_resume_hook(
93
+ project_path: Optional[Path] = None,
94
+ ) -> SessionResumeStartupHook:
95
+ """Get or create the global session resume hook instance.
96
+
97
+ Args:
98
+ project_path: Project root path (default: current directory)
99
+
100
+ Returns:
101
+ SessionResumeStartupHook instance
102
+ """
103
+ global _session_resume_hook
104
+
105
+ if _session_resume_hook is None:
106
+ _session_resume_hook = SessionResumeStartupHook(project_path)
107
+ logger.debug("Created session resume hook instance")
108
+
109
+ return _session_resume_hook
110
+
111
+
112
+ def trigger_session_resume_check() -> Optional[Dict[str, Any]]:
113
+ """Trigger a session resume check (convenience function).
114
+
115
+ This is the main entry point for PM startup integration.
116
+
117
+ Returns:
118
+ Session data if found, None otherwise
119
+ """
120
+ hook = get_session_resume_hook()
121
+ return hook.on_pm_startup()