claude-mpm 5.4.55__py3-none-any.whl → 5.6.1__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.
Files changed (401) 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 +109 -1925
  5. claude_mpm/agents/PM_INSTRUCTIONS.md +111 -686
  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/skills.py +166 -14
  19. claude_mpm/cli/executor.py +120 -16
  20. claude_mpm/cli/interactive/__init__.py +10 -0
  21. claude_mpm/cli/interactive/agent_wizard.py +30 -50
  22. claude_mpm/cli/interactive/questionary_styles.py +65 -0
  23. claude_mpm/cli/interactive/skill_selector.py +481 -0
  24. claude_mpm/cli/parsers/base_parser.py +76 -1
  25. claude_mpm/cli/parsers/commander_parser.py +83 -0
  26. claude_mpm/cli/parsers/run_parser.py +10 -0
  27. claude_mpm/cli/startup.py +276 -403
  28. claude_mpm/cli/startup_display.py +72 -5
  29. claude_mpm/cli/startup_logging.py +2 -2
  30. claude_mpm/cli/utils.py +7 -3
  31. claude_mpm/commander/__init__.py +72 -0
  32. claude_mpm/commander/adapters/__init__.py +31 -0
  33. claude_mpm/commander/adapters/base.py +191 -0
  34. claude_mpm/commander/adapters/claude_code.py +361 -0
  35. claude_mpm/commander/adapters/communication.py +366 -0
  36. claude_mpm/commander/api/__init__.py +16 -0
  37. claude_mpm/commander/api/app.py +105 -0
  38. claude_mpm/commander/api/errors.py +112 -0
  39. claude_mpm/commander/api/routes/__init__.py +8 -0
  40. claude_mpm/commander/api/routes/events.py +184 -0
  41. claude_mpm/commander/api/routes/inbox.py +171 -0
  42. claude_mpm/commander/api/routes/messages.py +148 -0
  43. claude_mpm/commander/api/routes/projects.py +271 -0
  44. claude_mpm/commander/api/routes/sessions.py +215 -0
  45. claude_mpm/commander/api/routes/work.py +260 -0
  46. claude_mpm/commander/api/schemas.py +182 -0
  47. claude_mpm/commander/chat/__init__.py +7 -0
  48. claude_mpm/commander/chat/cli.py +107 -0
  49. claude_mpm/commander/chat/commands.py +96 -0
  50. claude_mpm/commander/chat/repl.py +310 -0
  51. claude_mpm/commander/config.py +49 -0
  52. claude_mpm/commander/config_loader.py +115 -0
  53. claude_mpm/commander/daemon.py +398 -0
  54. claude_mpm/commander/events/__init__.py +26 -0
  55. claude_mpm/commander/events/manager.py +332 -0
  56. claude_mpm/commander/frameworks/__init__.py +12 -0
  57. claude_mpm/commander/frameworks/base.py +143 -0
  58. claude_mpm/commander/frameworks/claude_code.py +58 -0
  59. claude_mpm/commander/frameworks/mpm.py +62 -0
  60. claude_mpm/commander/inbox/__init__.py +16 -0
  61. claude_mpm/commander/inbox/dedup.py +128 -0
  62. claude_mpm/commander/inbox/inbox.py +224 -0
  63. claude_mpm/commander/inbox/models.py +70 -0
  64. claude_mpm/commander/instance_manager.py +337 -0
  65. claude_mpm/commander/llm/__init__.py +6 -0
  66. claude_mpm/commander/llm/openrouter_client.py +167 -0
  67. claude_mpm/commander/llm/summarizer.py +70 -0
  68. claude_mpm/commander/models/__init__.py +18 -0
  69. claude_mpm/commander/models/events.py +121 -0
  70. claude_mpm/commander/models/project.py +162 -0
  71. claude_mpm/commander/models/work.py +214 -0
  72. claude_mpm/commander/parsing/__init__.py +20 -0
  73. claude_mpm/commander/parsing/extractor.py +132 -0
  74. claude_mpm/commander/parsing/output_parser.py +270 -0
  75. claude_mpm/commander/parsing/patterns.py +100 -0
  76. claude_mpm/commander/persistence/__init__.py +11 -0
  77. claude_mpm/commander/persistence/event_store.py +274 -0
  78. claude_mpm/commander/persistence/state_store.py +309 -0
  79. claude_mpm/commander/persistence/work_store.py +164 -0
  80. claude_mpm/commander/polling/__init__.py +13 -0
  81. claude_mpm/commander/polling/event_detector.py +104 -0
  82. claude_mpm/commander/polling/output_buffer.py +49 -0
  83. claude_mpm/commander/polling/output_poller.py +153 -0
  84. claude_mpm/commander/project_session.py +268 -0
  85. claude_mpm/commander/proxy/__init__.py +12 -0
  86. claude_mpm/commander/proxy/formatter.py +89 -0
  87. claude_mpm/commander/proxy/output_handler.py +191 -0
  88. claude_mpm/commander/proxy/relay.py +155 -0
  89. claude_mpm/commander/registry.py +404 -0
  90. claude_mpm/commander/runtime/__init__.py +10 -0
  91. claude_mpm/commander/runtime/executor.py +191 -0
  92. claude_mpm/commander/runtime/monitor.py +316 -0
  93. claude_mpm/commander/session/__init__.py +6 -0
  94. claude_mpm/commander/session/context.py +81 -0
  95. claude_mpm/commander/session/manager.py +59 -0
  96. claude_mpm/commander/tmux_orchestrator.py +361 -0
  97. claude_mpm/commander/web/__init__.py +1 -0
  98. claude_mpm/commander/work/__init__.py +30 -0
  99. claude_mpm/commander/work/executor.py +189 -0
  100. claude_mpm/commander/work/queue.py +405 -0
  101. claude_mpm/commander/workflow/__init__.py +27 -0
  102. claude_mpm/commander/workflow/event_handler.py +219 -0
  103. claude_mpm/commander/workflow/notifier.py +146 -0
  104. claude_mpm/commands/mpm-config.md +8 -0
  105. claude_mpm/commands/mpm-doctor.md +8 -0
  106. claude_mpm/commands/mpm-help.md +8 -0
  107. claude_mpm/commands/mpm-init.md +8 -0
  108. claude_mpm/commands/mpm-monitor.md +8 -0
  109. claude_mpm/commands/mpm-organize.md +8 -0
  110. claude_mpm/commands/mpm-postmortem.md +8 -0
  111. claude_mpm/commands/mpm-session-resume.md +9 -1
  112. claude_mpm/commands/mpm-status.md +8 -0
  113. claude_mpm/commands/mpm-ticket-view.md +8 -0
  114. claude_mpm/commands/mpm-version.md +8 -0
  115. claude_mpm/commands/mpm.md +8 -0
  116. claude_mpm/config/agent_presets.py +8 -7
  117. claude_mpm/constants.py +1 -0
  118. claude_mpm/core/claude_runner.py +2 -2
  119. claude_mpm/core/config.py +5 -0
  120. claude_mpm/core/hook_manager.py +51 -3
  121. claude_mpm/core/interactive_session.py +7 -7
  122. claude_mpm/core/logger.py +10 -7
  123. claude_mpm/core/logging_utils.py +4 -2
  124. claude_mpm/core/output_style_manager.py +31 -13
  125. claude_mpm/core/unified_config.py +54 -8
  126. claude_mpm/core/unified_paths.py +30 -13
  127. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.C33zOoyM.css +1 -0
  128. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.CW1J-YuA.css +1 -0
  129. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{Cs_tUR18.js → 1WZnGYqX.js} +1 -1
  130. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CDuw-vjf.js → 67pF3qNn.js} +1 -1
  131. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{bTOqqlTd.js → 6RxdMKe4.js} +1 -1
  132. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DwBR2MJi.js → 8cZrfX0h.js} +1 -1
  133. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{ZGh7QtNv.js → 9a6T2nm-.js} +1 -1
  134. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{D9lljYKQ.js → B443AUzu.js} +1 -1
  135. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{RJiighC3.js → B8AwtY2H.js} +1 -1
  136. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{uuIeMWc-.js → BF15LAsF.js} +1 -1
  137. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{D3k0OPJN.js → BRcwIQNr.js} +1 -1
  138. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CyWMqx4W.js → BV6nKitt.js} +1 -1
  139. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CiIAseT4.js → BViJ8lZt.js} +5 -5
  140. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CBBdVcY8.js → BcQ-Q0FE.js} +1 -1
  141. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{BovzEFCE.js → Bpyvgze_.js} +1 -1
  142. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BzTRqg-z.js +1 -0
  143. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C0Fr8dve.js +1 -0
  144. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{eNVUfhuA.js → C3rbW_a-.js} +1 -1
  145. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{GYwsonyD.js → C8WYN38h.js} +1 -1
  146. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{BIF9m_hv.js → C9I8FlXH.js} +1 -1
  147. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{B0uc0UOD.js → CIQcWgO2.js} +3 -3
  148. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{Be7GpZd6.js → CIctN7YN.js} +1 -1
  149. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{Bh0LDWpI.js → CKrS_JZW.js} +2 -2
  150. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DUrLdbGD.js → CR6P9C4A.js} +1 -1
  151. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{B7xVLGWV.js → CRRR9MD_.js} +1 -1
  152. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CRcR2DqT.js +334 -0
  153. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{Dhb8PKl3.js → CSXtMOf0.js} +1 -1
  154. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{BPYeabCQ.js → CT-sbxSk.js} +1 -1
  155. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{sQeU3Y1z.js → CWm6DJsp.js} +1 -1
  156. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CnA0NrzZ.js → CpqQ1Kzn.js} +1 -1
  157. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{C4B-KCzX.js → D2nGpDRe.js} +1 -1
  158. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DGkLK5U1.js → D9iCMida.js} +1 -1
  159. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{BofRWZRR.js → D9ykgMoY.js} +1 -1
  160. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DmxopI1J.js → DL2Ldur1.js} +1 -1
  161. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{C30mlcqg.js → DPfltzjH.js} +1 -1
  162. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{Vzk33B_K.js → DR8nis88.js} +2 -2
  163. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DI7hHRFL.js → DUliQN2b.js} +1 -1
  164. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{C4JcI4KD.js → DXlhR01x.js} +1 -1
  165. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{bT1r9zLR.js → D_lyTybS.js} +1 -1
  166. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DZX00Y4g.js → DngoTTgh.js} +1 -1
  167. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CzZX-COe.js → DqkmHtDC.js} +1 -1
  168. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{B7RN905-.js → DsDh8EYs.js} +1 -1
  169. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DLVjFsZ3.js → DypDmXgd.js} +1 -1
  170. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{iEWssX7S.js → IPYC-LnN.js} +1 -1
  171. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/JTLiF7dt.js +24 -0
  172. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DaimHw_p.js → JpevfAFt.js} +1 -1
  173. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DY1XQ8fi.js → R8CEIRAd.js} +1 -1
  174. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{Dle-35c7.js → Zxy7qc-l.js} +2 -2
  175. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/q9Hm6zAU.js +1 -0
  176. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{C_Usid8X.js → qtd3IeO4.js} +2 -2
  177. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{CzeYkLYB.js → ulBFON_C.js} +2 -2
  178. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{Cfqx1Qun.js → wQVh1CoA.js} +1 -1
  179. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/{app.D6-I5TpK.js → app.Dr7t0z2J.js} +2 -2
  180. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.BGhZHUS3.js +1 -0
  181. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/{0.m1gL8KXf.js → 0.RgBboRvH.js} +1 -1
  182. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/{1.CgNOuw-d.js → 1.DG-KkbDf.js} +1 -1
  183. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.D_jnf-x6.js +1 -0
  184. claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -1
  185. claude_mpm/dashboard/static/svelte-build/index.html +9 -9
  186. claude_mpm/experimental/cli_enhancements.py +2 -1
  187. claude_mpm/hooks/claude_hooks/INTEGRATION_EXAMPLE.md +243 -0
  188. claude_mpm/hooks/claude_hooks/README_AUTO_PAUSE.md +403 -0
  189. claude_mpm/hooks/claude_hooks/auto_pause_handler.py +486 -0
  190. claude_mpm/hooks/claude_hooks/event_handlers.py +250 -11
  191. claude_mpm/hooks/claude_hooks/hook_handler.py +106 -89
  192. claude_mpm/hooks/claude_hooks/hook_wrapper.sh +6 -11
  193. claude_mpm/hooks/claude_hooks/installer.py +69 -5
  194. claude_mpm/hooks/claude_hooks/response_tracking.py +3 -1
  195. claude_mpm/hooks/claude_hooks/services/connection_manager.py +20 -0
  196. claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +14 -77
  197. claude_mpm/hooks/claude_hooks/services/subagent_processor.py +30 -6
  198. claude_mpm/hooks/session_resume_hook.py +85 -1
  199. claude_mpm/init.py +1 -1
  200. claude_mpm/scripts/claude-hook-handler.sh +36 -10
  201. claude_mpm/scripts/start_activity_logging.py +0 -0
  202. claude_mpm/services/agents/agent_recommendation_service.py +8 -8
  203. claude_mpm/services/agents/cache_git_manager.py +1 -1
  204. claude_mpm/services/agents/deployment/agent_template_builder.py +8 -0
  205. claude_mpm/services/agents/deployment/deployment_reconciler.py +577 -0
  206. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +3 -0
  207. claude_mpm/services/agents/deployment/startup_reconciliation.py +138 -0
  208. claude_mpm/services/agents/loading/framework_agent_loader.py +75 -2
  209. claude_mpm/services/agents/sources/git_source_sync_service.py +7 -4
  210. claude_mpm/services/agents/startup_sync.py +5 -2
  211. claude_mpm/services/cli/__init__.py +3 -0
  212. claude_mpm/services/cli/incremental_pause_manager.py +561 -0
  213. claude_mpm/services/cli/session_resume_helper.py +10 -2
  214. claude_mpm/services/delegation_detector.py +175 -0
  215. claude_mpm/services/diagnostics/checks/agent_sources_check.py +30 -0
  216. claude_mpm/services/diagnostics/checks/configuration_check.py +24 -0
  217. claude_mpm/services/diagnostics/checks/installation_check.py +22 -0
  218. claude_mpm/services/diagnostics/checks/mcp_services_check.py +23 -0
  219. claude_mpm/services/diagnostics/doctor_reporter.py +31 -1
  220. claude_mpm/services/diagnostics/models.py +14 -1
  221. claude_mpm/services/event_log.py +325 -0
  222. claude_mpm/services/infrastructure/__init__.py +4 -0
  223. claude_mpm/services/infrastructure/context_usage_tracker.py +291 -0
  224. claude_mpm/services/infrastructure/resume_log_generator.py +24 -5
  225. claude_mpm/services/monitor/daemon_manager.py +15 -4
  226. claude_mpm/services/monitor/management/lifecycle.py +8 -2
  227. claude_mpm/services/monitor/server.py +106 -16
  228. claude_mpm/services/pm_skills_deployer.py +261 -85
  229. claude_mpm/services/skills/git_skill_source_manager.py +75 -10
  230. claude_mpm/services/skills/selective_skill_deployer.py +177 -80
  231. claude_mpm/services/skills/skill_discovery_service.py +57 -3
  232. claude_mpm/services/socketio/handlers/hook.py +14 -7
  233. claude_mpm/services/socketio/server/main.py +12 -4
  234. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
  235. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
  236. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
  237. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
  238. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
  239. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
  240. claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
  241. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
  242. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
  243. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
  244. claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
  245. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
  246. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
  247. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
  248. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
  249. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
  250. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
  251. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
  252. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
  253. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
  254. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
  255. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
  256. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
  257. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
  258. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
  259. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
  260. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
  261. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
  262. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
  263. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
  264. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
  265. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
  266. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
  267. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -0
  268. claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
  269. claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
  270. claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
  271. claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
  272. claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
  273. claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
  274. claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
  275. claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
  276. claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
  277. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +86 -0
  278. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
  279. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
  280. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
  281. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
  282. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
  283. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
  284. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
  285. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
  286. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
  287. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
  288. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
  289. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
  290. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
  291. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
  292. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
  293. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
  294. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
  295. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
  296. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
  297. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
  298. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
  299. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
  300. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
  301. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
  302. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
  303. claude_mpm/skills/bundled/pm/mpm/SKILL.md +38 -0
  304. claude_mpm/skills/bundled/pm/mpm-agent-update-workflow/SKILL.md +75 -0
  305. claude_mpm/skills/bundled/pm/mpm-bug-reporting/SKILL.md +248 -0
  306. claude_mpm/skills/bundled/pm/mpm-circuit-breaker-enforcement/SKILL.md +476 -0
  307. claude_mpm/skills/bundled/pm/mpm-config/SKILL.md +29 -0
  308. claude_mpm/skills/bundled/pm/mpm-delegation-patterns/SKILL.md +167 -0
  309. claude_mpm/skills/bundled/pm/mpm-doctor/SKILL.md +53 -0
  310. claude_mpm/skills/bundled/pm/mpm-git-file-tracking/SKILL.md +113 -0
  311. claude_mpm/skills/bundled/pm/mpm-help/SKILL.md +35 -0
  312. claude_mpm/skills/bundled/pm/mpm-init/SKILL.md +125 -0
  313. claude_mpm/skills/bundled/pm/mpm-monitor/SKILL.md +32 -0
  314. claude_mpm/skills/bundled/pm/mpm-organize/SKILL.md +121 -0
  315. claude_mpm/skills/bundled/pm/mpm-postmortem/SKILL.md +22 -0
  316. claude_mpm/skills/bundled/pm/mpm-pr-workflow/SKILL.md +124 -0
  317. claude_mpm/skills/bundled/pm/mpm-session-management/SKILL.md +312 -0
  318. claude_mpm/skills/bundled/pm/mpm-session-resume/SKILL.md +31 -0
  319. claude_mpm/skills/bundled/pm/mpm-status/SKILL.md +37 -0
  320. claude_mpm/skills/bundled/pm/mpm-teaching-mode/SKILL.md +657 -0
  321. claude_mpm/skills/bundled/pm/mpm-ticket-view/SKILL.md +110 -0
  322. claude_mpm/skills/bundled/pm/mpm-ticketing-integration/SKILL.md +154 -0
  323. claude_mpm/skills/bundled/pm/mpm-tool-usage-guide/SKILL.md +386 -0
  324. claude_mpm/skills/bundled/pm/mpm-verification-protocols/SKILL.md +198 -0
  325. claude_mpm/skills/bundled/pm/mpm-version/SKILL.md +21 -0
  326. claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
  327. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
  328. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
  329. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
  330. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
  331. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
  332. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
  333. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
  334. claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
  335. claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
  336. claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
  337. claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
  338. claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
  339. claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
  340. claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
  341. claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
  342. claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
  343. claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
  344. claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
  345. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +119 -0
  346. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
  347. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
  348. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
  349. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
  350. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
  351. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
  352. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
  353. claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
  354. claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
  355. claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
  356. claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
  357. claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
  358. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
  359. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
  360. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
  361. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
  362. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
  363. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
  364. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
  365. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
  366. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
  367. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
  368. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
  369. claude_mpm/skills/skill_manager.py +4 -4
  370. claude_mpm/utils/agent_dependency_loader.py +103 -4
  371. claude_mpm/utils/robust_installer.py +45 -24
  372. claude_mpm-5.6.1.dist-info/METADATA +391 -0
  373. {claude_mpm-5.4.55.dist-info → claude_mpm-5.6.1.dist-info}/RECORD +377 -166
  374. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.DWzvg0-y.css +0 -1
  375. claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.ThTw9_ym.css +0 -1
  376. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/4TdZjIqw.js +0 -1
  377. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/5shd3_w0.js +0 -24
  378. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BKjSRqUr.js +0 -1
  379. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Da0KfYnO.js +0 -1
  380. claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Dfy6j1xT.js +0 -323
  381. claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.NWzMBYRp.js +0 -1
  382. claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.C0GcWctS.js +0 -1
  383. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  384. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
  385. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
  386. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
  387. claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
  388. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
  389. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
  390. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
  391. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
  392. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
  393. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
  394. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
  395. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
  396. claude_mpm-5.4.55.dist-info/METADATA +0 -999
  397. {claude_mpm-5.4.55.dist-info → claude_mpm-5.6.1.dist-info}/WHEEL +0 -0
  398. {claude_mpm-5.4.55.dist-info → claude_mpm-5.6.1.dist-info}/entry_points.txt +0 -0
  399. {claude_mpm-5.4.55.dist-info → claude_mpm-5.6.1.dist-info}/licenses/LICENSE +0 -0
  400. {claude_mpm-5.4.55.dist-info → claude_mpm-5.6.1.dist-info}/licenses/LICENSE-FAQ.md +0 -0
  401. {claude_mpm-5.4.55.dist-info → claude_mpm-5.6.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,30 @@
1
+ ## Instructions
2
+ You are an assistant for answering questions that are being asked across the company. Every week, there are lots of questions that get asked across the company, and your goal is to try to summarize what those questions are. We want our company to be well-informed and on the same page, so your job is to produce a set of frequently asked questions that our employees are asking and attempt to answer them. Your singular job is to do two things:
3
+
4
+ - Find questions that are big sources of confusion for lots of employees at the company, generally about things that affect a large portion of the employee base
5
+ - Attempt to give a nice summarized answer to that question in order to minimize confusion.
6
+
7
+ Some examples of areas that may be interesting to folks: recent corporate events (fundraising, new executives, etc.), upcoming launches, hiring progress, changes to vision or focus, etc.
8
+
9
+
10
+ ## Tools Available
11
+ You should use the company's available tools, where communication and work happens. For most companies, it looks something like this:
12
+ - Slack: questions being asked across the company - it could be questions in response to posts with lots of responses, questions being asked with lots of reactions or thumbs up to show support, or anything else to show that a large number of employees want to ask the same things
13
+ - Email: emails with FAQs written directly in them can be a good source as well
14
+ - Documents: docs in places like Google Drive, linked on calendar events, etc. can also be a good source of FAQs, either directly added or inferred based on the contents of the doc
15
+
16
+ ## Formatting
17
+ The formatting should be pretty basic:
18
+
19
+ - *Question*: [insert question - 1 sentence]
20
+ - *Answer*: [insert answer - 1-2 sentence]
21
+
22
+ ## Guidance
23
+ Make sure you're being holistic in your questions. Don't focus too much on just the user in question or the team they are a part of, but try to capture the entire company. Try to be as holistic as you can in reading all the tools available, producing responses that are relevant to all at the company.
24
+
25
+ ## Answer Guidelines
26
+ - Base answers on official company communications when possible
27
+ - If information is uncertain, indicate that clearly
28
+ - Link to authoritative sources (docs, announcements, emails)
29
+ - Keep tone professional but approachable
30
+ - Flag if a question requires executive input or official response
@@ -0,0 +1,16 @@
1
+ ## Instructions
2
+ You are being asked to write internal company communication that doesn't fit into the standard formats (3P
3
+ updates, newsletters, or FAQs).
4
+
5
+ Before proceeding:
6
+ 1. Ask the user about their target audience
7
+ 2. Understand the communication's purpose
8
+ 3. Clarify the desired tone (formal, casual, urgent, informational)
9
+ 4. Confirm any specific formatting requirements
10
+
11
+ Use these general principles:
12
+ - Be clear and concise
13
+ - Use active voice
14
+ - Put the most important information first
15
+ - Include relevant links and references
16
+ - Match the company's communication style
@@ -0,0 +1,160 @@
1
+ ---
2
+ name: mcp-builder
3
+ description: Create high-quality MCP servers that enable LLMs to effectively interact with external services. Use when building MCP integrations for APIs or services in Python (FastMCP) or Node/TypeScript (MCP SDK).
4
+ license: Complete terms in LICENSE.txt
5
+ progressive_disclosure:
6
+ entry_point:
7
+ summary: "Build agent-friendly MCP servers through research-driven design, thoughtful implementation, and evaluation-based iteration"
8
+ when_to_use: "When integrating external APIs/services via MCP protocol. Prioritize agent workflows over API wrappers, optimize for context efficiency, design actionable errors."
9
+ quick_start: "1. Research protocol & API docs 2. Plan agent-centric tools 3. Implement with validation 4. Create evaluations 5. Iterate based on agent feedback"
10
+ references:
11
+ - design_principles.md
12
+ - workflow.md
13
+ - mcp_best_practices.md
14
+ - python_mcp_server.md
15
+ - node_mcp_server.md
16
+ - evaluation.md
17
+ ---
18
+
19
+ # MCP Server Development Guide
20
+
21
+ ## Overview
22
+
23
+ Build high-quality MCP (Model Context Protocol) servers that enable LLMs to accomplish real-world tasks through well-designed tools. Quality is measured not by API coverage, but by how effectively agents can use your tools to complete realistic workflows.
24
+
25
+ **Core insight:** MCP servers expose tools for AI agents, not human users. Design for agent constraints (limited context, no visual UI, workflow-oriented) rather than human convenience.
26
+
27
+ ## When to Use This Skill
28
+
29
+ Activate when:
30
+ - Building MCP servers for external API integration
31
+ - Adding tools to existing MCP servers
32
+ - Improving MCP server tool design for better agent usability
33
+ - Creating evaluations to test MCP server effectiveness
34
+ - Debugging why agents struggle with your MCP tools
35
+
36
+ **Language Support:**
37
+ - Python: FastMCP framework (recommended for rapid development)
38
+ - Node/TypeScript: MCP SDK (recommended for production services)
39
+
40
+ ## The Iron Law
41
+
42
+ ```
43
+ DESIGN FOR AGENTS, NOT HUMANS
44
+
45
+ Every tool must optimize for:
46
+ - Context efficiency (agents have limited tokens)
47
+ - Workflow completion (not just API calls)
48
+ - Actionable errors (guide agents to success)
49
+ - Natural task subdivision (how agents think)
50
+ ```
51
+
52
+ If your tools are just thin API wrappers, you're violating the Iron Law.
53
+
54
+ ## Core Principles
55
+
56
+ 1. **Agent-Centric Design First**: Study design principles before coding. Tools should enable workflows, not mirror APIs.
57
+
58
+ 2. **Research-Driven Planning**: Load MCP docs, SDK docs, and exhaustive API documentation before writing code.
59
+
60
+ 3. **Evaluation-Based Iteration**: Create realistic evaluations early. Let agent feedback drive improvements.
61
+
62
+ 4. **Context Optimization**: Every response token matters. Default to concise, offer detailed when needed.
63
+
64
+ 5. **Actionable Errors**: Error messages should teach agents correct usage patterns.
65
+
66
+ ## Quick Start
67
+
68
+ ### Phase 1: Research and Planning (40% of effort)
69
+ 1. **Study Design Principles**: Load [design_principles.md](./reference/design_principles.md) to understand agent-centric design
70
+ 2. **Load Protocol Docs**: Fetch `https://modelcontextprotocol.io/llms-full.txt` for MCP specification
71
+ 3. **Study SDK Docs**: Load Python or TypeScript SDK documentation from GitHub
72
+ 4. **Study API Exhaustively**: Read ALL API documentation, endpoints, authentication, rate limits
73
+ 5. **Create Implementation Plan**: Define tools, shared utilities, pagination strategy, error handling
74
+
75
+ See [workflow.md](./reference/workflow.md) for complete Phase 1 steps.
76
+
77
+ ### Phase 2: Implementation (30% of effort)
78
+ 1. **Setup Project**: Create structure following language-specific guide
79
+ 2. **Build Shared Utilities**: API helpers, error handlers, formatters BEFORE tools
80
+ 3. **Implement Tools**: Use Pydantic (Python) or Zod (TypeScript) for validation
81
+ 4. **Follow Best Practices**: Load language-specific guide for patterns
82
+
83
+ See [workflow.md](./reference/workflow.md) for complete Phase 2 steps and language guides.
84
+
85
+ ### Phase 3: Review and Refine (15% of effort)
86
+ 1. **Code Quality Review**: Check DRY, composability, consistency, type safety
87
+ 2. **Test Build**: Verify syntax, imports, build process
88
+ 3. **Quality Checklist**: Use language-specific checklist
89
+
90
+ See [workflow.md](./reference/workflow.md) for complete Phase 3 steps.
91
+
92
+ ### Phase 4: Create Evaluations (15% of effort)
93
+ 1. **Understand Purpose**: Evaluations test if agents can answer realistic questions using your tools
94
+ 2. **Create 10 Questions**: Complex, read-only, independent, verifiable questions
95
+ 3. **Verify Answers**: Solve yourself to ensure stability and correctness
96
+ 4. **Run Evaluation**: Use provided scripts to test agent effectiveness
97
+
98
+ See [evaluation.md](./reference/evaluation.md) for complete evaluation guidelines.
99
+
100
+ ## Navigation
101
+
102
+ ### Core Design and Workflow
103
+ - **[🎯 Design Principles](./reference/design_principles.md)** - Agent-centric design philosophy: workflows over APIs, context optimization, actionable errors, natural task subdivision. Read FIRST before implementation.
104
+
105
+ - **[🔄 Complete Workflow](./reference/workflow.md)** - Detailed 4-phase development process with step-by-step instructions, decision trees, and when to load each reference file.
106
+
107
+ ### Universal MCP Guidelines
108
+ - **[📋 MCP Best Practices](./reference/mcp_best_practices.md)** - Naming conventions, response formats, pagination, character limits, security, tool annotations, error handling. Applies to all MCP servers.
109
+
110
+ ### Language-Specific Implementation
111
+ - **[🐍 Python Implementation](./reference/python_mcp_server.md)** - FastMCP patterns, Pydantic validation, async/await, complete examples, quality checklist. Load during Phase 2 for Python servers.
112
+
113
+ - **[⚡ TypeScript Implementation](./reference/node_mcp_server.md)** - MCP SDK patterns, Zod validation, project structure, complete examples, quality checklist. Load during Phase 2 for TypeScript servers.
114
+
115
+ ### Evaluation and Testing
116
+ - **[✅ Evaluation Guide](./reference/evaluation.md)** - Creating realistic questions, answer verification, XML format, running evaluations, interpreting results. Load during Phase 4.
117
+
118
+ ## Key Reminders
119
+
120
+ - **Research First**: Spend 40% of time researching before coding
121
+ - **Agent-Centric**: Design for AI workflows, not API completeness
122
+ - **Context Efficient**: Every token counts - default concise, offer detailed
123
+ - **Actionable Errors**: Guide agents to correct usage
124
+ - **Shared Utilities**: Extract common code - avoid duplication
125
+ - **Evaluation-Driven**: Create evals early, iterate based on feedback
126
+ - **MCP Servers Block**: Never run servers directly - use evaluation harness or tmux
127
+
128
+ ## Red Flags - STOP
129
+
130
+ If you catch yourself:
131
+ - "Just wrapping these API endpoints directly"
132
+ - "Returning all available data fields"
133
+ - "Error message just says what failed" (not how to fix)
134
+ - Starting implementation without reading design principles
135
+ - Coding before loading MCP protocol documentation
136
+ - Creating tools without knowing agent use cases
137
+ - Skipping evaluation creation
138
+ - Running `python server.py` directly (will hang forever)
139
+
140
+ **ALL of these mean: STOP. Return to design principles and workflow.**
141
+
142
+ ## Integration with Other Skills
143
+
144
+ - **systematic-debugging**: Debug MCP server issues methodically
145
+ - **test-driven-development**: Create failing tests before implementation
146
+ - **verification-before-completion**: Verify build succeeds before claiming completion
147
+ - **defense-in-depth**: Add input validation at multiple layers
148
+
149
+ ## Real-World Impact
150
+
151
+ From MCP server development experience:
152
+ - Well-designed servers: 80-90% task completion rate by agents
153
+ - API wrapper approach: 30-40% task completion rate
154
+ - Context-optimized responses: 3x more information in same token budget
155
+ - Actionable errors: 60% reduction in agent retry attempts
156
+ - Evaluation-driven iteration: 2-3x improvement in agent success rate
157
+
158
+ ---
159
+
160
+ **Remember:** The quality of an MCP server is measured by how well it enables LLMs to accomplish realistic tasks, not by how comprehensively it wraps an API.
@@ -0,0 +1,412 @@
1
+ # Agent-Centric Design Principles for MCP Servers
2
+
3
+ ## Overview
4
+
5
+ Before implementing any MCP server, understand how to design tools for AI agents. Agents are fundamentally different users than humans - they have limited context, no visual UI, and think in terms of workflows rather than API calls.
6
+
7
+ **Core Philosophy:** Build thoughtful, high-impact workflow tools, not API endpoint wrappers.
8
+
9
+ ---
10
+
11
+ ## Why Agent-Centric Design Matters
12
+
13
+ MCP servers expose tools that AI agents use to accomplish tasks. The quality of your server is measured by how effectively agents complete realistic workflows, not by API coverage.
14
+
15
+ **Key Differences from Human-Oriented Design:**
16
+
17
+ | Human Users | AI Agents |
18
+ |-------------|-----------|
19
+ | Visual UI navigation | No visual interface |
20
+ | Unlimited attention | Limited context window |
21
+ | Can ask clarifying questions | Must work with available information |
22
+ | Tolerate verbose responses | Need concise, high-signal data |
23
+ | Learn from documentation | Learn from tool descriptions and errors |
24
+
25
+ ---
26
+
27
+ ## The Five Design Principles
28
+
29
+ ### 1. Build for Workflows, Not Just API Endpoints
30
+
31
+ **The Problem:**
32
+ Directly wrapping API endpoints creates tools that are too granular for agents to use effectively. Agents must make many calls to accomplish simple tasks.
33
+
34
+ **The Solution:**
35
+ Consolidate related operations into workflow-oriented tools that accomplish complete tasks.
36
+
37
+ **Examples:**
38
+
39
+ ❌ **Poor Design (API Wrapper):**
40
+ ```
41
+ check_calendar_availability(date, time)
42
+ create_calendar_event(date, time, title, description)
43
+ send_notification(user_id, message)
44
+ ```
45
+ Agent must: Check availability → Create event → Send notification (3 separate calls)
46
+
47
+ ✅ **Good Design (Workflow-Oriented):**
48
+ ```
49
+ schedule_event(date, time, title, description, attendees)
50
+ - Checks availability automatically
51
+ - Creates event if slot is free
52
+ - Notifies attendees
53
+ - Returns single consolidated result
54
+ ```
55
+ Agent makes 1 call to complete the workflow.
56
+
57
+ **Guidelines:**
58
+ - Identify common multi-step workflows users perform
59
+ - Combine related operations that always happen together
60
+ - Provide atomic operations for complex use cases
61
+ - Let tools handle internal coordination and error recovery
62
+
63
+ ### 2. Optimize for Limited Context
64
+
65
+ **The Problem:**
66
+ Agents have constrained context windows. Verbose responses waste precious tokens and reduce what agents can accomplish.
67
+
68
+ **The Solution:**
69
+ Return high-signal information by default. Provide options for detail levels.
70
+
71
+ **Examples:**
72
+
73
+ ❌ **Poor Design (Information Dump):**
74
+ ```json
75
+ {
76
+ "user": {
77
+ "id": "U123456",
78
+ "name": "John Doe",
79
+ "email": "john@example.com",
80
+ "profile": {
81
+ "avatar_urls": {
82
+ "small": "https://...",
83
+ "medium": "https://...",
84
+ "large": "https://...",
85
+ "xlarge": "https://..."
86
+ },
87
+ "bio": "Lorem ipsum...",
88
+ "location": "San Francisco",
89
+ "timezone": "America/Los_Angeles",
90
+ "created_at": 1609459200,
91
+ "updated_at": 1609459200,
92
+ "preferences": {...},
93
+ "settings": {...}
94
+ }
95
+ }
96
+ }
97
+ ```
98
+ 15+ fields returned when agent only needs name and email.
99
+
100
+ ✅ **Good Design (High-Signal Default):**
101
+ ```json
102
+ {
103
+ "user": {
104
+ "id": "U123456",
105
+ "name": "John Doe",
106
+ "email": "john@example.com"
107
+ }
108
+ }
109
+ ```
110
+ Concise by default. Add `detail_level="full"` parameter for complete data when needed.
111
+
112
+ **Guidelines:**
113
+ - Default to concise responses with essential information
114
+ - Provide `response_format` parameter: "concise" vs "detailed"
115
+ - Use human-readable identifiers (names) over technical codes (IDs) when possible
116
+ - Support Markdown for human readability, JSON for programmatic processing
117
+ - Implement character limits (typically 25,000) with truncation guidance
118
+ - Respect pagination limits strictly - never load all results
119
+
120
+ ### 3. Design Actionable Error Messages
121
+
122
+ **The Problem:**
123
+ Generic error messages tell agents what failed but not how to fix it. Agents get stuck or waste attempts guessing.
124
+
125
+ **The Solution:**
126
+ Every error should guide agents toward correct usage with specific next steps.
127
+
128
+ **Examples:**
129
+
130
+ ❌ **Poor Design (Diagnostic Only):**
131
+ ```
132
+ "Error: Invalid parameters"
133
+ "Error: Request failed"
134
+ "Error: Too many results"
135
+ ```
136
+ Tells what failed, not how to fix it.
137
+
138
+ ✅ **Good Design (Actionable Guidance):**
139
+ ```
140
+ "Error: Query too broad - returned 1,247 results. Try adding filters:
141
+ use 'team:marketing' to filter by team, or 'status:active'
142
+ to filter by status. Or use limit=50 with offset for pagination."
143
+
144
+ "Error: Date format invalid. Expected YYYY-MM-DD (e.g., '2024-01-15'),
145
+ received '01/15/2024'. Please use ISO format."
146
+
147
+ "Error: Missing required field 'project_id'. To find project IDs,
148
+ use list_projects(team='your-team') first."
149
+ ```
150
+ Each error teaches correct usage patterns.
151
+
152
+ **Guidelines:**
153
+ - Explain what's wrong and why
154
+ - Suggest specific fixes or alternative parameters
155
+ - Reference other tools when needed ("use X tool to find Y first")
156
+ - Include examples of correct usage in error messages
157
+ - Guide agents through multi-step corrections
158
+ - Make errors educational, not just diagnostic
159
+
160
+ ### 4. Follow Natural Task Subdivisions
161
+
162
+ **The Problem:**
163
+ Tool organization that mirrors API structure doesn't match how agents think about tasks.
164
+
165
+ **The Solution:**
166
+ Organize and name tools around natural task categories that align with agent reasoning.
167
+
168
+ **Examples:**
169
+
170
+ ❌ **Poor Design (API Structure):**
171
+ ```
172
+ api_users_get(id)
173
+ api_users_list(filters)
174
+ api_users_create(data)
175
+ api_projects_get(id)
176
+ api_projects_list(filters)
177
+ ```
178
+ Tool names reflect internal API, not user tasks.
179
+
180
+ ✅ **Good Design (Task-Oriented):**
181
+ ```
182
+ search_users(query, team, status)
183
+ get_user_details(user_id)
184
+ create_user_account(name, email, team)
185
+
186
+ find_projects(name, status, team)
187
+ get_project_info(project_id)
188
+ create_project(name, team, deadline)
189
+ ```
190
+ Tool names reflect what agents want to accomplish.
191
+
192
+ **Guidelines:**
193
+ - Use action verbs that describe tasks: search, find, create, update, analyze
194
+ - Group related tools with consistent prefixes for discoverability
195
+ - Include service prefix to prevent conflicts: `slack_send_message` not `send_message`
196
+ - Name tools how humans would describe the task
197
+ - Use consistent naming patterns within your server
198
+
199
+ ### 5. Use Evaluation-Driven Development
200
+
201
+ **The Problem:**
202
+ Building without testing against realistic agent use cases leads to tools that seem correct but fail in practice.
203
+
204
+ **The Solution:**
205
+ Create evaluation scenarios early and iterate based on actual agent performance.
206
+
207
+ **Examples:**
208
+
209
+ **Evaluation-First Workflow:**
210
+ 1. **Before Implementation**: Define 10 realistic questions agents should answer
211
+ 2. **Prototype Quickly**: Build minimal tool set to attempt evaluations
212
+ 3. **Run Evaluations**: See where agents struggle
213
+ 4. **Iterate**: Improve tools based on agent feedback
214
+ 5. **Repeat**: Until agents successfully complete 80%+ of evaluations
215
+
216
+ **Common Discoveries from Evaluations:**
217
+ - Agents couldn't find information → Add search/filter tools
218
+ - Agents made too many calls → Consolidate into workflow tools
219
+ - Agents got confused → Improve tool descriptions and error messages
220
+ - Agents ran out of context → Reduce response verbosity
221
+ - Agents used tools incorrectly → Add actionable error guidance
222
+
223
+ **Guidelines:**
224
+ - Write evaluations before implementing all tools
225
+ - Use realistic, complex questions requiring multiple tool calls
226
+ - Let agent failures drive tool design decisions
227
+ - Iterate based on evaluation results, not assumptions
228
+ - Aim for 80%+ agent success rate on evaluations
229
+
230
+ ---
231
+
232
+ ## Applying These Principles: A Case Study
233
+
234
+ **Scenario:** Building an MCP server for a project management API.
235
+
236
+ ### ❌ API Wrapper Approach (Poor)
237
+
238
+ ```python
239
+ @mcp.tool()
240
+ async def get_task(task_id: str):
241
+ """Get a task by ID."""
242
+ return api.tasks.get(task_id)
243
+
244
+ @mcp.tool()
245
+ async def list_tasks(project_id: str):
246
+ """List all tasks in a project."""
247
+ return api.tasks.list(project_id)
248
+
249
+ @mcp.tool()
250
+ async def get_user(user_id: str):
251
+ """Get user by ID."""
252
+ return api.users.get(user_id)
253
+
254
+ @mcp.tool()
255
+ async def update_task_status(task_id: str, status: str):
256
+ """Update task status."""
257
+ return api.tasks.update(task_id, {"status": status})
258
+ ```
259
+
260
+ **Problems:**
261
+ - Too granular - agent needs many calls for simple workflows
262
+ - Returns all fields - wastes context on unnecessary data
263
+ - No guidance on valid statuses or error handling
264
+ - Agent must know IDs before making calls
265
+ - Mirrors API structure, not task structure
266
+
267
+ ### ✅ Agent-Centric Approach (Good)
268
+
269
+ ```python
270
+ @mcp.tool()
271
+ async def search_tasks(
272
+ query: str,
273
+ project: Optional[str] = None,
274
+ status: Optional[str] = None,
275
+ assignee: Optional[str] = None,
276
+ limit: int = 20,
277
+ response_format: str = "markdown"
278
+ ) -> str:
279
+ """Search for tasks across projects with flexible filtering.
280
+
281
+ Finds tasks by name, description, or tags. Returns concise results
282
+ by default - use response_format='json' for full data.
283
+
284
+ Common workflows:
285
+ - Find all bugs: search_tasks(query="bug", status="open")
286
+ - Find your tasks: search_tasks(assignee="your-name")
287
+ - Find by project: search_tasks(project="website-redesign")
288
+
289
+ Error guidance:
290
+ - If too many results: Add more filters or use limit parameter
291
+ - If no results: Try broader query or check project name spelling
292
+ - To find project names: Use list_projects() first
293
+ """
294
+ # Implementation with:
295
+ # - Concise markdown by default
296
+ # - Full JSON if requested
297
+ # - Actionable errors with examples
298
+ # - Character limit enforcement
299
+
300
+ @mcp.tool()
301
+ async def complete_task(
302
+ task_id: str,
303
+ completion_note: Optional[str] = None,
304
+ notify_team: bool = True
305
+ ) -> str:
306
+ """Mark a task complete and optionally notify the team.
307
+
308
+ This is a workflow tool that:
309
+ 1. Validates task can be completed (not blocked, has assignee)
310
+ 2. Updates task status to 'completed'
311
+ 3. Adds completion note to task history
312
+ 4. Sends notifications to team members (if notify_team=True)
313
+ 5. Updates project progress metrics
314
+
315
+ Returns: Success message with task name and updated project status
316
+
317
+ Error guidance:
318
+ - "Task is blocked": Lists blocking tasks with IDs
319
+ - "Task has no assignee": Suggests using assign_task(task_id, user)
320
+ - "Invalid task_id": Suggests using search_tasks() to find task
321
+ """
322
+ # Implementation handles entire workflow
323
+
324
+ @mcp.tool()
325
+ async def get_project_status(
326
+ project_name: str,
327
+ include_tasks: bool = False
328
+ ) -> str:
329
+ """Get project overview with completion metrics.
330
+
331
+ Returns concise summary by default:
332
+ - Total tasks, completed, in-progress, blocked
333
+ - Recent activity
334
+ - Team members
335
+ - Due date and status
336
+
337
+ Use include_tasks=True to also list all tasks (uses more context).
338
+
339
+ Error guidance:
340
+ - "Project not found": Lists similar project names
341
+ - "Access denied": Explains permission requirements
342
+ """
343
+ # Returns high-signal summary
344
+ ```
345
+
346
+ **Improvements:**
347
+ - **Workflow-oriented**: `complete_task` handles entire workflow, not just status update
348
+ - **Context-efficient**: Concise by default, detailed on request
349
+ - **Actionable errors**: Guides agents to correct usage
350
+ - **Natural naming**: Search, complete, get_status (task-oriented, not API-oriented)
351
+ - **Flexible search**: One tool handles multiple search scenarios
352
+ - **Human-readable**: Uses project names, not just IDs
353
+
354
+ ---
355
+
356
+ ## Pre-Implementation Checklist
357
+
358
+ Before writing any code, ensure you understand:
359
+
360
+ - [ ] What workflows will agents actually need to accomplish?
361
+ - [ ] What's the minimum information needed for each workflow?
362
+ - [ ] What errors will agents encounter and how can I guide them?
363
+ - [ ] How can I consolidate related operations into single tools?
364
+ - [ ] What evaluation scenarios will test if this works?
365
+ - [ ] Are tool names task-oriented or API-oriented?
366
+ - [ ] Do tools default to concise responses?
367
+ - [ ] Do errors teach correct usage?
368
+
369
+ ---
370
+
371
+ ## Common Anti-Patterns to Avoid
372
+
373
+ ### Anti-Pattern 1: CRUD Over Everything
374
+ Creating separate create/read/update/delete tools for every resource.
375
+
376
+ **Instead:** Create workflow tools that combine operations intelligently.
377
+
378
+ ### Anti-Pattern 2: The Everything Tool
379
+ One tool that takes 15+ parameters and tries to do everything.
380
+
381
+ **Instead:** Multiple focused tools, each solving one clear workflow.
382
+
383
+ ### Anti-Pattern 3: ID-Only Interfaces
384
+ Requiring agents to have IDs before calling any tools.
385
+
386
+ **Instead:** Search/find tools that work with human-readable names.
387
+
388
+ ### Anti-Pattern 4: Silent Truncation
389
+ Cutting off results without telling the agent.
390
+
391
+ **Instead:** Clear truncation messages with guidance on filtering.
392
+
393
+ ### Anti-Pattern 5: Error Code Responses
394
+ Returning `ERR_401`, `ERR_404` without explanation.
395
+
396
+ **Instead:** Actionable error messages with specific next steps.
397
+
398
+ ---
399
+
400
+ ## Next Steps
401
+
402
+ After understanding these principles:
403
+
404
+ 1. **Review Real Examples**: Look at well-designed MCP servers in the wild
405
+ 2. **Start Planning**: Create your implementation plan with these principles in mind
406
+ 3. **Load Workflow Guide**: See [workflow.md](./workflow.md) for step-by-step implementation
407
+ 4. **Reference Best Practices**: Use [mcp_best_practices.md](./mcp_best_practices.md) for technical details
408
+ 5. **Create Evaluations Early**: Don't wait until implementation is complete
409
+
410
+ ---
411
+
412
+ **Remember:** Agents are your users. Design for their constraints, optimize for their workflows, and guide them to success through every interaction.