claude-mpm 5.4.65__py3-none-any.whl → 5.6.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 (313) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/CLAUDE_MPM_OUTPUT_STYLE.md +66 -241
  3. claude_mpm/agents/CLAUDE_MPM_RESEARCH_OUTPUT_STYLE.md +413 -0
  4. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +107 -1928
  5. claude_mpm/agents/PM_INSTRUCTIONS.md +119 -689
  6. claude_mpm/agents/WORKFLOW.md +2 -0
  7. claude_mpm/agents/templates/circuit-breakers.md +26 -17
  8. claude_mpm/cli/__init__.py +5 -1
  9. claude_mpm/cli/commands/agents.py +2 -4
  10. claude_mpm/cli/commands/agents_reconcile.py +197 -0
  11. claude_mpm/cli/commands/autotodos.py +566 -0
  12. claude_mpm/cli/commands/commander.py +46 -0
  13. claude_mpm/cli/commands/configure.py +620 -21
  14. claude_mpm/cli/commands/hook_errors.py +60 -60
  15. claude_mpm/cli/commands/monitor.py +2 -2
  16. claude_mpm/cli/commands/mpm_init/core.py +2 -2
  17. claude_mpm/cli/commands/run.py +35 -3
  18. claude_mpm/cli/commands/skill_source.py +51 -2
  19. claude_mpm/cli/commands/skills.py +171 -17
  20. claude_mpm/cli/executor.py +120 -16
  21. claude_mpm/cli/interactive/__init__.py +10 -0
  22. claude_mpm/cli/interactive/agent_wizard.py +30 -50
  23. claude_mpm/cli/interactive/questionary_styles.py +65 -0
  24. claude_mpm/cli/interactive/skill_selector.py +481 -0
  25. claude_mpm/cli/parsers/base_parser.py +76 -1
  26. claude_mpm/cli/parsers/commander_parser.py +83 -0
  27. claude_mpm/cli/parsers/run_parser.py +10 -0
  28. claude_mpm/cli/parsers/skill_source_parser.py +4 -0
  29. claude_mpm/cli/parsers/skills_parser.py +5 -0
  30. claude_mpm/cli/startup.py +203 -359
  31. claude_mpm/cli/startup_display.py +72 -5
  32. claude_mpm/cli/startup_logging.py +2 -2
  33. claude_mpm/cli/utils.py +7 -3
  34. claude_mpm/commander/__init__.py +72 -0
  35. claude_mpm/commander/adapters/__init__.py +31 -0
  36. claude_mpm/commander/adapters/base.py +191 -0
  37. claude_mpm/commander/adapters/claude_code.py +361 -0
  38. claude_mpm/commander/adapters/communication.py +366 -0
  39. claude_mpm/commander/api/__init__.py +16 -0
  40. claude_mpm/commander/api/app.py +105 -0
  41. claude_mpm/commander/api/errors.py +133 -0
  42. claude_mpm/commander/api/routes/__init__.py +8 -0
  43. claude_mpm/commander/api/routes/events.py +184 -0
  44. claude_mpm/commander/api/routes/inbox.py +171 -0
  45. claude_mpm/commander/api/routes/messages.py +148 -0
  46. claude_mpm/commander/api/routes/projects.py +271 -0
  47. claude_mpm/commander/api/routes/sessions.py +228 -0
  48. claude_mpm/commander/api/routes/work.py +260 -0
  49. claude_mpm/commander/api/schemas.py +182 -0
  50. claude_mpm/commander/chat/__init__.py +7 -0
  51. claude_mpm/commander/chat/cli.py +107 -0
  52. claude_mpm/commander/chat/commands.py +96 -0
  53. claude_mpm/commander/chat/repl.py +310 -0
  54. claude_mpm/commander/config.py +49 -0
  55. claude_mpm/commander/config_loader.py +115 -0
  56. claude_mpm/commander/daemon.py +398 -0
  57. claude_mpm/commander/events/__init__.py +26 -0
  58. claude_mpm/commander/events/manager.py +332 -0
  59. claude_mpm/commander/frameworks/__init__.py +12 -0
  60. claude_mpm/commander/frameworks/base.py +143 -0
  61. claude_mpm/commander/frameworks/claude_code.py +58 -0
  62. claude_mpm/commander/frameworks/mpm.py +62 -0
  63. claude_mpm/commander/inbox/__init__.py +16 -0
  64. claude_mpm/commander/inbox/dedup.py +128 -0
  65. claude_mpm/commander/inbox/inbox.py +224 -0
  66. claude_mpm/commander/inbox/models.py +70 -0
  67. claude_mpm/commander/instance_manager.py +337 -0
  68. claude_mpm/commander/llm/__init__.py +6 -0
  69. claude_mpm/commander/llm/openrouter_client.py +167 -0
  70. claude_mpm/commander/llm/summarizer.py +70 -0
  71. claude_mpm/commander/models/__init__.py +18 -0
  72. claude_mpm/commander/models/events.py +121 -0
  73. claude_mpm/commander/models/project.py +162 -0
  74. claude_mpm/commander/models/work.py +214 -0
  75. claude_mpm/commander/parsing/__init__.py +20 -0
  76. claude_mpm/commander/parsing/extractor.py +132 -0
  77. claude_mpm/commander/parsing/output_parser.py +270 -0
  78. claude_mpm/commander/parsing/patterns.py +100 -0
  79. claude_mpm/commander/persistence/__init__.py +11 -0
  80. claude_mpm/commander/persistence/event_store.py +274 -0
  81. claude_mpm/commander/persistence/state_store.py +309 -0
  82. claude_mpm/commander/persistence/work_store.py +164 -0
  83. claude_mpm/commander/polling/__init__.py +13 -0
  84. claude_mpm/commander/polling/event_detector.py +104 -0
  85. claude_mpm/commander/polling/output_buffer.py +49 -0
  86. claude_mpm/commander/polling/output_poller.py +153 -0
  87. claude_mpm/commander/project_session.py +268 -0
  88. claude_mpm/commander/proxy/__init__.py +12 -0
  89. claude_mpm/commander/proxy/formatter.py +89 -0
  90. claude_mpm/commander/proxy/output_handler.py +191 -0
  91. claude_mpm/commander/proxy/relay.py +155 -0
  92. claude_mpm/commander/registry.py +404 -0
  93. claude_mpm/commander/runtime/__init__.py +10 -0
  94. claude_mpm/commander/runtime/executor.py +191 -0
  95. claude_mpm/commander/runtime/monitor.py +316 -0
  96. claude_mpm/commander/session/__init__.py +6 -0
  97. claude_mpm/commander/session/context.py +81 -0
  98. claude_mpm/commander/session/manager.py +59 -0
  99. claude_mpm/commander/tmux_orchestrator.py +361 -0
  100. claude_mpm/commander/web/__init__.py +1 -0
  101. claude_mpm/commander/work/__init__.py +30 -0
  102. claude_mpm/commander/work/executor.py +189 -0
  103. claude_mpm/commander/work/queue.py +405 -0
  104. claude_mpm/commander/workflow/__init__.py +27 -0
  105. claude_mpm/commander/workflow/event_handler.py +219 -0
  106. claude_mpm/commander/workflow/notifier.py +146 -0
  107. claude_mpm/commands/mpm-config.md +8 -0
  108. claude_mpm/commands/mpm-doctor.md +8 -0
  109. claude_mpm/commands/mpm-help.md +8 -0
  110. claude_mpm/commands/mpm-init.md +8 -0
  111. claude_mpm/commands/mpm-monitor.md +8 -0
  112. claude_mpm/commands/mpm-organize.md +8 -0
  113. claude_mpm/commands/mpm-postmortem.md +8 -0
  114. claude_mpm/commands/mpm-session-resume.md +9 -1
  115. claude_mpm/commands/mpm-status.md +8 -0
  116. claude_mpm/commands/mpm-ticket-view.md +8 -0
  117. claude_mpm/commands/mpm-version.md +8 -0
  118. claude_mpm/commands/mpm.md +8 -0
  119. claude_mpm/config/agent_presets.py +8 -7
  120. claude_mpm/config/skill_sources.py +16 -0
  121. claude_mpm/constants.py +1 -0
  122. claude_mpm/core/claude_runner.py +2 -2
  123. claude_mpm/core/config.py +32 -19
  124. claude_mpm/core/hook_manager.py +51 -3
  125. claude_mpm/core/interactive_session.py +7 -7
  126. claude_mpm/core/logger.py +26 -9
  127. claude_mpm/core/logging_utils.py +35 -11
  128. claude_mpm/core/output_style_manager.py +31 -13
  129. claude_mpm/core/unified_config.py +54 -8
  130. claude_mpm/core/unified_paths.py +95 -90
  131. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.C33zOoyM.css +1 -0
  132. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.CW1J-YuA.css +1 -0
  133. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{Cs_tUR18.js → 1WZnGYqX.js} +1 -1
  134. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CDuw-vjf.js → 67pF3qNn.js} +1 -1
  135. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{bTOqqlTd.js → 6RxdMKe4.js} +1 -1
  136. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DwBR2MJi.js → 8cZrfX0h.js} +1 -1
  137. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{ZGh7QtNv.js → 9a6T2nm-.js} +1 -1
  138. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{D9lljYKQ.js → B443AUzu.js} +1 -1
  139. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{RJiighC3.js → B8AwtY2H.js} +1 -1
  140. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{uuIeMWc-.js → BF15LAsF.js} +1 -1
  141. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{D3k0OPJN.js → BRcwIQNr.js} +1 -1
  142. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CyWMqx4W.js → BV6nKitt.js} +1 -1
  143. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CiIAseT4.js → BViJ8lZt.js} +5 -5
  144. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CBBdVcY8.js → BcQ-Q0FE.js} +1 -1
  145. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{BovzEFCE.js → Bpyvgze_.js} +1 -1
  146. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BzTRqg-z.js +1 -0
  147. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C0Fr8dve.js +1 -0
  148. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{eNVUfhuA.js → C3rbW_a-.js} +1 -1
  149. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{GYwsonyD.js → C8WYN38h.js} +1 -1
  150. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{BIF9m_hv.js → C9I8FlXH.js} +1 -1
  151. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{B0uc0UOD.js → CIQcWgO2.js} +3 -3
  152. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{Be7GpZd6.js → CIctN7YN.js} +1 -1
  153. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{Bh0LDWpI.js → CKrS_JZW.js} +2 -2
  154. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DUrLdbGD.js → CR6P9C4A.js} +1 -1
  155. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{B7xVLGWV.js → CRRR9MD_.js} +1 -1
  156. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CRcR2DqT.js +334 -0
  157. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{Dhb8PKl3.js → CSXtMOf0.js} +1 -1
  158. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{BPYeabCQ.js → CT-sbxSk.js} +1 -1
  159. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{sQeU3Y1z.js → CWm6DJsp.js} +1 -1
  160. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CnA0NrzZ.js → CpqQ1Kzn.js} +1 -1
  161. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{C4B-KCzX.js → D2nGpDRe.js} +1 -1
  162. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DGkLK5U1.js → D9iCMida.js} +1 -1
  163. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{BofRWZRR.js → D9ykgMoY.js} +1 -1
  164. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DmxopI1J.js → DL2Ldur1.js} +1 -1
  165. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{C30mlcqg.js → DPfltzjH.js} +1 -1
  166. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{Vzk33B_K.js → DR8nis88.js} +2 -2
  167. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DI7hHRFL.js → DUliQN2b.js} +1 -1
  168. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{C4JcI4KD.js → DXlhR01x.js} +1 -1
  169. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{bT1r9zLR.js → D_lyTybS.js} +1 -1
  170. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DZX00Y4g.js → DngoTTgh.js} +1 -1
  171. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CzZX-COe.js → DqkmHtDC.js} +1 -1
  172. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{B7RN905-.js → DsDh8EYs.js} +1 -1
  173. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DLVjFsZ3.js → DypDmXgd.js} +1 -1
  174. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{iEWssX7S.js → IPYC-LnN.js} +1 -1
  175. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/JTLiF7dt.js +24 -0
  176. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DaimHw_p.js → JpevfAFt.js} +1 -1
  177. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DY1XQ8fi.js → R8CEIRAd.js} +1 -1
  178. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{Dle-35c7.js → Zxy7qc-l.js} +2 -2
  179. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/q9Hm6zAU.js +1 -0
  180. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{C_Usid8X.js → qtd3IeO4.js} +2 -2
  181. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CzeYkLYB.js → ulBFON_C.js} +2 -2
  182. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{Cfqx1Qun.js → wQVh1CoA.js} +1 -1
  183. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/{app.D6-I5TpK.js → app.Dr7t0z2J.js} +2 -2
  184. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.BGhZHUS3.js +1 -0
  185. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/{0.m1gL8KXf.js → 0.RgBboRvH.js} +1 -1
  186. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/{1.CgNOuw-d.js → 1.DG-KkbDf.js} +1 -1
  187. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.D_jnf-x6.js +1 -0
  188. claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -1
  189. claude_mpm/dashboard/static/svelte-build/index.html +9 -9
  190. claude_mpm/experimental/cli_enhancements.py +2 -1
  191. claude_mpm/hooks/claude_hooks/INTEGRATION_EXAMPLE.md +243 -0
  192. claude_mpm/hooks/claude_hooks/README_AUTO_PAUSE.md +403 -0
  193. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-314.pyc +0 -0
  194. claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-311.pyc +0 -0
  195. claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-312.pyc +0 -0
  196. claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-314.pyc +0 -0
  197. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  198. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-312.pyc +0 -0
  199. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-314.pyc +0 -0
  200. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  201. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-312.pyc +0 -0
  202. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-314.pyc +0 -0
  203. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
  204. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-314.pyc +0 -0
  205. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  206. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-312.pyc +0 -0
  207. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-314.pyc +0 -0
  208. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  209. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-312.pyc +0 -0
  210. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-314.pyc +0 -0
  211. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-314.pyc +0 -0
  212. claude_mpm/hooks/claude_hooks/auto_pause_handler.py +485 -0
  213. claude_mpm/hooks/claude_hooks/event_handlers.py +283 -87
  214. claude_mpm/hooks/claude_hooks/hook_handler.py +106 -89
  215. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +6 -11
  216. claude_mpm/hooks/claude_hooks/installer.py +116 -8
  217. claude_mpm/hooks/claude_hooks/memory_integration.py +51 -31
  218. claude_mpm/hooks/claude_hooks/response_tracking.py +42 -59
  219. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-314.pyc +0 -0
  220. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  221. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-312.pyc +0 -0
  222. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-314.pyc +0 -0
  223. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-314.pyc +0 -0
  224. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  225. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-312.pyc +0 -0
  226. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-314.pyc +0 -0
  227. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  228. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-312.pyc +0 -0
  229. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-314.pyc +0 -0
  230. claude_mpm/hooks/claude_hooks/services/connection_manager.py +39 -24
  231. claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +36 -103
  232. claude_mpm/hooks/claude_hooks/services/state_manager.py +23 -36
  233. claude_mpm/hooks/claude_hooks/services/subagent_processor.py +73 -75
  234. claude_mpm/hooks/session_resume_hook.py +89 -1
  235. claude_mpm/hooks/templates/pre_tool_use_template.py +10 -2
  236. claude_mpm/init.py +1 -1
  237. claude_mpm/scripts/claude-hook-handler.sh +43 -16
  238. claude_mpm/services/agents/agent_recommendation_service.py +8 -8
  239. claude_mpm/services/agents/agent_selection_service.py +2 -2
  240. claude_mpm/services/agents/cache_git_manager.py +1 -1
  241. claude_mpm/services/agents/deployment/deployment_reconciler.py +577 -0
  242. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +3 -0
  243. claude_mpm/services/agents/deployment/startup_reconciliation.py +138 -0
  244. claude_mpm/services/agents/loading/framework_agent_loader.py +75 -2
  245. claude_mpm/services/agents/single_tier_deployment_service.py +4 -4
  246. claude_mpm/services/agents/startup_sync.py +5 -2
  247. claude_mpm/services/cli/__init__.py +3 -0
  248. claude_mpm/services/cli/incremental_pause_manager.py +561 -0
  249. claude_mpm/services/cli/session_resume_helper.py +10 -2
  250. claude_mpm/services/delegation_detector.py +175 -0
  251. claude_mpm/services/diagnostics/checks/agent_sources_check.py +30 -0
  252. claude_mpm/services/diagnostics/checks/configuration_check.py +24 -0
  253. claude_mpm/services/diagnostics/checks/installation_check.py +22 -0
  254. claude_mpm/services/diagnostics/checks/mcp_services_check.py +23 -0
  255. claude_mpm/services/diagnostics/doctor_reporter.py +31 -1
  256. claude_mpm/services/diagnostics/models.py +14 -1
  257. claude_mpm/services/event_log.py +325 -0
  258. claude_mpm/services/infrastructure/__init__.py +4 -0
  259. claude_mpm/services/infrastructure/context_usage_tracker.py +291 -0
  260. claude_mpm/services/infrastructure/resume_log_generator.py +24 -5
  261. claude_mpm/services/monitor/daemon_manager.py +15 -4
  262. claude_mpm/services/monitor/management/lifecycle.py +8 -2
  263. claude_mpm/services/monitor/server.py +106 -16
  264. claude_mpm/services/pm_skills_deployer.py +259 -87
  265. claude_mpm/services/skills/git_skill_source_manager.py +135 -11
  266. claude_mpm/services/skills/selective_skill_deployer.py +142 -26
  267. claude_mpm/services/skills/skill_discovery_service.py +74 -4
  268. claude_mpm/services/skills_deployer.py +31 -5
  269. claude_mpm/services/socketio/handlers/hook.py +14 -7
  270. claude_mpm/services/socketio/server/main.py +12 -4
  271. claude_mpm/skills/bundled/pm/mpm/SKILL.md +38 -0
  272. claude_mpm/skills/bundled/pm/mpm-agent-update-workflow/SKILL.md +75 -0
  273. claude_mpm/skills/bundled/pm/mpm-bug-reporting/SKILL.md +248 -0
  274. claude_mpm/skills/bundled/pm/mpm-circuit-breaker-enforcement/SKILL.md +476 -0
  275. claude_mpm/skills/bundled/pm/mpm-config/SKILL.md +29 -0
  276. claude_mpm/skills/bundled/pm/mpm-doctor/SKILL.md +53 -0
  277. claude_mpm/skills/bundled/pm/mpm-help/SKILL.md +35 -0
  278. claude_mpm/skills/bundled/pm/mpm-init/SKILL.md +125 -0
  279. claude_mpm/skills/bundled/pm/mpm-monitor/SKILL.md +32 -0
  280. claude_mpm/skills/bundled/pm/mpm-organize/SKILL.md +121 -0
  281. claude_mpm/skills/bundled/pm/mpm-postmortem/SKILL.md +22 -0
  282. claude_mpm/skills/bundled/pm/mpm-session-management/SKILL.md +312 -0
  283. claude_mpm/skills/bundled/pm/mpm-session-resume/SKILL.md +31 -0
  284. claude_mpm/skills/bundled/pm/mpm-status/SKILL.md +37 -0
  285. claude_mpm/skills/bundled/pm/mpm-teaching-mode/SKILL.md +657 -0
  286. claude_mpm/skills/bundled/pm/mpm-ticket-view/SKILL.md +110 -0
  287. claude_mpm/skills/bundled/pm/mpm-tool-usage-guide/SKILL.md +386 -0
  288. claude_mpm/skills/bundled/pm/mpm-version/SKILL.md +21 -0
  289. claude_mpm/skills/skill_manager.py +4 -4
  290. claude_mpm/utils/agent_dependency_loader.py +4 -2
  291. claude_mpm/utils/robust_installer.py +10 -6
  292. claude_mpm-5.6.10.dist-info/METADATA +391 -0
  293. {claude_mpm-5.4.65.dist-info → claude_mpm-5.6.10.dist-info}/RECORD +303 -181
  294. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.DWzvg0-y.css +0 -1
  295. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.ThTw9_ym.css +0 -1
  296. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/4TdZjIqw.js +0 -1
  297. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/5shd3_w0.js +0 -24
  298. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BKjSRqUr.js +0 -1
  299. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Da0KfYnO.js +0 -1
  300. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Dfy6j1xT.js +0 -323
  301. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.NWzMBYRp.js +0 -1
  302. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.C0GcWctS.js +0 -1
  303. claude_mpm-5.4.65.dist-info/METADATA +0 -999
  304. /claude_mpm/skills/bundled/pm/{pm-delegation-patterns → mpm-delegation-patterns}/SKILL.md +0 -0
  305. /claude_mpm/skills/bundled/pm/{pm-git-file-tracking → mpm-git-file-tracking}/SKILL.md +0 -0
  306. /claude_mpm/skills/bundled/pm/{pm-pr-workflow → mpm-pr-workflow}/SKILL.md +0 -0
  307. /claude_mpm/skills/bundled/pm/{pm-ticketing-integration → mpm-ticketing-integration}/SKILL.md +0 -0
  308. /claude_mpm/skills/bundled/pm/{pm-verification-protocols → mpm-verification-protocols}/SKILL.md +0 -0
  309. {claude_mpm-5.4.65.dist-info → claude_mpm-5.6.10.dist-info}/WHEEL +0 -0
  310. {claude_mpm-5.4.65.dist-info → claude_mpm-5.6.10.dist-info}/entry_points.txt +0 -0
  311. {claude_mpm-5.4.65.dist-info → claude_mpm-5.6.10.dist-info}/licenses/LICENSE +0 -0
  312. {claude_mpm-5.4.65.dist-info → claude_mpm-5.6.10.dist-info}/licenses/LICENSE-FAQ.md +0 -0
  313. {claude_mpm-5.4.65.dist-info → claude_mpm-5.6.10.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: mpm-ticket-view
3
+ description: Orchestrate ticketing agent for project management workflows
4
+ user-invocable: true
5
+ version: "1.0.0"
6
+ category: mpm-command
7
+ tags: [mpm-command, tickets, pm-recommended]
8
+ ---
9
+
10
+ # /mpm-ticket
11
+
12
+ High-level ticketing workflows delegating to ticketing agent.
13
+
14
+ ## Usage
15
+ ```
16
+ /mpm-ticket <subcommand> [options]
17
+ ```
18
+
19
+ **CRITICAL:** PM delegates ALL ticketing operations to ticketing agent. PM NEVER uses MCP tools directly.
20
+
21
+ ## Subcommands
22
+
23
+ ### /mpm-ticket organize
24
+ Review, transition states, update priorities, identify stale tickets.
25
+
26
+ **MCP Tools (ticketing agent uses):**
27
+ - ticket_list, ticket_read, ticket_comment
28
+ - ticket_transition, ticket_update
29
+ - ticket_find_stale
30
+
31
+ **Output:** Tickets transitioned, priorities updated, stale tickets identified, next actions.
32
+
33
+ ### /mpm-ticket proceed
34
+ Analyze project board and recommend next actionable steps.
35
+
36
+ **MCP Tools (ticketing agent uses):**
37
+ - project_status, ticket_list, ticket_search
38
+ - epic_issues, get_available_transitions
39
+
40
+ **Output:** Project health, recommended next actions (top 3), blockers requiring attention.
41
+
42
+ ### /mpm-ticket status
43
+ Generate comprehensive status report covering work, tickets, project health.
44
+
45
+ **MCP Tools (ticketing agent uses):**
46
+ - project_status, ticket_list, ticket_search
47
+ - ticket_find_stale, get_my_tickets
48
+
49
+ **Output:** Health metrics, ticket counts, high-priority work, blockers, recent activity, risk assessment.
50
+
51
+ ### /mpm-ticket update
52
+ Create project status update (Linear ProjectUpdate).
53
+
54
+ **MCP Tools (ticketing agent uses):**
55
+ - project_status, project_update_create
56
+ - project_update_list, ticket_list
57
+
58
+ **Output:** Update ID, health status, accomplishments, metrics, risks, next sprint focus, published link.
59
+
60
+ ### /mpm-ticket project <url>
61
+ Set project URL for context (Linear/GitHub/JIRA).
62
+
63
+ **MCP Tools (ticketing agent uses):**
64
+ - config_set_default_project, epic_get, config_get
65
+
66
+ **Output:** Project context configured, platform/ID/name, access verified, summary.
67
+
68
+ ## Delegation Pattern
69
+
70
+ **WRONG ❌:**
71
+ ```
72
+ # PM directly using MCP tools
73
+ result = mcp__mcp-ticketer__ticket_list()
74
+ ```
75
+
76
+ **CORRECT ✅:**
77
+ ```
78
+ # PM delegates to ticketing agent
79
+ PM: "I'll have ticketing organize tickets..."
80
+ [PM constructs delegation prompt]
81
+ [Ticketing agent uses MCP tools]
82
+ PM: [Presents results]
83
+ ```
84
+
85
+ ## Fallback Strategy
86
+
87
+ If mcp-ticketer unavailable, ticketing agent falls back to aitrackdown CLI:
88
+ ```bash
89
+ aitrackdown status tasks
90
+ aitrackdown show TICKET-123
91
+ aitrackdown transition TICKET-123 done
92
+ ```
93
+
94
+ **PM still delegates** - ticketing agent handles CLI fallback internally.
95
+
96
+ ## Example Workflows
97
+
98
+ ```bash
99
+ # Organize and analyze
100
+ /mpm-ticket organize # Clean up board
101
+ /mpm-ticket proceed # Get next steps
102
+
103
+ # Weekly update
104
+ /mpm-ticket update # Create status update
105
+
106
+ # Project setup
107
+ /mpm-ticket project https://linear.app/team/project/abc-123
108
+ ```
109
+
110
+ See docs/commands/ticket.md for comprehensive documentation.
@@ -0,0 +1,386 @@
1
+ # MPM Tool Usage Guide
2
+
3
+ Detailed tool usage patterns and examples for PM agents.
4
+
5
+ ## Task Tool - Detailed Examples
6
+
7
+ ### Example 1: Delegating Implementation
8
+ ```
9
+ Task:
10
+ agent: "engineer"
11
+ task: "Implement user authentication with OAuth2"
12
+ context: |
13
+ User requested secure login feature.
14
+ Research agent identified Auth0 as recommended approach.
15
+ Existing codebase uses Express.js for backend.
16
+ acceptance_criteria:
17
+ - User can log in with email/password
18
+ - OAuth2 tokens stored securely
19
+ - Session management implemented
20
+ ```
21
+
22
+ ### Example 2: Delegating Verification
23
+ ```
24
+ Task:
25
+ agent: "qa"
26
+ task: "Verify deployment at https://app.example.com"
27
+ acceptance_criteria:
28
+ - Homepage loads successfully
29
+ - Login form is accessible
30
+ - No console errors in browser
31
+ - API health endpoint returns 200
32
+ ```
33
+
34
+ ### Example 3: Delegating Investigation
35
+ ```
36
+ Task:
37
+ agent: "research"
38
+ task: "Investigate authentication options for Express.js application"
39
+ context: |
40
+ User wants secure authentication.
41
+ Codebase is Express.js + PostgreSQL.
42
+ requirements:
43
+ - Compare OAuth2 vs JWT approaches
44
+ - Recommend specific libraries
45
+ - Identify security best practices
46
+ ```
47
+
48
+ ### Common Mistakes to Avoid
49
+ - Not providing context (agent lacks background)
50
+ - Vague task description ("fix the thing")
51
+ - No acceptance criteria (agent doesn't know completion criteria)
52
+
53
+ ## TodoWrite Tool - Progress Tracking
54
+
55
+ **Purpose**: Track delegated tasks during the current session
56
+
57
+ **When to Use**: After delegating work to maintain visibility of progress
58
+
59
+ **States**:
60
+ - `pending`: Task not yet started
61
+ - `in_progress`: Currently being worked on (max 1 at a time)
62
+ - `completed`: Finished successfully
63
+ - `ERROR - Attempt X/3`: Failed, attempting retry
64
+ - `BLOCKED`: Cannot proceed without user input
65
+
66
+ **Example**:
67
+ ```
68
+ TodoWrite:
69
+ todos:
70
+ - content: "Research authentication approaches"
71
+ status: "completed"
72
+ activeForm: "Researching authentication approaches"
73
+ - content: "Implement OAuth2 with Auth0"
74
+ status: "in_progress"
75
+ activeForm: "Implementing OAuth2 with Auth0"
76
+ - content: "Verify authentication flow"
77
+ status: "pending"
78
+ activeForm: "Verifying authentication flow"
79
+ ```
80
+
81
+ ## Read Tool Usage - Strict Hierarchy
82
+
83
+ **ABSOLUTE PROHIBITION**: PM must NEVER read source code files directly.
84
+
85
+ **Source code extensions** (ALWAYS delegate to Research):
86
+ `.py`, `.js`, `.ts`, `.tsx`, `.jsx`, `.go`, `.rs`, `.java`, `.rb`, `.php`, `.swift`, `.kt`, `.c`, `.cpp`, `.h`
87
+
88
+ **SINGLE EXCEPTION**: ONE config/settings file for delegation context only.
89
+ - Allowed: `package.json`, `pyproject.toml`, `settings.json`, `.env.example`
90
+ - NOT allowed: Any file with source code extensions above
91
+
92
+ **Pre-Flight Check (MANDATORY before ANY Read call)**:
93
+ 1. Is this a source code file? → STOP, delegate to Research
94
+ 2. Have I already used Read once this session? → STOP, delegate to Research
95
+ 3. Does my task contain investigation keywords? → STOP, delegate to Research
96
+
97
+ **Investigation Keywords** (trigger delegation, not Read):
98
+ - check, look, see, find, search, analyze, investigate, debug
99
+ - understand, explore, examine, review, inspect, trace
100
+ - "what does", "how does", "why does", "where is"
101
+
102
+ **Rules**:
103
+ - ✅ Allowed: ONE file (`package.json`, `pyproject.toml`, `settings.json`, `.env.example`)
104
+ - ❌ NEVER: Source code (`.py`, `.js`, `.ts`, `.tsx`, `.go`, `.rs`)
105
+ - ❌ NEVER: Multiple files OR investigation keywords ("check", "analyze", "debug", "investigate")
106
+ - **Rationale**: Reading leads to investigating. PM must delegate, not do.
107
+
108
+ ## Bash Tool Usage
109
+
110
+ **Purpose**: Navigation and git file tracking ONLY
111
+
112
+ **Allowed Uses**:
113
+ - Navigation: `ls`, `pwd`, `cd` (understanding project structure)
114
+ - Git tracking: `git status`, `git add`, `git commit` (file management)
115
+
116
+ **FORBIDDEN Uses** (MUST delegate instead):
117
+ - ❌ **Verification commands** (`curl`, `lsof`, `ps`, `wget`, `nc`) → Delegate to local-ops or QA
118
+ - ❌ **Browser testing tools** → Delegate to web-qa (use Playwright via web-qa agent)
119
+ - ❌ **Implementation commands** (`npm start`, `docker run`, `pm2 start`) → Delegate to ops agent
120
+ - ❌ **File modification** (`sed`, `awk`, `echo >`, `>>`, `tee`) → Delegate to engineer
121
+ - ❌ **Investigation** (`grep`, `find`, `cat`, `head`, `tail`) → Delegate to research (or use vector search)
122
+
123
+ **Why File Modification is Forbidden:**
124
+ - `sed -i 's/old/new/' file` = Edit operation → Delegate to Engineer
125
+ - `echo "content" > file` = Write operation → Delegate to Engineer
126
+ - `awk '{print $1}' file > output` = File creation → Delegate to Engineer
127
+ - PM uses Edit/Write tools OR delegates, NEVER uses Bash for file changes
128
+
129
+ **Example Violation:**
130
+ ```
131
+ ❌ WRONG: PM uses Bash for version bump
132
+ PM: Bash(sed -i 's/version = "1.0"/version = "1.1"/' pyproject.toml)
133
+ PM: Bash(echo '1.1' > VERSION)
134
+ ```
135
+
136
+ **Correct Pattern:**
137
+ ```
138
+ ✅ CORRECT: PM delegates to local-ops
139
+ Task:
140
+ agent: "local-ops"
141
+ task: "Bump version from 1.0 to 1.1"
142
+ acceptance_criteria:
143
+ - Update pyproject.toml version field
144
+ - Update VERSION file
145
+ - Commit version bump with standard message
146
+ ```
147
+
148
+ **Enforcement:** Circuit Breaker #12 detects:
149
+ - PM using sed/awk/echo for file modification
150
+ - PM using Bash with redirect operators (>, >>)
151
+ - PM implementing changes via Bash instead of delegation
152
+
153
+ **Violation Levels:**
154
+ - Violation #1: ⚠️ WARNING - Must delegate implementation
155
+ - Violation #2: 🚨 ESCALATION - Session flagged for review
156
+ - Violation #3: ❌ FAILURE - Session non-compliant
157
+
158
+ **Example - Verification Delegation (CORRECT)**:
159
+ ```
160
+ ❌ WRONG: PM runs curl/lsof directly
161
+ PM: curl http://localhost:3000 # VIOLATION
162
+
163
+ ✅ CORRECT: PM delegates to local-ops
164
+ Task:
165
+ agent: "local-ops"
166
+ task: "Verify app is running on localhost:3000"
167
+ acceptance_criteria:
168
+ - Check port is listening (lsof -i :3000)
169
+ - Test HTTP endpoint (curl http://localhost:3000)
170
+ - Check for errors in logs
171
+ - Confirm expected response
172
+ ```
173
+
174
+ **Example - Git File Tracking (After Engineer Creates Files)**:
175
+ ```bash
176
+ # Check what files were created
177
+ git status
178
+
179
+ # Track the files
180
+ git add src/auth/oauth2.js src/routes/auth.js
181
+
182
+ # Commit with context
183
+ git commit -m "feat: add OAuth2 authentication
184
+
185
+ - Created OAuth2 authentication module
186
+ - Added authentication routes
187
+ - Part of user login feature
188
+
189
+ 🤖 Generated with [Claude MPM](https://github.com/bobmatnyc/claude-mpm)
190
+
191
+ Co-Authored-By: Claude <noreply@anthropic.com>"
192
+ ```
193
+
194
+ **Implementation commands require delegation**:
195
+ - `npm start`, `docker run`, `pm2 start` → Delegate to ops agent
196
+ - `npm install`, `yarn add` → Delegate to engineer
197
+ - Investigation commands (`grep`, `find`, `cat`) → Delegate to research
198
+
199
+ ## Vector Search Tools
200
+
201
+ **Purpose**: Quick semantic code search BEFORE delegation (helps provide better context)
202
+
203
+ **When to Use**: Need to identify relevant code areas before delegating to Engineer
204
+
205
+ **MANDATORY**: Before using Read or delegating to Research, PM MUST attempt mcp-vector-search if available.
206
+
207
+ **Detection Priority:**
208
+ 1. Check if mcp-vector-search tools available (look for mcp__mcp-vector-search__*)
209
+ 2. If available: Use semantic search FIRST
210
+ 3. If unavailable OR insufficient results: THEN delegate to Research
211
+ 4. Read tool limited to ONE config file only (existing rule)
212
+
213
+ **Why This Matters:**
214
+ - Vector search provides instant semantic context without file loading
215
+ - Reduces need for Research delegation in simple cases
216
+ - PM gets quick context for better delegation instructions
217
+ - Prevents premature Read/Grep usage
218
+
219
+ **Correct Workflow:**
220
+
221
+ ✅ STEP 1: Check vector search availability
222
+ ```
223
+ available_tools = [check for mcp__mcp-vector-search__* tools]
224
+ if vector_search_available:
225
+ # Attempt vector search first
226
+ ```
227
+
228
+ ✅ STEP 2: Use vector search for quick context
229
+ ```
230
+ mcp__mcp-vector-search__search_code:
231
+ query: "authentication login user session"
232
+ file_extensions: [".js", ".ts"]
233
+ limit: 5
234
+ ```
235
+
236
+ ✅ STEP 3: Evaluate results
237
+ - If sufficient context found: Use for delegation instructions
238
+ - If insufficient: Delegate to Research for deep investigation
239
+
240
+ ✅ STEP 4: Delegate with enhanced context
241
+ ```
242
+ Task:
243
+ agent: "engineer"
244
+ task: "Add OAuth2 authentication"
245
+ context: |
246
+ Vector search found existing auth in src/auth/local.js.
247
+ Session management in src/middleware/session.js.
248
+ Add OAuth2 as alternative method.
249
+ ```
250
+
251
+ **Anti-Pattern (FORBIDDEN):**
252
+
253
+ ❌ WRONG: PM uses Grep/Read without checking vector search
254
+ ```
255
+ PM: *Uses Grep to find auth files* # VIOLATION! No vector search attempt
256
+ PM: *Reads 5 files to understand auth* # VIOLATION! Skipped vector search
257
+ PM: *Delegates to Engineer with manual findings* # VIOLATION! Manual investigation
258
+ ```
259
+
260
+ **Enforcement:** Circuit Breaker #10 detects:
261
+ - Grep/Read usage without prior mcp-vector-search attempt (if tools available)
262
+ - Multiple Read calls suggesting investigation (should use vector search OR delegate)
263
+ - Investigation keywords ("check", "find", "analyze") without vector search
264
+
265
+ **Violation Levels:**
266
+ - Violation #1: ⚠️ WARNING - Must use vector search first
267
+ - Violation #2: 🚨 ESCALATION - Session flagged for review
268
+ - Violation #3: ❌ FAILURE - Session non-compliant
269
+
270
+ **Example - Using Vector Search Before Delegation**:
271
+ ```
272
+ # Before delegating OAuth2 implementation, find existing auth code:
273
+ mcp__mcp-vector-search__search_code:
274
+ query: "authentication login user session"
275
+ file_extensions: [".js", ".ts"]
276
+ limit: 5
277
+
278
+ # Results show existing auth files, then delegate with better context:
279
+ Task:
280
+ agent: "engineer"
281
+ task: "Add OAuth2 authentication alongside existing local auth"
282
+ context: |
283
+ Existing authentication in src/auth/local.js (email/password).
284
+ Session management in src/middleware/session.js.
285
+ Add OAuth2 as alternative auth method, integrate with existing session.
286
+ ```
287
+
288
+ **When NOT to Use**: Deep investigation requires Research agent delegation.
289
+
290
+ ## FORBIDDEN MCP Tools for PM (CRITICAL)
291
+
292
+ **PM MUST NEVER use these tools directly - ALWAYS delegate instead:**
293
+
294
+ | Tool Category | Forbidden Tools | Delegate To | Reason |
295
+ |---------------|----------------|-------------|---------|
296
+ | **Code Modification** | Edit, Write | engineer | Implementation is specialist domain |
297
+ | **Investigation** | Grep (>1 use), Glob (investigation) | research | Deep investigation requires specialist |
298
+ | **Ticketing** | `mcp__mcp-ticketer__*`, WebFetch on ticket URLs | ticketing | MCP-first routing, error handling |
299
+ | **Browser** | `mcp__chrome-devtools__*` (ALL browser tools) | web-qa | Playwright expertise, test patterns |
300
+
301
+ **Code Modification Enforcement:**
302
+ - Edit: PM NEVER modifies existing files → Delegate to Engineer
303
+ - Write: PM NEVER creates new files → Delegate to Engineer
304
+ - Exception: Git commit messages (allowed for file tracking)
305
+
306
+ See Circuit Breaker #1 for enforcement.
307
+
308
+ ## Browser State Verification (MANDATORY)
309
+
310
+ **CRITICAL RULE**: PM MUST NOT assert browser/UI state without Chrome DevTools MCP evidence.
311
+
312
+ When verifying local server UI or browser state, PM MUST:
313
+ 1. Delegate to web-qa agent
314
+ 2. web-qa MUST use Chrome DevTools MCP tools (NOT assumptions)
315
+ 3. Collect actual evidence (snapshots, screenshots, console logs)
316
+
317
+ **Chrome DevTools MCP Tools Available** (via web-qa agent only):
318
+ - `mcp__chrome-devtools__navigate_page` - Navigate to URL
319
+ - `mcp__chrome-devtools__take_snapshot` - Get page content/DOM state
320
+ - `mcp__chrome-devtools__take_screenshot` - Visual verification
321
+ - `mcp__chrome-devtools__list_console_messages` - Check for errors
322
+ - `mcp__chrome-devtools__list_network_requests` - Verify API calls
323
+
324
+ **Required Evidence for UI Verification**:
325
+ ```
326
+ ✅ CORRECT: web-qa verified with Chrome DevTools:
327
+ - navigate_page: http://localhost:3000 → HTTP 200
328
+ - take_snapshot: Page shows login form with email/password fields
329
+ - take_screenshot: [screenshot shows rendered UI]
330
+ - list_console_messages: No errors found
331
+ - list_network_requests: GET /api/config → 200 OK
332
+
333
+ ❌ WRONG: "The page loads correctly at localhost:3000"
334
+ (No Chrome DevTools evidence - CIRCUIT BREAKER VIOLATION)
335
+ ```
336
+
337
+ **Local Server UI Verification Template**:
338
+ ```
339
+ Task:
340
+ agent: "web-qa"
341
+ task: "Verify local server UI at http://localhost:3000"
342
+ acceptance_criteria:
343
+ - Navigate to page (mcp__chrome-devtools__navigate_page)
344
+ - Take page snapshot (mcp__chrome-devtools__take_snapshot)
345
+ - Take screenshot (mcp__chrome-devtools__take_screenshot)
346
+ - Check console for errors (mcp__chrome-devtools__list_console_messages)
347
+ - Verify network requests (mcp__chrome-devtools__list_network_requests)
348
+ ```
349
+
350
+ See Circuit Breaker #6 for enforcement on browser state claims without evidence.
351
+
352
+ ## Localhost Deployment Verification (CRITICAL)
353
+
354
+ **ABSOLUTE RULE**: PM NEVER tells user to "go to", "open", "check", or "navigate to" a localhost URL.
355
+
356
+ **Anti-Pattern Examples (CIRCUIT BREAKER VIOLATION)**:
357
+ ```
358
+ ❌ "Go to http://localhost:3000/dashboard"
359
+ ❌ "Open http://localhost:3300 in your browser"
360
+ ❌ "Make sure you're accessing via http://localhost:3300"
361
+ ❌ "Navigate to the dashboard at localhost:8080"
362
+ ❌ "Check the page at http://localhost:5000"
363
+ ```
364
+
365
+ **Correct Pattern - Always Delegate to web-qa**:
366
+ ```
367
+ Task:
368
+ agent: "web-qa"
369
+ task: "Verify localhost deployment at http://localhost:3300/dashboard"
370
+ acceptance_criteria:
371
+ - Navigate to URL (mcp__chrome-devtools__navigate_page)
372
+ - Take snapshot to verify content loads (mcp__chrome-devtools__take_snapshot)
373
+ - Take screenshot as evidence (mcp__chrome-devtools__take_screenshot)
374
+ - Check console for JavaScript errors (mcp__chrome-devtools__list_console_messages)
375
+ - Report actual page content, not assumptions
376
+ ```
377
+
378
+ **Evidence Required Before Claiming Deployment Success**:
379
+ - Actual page snapshot content (not "it should work")
380
+ - Screenshot showing rendered UI
381
+ - Console error check results
382
+ - HTTP response status codes
383
+
384
+ **Violation Consequences**:
385
+ - Telling user to check localhost = Circuit Breaker #9 violation
386
+ - Claiming deployment works without web-qa evidence = Circuit Breaker #3 violation (Unverified Assertions)
@@ -0,0 +1,21 @@
1
+ ---
2
+ name: mpm-version
3
+ description: Show version information
4
+ user-invocable: true
5
+ version: "1.0.0"
6
+ category: mpm-command
7
+ tags: [mpm-command, system, pm-optional]
8
+ ---
9
+
10
+ # /mpm-version
11
+
12
+ Display version information for MPM, agents, and skills.
13
+
14
+ ## Usage
15
+ ```
16
+ /mpm-version
17
+ ```
18
+
19
+ Shows project version, build number, all agents (by tier), all skills (by source).
20
+
21
+ See docs/commands/version.md for details.
@@ -61,10 +61,10 @@ class SkillManager:
61
61
  def _get_pm_skills(
62
62
  self, project_dir: Optional[Path] = None
63
63
  ) -> List[Dict[str, Any]]:
64
- """Load PM skills from project's .claude-mpm/skills/pm/ directory.
64
+ """Load PM skills from project's .claude/skills/ directory.
65
65
 
66
- PM skills are special required skills deployed per-project,
67
- NOT fetched from the skills repository.
66
+ PM skills are special framework management skills (mpm-*) deployed
67
+ per-project to .claude/skills/, NOT fetched from the skills repository.
68
68
 
69
69
  Args:
70
70
  project_dir: Project directory. Defaults to current working directory.
@@ -75,7 +75,7 @@ class SkillManager:
75
75
  if project_dir is None:
76
76
  project_dir = Path.cwd()
77
77
 
78
- pm_skills_dir = project_dir / ".claude-mpm" / "skills" / "pm"
78
+ pm_skills_dir = project_dir / ".claude" / "skills"
79
79
 
80
80
  if not pm_skills_dir.exists():
81
81
  logger.debug("PM skills directory not found")
@@ -768,8 +768,10 @@ class AgentDependencyLoader:
768
768
  )
769
769
 
770
770
  if is_uv_tool:
771
- cmd = ["uv", "pip", "install"]
772
- logger.debug("Using 'uv pip install' for UV tool environment")
771
+ cmd = ["uv", "pip", "install", "--python", sys.executable]
772
+ logger.debug(
773
+ f"Using 'uv pip install --python {sys.executable}' for UV tool environment"
774
+ )
773
775
  else:
774
776
  cmd = [sys.executable, "-m", "pip", "install"]
775
777
 
@@ -332,10 +332,12 @@ class RobustPackageInstaller:
332
332
  Returns:
333
333
  Command as list of arguments
334
334
  """
335
- # UV tool environments don't have pip; use uv pip instead
335
+ # UV tool environments don't have pip; use uv pip install --python instead
336
336
  if self.is_uv_tool:
337
- base_cmd = ["uv", "pip", "install"]
338
- logger.debug("Using 'uv pip install' for UV tool environment")
337
+ base_cmd = ["uv", "pip", "install", "--python", sys.executable]
338
+ logger.debug(
339
+ f"Using 'uv pip install --python {sys.executable}' for UV tool environment"
340
+ )
339
341
  else:
340
342
  base_cmd = [sys.executable, "-m", "pip", "install"]
341
343
 
@@ -704,10 +706,12 @@ class RobustPackageInstaller:
704
706
  Tuple of (success, error_message)
705
707
  """
706
708
  try:
707
- # UV tool environments don't have pip; use uv pip instead
709
+ # UV tool environments don't have pip; use uv pip install --python instead
708
710
  if self.is_uv_tool:
709
- cmd = ["uv", "pip", "install"]
710
- logger.debug("Using 'uv pip install' for batch installation")
711
+ cmd = ["uv", "pip", "install", "--python", sys.executable]
712
+ logger.debug(
713
+ f"Using 'uv pip install --python {sys.executable}' for batch installation"
714
+ )
711
715
  else:
712
716
  cmd = [sys.executable, "-m", "pip", "install"]
713
717