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
@@ -295,7 +295,7 @@ class MCPInstallCommands:
295
295
 
296
296
  # Create backup
297
297
  backup_path = config_path.with_suffix(
298
- f'.backup.{datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")}.json'
298
+ f".backup.{datetime.now(timezone.utc).strftime('%Y%m%d_%H%M%S')}.json"
299
299
  )
300
300
  try:
301
301
  config_path.rename(backup_path)
@@ -0,0 +1,284 @@
1
+ """MCP install command implementations.
2
+
3
+ This module provides MCP installation and configuration commands.
4
+ Extracted from mcp.py to reduce complexity and improve maintainability.
5
+ """
6
+
7
+ import subprocess
8
+ import sys
9
+ from pathlib import Path
10
+
11
+
12
+ class MCPInstallCommands:
13
+ """Handles MCP install commands."""
14
+
15
+ def __init__(self, logger):
16
+ """Initialize the MCP install commands handler."""
17
+ self.logger = logger
18
+
19
+ def install_gateway(self, args):
20
+ """Install and configure MCP gateway.
21
+
22
+ WHY: This command installs the MCP package dependencies and configures
23
+ Claude Code to use the MCP gateway server directly via the CLI command.
24
+
25
+ DESIGN DECISION: We handle both package installation and configuration
26
+ in one command for user convenience, using the new direct CLI approach.
27
+ """
28
+ self.logger.info("MCP gateway installation command called")
29
+ print("📦 Installing and Configuring MCP Gateway")
30
+ print("=" * 50)
31
+
32
+ # Step 1: Install MCP package if needed
33
+ print("\n1️⃣ Checking MCP package installation...")
34
+ try:
35
+ import mcp
36
+ print("✅ MCP package already installed")
37
+ except ImportError:
38
+ print("📦 Installing MCP package...")
39
+ try:
40
+ subprocess.check_call([sys.executable, "-m", "pip", "install", "mcp"])
41
+ print("✅ MCP package installed successfully")
42
+ except subprocess.CalledProcessError as e:
43
+ print(f"❌ Error installing MCP package: {e}")
44
+ print("\nPlease install manually with: pip install mcp")
45
+ return 1
46
+
47
+ # Step 2: Configure Claude Code with the new CLI command
48
+ print("\n2️⃣ Configuring Claude Code...")
49
+ try:
50
+ success = self._configure_claude_desktop(args.force)
51
+ if success:
52
+ print("✅ Configuration completed successfully")
53
+ print("\n🎉 MCP Gateway is ready to use!")
54
+ print("\nNext steps:")
55
+ print("1. Restart Claude Code")
56
+ print("2. Test the server: claude-mpm mcp server --test")
57
+ print("3. Check status: claude-mpm mcp status")
58
+ return 0
59
+ else:
60
+ print("❌ Configuration failed")
61
+ return 1
62
+
63
+ except Exception as e:
64
+ print(f"❌ Error during configuration: {e}")
65
+ return 1
66
+
67
+ def _configure_claude_desktop(self, force=False):
68
+ """Configure Claude Code to use the MCP gateway via CLI command.
69
+
70
+ Args:
71
+ force: Whether to overwrite existing configuration
72
+
73
+ Returns:
74
+ bool: True if configuration was successful
75
+ """
76
+ import json
77
+ import platform
78
+ from pathlib import Path
79
+ from datetime import datetime
80
+
81
+ # Determine Claude Code config path
82
+ config_path = self._get_claude_config_path()
83
+ if not config_path:
84
+ print("❌ Could not determine Claude Code configuration path")
85
+ return False
86
+
87
+ print(f" Configuration path: {config_path}")
88
+
89
+ # Load existing configuration or create new one
90
+ config = self._load_or_create_config(config_path, force)
91
+ if config is None:
92
+ return False
93
+
94
+ # Configure the claude-mpm-gateway server using the CLI command
95
+ claude_mpm_path = self._find_claude_mpm_executable()
96
+ if not claude_mpm_path:
97
+ print("❌ Could not find claude-mpm executable")
98
+ return False
99
+
100
+ # Determine if we need to use -m claude_mpm or direct command
101
+ if claude_mpm_path.endswith(('python', 'python3', 'python.exe', 'python3.exe')):
102
+ # Using Python interpreter directly
103
+ mcp_config = {
104
+ "command": claude_mpm_path,
105
+ "args": ["-m", "claude_mpm", "mcp", "server"],
106
+ "env": {
107
+ "PYTHONPATH": str(Path(__file__).parent.parent.parent.parent),
108
+ "MCP_MODE": "production"
109
+ }
110
+ }
111
+ else:
112
+ # Using installed claude-mpm command
113
+ mcp_config = {
114
+ "command": claude_mpm_path,
115
+ "args": ["mcp", "server"],
116
+ "env": {
117
+ "PYTHONPATH": str(Path(__file__).parent.parent.parent.parent),
118
+ "MCP_MODE": "production"
119
+ }
120
+ }
121
+
122
+ # Update configuration
123
+ if "mcpServers" not in config:
124
+ config["mcpServers"] = {}
125
+
126
+ config["mcpServers"]["claude-mpm-gateway"] = mcp_config
127
+
128
+ print("\n✅ Configured claude-mpm-gateway server:")
129
+ print(f" Command: {mcp_config['command']}")
130
+ print(f" Args: {mcp_config['args']}")
131
+ print(f" Environment variables: {list(mcp_config['env'].keys())}")
132
+
133
+ # Save configuration
134
+ return self._save_config(config, config_path)
135
+
136
+ def _get_claude_config_path(self):
137
+ """Get the Claude Code configuration file path.
138
+
139
+ Returns:
140
+ Path or None: Path to Claude Code config file
141
+ """
142
+ from pathlib import Path
143
+
144
+ # Claude Code uses ~/.claude/settings.local.json regardless of platform
145
+ return Path.home() / ".claude" / "settings.local.json"
146
+
147
+ def _find_claude_mpm_executable(self):
148
+ """Find the claude-mpm executable path.
149
+
150
+ WHY: We need to find the installed claude-mpm command to use as the
151
+ MCP server command. This ensures we're using the properly installed
152
+ version with all dependencies, not a raw Python script.
153
+
154
+ DESIGN DECISION: We prioritize in this order:
155
+ 1. System-installed claude-mpm (most reliable)
156
+ 2. Virtual environment claude-mpm (development)
157
+ 3. Python module invocation (fallback)
158
+
159
+ Returns:
160
+ str or None: Path to claude-mpm executable
161
+ """
162
+ import shutil
163
+ import sys
164
+ import os
165
+
166
+ # 1. Try to find claude-mpm in PATH (system-wide or venv)
167
+ claude_mpm_path = shutil.which("claude-mpm")
168
+ if claude_mpm_path:
169
+ print(f" Found claude-mpm: {claude_mpm_path}")
170
+ return claude_mpm_path
171
+
172
+ # 2. Check if we're in a virtual environment
173
+ if hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix):
174
+ # We're in a virtual environment
175
+ venv_bin = Path(sys.prefix) / ("Scripts" if sys.platform == "win32" else "bin")
176
+ venv_claude_mpm = venv_bin / "claude-mpm"
177
+ if venv_claude_mpm.exists():
178
+ print(f" Found claude-mpm in venv: {venv_claude_mpm}")
179
+ return str(venv_claude_mpm)
180
+
181
+ # 3. Check if claude_mpm module is installed and use Python to run it
182
+ try:
183
+ import claude_mpm
184
+ # Return the Python executable - we'll handle the -m args separately
185
+ print(f" Using Python module: {sys.executable} -m claude_mpm")
186
+ return sys.executable
187
+ except ImportError:
188
+ pass
189
+
190
+ # 4. Last resort: check project's local venv (development mode)
191
+ project_root = Path(__file__).parent.parent.parent.parent.parent
192
+ local_venv_bin = project_root / "venv" / ("Scripts" if sys.platform == "win32" else "bin")
193
+ local_claude_mpm = local_venv_bin / "claude-mpm"
194
+ if local_claude_mpm.exists():
195
+ print(f" Found claude-mpm in project venv: {local_claude_mpm}")
196
+ return str(local_claude_mpm)
197
+
198
+ return None
199
+
200
+ def _load_or_create_config(self, config_path, force=False):
201
+ """Load existing configuration or create a new one.
202
+
203
+ Args:
204
+ config_path: Path to configuration file
205
+ force: Whether to overwrite existing configuration
206
+
207
+ Returns:
208
+ dict or None: Configuration dictionary
209
+ """
210
+ import json
211
+ from datetime import datetime
212
+
213
+ config = {}
214
+
215
+ if config_path.exists():
216
+ if not force:
217
+ # Check if claude-mpm-gateway already exists
218
+ try:
219
+ with open(config_path, 'r') as f:
220
+ existing_config = json.load(f)
221
+
222
+ if (existing_config.get("mcpServers", {}).get("claude-mpm-gateway") and
223
+ not force):
224
+ print("⚠️ claude-mpm-gateway is already configured")
225
+ response = input("Do you want to overwrite it? (y/N): ").strip().lower()
226
+ if response not in ['y', 'yes']:
227
+ print("❌ Configuration cancelled")
228
+ return None
229
+
230
+ config = existing_config
231
+
232
+ except (json.JSONDecodeError, IOError) as e:
233
+ print(f"⚠️ Error reading existing config: {e}")
234
+ print("Creating backup and starting fresh...")
235
+
236
+ # Create backup
237
+ backup_path = config_path.with_suffix(f'.backup.{datetime.now().strftime("%Y%m%d_%H%M%S")}.json')
238
+ try:
239
+ config_path.rename(backup_path)
240
+ print(f" Backup created: {backup_path}")
241
+ except Exception as backup_error:
242
+ print(f" Warning: Could not create backup: {backup_error}")
243
+ else:
244
+ # Force mode - create backup but proceed
245
+ try:
246
+ with open(config_path, 'r') as f:
247
+ existing_config = json.load(f)
248
+ config = existing_config
249
+ print(" Force mode: Overwriting existing configuration")
250
+ except:
251
+ pass # File doesn't exist or is invalid, start fresh
252
+
253
+ # Ensure mcpServers section exists
254
+ if "mcpServers" not in config:
255
+ config["mcpServers"] = {}
256
+
257
+ return config
258
+
259
+ def _save_config(self, config, config_path):
260
+ """Save configuration to file.
261
+
262
+ Args:
263
+ config: Configuration dictionary
264
+ config_path: Path to save configuration
265
+
266
+ Returns:
267
+ bool: True if successful
268
+ """
269
+ import json
270
+
271
+ try:
272
+ # Ensure directory exists
273
+ config_path.parent.mkdir(parents=True, exist_ok=True)
274
+
275
+ # Write configuration with nice formatting
276
+ with open(config_path, 'w') as f:
277
+ json.dump(config, f, indent=2)
278
+
279
+ print(f"\n✅ Configuration saved to {config_path}")
280
+ return True
281
+
282
+ except Exception as e:
283
+ print(f"❌ Error saving configuration: {e}")
284
+ return False
@@ -0,0 +1,365 @@
1
+ # MPM-Init Package
2
+
3
+ This package provides comprehensive project initialization and update capabilities for Claude Code and Claude MPM.
4
+
5
+ ## Package Structure
6
+
7
+ ```
8
+ mpm_init/
9
+ ├── __init__.py # Package initialization and exports
10
+ ├── core.py # MPMInitCommand class - main orchestrator
11
+ ├── prompts.py # Prompt building functions
12
+ ├── display.py # Display and UI helper functions
13
+ ├── git_activity.py # Git analysis and activity tracking
14
+ ├── modes.py # Operation mode handlers
15
+ └── README.md # This file
16
+ ```
17
+
18
+ ## Module Responsibilities
19
+
20
+ ### `__init__.py` - Package Initialization
21
+ **Purpose**: Public API exposure and lazy imports
22
+
23
+ **Exports**:
24
+ - `MPMInitCommand` - Main command class (from core.py)
25
+ - `mpm_init` - Click command group (lazy import from mpm_init_cli.py)
26
+
27
+ **Key Features**:
28
+ - Lazy import via `__getattr__` to avoid circular dependencies
29
+ - Clean public API surface
30
+ - Internal module re-exports for package-level imports
31
+
32
+ ### `core.py` - MPMInitCommand Class
33
+ **Purpose**: Main orchestrator for project initialization
34
+
35
+ **Key Class**: `MPMInitCommand`
36
+
37
+ **Responsibilities**:
38
+ - Coordinate initialization workflow
39
+ - Manage service components (DocumentationManager, ProjectOrganizer, etc.)
40
+ - Build and execute delegation prompts
41
+ - Handle subprocess execution via claude-mpm CLI
42
+ - Coordinate pre/post initialization tasks
43
+
44
+ **Public Methods**:
45
+ ```python
46
+ def initialize_project(
47
+ project_type: Optional[str] = None,
48
+ framework: Optional[str] = None,
49
+ force: bool = False,
50
+ verbose: bool = False,
51
+ ast_analysis: bool = True,
52
+ update_mode: bool = False,
53
+ review_only: bool = False,
54
+ organize_files: bool = False,
55
+ preserve_custom: bool = True,
56
+ skip_archive: bool = False,
57
+ dry_run: bool = False,
58
+ quick_update: bool = False,
59
+ catchup: bool = False,
60
+ non_interactive: bool = False,
61
+ days: int = 30,
62
+ export: Optional[str] = None,
63
+ ) -> Dict
64
+ ```
65
+
66
+ ```python
67
+ def handle_context(
68
+ session_id: Optional[str] = None,
69
+ list_sessions: bool = False,
70
+ days: int = 7,
71
+ ) -> Dict[str, Any]
72
+ ```
73
+
74
+ ### `prompts.py` - Prompt Building
75
+ **Purpose**: Pure functions for generating agent delegation prompts
76
+
77
+ **Functions**:
78
+ - `build_initialization_prompt()` - Create new project initialization prompt
79
+ - `build_update_prompt()` - Update existing CLAUDE.md prompt
80
+ - `build_research_context_prompt()` - Research agent delegation for git analysis
81
+
82
+ **Design Pattern**: Pure functions with no side effects or external dependencies
83
+
84
+ **Example**:
85
+ ```python
86
+ from claude_mpm.cli.commands.mpm_init import prompts
87
+
88
+ prompt = prompts.build_initialization_prompt(
89
+ project_path=Path("/path/to/project"),
90
+ project_type="web",
91
+ framework="FastAPI",
92
+ ast_analysis=True
93
+ )
94
+ ```
95
+
96
+ ### `display.py` - Display Functions
97
+ **Purpose**: Pure functions for console output and reporting
98
+
99
+ **Functions**:
100
+ - `display_documentation_status()` - Show doc analysis
101
+ - `display_review_report()` - Comprehensive project review
102
+ - `display_catchup()` - Recent commit history
103
+ - `display_activity_report()` - Git activity summary
104
+ - `display_results()` - Initialization results
105
+ - `show_update_plan()` - Update mode plan
106
+ - `show_initialization_plan()` - Init mode plan
107
+
108
+ **Design Pattern**: All functions accept DisplayHelper/Console as parameters (dependency injection)
109
+
110
+ **Example**:
111
+ ```python
112
+ from claude_mpm.cli.commands.mpm_init import display
113
+
114
+ display.display_activity_report(display_helper, activity_report)
115
+ ```
116
+
117
+ ### `git_activity.py` - Git Analysis
118
+ **Purpose**: Git repository analysis and activity tracking
119
+
120
+ **Functions**:
121
+ - `catchup()` - Get recent commit history for PM context
122
+ - `generate_activity_report()` - Comprehensive activity report
123
+ - `export_activity_report()` - Export report to markdown
124
+ - `append_activity_notes()` - Append activity to CLAUDE.md
125
+ - `handle_context()` - Intelligent context for resuming work
126
+
127
+ **Use Cases**:
128
+ - Quick update mode (`--quick-update`)
129
+ - Catchup mode (`--catchup`)
130
+ - Context analysis (`/mpm-init --context`)
131
+
132
+ **Example**:
133
+ ```python
134
+ from claude_mpm.cli.commands.mpm_init import git_activity
135
+
136
+ # Get recent commits
137
+ data = git_activity.catchup(project_path)
138
+
139
+ # Generate full activity report
140
+ report = git_activity.generate_activity_report(
141
+ git_analysis, doc_analysis, days=30
142
+ )
143
+ ```
144
+
145
+ ### `modes.py` - Operation Mode Handlers
146
+ **Purpose**: Handle different execution modes
147
+
148
+ **Functions**:
149
+ - `prompt_update_action()` - Interactive prompt for update decisions
150
+ - `run_review_mode()` - Review project without changes
151
+ - `run_quick_update_mode()` - Lightweight git-based update
152
+ - `run_dry_run_mode()` - Show planned changes without execution
153
+ - `handle_update_post_processing()` - Post-update summary
154
+
155
+ **Modes Supported**:
156
+ - **Review Mode** (`--review-only`): Analyze project state
157
+ - **Dry-Run Mode** (`--dry-run`): Preview changes
158
+ - **Quick Update** (`--quick-update`): Fast incremental update
159
+ - **Update Mode** (`--update`): Smart merge with existing docs
160
+
161
+ **Example**:
162
+ ```python
163
+ from claude_mpm.cli.commands.mpm_init import modes
164
+
165
+ result = modes.run_review_mode(
166
+ console, display, organizer, doc_manager, analyzer
167
+ )
168
+ ```
169
+
170
+ ## Usage Examples
171
+
172
+ ### Programmatic Usage
173
+
174
+ ```python
175
+ from pathlib import Path
176
+ from claude_mpm.cli.commands.mpm_init import MPMInitCommand
177
+
178
+ # Initialize command
179
+ command = MPMInitCommand(project_path=Path("/path/to/project"))
180
+
181
+ # Create new project
182
+ result = command.initialize_project(
183
+ project_type="web",
184
+ framework="FastAPI",
185
+ ast_analysis=True
186
+ )
187
+
188
+ # Update existing project
189
+ result = command.initialize_project(
190
+ update_mode=True,
191
+ preserve_custom=True,
192
+ ast_analysis=True
193
+ )
194
+
195
+ # Quick update based on git activity
196
+ result = command.initialize_project(
197
+ quick_update=True,
198
+ days=30,
199
+ export="auto"
200
+ )
201
+
202
+ # Review only (no changes)
203
+ result = command.initialize_project(
204
+ review_only=True
205
+ )
206
+ ```
207
+
208
+ ### CLI Usage
209
+
210
+ Via the Click command group (defined in parent `mpm_init_cli.py`):
211
+
212
+ ```bash
213
+ # Create new project
214
+ /mpm-init
215
+
216
+ # Update existing project
217
+ /mpm-init --update
218
+
219
+ # Review project state
220
+ /mpm-init --review-only
221
+
222
+ # Quick update with export
223
+ /mpm-init --quick-update --days 30 --export auto
224
+
225
+ # Dry-run (preview changes)
226
+ /mpm-init --dry-run
227
+
228
+ # Catchup (show recent commits)
229
+ /mpm-init --catchup
230
+
231
+ # Context analysis
232
+ /mpm-init --context --days 7
233
+ ```
234
+
235
+ ## Design Principles
236
+
237
+ ### 1. **Separation of Concerns**
238
+ Each module has a single, clear responsibility:
239
+ - `core.py` - orchestration
240
+ - `prompts.py` - prompt building
241
+ - `display.py` - UI/output
242
+ - `git_activity.py` - git analysis
243
+ - `modes.py` - mode handling
244
+
245
+ ### 2. **Pure Functions**
246
+ `prompts.py` and `display.py` contain pure functions with no side effects or global state.
247
+
248
+ ### 3. **Dependency Injection**
249
+ Display functions accept `DisplayHelper` and `Console` as parameters rather than creating their own instances.
250
+
251
+ ### 4. **Modular Architecture**
252
+ Easy to test, maintain, and extend individual components without touching others.
253
+
254
+ ### 5. **Lazy Imports**
255
+ `__init__.py` uses `__getattr__` to avoid circular dependencies while maintaining clean API.
256
+
257
+ ## Service Dependencies
258
+
259
+ The package relies on these service components:
260
+
261
+ - `DocumentationManager` - CLAUDE.md analysis and management
262
+ - `ProjectOrganizer` - Project structure validation
263
+ - `ArchiveManager` - Documentation versioning
264
+ - `EnhancedProjectAnalyzer` - Git and project state analysis
265
+ - `DisplayHelper` - Rich console output formatting
266
+
267
+ ## Developer Notes
268
+
269
+ ### Adding New Modes
270
+
271
+ To add a new operation mode:
272
+
273
+ 1. Add mode handler function in `modes.py`:
274
+ ```python
275
+ def run_new_mode(console, display, ...) -> Dict:
276
+ # Implementation
277
+ return {"status": OperationResult.SUCCESS, "mode": "new_mode"}
278
+ ```
279
+
280
+ 2. Add mode detection in `core.py` `initialize_project()`:
281
+ ```python
282
+ if new_mode_flag:
283
+ return self._run_new_mode()
284
+ ```
285
+
286
+ 3. Add CLI flag in parent `mpm_init_cli.py`
287
+
288
+ ### Adding New Prompts
289
+
290
+ Add prompt builder in `prompts.py`:
291
+
292
+ ```python
293
+ def build_new_prompt(project_path: Path, **kwargs) -> str:
294
+ """Build prompt for new use case."""
295
+ return f"""Your prompt template..."""
296
+ ```
297
+
298
+ Then call from `core.py`:
299
+ ```python
300
+ prompt = prompts.build_new_prompt(self.project_path, **kwargs)
301
+ ```
302
+
303
+ ### Adding Display Functions
304
+
305
+ Add display function in `display.py`:
306
+
307
+ ```python
308
+ def display_new_report(display: DisplayHelper, data: Dict) -> None:
309
+ """Display new report type."""
310
+ display.display_header("NEW REPORT")
311
+ # Rendering logic
312
+ ```
313
+
314
+ ### Testing Considerations
315
+
316
+ - **Unit Tests**: Test pure functions in `prompts.py` and `display.py`
317
+ - **Integration Tests**: Test `MPMInitCommand` with mocked services
318
+ - **E2E Tests**: Test via CLI commands in parent module
319
+
320
+ ### File Size Tracking
321
+
322
+ Current module sizes:
323
+ - `core.py`: ~525 lines (Main orchestrator - expected to be largest)
324
+ - `prompts.py`: ~443 lines (Template generation)
325
+ - `git_activity.py`: ~427 lines (Git analysis utilities)
326
+ - `modes.py`: ~401 lines (Mode handlers)
327
+ - `display.py`: ~360 lines (Display functions)
328
+
329
+ All modules are well under the 600-line warning threshold.
330
+
331
+ ## Version History
332
+
333
+ **Current Version**: Part of claude-mpm 4.20.7
334
+
335
+ **Changes from Monolithic `mpm_init.py`**:
336
+ - Split 800+ line file into 6 focused modules
337
+ - Improved testability through pure functions
338
+ - Better separation of concerns
339
+ - Easier maintenance and feature additions
340
+ - Clearer public API surface
341
+
342
+ ## Related Files
343
+
344
+ - **Parent CLI**: `../mpm_init_cli.py` - Click command definitions
345
+ - **Handler**: `../mpm_init_handler.py` - Legacy compatibility handler
346
+ - **Parser**: `../../parsers/mpm_init_parser.py` - Command-line argument parsing
347
+ - **Tests**: `../../../../../tests/test_mpm_init_catchup.py` - Unit tests
348
+
349
+ ## Contributing
350
+
351
+ When modifying this package:
352
+
353
+ 1. Maintain pure function approach in `prompts.py` and `display.py`
354
+ 2. Keep modules under 600 lines (split if approaching limit)
355
+ 3. Add docstrings for all public functions
356
+ 4. Update this README with new functionality
357
+ 5. Add type hints to all function signatures
358
+ 6. Follow existing patterns for consistency
359
+
360
+ ## Support
361
+
362
+ For issues or questions:
363
+ - Check existing documentation in CLAUDE.md
364
+ - Review test files for usage examples
365
+ - Consult service component documentation