claude-mpm 5.4.41__py3-none-any.whl → 5.6.72__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.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/CLAUDE_MPM_OUTPUT_STYLE.md +66 -241
- claude_mpm/agents/CLAUDE_MPM_RESEARCH_OUTPUT_STYLE.md +413 -0
- claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +109 -1925
- claude_mpm/agents/PM_INSTRUCTIONS.md +161 -298
- claude_mpm/agents/WORKFLOW.md +2 -0
- claude_mpm/agents/templates/circuit-breakers.md +26 -17
- claude_mpm/auth/__init__.py +35 -0
- claude_mpm/auth/callback_server.py +328 -0
- claude_mpm/auth/models.py +104 -0
- claude_mpm/auth/oauth_manager.py +266 -0
- claude_mpm/auth/providers/__init__.py +12 -0
- claude_mpm/auth/providers/base.py +165 -0
- claude_mpm/auth/providers/google.py +261 -0
- claude_mpm/auth/token_storage.py +252 -0
- claude_mpm/cli/__init__.py +5 -1
- claude_mpm/cli/commands/agents.py +2 -4
- claude_mpm/cli/commands/agents_reconcile.py +197 -0
- claude_mpm/cli/commands/autotodos.py +566 -0
- claude_mpm/cli/commands/commander.py +216 -0
- claude_mpm/cli/commands/configure.py +620 -21
- claude_mpm/cli/commands/configure_agent_display.py +3 -1
- claude_mpm/cli/commands/hook_errors.py +60 -60
- claude_mpm/cli/commands/mcp.py +29 -17
- claude_mpm/cli/commands/mcp_command_router.py +39 -0
- claude_mpm/cli/commands/mcp_service_commands.py +304 -0
- claude_mpm/cli/commands/monitor.py +2 -2
- claude_mpm/cli/commands/mpm_init/core.py +15 -8
- claude_mpm/cli/commands/oauth.py +481 -0
- claude_mpm/cli/commands/profile.py +9 -10
- claude_mpm/cli/commands/run.py +35 -3
- claude_mpm/cli/commands/skill_source.py +51 -2
- claude_mpm/cli/commands/skills.py +182 -32
- claude_mpm/cli/executor.py +129 -16
- claude_mpm/cli/helpers.py +1 -1
- claude_mpm/cli/interactive/__init__.py +10 -0
- claude_mpm/cli/interactive/agent_wizard.py +30 -50
- claude_mpm/cli/interactive/questionary_styles.py +65 -0
- claude_mpm/cli/interactive/skill_selector.py +481 -0
- claude_mpm/cli/parsers/base_parser.py +89 -1
- claude_mpm/cli/parsers/commander_parser.py +116 -0
- claude_mpm/cli/parsers/mcp_parser.py +79 -0
- claude_mpm/cli/parsers/oauth_parser.py +165 -0
- claude_mpm/cli/parsers/profile_parser.py +0 -1
- claude_mpm/cli/parsers/run_parser.py +10 -0
- claude_mpm/cli/parsers/skill_source_parser.py +4 -0
- claude_mpm/cli/parsers/skills_parser.py +2 -3
- claude_mpm/cli/startup.py +662 -524
- claude_mpm/cli/startup_display.py +76 -7
- claude_mpm/cli/startup_logging.py +2 -2
- claude_mpm/cli/utils.py +7 -3
- claude_mpm/commander/__init__.py +78 -0
- claude_mpm/commander/adapters/__init__.py +60 -0
- claude_mpm/commander/adapters/auggie.py +260 -0
- claude_mpm/commander/adapters/base.py +288 -0
- claude_mpm/commander/adapters/claude_code.py +392 -0
- claude_mpm/commander/adapters/codex.py +237 -0
- claude_mpm/commander/adapters/communication.py +366 -0
- claude_mpm/commander/adapters/example_usage.py +310 -0
- claude_mpm/commander/adapters/mpm.py +389 -0
- claude_mpm/commander/adapters/registry.py +204 -0
- claude_mpm/commander/api/__init__.py +16 -0
- claude_mpm/commander/api/app.py +121 -0
- claude_mpm/commander/api/errors.py +133 -0
- claude_mpm/commander/api/routes/__init__.py +8 -0
- claude_mpm/commander/api/routes/events.py +184 -0
- claude_mpm/commander/api/routes/inbox.py +171 -0
- claude_mpm/commander/api/routes/messages.py +148 -0
- claude_mpm/commander/api/routes/projects.py +271 -0
- claude_mpm/commander/api/routes/sessions.py +226 -0
- claude_mpm/commander/api/routes/work.py +296 -0
- claude_mpm/commander/api/schemas.py +186 -0
- claude_mpm/commander/chat/__init__.py +7 -0
- claude_mpm/commander/chat/cli.py +149 -0
- claude_mpm/commander/chat/commands.py +122 -0
- claude_mpm/commander/chat/repl.py +1821 -0
- claude_mpm/commander/config.py +51 -0
- claude_mpm/commander/config_loader.py +115 -0
- claude_mpm/commander/core/__init__.py +10 -0
- claude_mpm/commander/core/block_manager.py +325 -0
- claude_mpm/commander/core/response_manager.py +323 -0
- claude_mpm/commander/daemon.py +603 -0
- claude_mpm/commander/env_loader.py +59 -0
- claude_mpm/commander/events/__init__.py +26 -0
- claude_mpm/commander/events/manager.py +392 -0
- claude_mpm/commander/frameworks/__init__.py +12 -0
- claude_mpm/commander/frameworks/base.py +233 -0
- claude_mpm/commander/frameworks/claude_code.py +58 -0
- claude_mpm/commander/frameworks/mpm.py +57 -0
- claude_mpm/commander/git/__init__.py +5 -0
- claude_mpm/commander/git/worktree_manager.py +212 -0
- claude_mpm/commander/inbox/__init__.py +16 -0
- claude_mpm/commander/inbox/dedup.py +128 -0
- claude_mpm/commander/inbox/inbox.py +224 -0
- claude_mpm/commander/inbox/models.py +70 -0
- claude_mpm/commander/instance_manager.py +865 -0
- claude_mpm/commander/llm/__init__.py +6 -0
- claude_mpm/commander/llm/openrouter_client.py +167 -0
- claude_mpm/commander/llm/summarizer.py +70 -0
- claude_mpm/commander/memory/__init__.py +45 -0
- claude_mpm/commander/memory/compression.py +347 -0
- claude_mpm/commander/memory/embeddings.py +230 -0
- claude_mpm/commander/memory/entities.py +310 -0
- claude_mpm/commander/memory/example_usage.py +290 -0
- claude_mpm/commander/memory/integration.py +325 -0
- claude_mpm/commander/memory/search.py +381 -0
- claude_mpm/commander/memory/store.py +657 -0
- claude_mpm/commander/models/__init__.py +18 -0
- claude_mpm/commander/models/events.py +127 -0
- claude_mpm/commander/models/project.py +162 -0
- claude_mpm/commander/models/work.py +214 -0
- claude_mpm/commander/parsing/__init__.py +20 -0
- claude_mpm/commander/parsing/extractor.py +132 -0
- claude_mpm/commander/parsing/output_parser.py +270 -0
- claude_mpm/commander/parsing/patterns.py +100 -0
- claude_mpm/commander/persistence/__init__.py +11 -0
- claude_mpm/commander/persistence/event_store.py +274 -0
- claude_mpm/commander/persistence/state_store.py +403 -0
- claude_mpm/commander/persistence/work_store.py +164 -0
- claude_mpm/commander/polling/__init__.py +13 -0
- claude_mpm/commander/polling/event_detector.py +104 -0
- claude_mpm/commander/polling/output_buffer.py +49 -0
- claude_mpm/commander/polling/output_poller.py +153 -0
- claude_mpm/commander/project_session.py +268 -0
- claude_mpm/commander/proxy/__init__.py +12 -0
- claude_mpm/commander/proxy/formatter.py +89 -0
- claude_mpm/commander/proxy/output_handler.py +191 -0
- claude_mpm/commander/proxy/relay.py +155 -0
- claude_mpm/commander/registry.py +410 -0
- claude_mpm/commander/runtime/__init__.py +10 -0
- claude_mpm/commander/runtime/executor.py +191 -0
- claude_mpm/commander/runtime/monitor.py +346 -0
- claude_mpm/commander/session/__init__.py +6 -0
- claude_mpm/commander/session/context.py +81 -0
- claude_mpm/commander/session/manager.py +59 -0
- claude_mpm/commander/tmux_orchestrator.py +362 -0
- claude_mpm/commander/web/__init__.py +1 -0
- claude_mpm/commander/work/__init__.py +30 -0
- claude_mpm/commander/work/executor.py +207 -0
- claude_mpm/commander/work/queue.py +405 -0
- claude_mpm/commander/workflow/__init__.py +27 -0
- claude_mpm/commander/workflow/event_handler.py +241 -0
- claude_mpm/commander/workflow/notifier.py +146 -0
- claude_mpm/commands/mpm-config.md +8 -0
- claude_mpm/commands/mpm-doctor.md +8 -0
- claude_mpm/commands/mpm-help.md +8 -0
- claude_mpm/commands/mpm-init.md +8 -0
- claude_mpm/commands/mpm-monitor.md +8 -0
- claude_mpm/commands/mpm-organize.md +8 -0
- claude_mpm/commands/mpm-postmortem.md +8 -0
- claude_mpm/commands/mpm-session-resume.md +9 -1
- claude_mpm/commands/mpm-status.md +8 -0
- claude_mpm/commands/mpm-ticket-view.md +8 -0
- claude_mpm/commands/mpm-version.md +8 -0
- claude_mpm/commands/mpm.md +8 -0
- claude_mpm/config/agent_presets.py +8 -7
- claude_mpm/config/skill_sources.py +16 -0
- claude_mpm/constants.py +6 -0
- claude_mpm/core/claude_runner.py +154 -2
- claude_mpm/core/config.py +35 -22
- claude_mpm/core/config_constants.py +74 -9
- claude_mpm/core/constants.py +56 -12
- claude_mpm/core/hook_manager.py +53 -4
- claude_mpm/core/interactive_session.py +12 -11
- claude_mpm/core/logger.py +26 -9
- claude_mpm/core/logging_utils.py +39 -13
- claude_mpm/core/network_config.py +148 -0
- claude_mpm/core/oneshot_session.py +7 -6
- claude_mpm/core/optimized_startup.py +3 -1
- claude_mpm/core/output_style_manager.py +66 -18
- claude_mpm/core/shared/config_loader.py +3 -1
- claude_mpm/core/socketio_pool.py +47 -15
- claude_mpm/core/unified_config.py +54 -8
- claude_mpm/core/unified_paths.py +95 -90
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.C33zOoyM.css +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.CW1J-YuA.css +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/1WZnGYqX.js +24 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/67pF3qNn.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/6RxdMKe4.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/8cZrfX0h.js +60 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/9a6T2nm-.js +7 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B443AUzu.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/B8AwtY2H.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BF15LAsF.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BQaXIfA_.js +331 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BRcwIQNr.js +4 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{uj46x2Wr.js → BSNlmTZj.js} +1 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BV6nKitt.js +43 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BViJ8lZt.js +128 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BcQ-Q0FE.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Bpyvgze_.js +30 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BzTRqg-z.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C0Fr8dve.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C3rbW_a-.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C8WYN38h.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/C9I8FlXH.js +61 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIQcWgO2.js +36 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIctN7YN.js +7 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CKrS_JZW.js +145 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CR6P9C4A.js +89 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CRRR9MD_.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CRcR2DqT.js +334 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CSXtMOf0.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CT-sbxSk.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWm6DJsp.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CmKTTxBW.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CpqQ1Kzn.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Cu_Erd72.js +261 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D2nGpDRe.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D9iCMida.js +267 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D9ykgMoY.js +10 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DL2Ldur1.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DPfltzjH.js +165 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{N4qtv3Hx.js → DR8nis88.js} +2 -2
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DUliQN2b.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DVp1hx9R.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DXlhR01x.js +122 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/D_lyTybS.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DngoTTgh.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DqkmHtDC.js +220 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DsDh8EYs.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DypDmXgd.js +139 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Gi6I4Gst.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/IPYC-LnN.js +162 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/JTLiF7dt.js +24 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/JpevfAFt.js +68 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/{DjhvlsAc.js → NqQ1dWOy.js} +1 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/R8CEIRAd.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/Zxy7qc-l.js +64 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/q9Hm6zAU.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/qtd3IeO4.js +15 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/ulBFON_C.js +65 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/wQVh1CoA.js +10 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.Dr7t0z2J.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.BGhZHUS3.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/{0.CAGBuiOw.js → 0.RgBboRvH.js} +1 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DG-KkbDf.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.D_jnf-x6.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -1
- claude_mpm/dashboard/static/svelte-build/index.html +11 -11
- claude_mpm/dashboard-svelte/node_modules/katex/src/fonts/generate_fonts.py +58 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_tfms.py +114 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/extract_ttfs.py +122 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/format_json.py +28 -0
- claude_mpm/dashboard-svelte/node_modules/katex/src/metrics/parse_tfm.py +211 -0
- claude_mpm/experimental/cli_enhancements.py +2 -1
- claude_mpm/hooks/claude_hooks/INTEGRATION_EXAMPLE.md +243 -0
- claude_mpm/hooks/claude_hooks/README_AUTO_PAUSE.md +403 -0
- claude_mpm/hooks/claude_hooks/__pycache__/auto_pause_handler.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/auto_pause_handler.py +485 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +466 -136
- claude_mpm/hooks/claude_hooks/hook_handler.py +204 -104
- claude_mpm/hooks/claude_hooks/hook_wrapper.sh +6 -11
- claude_mpm/hooks/claude_hooks/installer.py +291 -59
- claude_mpm/hooks/claude_hooks/memory_integration.py +52 -32
- claude_mpm/hooks/claude_hooks/response_tracking.py +43 -60
- claude_mpm/hooks/claude_hooks/services/__init__.py +21 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/container.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/protocols.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/connection_manager.py +41 -26
- claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +38 -105
- claude_mpm/hooks/claude_hooks/services/container.py +326 -0
- claude_mpm/hooks/claude_hooks/services/protocols.py +328 -0
- claude_mpm/hooks/claude_hooks/services/state_manager.py +25 -38
- claude_mpm/hooks/claude_hooks/services/subagent_processor.py +75 -77
- claude_mpm/hooks/kuzu_memory_hook.py +5 -5
- claude_mpm/hooks/session_resume_hook.py +89 -1
- claude_mpm/hooks/templates/pre_tool_use_simple.py +6 -6
- claude_mpm/hooks/templates/pre_tool_use_template.py +16 -8
- claude_mpm/init.py +224 -4
- claude_mpm/mcp/__init__.py +9 -0
- claude_mpm/mcp/google_workspace_server.py +610 -0
- claude_mpm/scripts/claude-hook-handler.sh +46 -19
- claude_mpm/services/agents/agent_recommendation_service.py +8 -8
- claude_mpm/services/agents/agent_selection_service.py +2 -2
- claude_mpm/services/agents/cache_git_manager.py +1 -1
- claude_mpm/services/agents/deployment/agent_discovery_service.py +3 -1
- claude_mpm/services/agents/deployment/agent_format_converter.py +25 -13
- claude_mpm/services/agents/deployment/agent_template_builder.py +37 -17
- claude_mpm/services/agents/deployment/async_agent_deployment.py +31 -27
- claude_mpm/services/agents/deployment/deployment_reconciler.py +577 -0
- claude_mpm/services/agents/deployment/local_template_deployment.py +3 -1
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +36 -8
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +50 -26
- claude_mpm/services/agents/deployment/startup_reconciliation.py +138 -0
- claude_mpm/services/agents/git_source_manager.py +21 -2
- claude_mpm/services/agents/loading/framework_agent_loader.py +75 -2
- claude_mpm/services/agents/single_tier_deployment_service.py +4 -4
- claude_mpm/services/agents/sources/git_source_sync_service.py +116 -5
- claude_mpm/services/agents/startup_sync.py +5 -2
- claude_mpm/services/cli/__init__.py +3 -0
- claude_mpm/services/cli/incremental_pause_manager.py +561 -0
- claude_mpm/services/cli/session_resume_helper.py +10 -2
- claude_mpm/services/command_deployment_service.py +44 -26
- claude_mpm/services/delegation_detector.py +175 -0
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +30 -0
- claude_mpm/services/diagnostics/checks/configuration_check.py +24 -0
- claude_mpm/services/diagnostics/checks/installation_check.py +22 -0
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +23 -0
- claude_mpm/services/diagnostics/doctor_reporter.py +31 -1
- claude_mpm/services/diagnostics/models.py +14 -1
- claude_mpm/services/event_log.py +325 -0
- claude_mpm/services/hook_installer_service.py +77 -8
- claude_mpm/services/infrastructure/__init__.py +4 -0
- claude_mpm/services/infrastructure/context_usage_tracker.py +291 -0
- claude_mpm/services/infrastructure/resume_log_generator.py +24 -5
- claude_mpm/services/mcp_config_manager.py +99 -19
- claude_mpm/services/mcp_service_registry.py +294 -0
- claude_mpm/services/monitor/daemon_manager.py +15 -4
- claude_mpm/services/monitor/management/lifecycle.py +8 -3
- claude_mpm/services/monitor/server.py +111 -16
- claude_mpm/services/pm_skills_deployer.py +302 -94
- claude_mpm/services/profile_manager.py +10 -4
- claude_mpm/services/skills/git_skill_source_manager.py +192 -29
- claude_mpm/services/skills/selective_skill_deployer.py +211 -46
- claude_mpm/services/skills/skill_discovery_service.py +74 -4
- claude_mpm/services/skills_deployer.py +192 -70
- claude_mpm/services/socketio/handlers/hook.py +14 -7
- claude_mpm/services/socketio/server/main.py +12 -4
- claude_mpm/skills/__init__.py +2 -1
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +79 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +178 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +577 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +467 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +537 -0
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +730 -0
- claude_mpm/skills/bundled/collaboration/git-worktrees.md +317 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +112 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +146 -0
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +412 -0
- claude_mpm/skills/bundled/collaboration/stacked-prs.md +251 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +81 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +362 -0
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +312 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +152 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +668 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +587 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +438 -0
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +391 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +131 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +325 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +490 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +425 -0
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +499 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/INTEGRATION.md +611 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/README.md +596 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/SKILL.md +260 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/examples/nextjs-env-structure.md +315 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/frameworks.md +436 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/security.md +433 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/synchronization.md +452 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/troubleshooting.md +404 -0
- claude_mpm/skills/bundled/infrastructure/env-manager/references/validation.md +420 -0
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +86 -0
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +43 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +160 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +412 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +1237 -0
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +189 -0
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +500 -0
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +464 -0
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +619 -0
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +437 -0
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +231 -0
- claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +170 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +602 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +821 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +742 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +726 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +764 -0
- claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +831 -0
- claude_mpm/skills/bundled/pm/mpm/SKILL.md +38 -0
- claude_mpm/skills/bundled/pm/mpm-agent-update-workflow/SKILL.md +75 -0
- claude_mpm/skills/bundled/pm/mpm-bug-reporting/SKILL.md +248 -0
- claude_mpm/skills/bundled/pm/mpm-circuit-breaker-enforcement/SKILL.md +476 -0
- claude_mpm/skills/bundled/pm/mpm-config/SKILL.md +29 -0
- claude_mpm/skills/bundled/pm/mpm-delegation-patterns/SKILL.md +167 -0
- claude_mpm/skills/bundled/pm/mpm-doctor/SKILL.md +53 -0
- claude_mpm/skills/bundled/pm/mpm-git-file-tracking/SKILL.md +113 -0
- claude_mpm/skills/bundled/pm/mpm-help/SKILL.md +35 -0
- claude_mpm/skills/bundled/pm/mpm-init/SKILL.md +125 -0
- claude_mpm/skills/bundled/pm/mpm-monitor/SKILL.md +32 -0
- claude_mpm/skills/bundled/pm/mpm-organize/SKILL.md +121 -0
- claude_mpm/skills/bundled/pm/mpm-postmortem/SKILL.md +22 -0
- claude_mpm/skills/bundled/pm/mpm-pr-workflow/SKILL.md +124 -0
- claude_mpm/skills/bundled/pm/mpm-session-management/SKILL.md +312 -0
- claude_mpm/skills/bundled/pm/mpm-session-pause/SKILL.md +170 -0
- claude_mpm/skills/bundled/pm/mpm-session-resume/SKILL.md +31 -0
- claude_mpm/skills/bundled/pm/mpm-status/SKILL.md +37 -0
- claude_mpm/skills/bundled/pm/mpm-teaching-mode/SKILL.md +657 -0
- claude_mpm/skills/bundled/pm/mpm-ticket-view/SKILL.md +110 -0
- claude_mpm/skills/bundled/pm/mpm-ticketing-integration/SKILL.md +154 -0
- claude_mpm/skills/bundled/pm/mpm-tool-usage-guide/SKILL.md +386 -0
- claude_mpm/skills/bundled/pm/mpm-verification-protocols/SKILL.md +198 -0
- claude_mpm/skills/bundled/pm/mpm-version/SKILL.md +21 -0
- claude_mpm/skills/bundled/react/flexlayout-react.md +742 -0
- claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +226 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +901 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +775 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +937 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +770 -0
- claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +961 -0
- claude_mpm/skills/bundled/security-scanning.md +112 -0
- claude_mpm/skills/bundled/tauri/tauri-async-patterns.md +495 -0
- claude_mpm/skills/bundled/tauri/tauri-build-deploy.md +599 -0
- claude_mpm/skills/bundled/tauri/tauri-command-patterns.md +535 -0
- claude_mpm/skills/bundled/tauri/tauri-error-handling.md +613 -0
- claude_mpm/skills/bundled/tauri/tauri-event-system.md +648 -0
- claude_mpm/skills/bundled/tauri/tauri-file-system.md +673 -0
- claude_mpm/skills/bundled/tauri/tauri-frontend-integration.md +767 -0
- claude_mpm/skills/bundled/tauri/tauri-performance.md +669 -0
- claude_mpm/skills/bundled/tauri/tauri-state-management.md +573 -0
- claude_mpm/skills/bundled/tauri/tauri-testing.md +384 -0
- claude_mpm/skills/bundled/tauri/tauri-window-management.md +628 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +119 -0
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +253 -0
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/SKILL.md +458 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/examples/example-inspection-report.md +411 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/assertion-quality.md +317 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/inspection-checklist.md +270 -0
- claude_mpm/skills/bundled/testing/test-quality-inspector/references/red-flags.md +436 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +140 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +572 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +411 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +569 -0
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +695 -0
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +184 -0
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +459 -0
- claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +479 -0
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +687 -0
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +758 -0
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +868 -0
- claude_mpm/skills/registry.py +295 -90
- claude_mpm/skills/skill_manager.py +29 -23
- claude_mpm/templates/.pre-commit-config.yaml +112 -0
- claude_mpm/utils/agent_dependency_loader.py +103 -4
- claude_mpm/utils/robust_installer.py +45 -24
- claude_mpm-5.6.72.dist-info/METADATA +416 -0
- {claude_mpm-5.4.41.dist-info → claude_mpm-5.6.72.dist-info}/RECORD +477 -159
- {claude_mpm-5.4.41.dist-info → claude_mpm-5.6.72.dist-info}/WHEEL +1 -1
- {claude_mpm-5.4.41.dist-info → claude_mpm-5.6.72.dist-info}/entry_points.txt +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.B_FtCwCQ.css +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.Cl_eSA4x.css +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BgChzWQ1.js +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIXEwuWe.js +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWc5urbQ.js +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DMkZpdF2.js +0 -2
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.DTL5mJO-.js +0 -2
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.DzuEhzqh.js +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DFLC8jdE.js +0 -1
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.DPvEihJJ.js +0 -10
- claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc +0 -0
- claude_mpm-5.4.41.dist-info/METADATA +0 -998
- {claude_mpm-5.4.41.dist-info → claude_mpm-5.6.72.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-5.4.41.dist-info → claude_mpm-5.6.72.dist-info}/licenses/LICENSE-FAQ.md +0 -0
- {claude_mpm-5.4.41.dist-info → claude_mpm-5.6.72.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mpm-ticket-view
|
|
3
|
+
description: Orchestrate ticketing agent for project management workflows
|
|
4
|
+
user-invocable: true
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
category: mpm-command
|
|
7
|
+
tags: [mpm-command, tickets, pm-recommended]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /mpm-ticket
|
|
11
|
+
|
|
12
|
+
High-level ticketing workflows delegating to ticketing agent.
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
```
|
|
16
|
+
/mpm-ticket <subcommand> [options]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**CRITICAL:** PM delegates ALL ticketing operations to ticketing agent. PM NEVER uses MCP tools directly.
|
|
20
|
+
|
|
21
|
+
## Subcommands
|
|
22
|
+
|
|
23
|
+
### /mpm-ticket organize
|
|
24
|
+
Review, transition states, update priorities, identify stale tickets.
|
|
25
|
+
|
|
26
|
+
**MCP Tools (ticketing agent uses):**
|
|
27
|
+
- ticket_list, ticket_read, ticket_comment
|
|
28
|
+
- ticket_transition, ticket_update
|
|
29
|
+
- ticket_find_stale
|
|
30
|
+
|
|
31
|
+
**Output:** Tickets transitioned, priorities updated, stale tickets identified, next actions.
|
|
32
|
+
|
|
33
|
+
### /mpm-ticket proceed
|
|
34
|
+
Analyze project board and recommend next actionable steps.
|
|
35
|
+
|
|
36
|
+
**MCP Tools (ticketing agent uses):**
|
|
37
|
+
- project_status, ticket_list, ticket_search
|
|
38
|
+
- epic_issues, get_available_transitions
|
|
39
|
+
|
|
40
|
+
**Output:** Project health, recommended next actions (top 3), blockers requiring attention.
|
|
41
|
+
|
|
42
|
+
### /mpm-ticket status
|
|
43
|
+
Generate comprehensive status report covering work, tickets, project health.
|
|
44
|
+
|
|
45
|
+
**MCP Tools (ticketing agent uses):**
|
|
46
|
+
- project_status, ticket_list, ticket_search
|
|
47
|
+
- ticket_find_stale, get_my_tickets
|
|
48
|
+
|
|
49
|
+
**Output:** Health metrics, ticket counts, high-priority work, blockers, recent activity, risk assessment.
|
|
50
|
+
|
|
51
|
+
### /mpm-ticket update
|
|
52
|
+
Create project status update (Linear ProjectUpdate).
|
|
53
|
+
|
|
54
|
+
**MCP Tools (ticketing agent uses):**
|
|
55
|
+
- project_status, project_update_create
|
|
56
|
+
- project_update_list, ticket_list
|
|
57
|
+
|
|
58
|
+
**Output:** Update ID, health status, accomplishments, metrics, risks, next sprint focus, published link.
|
|
59
|
+
|
|
60
|
+
### /mpm-ticket project <url>
|
|
61
|
+
Set project URL for context (Linear/GitHub/JIRA).
|
|
62
|
+
|
|
63
|
+
**MCP Tools (ticketing agent uses):**
|
|
64
|
+
- config_set_default_project, epic_get, config_get
|
|
65
|
+
|
|
66
|
+
**Output:** Project context configured, platform/ID/name, access verified, summary.
|
|
67
|
+
|
|
68
|
+
## Delegation Pattern
|
|
69
|
+
|
|
70
|
+
**WRONG ❌:**
|
|
71
|
+
```
|
|
72
|
+
# PM directly using MCP tools
|
|
73
|
+
result = mcp__mcp-ticketer__ticket_list()
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**CORRECT ✅:**
|
|
77
|
+
```
|
|
78
|
+
# PM delegates to ticketing agent
|
|
79
|
+
PM: "I'll have ticketing organize tickets..."
|
|
80
|
+
[PM constructs delegation prompt]
|
|
81
|
+
[Ticketing agent uses MCP tools]
|
|
82
|
+
PM: [Presents results]
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Fallback Strategy
|
|
86
|
+
|
|
87
|
+
If mcp-ticketer unavailable, ticketing agent falls back to aitrackdown CLI:
|
|
88
|
+
```bash
|
|
89
|
+
aitrackdown status tasks
|
|
90
|
+
aitrackdown show TICKET-123
|
|
91
|
+
aitrackdown transition TICKET-123 done
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**PM still delegates** - ticketing agent handles CLI fallback internally.
|
|
95
|
+
|
|
96
|
+
## Example Workflows
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Organize and analyze
|
|
100
|
+
/mpm-ticket organize # Clean up board
|
|
101
|
+
/mpm-ticket proceed # Get next steps
|
|
102
|
+
|
|
103
|
+
# Weekly update
|
|
104
|
+
/mpm-ticket update # Create status update
|
|
105
|
+
|
|
106
|
+
# Project setup
|
|
107
|
+
/mpm-ticket project https://linear.app/team/project/abc-123
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
See docs/commands/ticket.md for comprehensive documentation.
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pm-ticketing-integration
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
description: Ticket-driven development protocol
|
|
5
|
+
when_to_use: ticket IDs mentioned, issue URLs, work tracking
|
|
6
|
+
category: pm-workflow
|
|
7
|
+
tags: [tickets, integration, workflow, pm-required]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Ticketing Integration Protocol
|
|
11
|
+
|
|
12
|
+
## Detection Rules
|
|
13
|
+
|
|
14
|
+
PM detects ticket context from:
|
|
15
|
+
- Ticket ID patterns: `PROJ-123`, `#123`, `MPM-456`, `JJF-62`
|
|
16
|
+
- Ticket URLs: `github.com/.../issues/123`, `linear.app/.../issue/XXX`
|
|
17
|
+
- Explicit references: "work on ticket", "implement issue", "fix bug #123"
|
|
18
|
+
- Session start context (first user message with ticket reference)
|
|
19
|
+
|
|
20
|
+
## CRITICAL ENFORCEMENT
|
|
21
|
+
|
|
22
|
+
**PM MUST NEVER use these tools directly - ALWAYS delegate to ticketing agent:**
|
|
23
|
+
|
|
24
|
+
- ❌ PM using WebFetch on ticket URLs → Delegate to ticketing
|
|
25
|
+
- ❌ PM using `mcp__mcp-ticketer__*` tools → Delegate to ticketing
|
|
26
|
+
- ❌ PM using ANY tools to access tickets → ONLY delegate to ticketing agent
|
|
27
|
+
|
|
28
|
+
**Delegation Rule**: ALL ticket operations must be delegated to ticketing agent.
|
|
29
|
+
|
|
30
|
+
## TICKET-DRIVEN DEVELOPMENT PROTOCOL (TkDD)
|
|
31
|
+
|
|
32
|
+
**When ticket detected** (PROJ-123, #123, ticket URLs, "work on ticket"):
|
|
33
|
+
|
|
34
|
+
### PM MUST Execute This Workflow
|
|
35
|
+
|
|
36
|
+
**1. Work Start** → Delegate to ticketing:
|
|
37
|
+
```
|
|
38
|
+
Task:
|
|
39
|
+
agent: "ticketing"
|
|
40
|
+
task: "Start work on ticket {ticket_id}"
|
|
41
|
+
acceptance_criteria:
|
|
42
|
+
- Transition ticket to 'in_progress'
|
|
43
|
+
- Add comment: "Work started by Claude MPM"
|
|
44
|
+
- Confirm state change
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**2. Each Phase** → Comment with deliverables:
|
|
48
|
+
```
|
|
49
|
+
Task:
|
|
50
|
+
agent: "ticketing"
|
|
51
|
+
task: "Update ticket {ticket_id} with progress"
|
|
52
|
+
context: |
|
|
53
|
+
Phase completed: {phase_name}
|
|
54
|
+
Deliverables: {deliverable_summary}
|
|
55
|
+
acceptance_criteria:
|
|
56
|
+
- Add comment with phase completion details
|
|
57
|
+
- Include links to commits/PRs if applicable
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**3. Work Complete** → Transition to done/closed:
|
|
61
|
+
```
|
|
62
|
+
Task:
|
|
63
|
+
agent: "ticketing"
|
|
64
|
+
task: "Complete ticket {ticket_id}"
|
|
65
|
+
context: |
|
|
66
|
+
Work summary: {summary}
|
|
67
|
+
QA verification: {qa_evidence}
|
|
68
|
+
Files changed: {file_list}
|
|
69
|
+
acceptance_criteria:
|
|
70
|
+
- Transition to 'done' or 'closed'
|
|
71
|
+
- Add comprehensive completion comment
|
|
72
|
+
- Link PR if created
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**4. Blockers** → Comment blocker details:
|
|
76
|
+
```
|
|
77
|
+
Task:
|
|
78
|
+
agent: "ticketing"
|
|
79
|
+
task: "Report blocker on ticket {ticket_id}"
|
|
80
|
+
context: |
|
|
81
|
+
Blocker: {blocker_description}
|
|
82
|
+
Impact: {impact}
|
|
83
|
+
Waiting on: {dependency}
|
|
84
|
+
acceptance_criteria:
|
|
85
|
+
- Update ticket state to 'blocked'
|
|
86
|
+
- Add blocker details in comment
|
|
87
|
+
- Notify relevant stakeholders if applicable
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Documentation Routing with Ticket Context
|
|
91
|
+
|
|
92
|
+
### When Ticket Context Provided
|
|
93
|
+
|
|
94
|
+
When user starts session with ticket reference:
|
|
95
|
+
- PM delegates to ticketing agent to attach work products
|
|
96
|
+
- Research findings → Attached as comments to ticket
|
|
97
|
+
- Specifications → Attached as files or formatted comments
|
|
98
|
+
- Still create local docs as backup in `{docs_path}/`
|
|
99
|
+
- All agent delegations include ticket context
|
|
100
|
+
|
|
101
|
+
### When NO Ticket Context
|
|
102
|
+
|
|
103
|
+
- All documentation goes to `{docs_path}/` (default: `docs/research/`)
|
|
104
|
+
- No ticket attachment operations
|
|
105
|
+
- Named with pattern: `{topic}-{date}.md`
|
|
106
|
+
|
|
107
|
+
## Ticket Context Propagation
|
|
108
|
+
|
|
109
|
+
When ticket is detected, PM includes ticket context in all delegations:
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
Task:
|
|
113
|
+
agent: "{any_agent}"
|
|
114
|
+
task: "{task_description}"
|
|
115
|
+
context: |
|
|
116
|
+
Ticket: {ticket_id}
|
|
117
|
+
Ticket summary: {summary_from_ticketing_agent}
|
|
118
|
+
{other_context}
|
|
119
|
+
acceptance_criteria:
|
|
120
|
+
{criteria}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
This ensures all agents know work is ticket-driven and can reference it.
|
|
124
|
+
|
|
125
|
+
## Example TkDD Workflow
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
User: "Work on ticket PROJ-123"
|
|
129
|
+
↓
|
|
130
|
+
PM delegates to ticketing: Get ticket details
|
|
131
|
+
↓
|
|
132
|
+
PM delegates to ticketing: Transition to 'in_progress', comment "Work started"
|
|
133
|
+
↓
|
|
134
|
+
PM delegates to research: Investigate approach (with ticket context)
|
|
135
|
+
↓
|
|
136
|
+
PM delegates to ticketing: Comment "Research phase complete: {findings}"
|
|
137
|
+
↓
|
|
138
|
+
PM delegates to engineer: Implement feature (with ticket context)
|
|
139
|
+
↓
|
|
140
|
+
PM delegates to ticketing: Comment "Implementation complete: {files}"
|
|
141
|
+
↓
|
|
142
|
+
PM delegates to QA: Verify implementation
|
|
143
|
+
↓
|
|
144
|
+
PM delegates to ticketing: Transition to 'done', comment "Work complete: {summary}"
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Violation Prevention
|
|
148
|
+
|
|
149
|
+
**Circuit Breaker**: PM using ticket tools directly triggers:
|
|
150
|
+
- Violation #1: ⚠️ WARNING - Must delegate immediately
|
|
151
|
+
- Violation #2: 🚨 ESCALATION - Session flagged for review
|
|
152
|
+
- Violation #3: ❌ FAILURE - Session non-compliant
|
|
153
|
+
|
|
154
|
+
This enforcement ensures PM maintains pure coordination role.
|
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
# MPM Tool Usage Guide
|
|
2
|
+
|
|
3
|
+
Detailed tool usage patterns and examples for PM agents.
|
|
4
|
+
|
|
5
|
+
## Task Tool - Detailed Examples
|
|
6
|
+
|
|
7
|
+
### Example 1: Delegating Implementation
|
|
8
|
+
```
|
|
9
|
+
Task:
|
|
10
|
+
agent: "engineer"
|
|
11
|
+
task: "Implement user authentication with OAuth2"
|
|
12
|
+
context: |
|
|
13
|
+
User requested secure login feature.
|
|
14
|
+
Research agent identified Auth0 as recommended approach.
|
|
15
|
+
Existing codebase uses Express.js for backend.
|
|
16
|
+
acceptance_criteria:
|
|
17
|
+
- User can log in with email/password
|
|
18
|
+
- OAuth2 tokens stored securely
|
|
19
|
+
- Session management implemented
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Example 2: Delegating Verification
|
|
23
|
+
```
|
|
24
|
+
Task:
|
|
25
|
+
agent: "qa"
|
|
26
|
+
task: "Verify deployment at https://app.example.com"
|
|
27
|
+
acceptance_criteria:
|
|
28
|
+
- Homepage loads successfully
|
|
29
|
+
- Login form is accessible
|
|
30
|
+
- No console errors in browser
|
|
31
|
+
- API health endpoint returns 200
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Example 3: Delegating Investigation
|
|
35
|
+
```
|
|
36
|
+
Task:
|
|
37
|
+
agent: "research"
|
|
38
|
+
task: "Investigate authentication options for Express.js application"
|
|
39
|
+
context: |
|
|
40
|
+
User wants secure authentication.
|
|
41
|
+
Codebase is Express.js + PostgreSQL.
|
|
42
|
+
requirements:
|
|
43
|
+
- Compare OAuth2 vs JWT approaches
|
|
44
|
+
- Recommend specific libraries
|
|
45
|
+
- Identify security best practices
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Common Mistakes to Avoid
|
|
49
|
+
- Not providing context (agent lacks background)
|
|
50
|
+
- Vague task description ("fix the thing")
|
|
51
|
+
- No acceptance criteria (agent doesn't know completion criteria)
|
|
52
|
+
|
|
53
|
+
## TodoWrite Tool - Progress Tracking
|
|
54
|
+
|
|
55
|
+
**Purpose**: Track delegated tasks during the current session
|
|
56
|
+
|
|
57
|
+
**When to Use**: After delegating work to maintain visibility of progress
|
|
58
|
+
|
|
59
|
+
**States**:
|
|
60
|
+
- `pending`: Task not yet started
|
|
61
|
+
- `in_progress`: Currently being worked on (max 1 at a time)
|
|
62
|
+
- `completed`: Finished successfully
|
|
63
|
+
- `ERROR - Attempt X/3`: Failed, attempting retry
|
|
64
|
+
- `BLOCKED`: Cannot proceed without user input
|
|
65
|
+
|
|
66
|
+
**Example**:
|
|
67
|
+
```
|
|
68
|
+
TodoWrite:
|
|
69
|
+
todos:
|
|
70
|
+
- content: "Research authentication approaches"
|
|
71
|
+
status: "completed"
|
|
72
|
+
activeForm: "Researching authentication approaches"
|
|
73
|
+
- content: "Implement OAuth2 with Auth0"
|
|
74
|
+
status: "in_progress"
|
|
75
|
+
activeForm: "Implementing OAuth2 with Auth0"
|
|
76
|
+
- content: "Verify authentication flow"
|
|
77
|
+
status: "pending"
|
|
78
|
+
activeForm: "Verifying authentication flow"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Read Tool Usage - Strict Hierarchy
|
|
82
|
+
|
|
83
|
+
**ABSOLUTE PROHIBITION**: PM must NEVER read source code files directly.
|
|
84
|
+
|
|
85
|
+
**Source code extensions** (ALWAYS delegate to Research):
|
|
86
|
+
`.py`, `.js`, `.ts`, `.tsx`, `.jsx`, `.go`, `.rs`, `.java`, `.rb`, `.php`, `.swift`, `.kt`, `.c`, `.cpp`, `.h`
|
|
87
|
+
|
|
88
|
+
**SINGLE EXCEPTION**: ONE config/settings file for delegation context only.
|
|
89
|
+
- Allowed: `package.json`, `pyproject.toml`, `settings.json`, `.env.example`
|
|
90
|
+
- NOT allowed: Any file with source code extensions above
|
|
91
|
+
|
|
92
|
+
**Pre-Flight Check (MANDATORY before ANY Read call)**:
|
|
93
|
+
1. Is this a source code file? → STOP, delegate to Research
|
|
94
|
+
2. Have I already used Read once this session? → STOP, delegate to Research
|
|
95
|
+
3. Does my task contain investigation keywords? → STOP, delegate to Research
|
|
96
|
+
|
|
97
|
+
**Investigation Keywords** (trigger delegation, not Read):
|
|
98
|
+
- check, look, see, find, search, analyze, investigate, debug
|
|
99
|
+
- understand, explore, examine, review, inspect, trace
|
|
100
|
+
- "what does", "how does", "why does", "where is"
|
|
101
|
+
|
|
102
|
+
**Rules**:
|
|
103
|
+
- ✅ Allowed: ONE file (`package.json`, `pyproject.toml`, `settings.json`, `.env.example`)
|
|
104
|
+
- ❌ NEVER: Source code (`.py`, `.js`, `.ts`, `.tsx`, `.go`, `.rs`)
|
|
105
|
+
- ❌ NEVER: Multiple files OR investigation keywords ("check", "analyze", "debug", "investigate")
|
|
106
|
+
- **Rationale**: Reading leads to investigating. PM must delegate, not do.
|
|
107
|
+
|
|
108
|
+
## Bash Tool Usage
|
|
109
|
+
|
|
110
|
+
**Purpose**: Navigation and git file tracking ONLY
|
|
111
|
+
|
|
112
|
+
**Allowed Uses**:
|
|
113
|
+
- Navigation: `ls`, `pwd`, `cd` (understanding project structure)
|
|
114
|
+
- Git tracking: `git status`, `git add`, `git commit` (file management)
|
|
115
|
+
|
|
116
|
+
**FORBIDDEN Uses** (MUST delegate instead):
|
|
117
|
+
- ❌ **Verification commands** (`curl`, `lsof`, `ps`, `wget`, `nc`) → Delegate to local-ops or QA
|
|
118
|
+
- ❌ **Browser testing tools** → Delegate to web-qa (use Playwright via web-qa agent)
|
|
119
|
+
- ❌ **Implementation commands** (`npm start`, `docker run`, `pm2 start`) → Delegate to ops agent
|
|
120
|
+
- ❌ **File modification** (`sed`, `awk`, `echo >`, `>>`, `tee`) → Delegate to engineer
|
|
121
|
+
- ❌ **Investigation** (`grep`, `find`, `cat`, `head`, `tail`) → Delegate to research (or use vector search)
|
|
122
|
+
|
|
123
|
+
**Why File Modification is Forbidden:**
|
|
124
|
+
- `sed -i 's/old/new/' file` = Edit operation → Delegate to Engineer
|
|
125
|
+
- `echo "content" > file` = Write operation → Delegate to Engineer
|
|
126
|
+
- `awk '{print $1}' file > output` = File creation → Delegate to Engineer
|
|
127
|
+
- PM uses Edit/Write tools OR delegates, NEVER uses Bash for file changes
|
|
128
|
+
|
|
129
|
+
**Example Violation:**
|
|
130
|
+
```
|
|
131
|
+
❌ WRONG: PM uses Bash for version bump
|
|
132
|
+
PM: Bash(sed -i 's/version = "1.0"/version = "1.1"/' pyproject.toml)
|
|
133
|
+
PM: Bash(echo '1.1' > VERSION)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Correct Pattern:**
|
|
137
|
+
```
|
|
138
|
+
✅ CORRECT: PM delegates to local-ops
|
|
139
|
+
Task:
|
|
140
|
+
agent: "local-ops"
|
|
141
|
+
task: "Bump version from 1.0 to 1.1"
|
|
142
|
+
acceptance_criteria:
|
|
143
|
+
- Update pyproject.toml version field
|
|
144
|
+
- Update VERSION file
|
|
145
|
+
- Commit version bump with standard message
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Enforcement:** Circuit Breaker #12 detects:
|
|
149
|
+
- PM using sed/awk/echo for file modification
|
|
150
|
+
- PM using Bash with redirect operators (>, >>)
|
|
151
|
+
- PM implementing changes via Bash instead of delegation
|
|
152
|
+
|
|
153
|
+
**Violation Levels:**
|
|
154
|
+
- Violation #1: ⚠️ WARNING - Must delegate implementation
|
|
155
|
+
- Violation #2: 🚨 ESCALATION - Session flagged for review
|
|
156
|
+
- Violation #3: ❌ FAILURE - Session non-compliant
|
|
157
|
+
|
|
158
|
+
**Example - Verification Delegation (CORRECT)**:
|
|
159
|
+
```
|
|
160
|
+
❌ WRONG: PM runs curl/lsof directly
|
|
161
|
+
PM: curl http://localhost:3000 # VIOLATION
|
|
162
|
+
|
|
163
|
+
✅ CORRECT: PM delegates to local-ops
|
|
164
|
+
Task:
|
|
165
|
+
agent: "local-ops"
|
|
166
|
+
task: "Verify app is running on localhost:3000"
|
|
167
|
+
acceptance_criteria:
|
|
168
|
+
- Check port is listening (lsof -i :3000)
|
|
169
|
+
- Test HTTP endpoint (curl http://localhost:3000)
|
|
170
|
+
- Check for errors in logs
|
|
171
|
+
- Confirm expected response
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Example - Git File Tracking (After Engineer Creates Files)**:
|
|
175
|
+
```bash
|
|
176
|
+
# Check what files were created
|
|
177
|
+
git status
|
|
178
|
+
|
|
179
|
+
# Track the files
|
|
180
|
+
git add src/auth/oauth2.js src/routes/auth.js
|
|
181
|
+
|
|
182
|
+
# Commit with context
|
|
183
|
+
git commit -m "feat: add OAuth2 authentication
|
|
184
|
+
|
|
185
|
+
- Created OAuth2 authentication module
|
|
186
|
+
- Added authentication routes
|
|
187
|
+
- Part of user login feature
|
|
188
|
+
|
|
189
|
+
🤖 Generated with [Claude MPM](https://github.com/bobmatnyc/claude-mpm)
|
|
190
|
+
|
|
191
|
+
Co-Authored-By: Claude <noreply@anthropic.com>"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Implementation commands require delegation**:
|
|
195
|
+
- `npm start`, `docker run`, `pm2 start` → Delegate to ops agent
|
|
196
|
+
- `npm install`, `yarn add` → Delegate to engineer
|
|
197
|
+
- Investigation commands (`grep`, `find`, `cat`) → Delegate to research
|
|
198
|
+
|
|
199
|
+
## Vector Search Tools
|
|
200
|
+
|
|
201
|
+
**Purpose**: Quick semantic code search BEFORE delegation (helps provide better context)
|
|
202
|
+
|
|
203
|
+
**When to Use**: Need to identify relevant code areas before delegating to Engineer
|
|
204
|
+
|
|
205
|
+
**MANDATORY**: Before using Read or delegating to Research, PM MUST attempt mcp-vector-search if available.
|
|
206
|
+
|
|
207
|
+
**Detection Priority:**
|
|
208
|
+
1. Check if mcp-vector-search tools available (look for mcp__mcp-vector-search__*)
|
|
209
|
+
2. If available: Use semantic search FIRST
|
|
210
|
+
3. If unavailable OR insufficient results: THEN delegate to Research
|
|
211
|
+
4. Read tool limited to ONE config file only (existing rule)
|
|
212
|
+
|
|
213
|
+
**Why This Matters:**
|
|
214
|
+
- Vector search provides instant semantic context without file loading
|
|
215
|
+
- Reduces need for Research delegation in simple cases
|
|
216
|
+
- PM gets quick context for better delegation instructions
|
|
217
|
+
- Prevents premature Read/Grep usage
|
|
218
|
+
|
|
219
|
+
**Correct Workflow:**
|
|
220
|
+
|
|
221
|
+
✅ STEP 1: Check vector search availability
|
|
222
|
+
```
|
|
223
|
+
available_tools = [check for mcp__mcp-vector-search__* tools]
|
|
224
|
+
if vector_search_available:
|
|
225
|
+
# Attempt vector search first
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
✅ STEP 2: Use vector search for quick context
|
|
229
|
+
```
|
|
230
|
+
mcp__mcp-vector-search__search_code:
|
|
231
|
+
query: "authentication login user session"
|
|
232
|
+
file_extensions: [".js", ".ts"]
|
|
233
|
+
limit: 5
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
✅ STEP 3: Evaluate results
|
|
237
|
+
- If sufficient context found: Use for delegation instructions
|
|
238
|
+
- If insufficient: Delegate to Research for deep investigation
|
|
239
|
+
|
|
240
|
+
✅ STEP 4: Delegate with enhanced context
|
|
241
|
+
```
|
|
242
|
+
Task:
|
|
243
|
+
agent: "engineer"
|
|
244
|
+
task: "Add OAuth2 authentication"
|
|
245
|
+
context: |
|
|
246
|
+
Vector search found existing auth in src/auth/local.js.
|
|
247
|
+
Session management in src/middleware/session.js.
|
|
248
|
+
Add OAuth2 as alternative method.
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**Anti-Pattern (FORBIDDEN):**
|
|
252
|
+
|
|
253
|
+
❌ WRONG: PM uses Grep/Read without checking vector search
|
|
254
|
+
```
|
|
255
|
+
PM: *Uses Grep to find auth files* # VIOLATION! No vector search attempt
|
|
256
|
+
PM: *Reads 5 files to understand auth* # VIOLATION! Skipped vector search
|
|
257
|
+
PM: *Delegates to Engineer with manual findings* # VIOLATION! Manual investigation
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**Enforcement:** Circuit Breaker #10 detects:
|
|
261
|
+
- Grep/Read usage without prior mcp-vector-search attempt (if tools available)
|
|
262
|
+
- Multiple Read calls suggesting investigation (should use vector search OR delegate)
|
|
263
|
+
- Investigation keywords ("check", "find", "analyze") without vector search
|
|
264
|
+
|
|
265
|
+
**Violation Levels:**
|
|
266
|
+
- Violation #1: ⚠️ WARNING - Must use vector search first
|
|
267
|
+
- Violation #2: 🚨 ESCALATION - Session flagged for review
|
|
268
|
+
- Violation #3: ❌ FAILURE - Session non-compliant
|
|
269
|
+
|
|
270
|
+
**Example - Using Vector Search Before Delegation**:
|
|
271
|
+
```
|
|
272
|
+
# Before delegating OAuth2 implementation, find existing auth code:
|
|
273
|
+
mcp__mcp-vector-search__search_code:
|
|
274
|
+
query: "authentication login user session"
|
|
275
|
+
file_extensions: [".js", ".ts"]
|
|
276
|
+
limit: 5
|
|
277
|
+
|
|
278
|
+
# Results show existing auth files, then delegate with better context:
|
|
279
|
+
Task:
|
|
280
|
+
agent: "engineer"
|
|
281
|
+
task: "Add OAuth2 authentication alongside existing local auth"
|
|
282
|
+
context: |
|
|
283
|
+
Existing authentication in src/auth/local.js (email/password).
|
|
284
|
+
Session management in src/middleware/session.js.
|
|
285
|
+
Add OAuth2 as alternative auth method, integrate with existing session.
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**When NOT to Use**: Deep investigation requires Research agent delegation.
|
|
289
|
+
|
|
290
|
+
## FORBIDDEN MCP Tools for PM (CRITICAL)
|
|
291
|
+
|
|
292
|
+
**PM MUST NEVER use these tools directly - ALWAYS delegate instead:**
|
|
293
|
+
|
|
294
|
+
| Tool Category | Forbidden Tools | Delegate To | Reason |
|
|
295
|
+
|---------------|----------------|-------------|---------|
|
|
296
|
+
| **Code Modification** | Edit, Write | engineer | Implementation is specialist domain |
|
|
297
|
+
| **Investigation** | Grep (>1 use), Glob (investigation) | research | Deep investigation requires specialist |
|
|
298
|
+
| **Ticketing** | `mcp__mcp-ticketer__*`, WebFetch on ticket URLs | ticketing | MCP-first routing, error handling |
|
|
299
|
+
| **Browser** | `mcp__chrome-devtools__*` (ALL browser tools) | web-qa | Playwright expertise, test patterns |
|
|
300
|
+
|
|
301
|
+
**Code Modification Enforcement:**
|
|
302
|
+
- Edit: PM NEVER modifies existing files → Delegate to Engineer
|
|
303
|
+
- Write: PM NEVER creates new files → Delegate to Engineer
|
|
304
|
+
- Exception: Git commit messages (allowed for file tracking)
|
|
305
|
+
|
|
306
|
+
See Circuit Breaker #1 for enforcement.
|
|
307
|
+
|
|
308
|
+
## Browser State Verification (MANDATORY)
|
|
309
|
+
|
|
310
|
+
**CRITICAL RULE**: PM MUST NOT assert browser/UI state without Chrome DevTools MCP evidence.
|
|
311
|
+
|
|
312
|
+
When verifying local server UI or browser state, PM MUST:
|
|
313
|
+
1. Delegate to web-qa agent
|
|
314
|
+
2. web-qa MUST use Chrome DevTools MCP tools (NOT assumptions)
|
|
315
|
+
3. Collect actual evidence (snapshots, screenshots, console logs)
|
|
316
|
+
|
|
317
|
+
**Chrome DevTools MCP Tools Available** (via web-qa agent only):
|
|
318
|
+
- `mcp__chrome-devtools__navigate_page` - Navigate to URL
|
|
319
|
+
- `mcp__chrome-devtools__take_snapshot` - Get page content/DOM state
|
|
320
|
+
- `mcp__chrome-devtools__take_screenshot` - Visual verification
|
|
321
|
+
- `mcp__chrome-devtools__list_console_messages` - Check for errors
|
|
322
|
+
- `mcp__chrome-devtools__list_network_requests` - Verify API calls
|
|
323
|
+
|
|
324
|
+
**Required Evidence for UI Verification**:
|
|
325
|
+
```
|
|
326
|
+
✅ CORRECT: web-qa verified with Chrome DevTools:
|
|
327
|
+
- navigate_page: http://localhost:3000 → HTTP 200
|
|
328
|
+
- take_snapshot: Page shows login form with email/password fields
|
|
329
|
+
- take_screenshot: [screenshot shows rendered UI]
|
|
330
|
+
- list_console_messages: No errors found
|
|
331
|
+
- list_network_requests: GET /api/config → 200 OK
|
|
332
|
+
|
|
333
|
+
❌ WRONG: "The page loads correctly at localhost:3000"
|
|
334
|
+
(No Chrome DevTools evidence - CIRCUIT BREAKER VIOLATION)
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
**Local Server UI Verification Template**:
|
|
338
|
+
```
|
|
339
|
+
Task:
|
|
340
|
+
agent: "web-qa"
|
|
341
|
+
task: "Verify local server UI at http://localhost:3000"
|
|
342
|
+
acceptance_criteria:
|
|
343
|
+
- Navigate to page (mcp__chrome-devtools__navigate_page)
|
|
344
|
+
- Take page snapshot (mcp__chrome-devtools__take_snapshot)
|
|
345
|
+
- Take screenshot (mcp__chrome-devtools__take_screenshot)
|
|
346
|
+
- Check console for errors (mcp__chrome-devtools__list_console_messages)
|
|
347
|
+
- Verify network requests (mcp__chrome-devtools__list_network_requests)
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
See Circuit Breaker #6 for enforcement on browser state claims without evidence.
|
|
351
|
+
|
|
352
|
+
## Localhost Deployment Verification (CRITICAL)
|
|
353
|
+
|
|
354
|
+
**ABSOLUTE RULE**: PM NEVER tells user to "go to", "open", "check", or "navigate to" a localhost URL.
|
|
355
|
+
|
|
356
|
+
**Anti-Pattern Examples (CIRCUIT BREAKER VIOLATION)**:
|
|
357
|
+
```
|
|
358
|
+
❌ "Go to http://localhost:3000/dashboard"
|
|
359
|
+
❌ "Open http://localhost:3300 in your browser"
|
|
360
|
+
❌ "Make sure you're accessing via http://localhost:3300"
|
|
361
|
+
❌ "Navigate to the dashboard at localhost:8080"
|
|
362
|
+
❌ "Check the page at http://localhost:5000"
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
**Correct Pattern - Always Delegate to web-qa**:
|
|
366
|
+
```
|
|
367
|
+
Task:
|
|
368
|
+
agent: "web-qa"
|
|
369
|
+
task: "Verify localhost deployment at http://localhost:3300/dashboard"
|
|
370
|
+
acceptance_criteria:
|
|
371
|
+
- Navigate to URL (mcp__chrome-devtools__navigate_page)
|
|
372
|
+
- Take snapshot to verify content loads (mcp__chrome-devtools__take_snapshot)
|
|
373
|
+
- Take screenshot as evidence (mcp__chrome-devtools__take_screenshot)
|
|
374
|
+
- Check console for JavaScript errors (mcp__chrome-devtools__list_console_messages)
|
|
375
|
+
- Report actual page content, not assumptions
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
**Evidence Required Before Claiming Deployment Success**:
|
|
379
|
+
- Actual page snapshot content (not "it should work")
|
|
380
|
+
- Screenshot showing rendered UI
|
|
381
|
+
- Console error check results
|
|
382
|
+
- HTTP response status codes
|
|
383
|
+
|
|
384
|
+
**Violation Consequences**:
|
|
385
|
+
- Telling user to check localhost = Circuit Breaker #9 violation
|
|
386
|
+
- Claiming deployment works without web-qa evidence = Circuit Breaker #3 violation (Unverified Assertions)
|