claude-mpm 4.24.0__py3-none-any.whl → 5.4.41__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 (623) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/__init__.py +4 -0
  3. claude_mpm/agents/BASE_AGENT.md +164 -0
  4. claude_mpm/agents/{OUTPUT_STYLE.md → CLAUDE_MPM_OUTPUT_STYLE.md} +3 -48
  5. claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +2002 -0
  6. claude_mpm/agents/MEMORY.md +1 -1
  7. claude_mpm/agents/PM_INSTRUCTIONS.md +735 -925
  8. claude_mpm/agents/WORKFLOW.md +5 -254
  9. claude_mpm/agents/__init__.py +6 -0
  10. claude_mpm/agents/agent_loader.py +14 -48
  11. claude_mpm/agents/base_agent.json +7 -4
  12. claude_mpm/agents/frontmatter_validator.py +71 -3
  13. claude_mpm/agents/templates/circuit-breakers.md +1391 -0
  14. claude_mpm/agents/templates/context-management-examples.md +544 -0
  15. claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +48 -0
  16. claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
  17. claude_mpm/agents/templates/research-gate-examples.md +669 -0
  18. claude_mpm/agents/templates/structured-questions-examples.md +615 -0
  19. claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
  20. claude_mpm/agents/templates/ticketing-examples.md +277 -0
  21. claude_mpm/cli/__init__.py +37 -2
  22. claude_mpm/cli/__main__.py +4 -0
  23. claude_mpm/cli/chrome_devtools_installer.py +175 -0
  24. claude_mpm/cli/commands/__init__.py +2 -0
  25. claude_mpm/cli/commands/agent_source.py +774 -0
  26. claude_mpm/cli/commands/agent_state_manager.py +180 -31
  27. claude_mpm/cli/commands/agents.py +1116 -55
  28. claude_mpm/cli/commands/agents_cleanup.py +210 -0
  29. claude_mpm/cli/commands/agents_discover.py +338 -0
  30. claude_mpm/cli/commands/aggregate.py +1 -1
  31. claude_mpm/cli/commands/analyze.py +3 -3
  32. claude_mpm/cli/commands/auto_configure.py +725 -242
  33. claude_mpm/cli/commands/config.py +95 -6
  34. claude_mpm/cli/commands/configure.py +1875 -46
  35. claude_mpm/cli/commands/configure_agent_display.py +29 -10
  36. claude_mpm/cli/commands/configure_navigation.py +63 -46
  37. claude_mpm/cli/commands/debug.py +12 -12
  38. claude_mpm/cli/commands/doctor.py +10 -2
  39. claude_mpm/cli/commands/hook_errors.py +277 -0
  40. claude_mpm/cli/commands/local_deploy.py +1 -4
  41. claude_mpm/cli/commands/mcp_install_commands.py +1 -1
  42. claude_mpm/cli/commands/mpm_init/core.py +229 -2
  43. claude_mpm/cli/commands/mpm_init/git_activity.py +10 -10
  44. claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
  45. claude_mpm/cli/commands/mpm_init/prompts.py +286 -6
  46. claude_mpm/cli/commands/postmortem.py +401 -0
  47. claude_mpm/cli/commands/profile.py +277 -0
  48. claude_mpm/cli/commands/run.py +123 -165
  49. claude_mpm/cli/commands/skill_source.py +694 -0
  50. claude_mpm/cli/commands/skills.py +782 -20
  51. claude_mpm/cli/commands/summarize.py +413 -0
  52. claude_mpm/cli/executor.py +96 -3
  53. claude_mpm/cli/interactive/agent_wizard.py +1030 -45
  54. claude_mpm/cli/parsers/agent_source_parser.py +171 -0
  55. claude_mpm/cli/parsers/agents_parser.py +307 -10
  56. claude_mpm/cli/parsers/auto_configure_parser.py +13 -138
  57. claude_mpm/cli/parsers/base_parser.py +65 -0
  58. claude_mpm/cli/parsers/config_parser.py +162 -39
  59. claude_mpm/cli/parsers/profile_parser.py +148 -0
  60. claude_mpm/cli/parsers/skill_source_parser.py +169 -0
  61. claude_mpm/cli/parsers/skills_parser.py +146 -0
  62. claude_mpm/cli/parsers/source_parser.py +138 -0
  63. claude_mpm/cli/startup.py +1280 -118
  64. claude_mpm/cli/startup_display.py +480 -0
  65. claude_mpm/cli/utils.py +1 -1
  66. claude_mpm/cli_module/commands.py +1 -1
  67. claude_mpm/commands/mpm-config.md +21 -134
  68. claude_mpm/commands/mpm-doctor.md +16 -20
  69. claude_mpm/commands/mpm-help.md +13 -283
  70. claude_mpm/commands/mpm-init.md +88 -489
  71. claude_mpm/commands/mpm-monitor.md +23 -401
  72. claude_mpm/commands/mpm-organize.md +72 -247
  73. claude_mpm/commands/mpm-postmortem.md +21 -0
  74. claude_mpm/commands/mpm-session-resume.md +30 -0
  75. claude_mpm/commands/mpm-status.md +13 -68
  76. claude_mpm/commands/mpm-ticket-view.md +109 -0
  77. claude_mpm/commands/mpm-version.md +13 -106
  78. claude_mpm/commands/mpm.md +10 -0
  79. claude_mpm/config/agent_presets.py +488 -0
  80. claude_mpm/config/agent_sources.py +352 -0
  81. claude_mpm/config/skill_presets.py +392 -0
  82. claude_mpm/config/skill_sources.py +590 -0
  83. claude_mpm/constants.py +13 -0
  84. claude_mpm/core/claude_runner.py +5 -34
  85. claude_mpm/core/config.py +15 -1
  86. claude_mpm/core/constants.py +1 -1
  87. claude_mpm/core/framework/__init__.py +3 -16
  88. claude_mpm/core/framework/formatters/content_formatter.py +3 -13
  89. claude_mpm/core/framework/loaders/agent_loader.py +8 -5
  90. claude_mpm/core/framework/loaders/file_loader.py +54 -101
  91. claude_mpm/core/framework/loaders/instruction_loader.py +66 -5
  92. claude_mpm/core/framework_loader.py +4 -2
  93. claude_mpm/core/hook_error_memory.py +381 -0
  94. claude_mpm/core/hook_manager.py +41 -2
  95. claude_mpm/core/interactive_session.py +91 -10
  96. claude_mpm/core/logger.py +16 -1
  97. claude_mpm/core/oneshot_session.py +71 -8
  98. claude_mpm/core/optimized_startup.py +59 -0
  99. claude_mpm/core/output_style_manager.py +173 -43
  100. claude_mpm/core/protocols/__init__.py +23 -0
  101. claude_mpm/core/protocols/runner_protocol.py +103 -0
  102. claude_mpm/core/protocols/session_protocol.py +131 -0
  103. claude_mpm/core/shared/config_loader.py +1 -1
  104. claude_mpm/core/shared/singleton_manager.py +11 -4
  105. claude_mpm/core/socketio_pool.py +3 -3
  106. claude_mpm/core/system_context.py +38 -0
  107. claude_mpm/core/unified_agent_registry.py +134 -16
  108. claude_mpm/core/unified_config.py +22 -0
  109. claude_mpm/dashboard/static/svelte-build/_app/env.js +1 -0
  110. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.B_FtCwCQ.css +1 -0
  111. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.Cl_eSA4x.css +1 -0
  112. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BgChzWQ1.js +1 -0
  113. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIXEwuWe.js +1 -0
  114. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWc5urbQ.js +1 -0
  115. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DMkZpdF2.js +2 -0
  116. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DjhvlsAc.js +1 -0
  117. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/N4qtv3Hx.js +2 -0
  118. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/uj46x2Wr.js +1 -0
  119. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.DTL5mJO-.js +2 -0
  120. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.DzuEhzqh.js +1 -0
  121. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/0.CAGBuiOw.js +1 -0
  122. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DFLC8jdE.js +1 -0
  123. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.DPvEihJJ.js +10 -0
  124. claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -0
  125. claude_mpm/dashboard/static/svelte-build/favicon.svg +7 -0
  126. claude_mpm/dashboard/static/svelte-build/index.html +36 -0
  127. claude_mpm/experimental/cli_enhancements.py +1 -5
  128. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  129. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
  130. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  131. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  132. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
  133. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  134. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  135. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
  136. claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
  137. claude_mpm/hooks/claude_hooks/event_handlers.py +214 -79
  138. claude_mpm/hooks/claude_hooks/hook_handler.py +155 -1
  139. claude_mpm/hooks/claude_hooks/installer.py +33 -10
  140. claude_mpm/hooks/claude_hooks/memory_integration.py +28 -0
  141. claude_mpm/hooks/claude_hooks/response_tracking.py +2 -3
  142. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
  143. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc +0 -0
  144. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  145. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
  146. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  147. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  148. claude_mpm/hooks/claude_hooks/services/connection_manager.py +30 -6
  149. claude_mpm/hooks/failure_learning/__init__.py +2 -8
  150. claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
  151. claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
  152. claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
  153. claude_mpm/hooks/kuzu_response_hook.py +1 -5
  154. claude_mpm/hooks/memory_integration_hook.py +46 -1
  155. claude_mpm/init.py +63 -19
  156. claude_mpm/models/agent_definition.py +7 -0
  157. claude_mpm/models/git_repository.py +198 -0
  158. claude_mpm/scripts/claude-hook-handler.sh +60 -20
  159. claude_mpm/scripts/launch_monitor.py +93 -13
  160. claude_mpm/scripts/start_activity_logging.py +3 -1
  161. claude_mpm/services/agents/agent_builder.py +48 -12
  162. claude_mpm/services/agents/agent_preset_service.py +238 -0
  163. claude_mpm/services/agents/agent_recommendation_service.py +278 -0
  164. claude_mpm/services/agents/agent_review_service.py +280 -0
  165. claude_mpm/services/agents/agent_selection_service.py +484 -0
  166. claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
  167. claude_mpm/services/agents/cache_git_manager.py +621 -0
  168. claude_mpm/services/agents/deployment/agent_deployment.py +148 -2
  169. claude_mpm/services/agents/deployment/agent_discovery_service.py +104 -73
  170. claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
  171. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
  172. claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
  173. claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
  174. claude_mpm/services/agents/deployment/agent_template_builder.py +238 -15
  175. claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
  176. claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
  177. claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
  178. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +422 -31
  179. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
  180. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
  181. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +841 -0
  182. claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
  183. claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
  184. claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
  185. claude_mpm/services/agents/git_source_manager.py +663 -0
  186. claude_mpm/services/agents/loading/base_agent_manager.py +1 -13
  187. claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
  188. claude_mpm/services/agents/local_template_manager.py +50 -10
  189. claude_mpm/services/agents/recommender.py +5 -3
  190. claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
  191. claude_mpm/services/agents/sources/__init__.py +13 -0
  192. claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
  193. claude_mpm/services/agents/sources/git_source_sync_service.py +1094 -0
  194. claude_mpm/services/agents/startup_sync.py +259 -0
  195. claude_mpm/services/agents/toolchain_detector.py +478 -0
  196. claude_mpm/services/analysis/__init__.py +35 -0
  197. claude_mpm/services/analysis/clone_detector.py +1030 -0
  198. claude_mpm/services/analysis/postmortem_reporter.py +474 -0
  199. claude_mpm/services/analysis/postmortem_service.py +765 -0
  200. claude_mpm/services/cli/session_pause_manager.py +1 -1
  201. claude_mpm/services/command_deployment_service.py +271 -6
  202. claude_mpm/services/core/base.py +7 -2
  203. claude_mpm/services/core/interfaces/__init__.py +1 -3
  204. claude_mpm/services/core/interfaces/health.py +1 -4
  205. claude_mpm/services/core/models/__init__.py +2 -11
  206. claude_mpm/services/diagnostics/checks/__init__.py +4 -0
  207. claude_mpm/services/diagnostics/checks/agent_check.py +2 -4
  208. claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
  209. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  210. claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
  211. claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
  212. claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
  213. claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
  214. claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
  215. claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
  216. claude_mpm/services/event_bus/config.py +3 -1
  217. claude_mpm/services/event_bus/direct_relay.py +3 -3
  218. claude_mpm/services/events/consumers/logging.py +1 -2
  219. claude_mpm/services/git/__init__.py +21 -0
  220. claude_mpm/services/git/git_operations_service.py +579 -0
  221. claude_mpm/services/github/__init__.py +21 -0
  222. claude_mpm/services/github/github_cli_service.py +397 -0
  223. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
  224. claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
  225. claude_mpm/services/instructions/__init__.py +9 -0
  226. claude_mpm/services/instructions/instruction_cache_service.py +374 -0
  227. claude_mpm/services/local_ops/__init__.py +3 -13
  228. claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
  229. claude_mpm/services/local_ops/health_manager.py +1 -4
  230. claude_mpm/services/local_ops/resource_monitor.py +1 -1
  231. claude_mpm/services/mcp_config_manager.py +75 -145
  232. claude_mpm/services/mcp_service_verifier.py +6 -3
  233. claude_mpm/services/model/model_router.py +1 -2
  234. claude_mpm/services/monitor/daemon.py +38 -11
  235. claude_mpm/services/monitor/daemon_manager.py +134 -21
  236. claude_mpm/services/monitor/management/lifecycle.py +8 -1
  237. claude_mpm/services/monitor/server.py +700 -24
  238. claude_mpm/services/pm_skills_deployer.py +676 -0
  239. claude_mpm/services/port_manager.py +1 -1
  240. claude_mpm/services/pr/__init__.py +14 -0
  241. claude_mpm/services/pr/pr_template_service.py +329 -0
  242. claude_mpm/services/profile_manager.py +331 -0
  243. claude_mpm/services/project/documentation_manager.py +2 -1
  244. claude_mpm/services/project/project_organizer.py +4 -0
  245. claude_mpm/services/project/toolchain_analyzer.py +3 -1
  246. claude_mpm/services/runner_configuration_service.py +16 -3
  247. claude_mpm/services/self_upgrade_service.py +120 -12
  248. claude_mpm/services/session_management_service.py +16 -4
  249. claude_mpm/services/skills/__init__.py +21 -0
  250. claude_mpm/services/skills/git_skill_source_manager.py +1297 -0
  251. claude_mpm/services/skills/selective_skill_deployer.py +704 -0
  252. claude_mpm/services/skills/skill_discovery_service.py +568 -0
  253. claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
  254. claude_mpm/services/skills_config.py +547 -0
  255. claude_mpm/services/skills_deployer.py +1072 -0
  256. claude_mpm/services/socketio/dashboard_server.py +1 -0
  257. claude_mpm/services/socketio/event_normalizer.py +51 -6
  258. claude_mpm/services/socketio/handlers/connection.py +1 -1
  259. claude_mpm/services/socketio/handlers/git.py +1 -1
  260. claude_mpm/services/socketio/server/core.py +387 -112
  261. claude_mpm/services/socketio/server/main.py +1 -3
  262. claude_mpm/services/system_instructions_service.py +1 -3
  263. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
  264. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
  265. claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
  266. claude_mpm/services/unified/unified_deployment.py +1 -5
  267. claude_mpm/services/version_control/conflict_resolution.py +6 -4
  268. claude_mpm/services/version_control/git_operations.py +103 -0
  269. claude_mpm/services/visualization/__init__.py +1 -5
  270. claude_mpm/services/visualization/mermaid_generator.py +2 -3
  271. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +2 -2
  272. claude_mpm/skills/skill_manager.py +92 -3
  273. claude_mpm/skills/skills_registry.py +0 -1
  274. claude_mpm/templates/questions/__init__.py +38 -0
  275. claude_mpm/templates/questions/base.py +193 -0
  276. claude_mpm/templates/questions/pr_strategy.py +311 -0
  277. claude_mpm/templates/questions/project_init.py +385 -0
  278. claude_mpm/templates/questions/ticket_mgmt.py +394 -0
  279. claude_mpm/tools/__main__.py +8 -8
  280. claude_mpm/utils/agent_dependency_loader.py +91 -12
  281. claude_mpm/utils/agent_filters.py +261 -0
  282. claude_mpm/utils/dependency_cache.py +3 -1
  283. claude_mpm/utils/gitignore.py +244 -0
  284. claude_mpm/utils/migration.py +372 -0
  285. claude_mpm/utils/progress.py +387 -0
  286. claude_mpm/utils/robust_installer.py +49 -7
  287. claude_mpm/utils/structured_questions.py +619 -0
  288. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/METADATA +445 -122
  289. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/RECORD +298 -503
  290. claude_mpm-5.4.41.dist-info/entry_points.txt +5 -0
  291. claude_mpm-5.4.41.dist-info/licenses/LICENSE +94 -0
  292. claude_mpm-5.4.41.dist-info/licenses/LICENSE-FAQ.md +153 -0
  293. claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -292
  294. claude_mpm/agents/BASE_DOCUMENTATION.md +0 -53
  295. claude_mpm/agents/BASE_OPS.md +0 -219
  296. claude_mpm/agents/BASE_PM.md +0 -468
  297. claude_mpm/agents/BASE_PROMPT_ENGINEER.md +0 -787
  298. claude_mpm/agents/BASE_QA.md +0 -167
  299. claude_mpm/agents/BASE_RESEARCH.md +0 -53
  300. claude_mpm/agents/base_agent_loader.py +0 -626
  301. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
  302. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
  303. claude_mpm/agents/templates/agent-manager.json +0 -273
  304. claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
  305. claude_mpm/agents/templates/api_qa.json +0 -183
  306. claude_mpm/agents/templates/circuit_breakers.md +0 -638
  307. claude_mpm/agents/templates/clerk-ops.json +0 -235
  308. claude_mpm/agents/templates/code_analyzer.json +0 -101
  309. claude_mpm/agents/templates/content-agent.json +0 -358
  310. claude_mpm/agents/templates/dart_engineer.json +0 -307
  311. claude_mpm/agents/templates/data_engineer.json +0 -225
  312. claude_mpm/agents/templates/documentation.json +0 -238
  313. claude_mpm/agents/templates/engineer.json +0 -210
  314. claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
  315. claude_mpm/agents/templates/golang_engineer.json +0 -270
  316. claude_mpm/agents/templates/imagemagick.json +0 -264
  317. claude_mpm/agents/templates/java_engineer.json +0 -346
  318. claude_mpm/agents/templates/javascript_engineer_agent.json +0 -380
  319. claude_mpm/agents/templates/local_ops_agent.json +0 -1840
  320. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
  321. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
  322. claude_mpm/agents/templates/memory_manager.json +0 -158
  323. claude_mpm/agents/templates/nextjs_engineer.json +0 -285
  324. claude_mpm/agents/templates/ops.json +0 -185
  325. claude_mpm/agents/templates/php-engineer.json +0 -287
  326. claude_mpm/agents/templates/product_owner.json +0 -338
  327. claude_mpm/agents/templates/project_organizer.json +0 -144
  328. claude_mpm/agents/templates/prompt-engineer.json +0 -737
  329. claude_mpm/agents/templates/python_engineer.json +0 -387
  330. claude_mpm/agents/templates/qa.json +0 -243
  331. claude_mpm/agents/templates/react_engineer.json +0 -239
  332. claude_mpm/agents/templates/refactoring_engineer.json +0 -276
  333. claude_mpm/agents/templates/research.json +0 -188
  334. claude_mpm/agents/templates/ruby-engineer.json +0 -280
  335. claude_mpm/agents/templates/rust_engineer.json +0 -275
  336. claude_mpm/agents/templates/security.json +0 -202
  337. claude_mpm/agents/templates/svelte-engineer.json +0 -225
  338. claude_mpm/agents/templates/tauri_engineer.json +0 -274
  339. claude_mpm/agents/templates/ticketing.json +0 -178
  340. claude_mpm/agents/templates/typescript_engineer.json +0 -285
  341. claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
  342. claude_mpm/agents/templates/version_control.json +0 -159
  343. claude_mpm/agents/templates/web_qa.json +0 -400
  344. claude_mpm/agents/templates/web_ui.json +0 -189
  345. claude_mpm/cli/commands/agents_detect.py +0 -380
  346. claude_mpm/cli/commands/agents_recommend.py +0 -309
  347. claude_mpm/cli/ticket_cli.py +0 -35
  348. claude_mpm/commands/mpm-agents-detect.md +0 -168
  349. claude_mpm/commands/mpm-agents-recommend.md +0 -214
  350. claude_mpm/commands/mpm-agents.md +0 -122
  351. claude_mpm/commands/mpm-auto-configure.md +0 -269
  352. claude_mpm/commands/mpm-resume.md +0 -372
  353. claude_mpm/commands/mpm-tickets.md +0 -151
  354. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
  355. claude_mpm/dashboard/analysis_runner.py +0 -455
  356. claude_mpm/dashboard/index.html +0 -13
  357. claude_mpm/dashboard/open_dashboard.py +0 -66
  358. claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
  359. claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
  360. claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
  361. claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
  362. claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
  363. claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
  364. claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
  365. claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
  366. claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
  367. claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
  368. claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
  369. claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
  370. claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
  371. claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
  372. claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
  373. claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
  374. claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
  375. claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
  376. claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
  377. claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
  378. claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
  379. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
  380. claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
  381. claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
  382. claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
  383. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
  384. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
  385. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
  386. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
  387. claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
  388. claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
  389. claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
  390. claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
  391. claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
  392. claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
  393. claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
  394. claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
  395. claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
  396. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
  397. claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
  398. claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
  399. claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
  400. claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
  401. claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
  402. claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
  403. claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
  404. claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
  405. claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
  406. claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
  407. claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
  408. claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
  409. claude_mpm/dashboard/static/built/connection-manager.js +0 -536
  410. claude_mpm/dashboard/static/built/dashboard.js +0 -2
  411. claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
  412. claude_mpm/dashboard/static/built/react/events.js +0 -30
  413. claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
  414. claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
  415. claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
  416. claude_mpm/dashboard/static/built/shared/logger.js +0 -385
  417. claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
  418. claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
  419. claude_mpm/dashboard/static/built/socket-client.js +0 -2
  420. claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
  421. claude_mpm/dashboard/static/css/activity.css +0 -1958
  422. claude_mpm/dashboard/static/css/connection-status.css +0 -370
  423. claude_mpm/dashboard/static/css/dashboard.css +0 -4701
  424. claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
  425. claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
  426. claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
  427. claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  428. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  429. claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
  430. claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
  431. claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
  432. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
  433. claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
  434. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
  435. claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
  436. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
  437. claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  438. claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
  439. claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
  440. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
  441. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  442. claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
  443. claude_mpm/dashboard/static/dist/dashboard.js +0 -2
  444. claude_mpm/dashboard/static/dist/react/events.js +0 -30
  445. claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  446. claude_mpm/dashboard/static/events.html +0 -607
  447. claude_mpm/dashboard/static/index.html +0 -635
  448. claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
  449. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
  450. claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
  451. claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
  452. claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
  453. claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
  454. claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
  455. claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
  456. claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
  457. claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
  458. claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
  459. claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
  460. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
  461. claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
  462. claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
  463. claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
  464. claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
  465. claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
  466. claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
  467. claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
  468. claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
  469. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
  470. claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
  471. claude_mpm/dashboard/static/js/connection-manager.js +0 -536
  472. claude_mpm/dashboard/static/js/dashboard.js +0 -1896
  473. claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
  474. claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
  475. claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
  476. claude_mpm/dashboard/static/js/shared/logger.js +0 -385
  477. claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
  478. claude_mpm/dashboard/static/js/socket-client.js +0 -1457
  479. claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
  480. claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
  481. claude_mpm/dashboard/static/legacy/activity.html +0 -736
  482. claude_mpm/dashboard/static/legacy/agents.html +0 -786
  483. claude_mpm/dashboard/static/legacy/files.html +0 -747
  484. claude_mpm/dashboard/static/legacy/tools.html +0 -831
  485. claude_mpm/dashboard/static/monitors.html +0 -431
  486. claude_mpm/dashboard/static/production/events.html +0 -659
  487. claude_mpm/dashboard/static/production/main.html +0 -698
  488. claude_mpm/dashboard/static/production/monitors.html +0 -483
  489. claude_mpm/dashboard/static/socket.io.min.js +0 -7
  490. claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
  491. claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
  492. claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
  493. claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
  494. claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
  495. claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
  496. claude_mpm/dashboard/templates/code_simple.html +0 -153
  497. claude_mpm/dashboard/templates/index.html +0 -606
  498. claude_mpm/dashboard/test_dashboard.html +0 -372
  499. claude_mpm/scripts/mcp_server.py +0 -75
  500. claude_mpm/scripts/mcp_wrapper.py +0 -39
  501. claude_mpm/services/mcp_gateway/__init__.py +0 -159
  502. claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
  503. claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
  504. claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
  505. claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
  506. claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
  507. claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
  508. claude_mpm/services/mcp_gateway/core/base.py +0 -312
  509. claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
  510. claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
  511. claude_mpm/services/mcp_gateway/core/process_pool.py +0 -971
  512. claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
  513. claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
  514. claude_mpm/services/mcp_gateway/main.py +0 -589
  515. claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
  516. claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
  517. claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
  518. claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
  519. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -419
  520. claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
  521. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -714
  522. claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
  523. claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
  524. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
  525. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
  526. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
  527. claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
  528. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -551
  529. claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
  530. claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
  531. claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
  532. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
  533. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
  534. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
  535. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
  536. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
  537. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
  538. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
  539. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
  540. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
  541. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
  542. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
  543. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
  544. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
  545. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
  546. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
  547. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
  548. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
  549. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
  550. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
  551. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
  552. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
  553. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
  554. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
  555. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
  556. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
  557. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
  558. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
  559. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
  560. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
  561. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
  562. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
  563. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
  564. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
  565. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
  566. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
  567. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
  568. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
  569. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
  570. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
  571. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
  572. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
  573. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
  574. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
  575. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
  576. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
  577. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
  578. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
  579. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
  580. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
  581. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
  582. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
  583. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
  584. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
  585. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
  586. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
  587. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
  588. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
  589. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
  590. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
  591. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
  592. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
  593. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
  594. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
  595. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
  596. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
  597. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
  598. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
  599. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
  600. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
  601. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
  602. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
  603. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
  604. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
  605. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
  606. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
  607. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
  608. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
  609. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
  610. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
  611. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
  612. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
  613. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
  614. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
  615. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
  616. claude_mpm-4.24.0.dist-info/entry_points.txt +0 -10
  617. claude_mpm-4.24.0.dist-info/licenses/LICENSE +0 -21
  618. /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
  619. /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
  620. /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
  621. /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
  622. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/WHEEL +0 -0
  623. {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/top_level.txt +0 -0
@@ -31,6 +31,7 @@ import time
31
31
  from pathlib import Path
32
32
  from typing import Any, Dict, List, Optional, Tuple
33
33
 
34
+ from claude_mpm.config.agent_sources import AgentSourceConfiguration
34
35
  from claude_mpm.config.paths import paths
35
36
  from claude_mpm.constants import Paths
36
37
  from claude_mpm.core.config import Config
@@ -38,6 +39,8 @@ from claude_mpm.core.exceptions import AgentDeploymentError
38
39
  from claude_mpm.core.interfaces import AgentDeploymentInterface
39
40
  from claude_mpm.services.shared import ConfigServiceBase
40
41
 
42
+ # Import git source management for remote agent sync
43
+ from ..git_source_manager import GitSourceManager
41
44
  from .agent_configuration_manager import AgentConfigurationManager
42
45
  from .agent_discovery_service import AgentDiscoveryService
43
46
  from .agent_environment_manager import AgentEnvironmentManager
@@ -184,9 +187,110 @@ class AgentDeploymentService(ConfigServiceBase, AgentDeploymentInterface):
184
187
  # Initialize format converter service
185
188
  self.format_converter = AgentFormatConverter()
186
189
 
190
+ # Initialize git source manager for remote agent sync
191
+ self.git_source_manager = GitSourceManager()
192
+ self.agent_source_config = AgentSourceConfiguration.load()
193
+
187
194
  self.logger.info(f"Templates directory: {self.templates_dir}")
188
195
  self.logger.info(f"Base agent path: {self.base_agent_path}")
189
196
 
197
+ def _sync_remote_agent_sources(self, timeout_seconds: int = 30) -> Dict[str, Any]:
198
+ """Sync git-based agent sources before deployment.
199
+
200
+ This method follows the skills system pattern: sync configured git repositories
201
+ to cache before discovery. Network failures are logged but don't block deployment.
202
+
203
+ Args:
204
+ timeout_seconds: Timeout for git operations (default: 30 seconds)
205
+
206
+ Returns:
207
+ Dictionary with sync results:
208
+ {
209
+ "synced_count": int,
210
+ "failed_count": int,
211
+ "repositories": Dict[str, Dict], # repo_id -> sync result
212
+ "duration_ms": float
213
+ }
214
+
215
+ Error Handling:
216
+ - Network failures: Logged as warnings, sync continues
217
+ - Invalid repos: Logged as errors, sync continues
218
+ - Timeout: Individual repo timeouts don't stop overall sync
219
+ - Missing cache dir: Created automatically
220
+ """
221
+ import time
222
+
223
+ start_time = time.time()
224
+
225
+ results = {
226
+ "synced_count": 0,
227
+ "failed_count": 0,
228
+ "repositories": {},
229
+ "duration_ms": 0,
230
+ }
231
+
232
+ # Load agent sources configuration
233
+ try:
234
+ config = AgentSourceConfiguration.load()
235
+ enabled_repos = [r for r in config.repositories if r.enabled]
236
+
237
+ if not enabled_repos:
238
+ self.logger.debug("No enabled agent sources configured")
239
+ return results
240
+
241
+ self.logger.info(f"Syncing {len(enabled_repos)} agent git sources...")
242
+
243
+ # Sync each enabled repository
244
+ for repo in enabled_repos:
245
+ repo_id = repo.identifier
246
+ try:
247
+ # Sync with timeout (individual repo sync)
248
+ # NOTE: show_progress=False to avoid duplicate progress bars
249
+ # (startup sync already showed progress to user)
250
+ sync_result = self.git_source_manager.sync_repository(
251
+ repo,
252
+ force=False, # Use ETag-based caching
253
+ show_progress=False, # Suppress progress (startup already synced)
254
+ )
255
+
256
+ results["repositories"][repo_id] = sync_result
257
+
258
+ if sync_result.get("synced"):
259
+ results["synced_count"] += 1
260
+ agents_discovered = sync_result.get("agents_discovered", [])
261
+ self.logger.info(
262
+ f"Synced {repo_id}: {sync_result.get('files_updated', 0)} files, "
263
+ f"{len(agents_discovered)} agents"
264
+ )
265
+ else:
266
+ results["failed_count"] += 1
267
+ error = sync_result.get("error", "Unknown error")
268
+ self.logger.warning(f"Failed to sync {repo_id}: {error}")
269
+
270
+ except Exception as e:
271
+ # Don't let individual repo failures stop deployment
272
+ results["failed_count"] += 1
273
+ results["repositories"][repo_id] = {
274
+ "synced": False,
275
+ "error": str(e),
276
+ }
277
+ self.logger.warning(f"Exception syncing {repo_id}: {e}")
278
+
279
+ except Exception as e:
280
+ # Configuration loading failure - log but don't crash
281
+ self.logger.warning(f"Failed to load agent sources config: {e}")
282
+ results["failed_count"] = -1 # Indicates config failure
283
+
284
+ results["duration_ms"] = (time.time() - start_time) * 1000
285
+
286
+ if results["synced_count"] > 0:
287
+ self.logger.info(
288
+ f"Agent source sync complete: {results['synced_count']} succeeded, "
289
+ f"{results['failed_count']} failed ({results['duration_ms']:.0f}ms)"
290
+ )
291
+
292
+ return results
293
+
190
294
  def deploy_agents(
191
295
  self,
192
296
  target_dir: Optional[Path] = None,
@@ -267,6 +371,10 @@ class AgentDeploymentService(ConfigServiceBase, AgentDeploymentInterface):
267
371
  # METRICS: Record deployment start time for performance tracking
268
372
  deployment_start_time = time.time()
269
373
 
374
+ # PHASE 2 (1M-442): Sync git-based agent sources before deployment
375
+ # This ensures remote agents from configured sources are cached and discoverable
376
+ sync_results = self._sync_remote_agent_sources()
377
+
270
378
  # Try async deployment for better performance if requested
271
379
  if use_async:
272
380
  async_results = self._try_async_deployment(
@@ -292,6 +400,13 @@ class AgentDeploymentService(ConfigServiceBase, AgentDeploymentInterface):
292
400
  agents_dir, deployment_start_time
293
401
  )
294
402
 
403
+ # Add git source sync results to deployment results
404
+ if (
405
+ sync_results.get("synced_count", 0) > 0
406
+ or sync_results.get("failed_count", 0) > 0
407
+ ):
408
+ results["remote_sources"] = sync_results
409
+
295
410
  try:
296
411
  # Create agents directory if needed
297
412
  agents_dir.mkdir(parents=True, exist_ok=True)
@@ -754,19 +869,28 @@ class AgentDeploymentService(ConfigServiceBase, AgentDeploymentInterface):
754
869
  project_agents_dir = potential_project_dir
755
870
  self.logger.info(f"Found project agents at: {project_agents_dir}")
756
871
 
757
- # Check for user agents
872
+ # Check for user agents (DEPRECATED)
758
873
  user_home = Path.home()
759
874
  potential_user_dir = user_home / ".claude-mpm" / "agents"
760
875
  if potential_user_dir.exists():
761
876
  user_agents_dir = potential_user_dir
762
877
  self.logger.info(f"Found user agents at: {user_agents_dir}")
763
878
 
764
- # Get agents with version comparison and cleanup
879
+ # Check for agents cache (from Git sources)
880
+ agents_cache_dir = None
881
+ cache_dir = user_home / ".claude-mpm" / "cache"
882
+ potential_cache_dir = cache_dir / "agents"
883
+ if potential_cache_dir.exists():
884
+ agents_cache_dir = potential_cache_dir
885
+ self.logger.info(f"Found agents cache at: {agents_cache_dir}")
886
+
887
+ # Get agents with version comparison and cleanup (4-tier discovery)
765
888
  agents_to_deploy, agent_sources, cleanup_results = (
766
889
  self.multi_source_service.get_agents_for_deployment(
767
890
  system_templates_dir=system_templates_dir,
768
891
  project_agents_dir=project_agents_dir,
769
892
  user_agents_dir=user_agents_dir,
893
+ agents_cache_dir=agents_cache_dir, # NEW: 4th tier
770
894
  working_directory=self.working_directory,
771
895
  excluded_agents=excluded_agents,
772
896
  config=config,
@@ -774,6 +898,9 @@ class AgentDeploymentService(ConfigServiceBase, AgentDeploymentInterface):
774
898
  )
775
899
  )
776
900
 
901
+ # Keep track of all enabled agents before filtering (for cleanup)
902
+ all_enabled_agents = agents_to_deploy.copy()
903
+
777
904
  # Compare with deployed versions if agents directory exists
778
905
  if agents_dir.exists():
779
906
  comparison_results = self.multi_source_service.compare_deployed_versions(
@@ -830,6 +957,25 @@ class AgentDeploymentService(ConfigServiceBase, AgentDeploymentInterface):
830
957
  f"All {len(comparison_results.get('up_to_date', []))} agents are up to date"
831
958
  )
832
959
 
960
+ # Cleanup excluded agents (remove agents not in deployment list)
961
+ # CRITICAL: Use all_enabled_agents (before filtering for updates) to preserve up-to-date agents
962
+ # Bug fix (1M-XXX): Previously used filtered agents_to_deploy which could be empty,
963
+ # causing all agents to be removed when everything was up-to-date
964
+ exclusion_cleanup_results = self.multi_source_service.cleanup_excluded_agents(
965
+ deployed_agents_dir=agents_dir,
966
+ agents_to_deploy=all_enabled_agents,
967
+ )
968
+
969
+ # Add exclusion cleanup results to main cleanup results
970
+ if exclusion_cleanup_results.get("removed"):
971
+ cleanup_results.setdefault("excluded_removed", []).extend(
972
+ exclusion_cleanup_results["removed"]
973
+ )
974
+ self.logger.info(
975
+ f"Removed {len(exclusion_cleanup_results['removed'])} excluded agents: "
976
+ f"{', '.join(exclusion_cleanup_results['removed'])}"
977
+ )
978
+
833
979
  # Convert to list of Path objects
834
980
  template_files = list(agents_to_deploy.values())
835
981
 
@@ -7,10 +7,11 @@ Extracted from AgentDeploymentService as part of the refactoring to improve
7
7
  maintainability and testability.
8
8
  """
9
9
 
10
- import json
11
10
  from pathlib import Path
12
11
  from typing import Any, Dict, List, Optional
13
12
 
13
+ import yaml
14
+
14
15
  from claude_mpm.core.config import Config
15
16
  from claude_mpm.core.logging_config import get_logger
16
17
 
@@ -59,8 +60,8 @@ class AgentDiscoveryService:
59
60
  )
60
61
  return agents
61
62
 
62
- # Find all JSON template files
63
- template_files = list(self.templates_dir.glob("*.json"))
63
+ # Find all markdown template files with YAML frontmatter
64
+ template_files = list(self.templates_dir.glob("*.md"))
64
65
 
65
66
  for template_file in template_files:
66
67
  try:
@@ -105,8 +106,8 @@ class AgentDiscoveryService:
105
106
  self.logger.error(f"Templates directory not found: {self.templates_dir}")
106
107
  return []
107
108
 
108
- # Get all template files
109
- template_files = list(self.templates_dir.glob("*.json"))
109
+ # Get all markdown template files
110
+ template_files = list(self.templates_dir.glob("*.md"))
110
111
 
111
112
  if not template_files:
112
113
  self.logger.warning(f"No agent templates found in {self.templates_dir}")
@@ -157,7 +158,7 @@ class AgentDiscoveryService:
157
158
  Returns:
158
159
  Path to template file if found, None otherwise
159
160
  """
160
- template_file = self.templates_dir / f"{agent_name}.json"
161
+ template_file = self.templates_dir / f"{agent_name}.md"
161
162
 
162
163
  if template_file.exists():
163
164
  if self._validate_template_file(template_file):
@@ -199,59 +200,44 @@ class AgentDiscoveryService:
199
200
 
200
201
  def _extract_agent_metadata(self, template_file: Path) -> Optional[Dict[str, Any]]:
201
202
  """
202
- Extract metadata from an agent template file.
203
+ Extract metadata from an agent template file with YAML frontmatter.
203
204
 
204
205
  Args:
205
- template_file: Path to the template file
206
+ template_file: Path to the markdown template file
206
207
 
207
208
  Returns:
208
209
  Dictionary with agent metadata or None if extraction fails
209
210
  """
210
211
  try:
211
- # Read and parse template file
212
+ # Read template file content
212
213
  template_content = template_file.read_text()
213
- template_data = json.loads(template_content)
214
-
215
- # Extract basic metadata from the metadata section (per agent schema)
216
- metadata = template_data.get("metadata", {})
217
- capabilities = template_data.get("capabilities", {})
218
-
219
- # Handle capabilities as either dict or list
220
- if isinstance(capabilities, list):
221
- # If capabilities is a list (like in php-engineer.json), treat it as capabilities list
222
- tools_list = template_data.get(
223
- "tools", []
224
- ) # Look for tools at root level
225
- model_value = template_data.get("model", "sonnet")
226
- else:
227
- # If capabilities is a dict, extract tools and model from it
228
- tools_list = capabilities.get("tools", [])
229
- model_value = capabilities.get("model", "sonnet")
230
214
 
215
+ # Extract YAML frontmatter
216
+ frontmatter = self._extract_yaml_frontmatter(template_content)
217
+ if not frontmatter:
218
+ # Silently return None for files without frontmatter
219
+ # (e.g., PM instruction templates in templates/ directory)
220
+ return None
221
+
222
+ # Extract metadata directly from frontmatter (flat structure)
223
+ # Markdown templates use flat YAML structure, not nested "metadata" section
231
224
  agent_info = {
232
- "name": metadata.get("name", template_file.stem),
233
- "description": metadata.get(
234
- "description",
235
- template_data.get("description", "No description available"),
225
+ "name": frontmatter.get("name", template_file.stem),
226
+ "description": frontmatter.get(
227
+ "description", "No description available"
236
228
  ),
237
- "type": template_data.get(
238
- "agent_type",
239
- metadata.get("category", template_data.get("category", "agent")),
240
- ), # Extract agent type
241
- "version": template_data.get(
242
- "agent_version",
243
- template_data.get("version", metadata.get("version", "1.0.0")),
229
+ "type": frontmatter.get(
230
+ "agent_type", frontmatter.get("category", "agent")
244
231
  ),
245
- "tools": tools_list,
246
- "specializations": metadata.get(
247
- "tags", template_data.get("tags", [])
248
- ), # Use tags as specializations, fallback to root-level tags
232
+ "version": frontmatter.get("version", "1.0.0"),
233
+ "tools": frontmatter.get("tools", []),
234
+ "specializations": frontmatter.get("tags", []),
249
235
  "file": template_file.name,
250
236
  "path": str(template_file),
251
237
  "file_path": str(template_file), # Keep for backward compatibility
252
238
  "size": template_file.stat().st_size,
253
- "model": model_value,
254
- "author": metadata.get("author", "unknown"),
239
+ "model": frontmatter.get("model", "sonnet"),
240
+ "author": frontmatter.get("author", "unknown"),
255
241
  }
256
242
 
257
243
  # Validate required fields
@@ -261,8 +247,8 @@ class AgentDiscoveryService:
261
247
 
262
248
  return agent_info
263
249
 
264
- except json.JSONDecodeError as e:
265
- self.logger.error(f"Invalid JSON in template {template_file.name}: {e}")
250
+ except yaml.YAMLError as e:
251
+ self.logger.warning(f"Invalid YAML frontmatter in {template_file.name}: {e}")
266
252
  return None
267
253
  except Exception as e:
268
254
  self.logger.error(
@@ -270,37 +256,73 @@ class AgentDiscoveryService:
270
256
  )
271
257
  return None
272
258
 
259
+ def _extract_yaml_frontmatter(self, content: str) -> Optional[Dict[str, Any]]:
260
+ """
261
+ Extract and parse YAML frontmatter from markdown.
262
+
263
+ Frontmatter must be at the start of the file, delimited by '---'.
264
+ Example:
265
+ ---
266
+ name: agent_name
267
+ description: Agent description
268
+ version: 1.0.0
269
+ ---
270
+ # Agent content...
271
+
272
+ Args:
273
+ content: File content to parse
274
+
275
+ Returns:
276
+ Parsed YAML frontmatter as dict, or None if not found/invalid
277
+ """
278
+ if not content.strip().startswith("---"):
279
+ return None
280
+
281
+ # Split on --- delimiters
282
+ parts = content.split("---", 2)
283
+ if len(parts) < 3:
284
+ return None
285
+
286
+ try:
287
+ return yaml.safe_load(parts[1])
288
+ except yaml.YAMLError as e:
289
+ self.logger.warning(f"Failed to parse YAML frontmatter: {e}")
290
+ return None
291
+
273
292
  def _is_mpm_agent(self, template_file: Path) -> bool:
274
293
  """Check if agent is authored by Claude MPM team.
275
294
 
276
295
  MPM agents must have:
277
296
  - An author field containing 'claude mpm', 'claude-mpm', or 'anthropic'
278
- - A valid agent_version field
297
+ - A valid version field
279
298
 
280
299
  Args:
281
- template_file: Path to the agent template JSON file
300
+ template_file: Path to the agent template markdown file
282
301
 
283
302
  Returns:
284
303
  True if this is an MPM agent, False otherwise
285
304
  """
286
305
  try:
287
- template_data = json.loads(template_file.read_text())
288
- metadata = template_data.get("metadata", {})
306
+ # Extract YAML frontmatter
307
+ content = template_file.read_text()
308
+ frontmatter = self._extract_yaml_frontmatter(content)
309
+ if not frontmatter:
310
+ return False
289
311
 
290
312
  # Check for author field
291
- author = metadata.get("author", "").lower()
313
+ author = frontmatter.get("author", "").lower()
292
314
  has_valid_author = any(
293
315
  pattern in author
294
316
  for pattern in ["claude mpm", "claude-mpm", "anthropic"]
295
317
  )
296
318
 
297
319
  # Check for version field
298
- has_version = bool(template_data.get("agent_version"))
320
+ has_version = bool(frontmatter.get("version"))
299
321
 
300
322
  if not has_valid_author or not has_version:
301
323
  self.logger.debug(
302
324
  f"Filtered non-MPM agent {template_file.name}: "
303
- f"author='{metadata.get('author', 'missing')}', "
325
+ f"author='{frontmatter.get('author', 'missing')}', "
304
326
  f"version={'present' if has_version else 'missing'}"
305
327
  )
306
328
 
@@ -366,10 +388,10 @@ class AgentDiscoveryService:
366
388
 
367
389
  def _validate_template_file(self, template_file: Path) -> bool:
368
390
  """
369
- Validate that a template file is properly formatted.
391
+ Validate that a template file is properly formatted with YAML frontmatter.
370
392
 
371
393
  Args:
372
- template_file: Path to template file to validate
394
+ template_file: Path to markdown template file to validate
373
395
 
374
396
  Returns:
375
397
  True if template is valid, False otherwise
@@ -379,23 +401,27 @@ class AgentDiscoveryService:
379
401
  if not template_file.exists():
380
402
  return False
381
403
 
382
- # Parse JSON content
404
+ # Read and parse YAML frontmatter
383
405
  content = template_file.read_text()
384
- template_data = json.loads(content)
406
+ frontmatter = self._extract_yaml_frontmatter(content)
407
+ if not frontmatter:
408
+ self.logger.warning(
409
+ f"Template {template_file.name} has no valid YAML frontmatter"
410
+ )
411
+ return False
385
412
 
386
- # Check required fields in metadata section (per agent schema)
387
- metadata = template_data.get("metadata", {})
413
+ # Check required fields (flat structure in markdown templates)
388
414
  required_fields = ["name", "description"]
389
415
  for field in required_fields:
390
- if field not in metadata:
416
+ if field not in frontmatter:
391
417
  self.logger.warning(
392
- f"Template {template_file.name} missing required field in metadata: {field}"
418
+ f"Template {template_file.name} missing required field: {field}"
393
419
  )
394
420
  return False
395
421
 
396
422
  # Validate agent ID format (Claude Code requirements)
397
423
  # Use agent_id for validation, not the display name
398
- agent_id = template_data.get("agent_id", "")
424
+ agent_id = frontmatter.get("agent_id", "")
399
425
  if not self._is_valid_agent_name(agent_id):
400
426
  self.logger.warning(
401
427
  f"Invalid agent ID format in {template_file.name}: {agent_id}"
@@ -404,8 +430,10 @@ class AgentDiscoveryService:
404
430
 
405
431
  return True
406
432
 
407
- except json.JSONDecodeError:
408
- self.logger.error(f"Invalid JSON in template: {template_file.name}")
433
+ except yaml.YAMLError:
434
+ self.logger.warning(
435
+ f"Invalid YAML frontmatter in template: {template_file.name}"
436
+ )
409
437
  return False
410
438
  except Exception as e:
411
439
  self.logger.error(
@@ -431,25 +459,28 @@ class AgentDiscoveryService:
431
459
 
432
460
  return bool(re.match(pattern, agent_name))
433
461
 
434
- def _is_mpm_agent(
462
+ def _is_mpm_agent_with_config(
435
463
  self, template_file: Path, config: Optional[Config] = None
436
464
  ) -> bool:
437
- """Check if agent is authored by Claude MPM team.
465
+ """Check if agent is authored by Claude MPM team with configurable patterns.
438
466
 
439
467
  MPM agents must have:
440
468
  - An author field containing configurable MPM patterns (default: 'claude mpm', 'claude-mpm', 'anthropic')
441
- - A valid agent_version field
469
+ - A valid version field
442
470
 
443
471
  Args:
444
- template_file: Path to the agent template JSON file
472
+ template_file: Path to the agent template markdown file
445
473
  config: Configuration object for MPM patterns
446
474
 
447
475
  Returns:
448
476
  True if this is an MPM agent, False otherwise
449
477
  """
450
478
  try:
451
- template_data = json.loads(template_file.read_text())
452
- metadata = template_data.get("metadata", {})
479
+ # Extract YAML frontmatter
480
+ content = template_file.read_text()
481
+ frontmatter = self._extract_yaml_frontmatter(content)
482
+ if not frontmatter:
483
+ return False
453
484
 
454
485
  # Get MPM author patterns from config
455
486
  if config:
@@ -461,13 +492,13 @@ class AgentDiscoveryService:
461
492
  mpm_patterns = ["claude mpm", "claude-mpm", "anthropic"]
462
493
 
463
494
  # Check for author field
464
- author = metadata.get("author", "").lower()
495
+ author = frontmatter.get("author", "").lower()
465
496
  has_valid_author = any(
466
497
  pattern.lower() in author for pattern in mpm_patterns
467
498
  )
468
499
 
469
500
  # Check for version field
470
- has_version = bool(template_data.get("agent_version"))
501
+ has_version = bool(frontmatter.get("version"))
471
502
 
472
503
  return has_valid_author and has_version
473
504
 
@@ -494,8 +525,8 @@ class AgentDiscoveryService:
494
525
  if not self.templates_dir.exists():
495
526
  return stats
496
527
 
497
- # Count template files
498
- template_files = list(self.templates_dir.glob("*.json"))
528
+ # Count markdown template files
529
+ template_files = list(self.templates_dir.glob("*.md"))
499
530
  stats["total_templates"] = len(template_files)
500
531
 
501
532
  # Validate each template
@@ -166,7 +166,7 @@ class AgentFormatConverter:
166
166
 
167
167
  <example>
168
168
  Context: When you need specialized assistance from the {name} agent.
169
- user: "I need help with {agent_name.replace('_', ' ').replace('-', ' ')} tasks"
169
+ user: "I need help with {agent_name.replace("_", " ").replace("-", " ")} tasks"
170
170
  assistant: "I'll use the {name} agent to provide specialized assistance."
171
171
  </example>"""
172
172
 
@@ -63,11 +63,7 @@ from .agent_operation_service import (
63
63
  LifecycleOperationResult,
64
64
  )
65
65
  from .agent_record_service import AgentRecordService
66
- from .agent_state_service import (
67
- AgentLifecycleRecord,
68
- AgentStateService,
69
- LifecycleState,
70
- )
66
+ from .agent_state_service import AgentLifecycleRecord, AgentStateService, LifecycleState
71
67
 
72
68
  # Re-export for backward compatibility
73
69
  __all__ = [
@@ -176,9 +176,9 @@ class AgentMetricsCollector:
176
176
  agent_name: Name of the agent being validated
177
177
  validation_time_ms: Validation time in milliseconds
178
178
  """
179
- self._deployment_metrics["template_validation_times"][
180
- agent_name
181
- ] = validation_time_ms
179
+ self._deployment_metrics["template_validation_times"][agent_name] = (
180
+ validation_time_ms
181
+ )
182
182
 
183
183
  def get_performance_summary(self) -> Dict[str, Any]:
184
184
  """
@@ -10,10 +10,7 @@ from typing import TYPE_CHECKING, Optional
10
10
  from claude_mpm.core.path_ops import path_ops
11
11
 
12
12
  if TYPE_CHECKING:
13
- from .agent_lifecycle_manager import (
14
- AgentLifecycleManager,
15
- LifecycleOperationResult,
16
- )
13
+ from .agent_lifecycle_manager import AgentLifecycleManager, LifecycleOperationResult
17
14
 
18
15
 
19
16
  class AgentRestoreHandler: