claude-mpm 4.20.3__py3-none-any.whl → 5.1.8__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/BASE_PM.md +35 -6
- claude_mpm/agents/OUTPUT_STYLE.md +3 -48
- claude_mpm/agents/PM_INSTRUCTIONS.md +1241 -667
- claude_mpm/agents/PM_INSTRUCTIONS_TEACH.md +1322 -0
- claude_mpm/agents/WORKFLOW.md +75 -2
- claude_mpm/agents/__init__.py +6 -0
- claude_mpm/agents/agent_loader.py +1 -4
- claude_mpm/agents/base_agent.json +6 -3
- claude_mpm/agents/base_agent_loader.py +10 -35
- claude_mpm/agents/frontmatter_validator.py +1 -1
- claude_mpm/agents/templates/circuit-breakers.md +1254 -0
- claude_mpm/agents/templates/context-management-examples.md +544 -0
- claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +89 -19
- claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
- claude_mpm/agents/templates/research-gate-examples.md +669 -0
- claude_mpm/agents/templates/structured-questions-examples.md +615 -0
- claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
- claude_mpm/agents/templates/ticketing-examples.md +277 -0
- claude_mpm/cli/__init__.py +37 -2
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/agent_source.py +774 -0
- claude_mpm/cli/commands/agent_state_manager.py +188 -30
- claude_mpm/cli/commands/agents.py +959 -36
- claude_mpm/cli/commands/agents_cleanup.py +210 -0
- claude_mpm/cli/commands/agents_discover.py +338 -0
- claude_mpm/cli/commands/aggregate.py +1 -1
- claude_mpm/cli/commands/analyze.py +3 -3
- claude_mpm/cli/commands/auto_configure.py +537 -239
- claude_mpm/cli/commands/cleanup.py +1 -1
- claude_mpm/cli/commands/config.py +7 -4
- claude_mpm/cli/commands/configure.py +924 -45
- claude_mpm/cli/commands/configure_agent_display.py +4 -4
- claude_mpm/cli/commands/configure_navigation.py +63 -46
- claude_mpm/cli/commands/debug.py +12 -12
- claude_mpm/cli/commands/doctor.py +10 -2
- claude_mpm/cli/commands/hook_errors.py +277 -0
- claude_mpm/cli/commands/local_deploy.py +1 -4
- claude_mpm/cli/commands/mcp_install_commands.py +1 -1
- claude_mpm/cli/commands/mpm_init/__init__.py +73 -0
- claude_mpm/cli/commands/mpm_init/core.py +573 -0
- claude_mpm/cli/commands/mpm_init/display.py +341 -0
- claude_mpm/cli/commands/mpm_init/git_activity.py +427 -0
- claude_mpm/cli/commands/mpm_init/modes.py +397 -0
- claude_mpm/cli/commands/mpm_init/prompts.py +442 -0
- claude_mpm/cli/commands/mpm_init_cli.py +396 -0
- claude_mpm/cli/commands/mpm_init_handler.py +67 -1
- claude_mpm/cli/commands/postmortem.py +401 -0
- claude_mpm/cli/commands/run.py +125 -167
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +835 -44
- claude_mpm/cli/executor.py +78 -3
- claude_mpm/cli/interactive/agent_wizard.py +1032 -47
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +256 -4
- claude_mpm/cli/parsers/auto_configure_parser.py +13 -0
- claude_mpm/cli/parsers/base_parser.py +53 -0
- claude_mpm/cli/parsers/config_parser.py +96 -43
- claude_mpm/cli/parsers/mpm_init_parser.py +42 -0
- claude_mpm/cli/parsers/skill_source_parser.py +169 -0
- claude_mpm/cli/parsers/skills_parser.py +145 -0
- claude_mpm/cli/parsers/source_parser.py +138 -0
- claude_mpm/cli/startup.py +564 -108
- claude_mpm/cli/startup_display.py +480 -0
- claude_mpm/cli/utils.py +1 -1
- claude_mpm/cli_module/commands.py +1 -1
- claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
- claude_mpm/commands/mpm-agents-detect.md +9 -0
- claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
- claude_mpm/commands/mpm-agents-recommend.md +9 -0
- claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
- claude_mpm/commands/mpm-doctor.md +9 -0
- claude_mpm/commands/mpm-help.md +17 -2
- claude_mpm/commands/mpm-init.md +28 -3
- claude_mpm/commands/mpm-monitor.md +9 -0
- claude_mpm/commands/mpm-postmortem.md +123 -0
- claude_mpm/commands/mpm-session-resume.md +381 -0
- claude_mpm/commands/mpm-status.md +9 -0
- claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
- claude_mpm/commands/mpm-ticket-view.md +552 -0
- claude_mpm/commands/mpm-version.md +9 -0
- claude_mpm/commands/mpm.md +11 -0
- claude_mpm/config/agent_presets.py +488 -0
- claude_mpm/config/agent_sources.py +325 -0
- claude_mpm/config/skill_presets.py +392 -0
- claude_mpm/config/skill_sources.py +590 -0
- claude_mpm/constants.py +13 -0
- claude_mpm/core/api_validator.py +1 -1
- claude_mpm/core/claude_runner.py +19 -35
- claude_mpm/core/config.py +24 -0
- claude_mpm/core/constants.py +1 -1
- claude_mpm/core/framework/__init__.py +3 -16
- claude_mpm/core/framework/loaders/file_loader.py +54 -101
- claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
- claude_mpm/core/framework/processors/metadata_processor.py +1 -1
- claude_mpm/core/hook_error_memory.py +381 -0
- claude_mpm/core/hook_manager.py +41 -2
- claude_mpm/core/interactive_session.py +131 -10
- claude_mpm/core/interfaces.py +56 -1
- claude_mpm/core/logger.py +3 -1
- claude_mpm/core/oneshot_session.py +110 -8
- claude_mpm/core/protocols/__init__.py +23 -0
- claude_mpm/core/protocols/runner_protocol.py +103 -0
- claude_mpm/core/protocols/session_protocol.py +131 -0
- claude_mpm/core/shared/singleton_manager.py +11 -4
- claude_mpm/core/system_context.py +38 -0
- claude_mpm/core/unified_config.py +22 -0
- claude_mpm/dashboard/static/css/activity.css +69 -69
- claude_mpm/dashboard/static/css/connection-status.css +10 -10
- claude_mpm/dashboard/static/css/dashboard.css +15 -15
- claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
- claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
- claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
- claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
- claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
- claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
- claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
- claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
- claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
- claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
- claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
- claude_mpm/dashboard/static/js/connection-manager.js +76 -76
- claude_mpm/dashboard/static/js/dashboard.js +76 -58
- claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
- claude_mpm/dashboard/static/js/socket-client.js +138 -121
- claude_mpm/dashboard/templates/code_simple.html +23 -23
- claude_mpm/dashboard/templates/index.html +18 -18
- claude_mpm/experimental/cli_enhancements.py +1 -5
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
- claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
- claude_mpm/hooks/claude_hooks/installer.py +45 -0
- claude_mpm/hooks/claude_hooks/memory_integration.py +12 -1
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
- claude_mpm/hooks/failure_learning/__init__.py +2 -8
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
- claude_mpm/hooks/kuzu_response_hook.py +1 -5
- claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
- claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
- claude_mpm/models/git_repository.py +198 -0
- claude_mpm/scripts/claude-hook-handler.sh +3 -3
- claude_mpm/scripts/start_activity_logging.py +3 -1
- claude_mpm/services/agents/agent_builder.py +45 -9
- claude_mpm/services/agents/agent_preset_service.py +238 -0
- claude_mpm/services/agents/agent_selection_service.py +484 -0
- claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
- claude_mpm/services/agents/cache_git_manager.py +621 -0
- claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
- claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
- claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
- claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
- claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +115 -15
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
- claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
- claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
- claude_mpm/services/agents/git_source_manager.py +629 -0
- claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
- claude_mpm/services/agents/local_template_manager.py +50 -10
- claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
- claude_mpm/services/agents/sources/__init__.py +13 -0
- claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
- claude_mpm/services/agents/sources/git_source_sync_service.py +1087 -0
- claude_mpm/services/agents/startup_sync.py +239 -0
- claude_mpm/services/agents/toolchain_detector.py +474 -0
- claude_mpm/services/analysis/__init__.py +25 -0
- claude_mpm/services/analysis/postmortem_reporter.py +474 -0
- claude_mpm/services/analysis/postmortem_service.py +765 -0
- claude_mpm/services/cli/session_pause_manager.py +504 -0
- claude_mpm/services/cli/session_resume_helper.py +36 -16
- claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
- claude_mpm/services/command_deployment_service.py +200 -6
- claude_mpm/services/core/base.py +31 -11
- claude_mpm/services/core/interfaces/__init__.py +1 -3
- claude_mpm/services/core/interfaces/health.py +1 -4
- claude_mpm/services/core/interfaces.py +56 -1
- claude_mpm/services/core/models/__init__.py +2 -11
- claude_mpm/services/core/models/agent_config.py +3 -0
- claude_mpm/services/core/models/process.py +4 -0
- claude_mpm/services/diagnostics/checks/__init__.py +4 -0
- claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
- claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
- claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
- claude_mpm/services/diagnostics/checks/mcp_services_check.py +7 -15
- claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
- claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
- claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
- claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
- claude_mpm/services/diagnostics/models.py +21 -0
- claude_mpm/services/event_bus/direct_relay.py +3 -3
- claude_mpm/services/event_bus/event_bus.py +36 -3
- claude_mpm/services/event_bus/relay.py +23 -7
- claude_mpm/services/events/consumers/logging.py +1 -2
- claude_mpm/services/git/__init__.py +21 -0
- claude_mpm/services/git/git_operations_service.py +494 -0
- claude_mpm/services/github/__init__.py +21 -0
- claude_mpm/services/github/github_cli_service.py +397 -0
- claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
- claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
- claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
- claude_mpm/services/instructions/__init__.py +9 -0
- claude_mpm/services/instructions/instruction_cache_service.py +374 -0
- claude_mpm/services/local_ops/__init__.py +5 -13
- claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
- claude_mpm/services/local_ops/health_manager.py +1 -4
- claude_mpm/services/local_ops/process_manager.py +1 -1
- claude_mpm/services/local_ops/resource_monitor.py +2 -2
- claude_mpm/services/mcp_config_manager.py +75 -145
- claude_mpm/services/mcp_gateway/auto_configure.py +31 -25
- claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
- claude_mpm/services/mcp_gateway/core/process_pool.py +41 -26
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
- claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +26 -21
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
- claude_mpm/services/mcp_service_verifier.py +6 -3
- claude_mpm/services/memory/failure_tracker.py +19 -4
- claude_mpm/services/memory/optimizer.py +1 -1
- claude_mpm/services/model/model_router.py +8 -9
- claude_mpm/services/monitor/daemon.py +29 -9
- claude_mpm/services/monitor/daemon_manager.py +96 -19
- claude_mpm/services/monitor/server.py +2 -2
- claude_mpm/services/native_agent_converter.py +356 -0
- claude_mpm/services/port_manager.py +1 -1
- claude_mpm/services/pr/__init__.py +14 -0
- claude_mpm/services/pr/pr_template_service.py +329 -0
- claude_mpm/services/project/documentation_manager.py +2 -1
- claude_mpm/services/project/project_organizer.py +4 -0
- claude_mpm/services/project/toolchain_analyzer.py +3 -1
- claude_mpm/services/runner_configuration_service.py +17 -3
- claude_mpm/services/self_upgrade_service.py +165 -7
- claude_mpm/services/session_management_service.py +16 -4
- claude_mpm/services/skills/__init__.py +18 -0
- claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
- claude_mpm/services/skills/skill_discovery_service.py +568 -0
- claude_mpm/services/skills_config.py +547 -0
- claude_mpm/services/skills_deployer.py +955 -0
- claude_mpm/services/socketio/handlers/connection.py +1 -1
- claude_mpm/services/socketio/handlers/git.py +2 -2
- claude_mpm/services/socketio/server/core.py +1 -4
- claude_mpm/services/socketio/server/main.py +1 -3
- claude_mpm/services/system_instructions_service.py +1 -3
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
- claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
- claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
- claude_mpm/services/unified/unified_deployment.py +1 -5
- claude_mpm/services/version_control/conflict_resolution.py +6 -4
- claude_mpm/services/visualization/__init__.py +1 -5
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/__init__.py +3 -3
- claude_mpm/skills/agent_skills_injector.py +42 -49
- claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
- claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +17 -10
- claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +92 -39
- claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +13 -12
- claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +5 -3
- claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +19 -12
- claude_mpm/skills/bundled/performance-profiling.md +6 -0
- claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +6 -6
- claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +13 -9
- claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +8 -8
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +37 -15
- claude_mpm/skills/skills_registry.py +44 -48
- claude_mpm/skills/skills_service.py +117 -108
- claude_mpm/templates/questions/__init__.py +38 -0
- claude_mpm/templates/questions/base.py +193 -0
- claude_mpm/templates/questions/pr_strategy.py +311 -0
- claude_mpm/templates/questions/project_init.py +385 -0
- claude_mpm/templates/questions/ticket_mgmt.py +394 -0
- claude_mpm/tools/__main__.py +8 -8
- claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
- claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
- claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
- claude_mpm/tools/code_tree_analyzer/core.py +380 -0
- claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
- claude_mpm/tools/code_tree_analyzer/events.py +168 -0
- claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
- claude_mpm/tools/code_tree_analyzer/models.py +39 -0
- claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
- claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
- claude_mpm/utils/agent_dependency_loader.py +80 -13
- claude_mpm/utils/agent_filters.py +288 -0
- claude_mpm/utils/dependency_cache.py +3 -1
- claude_mpm/utils/gitignore.py +244 -0
- claude_mpm/utils/log_cleanup.py +3 -3
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/progress.py +387 -0
- claude_mpm/utils/robust_installer.py +3 -5
- claude_mpm/utils/structured_questions.py +619 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/METADATA +496 -65
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/RECORD +328 -416
- claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
- claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
- claude_mpm/agents/templates/agent-manager.json +0 -273
- claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
- claude_mpm/agents/templates/api_qa.json +0 -180
- claude_mpm/agents/templates/circuit_breakers.md +0 -638
- claude_mpm/agents/templates/clerk-ops.json +0 -235
- claude_mpm/agents/templates/code_analyzer.json +0 -101
- claude_mpm/agents/templates/content-agent.json +0 -358
- claude_mpm/agents/templates/dart_engineer.json +0 -307
- claude_mpm/agents/templates/data_engineer.json +0 -225
- claude_mpm/agents/templates/documentation.json +0 -211
- claude_mpm/agents/templates/engineer.json +0 -210
- claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
- claude_mpm/agents/templates/golang_engineer.json +0 -270
- claude_mpm/agents/templates/imagemagick.json +0 -264
- claude_mpm/agents/templates/java_engineer.json +0 -346
- claude_mpm/agents/templates/local_ops_agent.json +0 -1840
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
- claude_mpm/agents/templates/memory_manager.json +0 -158
- claude_mpm/agents/templates/nextjs_engineer.json +0 -285
- claude_mpm/agents/templates/ops.json +0 -185
- claude_mpm/agents/templates/php-engineer.json +0 -281
- claude_mpm/agents/templates/product_owner.json +0 -338
- claude_mpm/agents/templates/project_organizer.json +0 -140
- claude_mpm/agents/templates/prompt-engineer.json +0 -737
- claude_mpm/agents/templates/python_engineer.json +0 -387
- claude_mpm/agents/templates/qa.json +0 -242
- claude_mpm/agents/templates/react_engineer.json +0 -238
- claude_mpm/agents/templates/refactoring_engineer.json +0 -276
- claude_mpm/agents/templates/research.json +0 -188
- claude_mpm/agents/templates/ruby-engineer.json +0 -280
- claude_mpm/agents/templates/rust_engineer.json +0 -275
- claude_mpm/agents/templates/security.json +0 -202
- claude_mpm/agents/templates/svelte-engineer.json +0 -225
- claude_mpm/agents/templates/ticketing.json +0 -177
- claude_mpm/agents/templates/typescript_engineer.json +0 -285
- claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
- claude_mpm/agents/templates/version_control.json +0 -157
- claude_mpm/agents/templates/web_qa.json +0 -399
- claude_mpm/agents/templates/web_ui.json +0 -189
- claude_mpm/cli/commands/mpm_init.py +0 -2093
- claude_mpm/commands/mpm-tickets.md +0 -102
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
- claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
- claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
- claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
- claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
- claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
- claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
- claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
- claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
- claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
- claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
- claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
- claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
- claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
- claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
- claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
- claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
- claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
- claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
- claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
- claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
- claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
- claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
- claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
- claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
- claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
- claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
- claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
- claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
- claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/built/connection-manager.js +0 -536
- claude_mpm/dashboard/static/built/dashboard.js +0 -2
- claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
- claude_mpm/dashboard/static/built/react/events.js +0 -30
- claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
- claude_mpm/dashboard/static/built/shared/logger.js +0 -385
- claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
- claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/built/socket-client.js +0 -2
- claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
- claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/dist/dashboard.js +0 -2
- claude_mpm/dashboard/static/dist/react/events.js +0 -30
- claude_mpm/dashboard/static/dist/socket-client.js +0 -2
- claude_mpm/dashboard/static/events.html +0 -607
- claude_mpm/dashboard/static/index.html +0 -635
- claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/js/shared/logger.js +0 -385
- claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
- claude_mpm/dashboard/static/legacy/activity.html +0 -736
- claude_mpm/dashboard/static/legacy/agents.html +0 -786
- claude_mpm/dashboard/static/legacy/files.html +0 -747
- claude_mpm/dashboard/static/legacy/tools.html +0 -831
- claude_mpm/dashboard/static/monitors.html +0 -431
- claude_mpm/dashboard/static/production/events.html +0 -659
- claude_mpm/dashboard/static/production/main.html +0 -698
- claude_mpm/dashboard/static/production/monitors.html +0 -483
- claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
- claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
- claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
- claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
- claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -75
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -184
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -107
- claude_mpm/skills/bundled/collaboration/requesting-code-review/code-reviewer.md +0 -146
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -118
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -177
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -175
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/common-failures.md +0 -213
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -314
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -227
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -74
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -32
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -328
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -209
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -123
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -304
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -96
- claude_mpm/tools/code_tree_analyzer.py +0 -1825
- /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
- /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
- /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
- /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/WHEEL +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.20.3.dist-info → claude_mpm-5.1.8.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Ticket Completeness Protocol Examples
|
|
2
|
+
|
|
3
|
+
## ✅ COMPLETE TICKET (Passes Zero PM Context Test)
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
Ticket: PROJ-123 "Implement OAuth2 authentication"
|
|
7
|
+
|
|
8
|
+
Description:
|
|
9
|
+
Add OAuth2 authentication flow to user login system.
|
|
10
|
+
|
|
11
|
+
ACCEPTANCE CRITERIA:
|
|
12
|
+
- Users can log in via OAuth2 with Google and GitHub providers
|
|
13
|
+
- Existing username/password login continues to work
|
|
14
|
+
- OAuth2 tokens stored securely in database
|
|
15
|
+
- Token refresh implemented for expired tokens
|
|
16
|
+
- All existing tests pass + new OAuth2 tests added
|
|
17
|
+
- Performance: OAuth2 login completes in < 2 seconds
|
|
18
|
+
|
|
19
|
+
TECHNICAL CONTEXT (Comment):
|
|
20
|
+
Code Patterns:
|
|
21
|
+
- Follow existing auth patterns in src/auth/strategies/
|
|
22
|
+
- Use passport-oauth2 library (already in dependencies)
|
|
23
|
+
- Token storage follows pattern in src/models/auth_token.py
|
|
24
|
+
|
|
25
|
+
Files to Modify:
|
|
26
|
+
- src/auth/strategies/oauth2.py (create new)
|
|
27
|
+
- src/auth/router.py (add OAuth2 routes)
|
|
28
|
+
- src/models/user.py (add oauth_provider field)
|
|
29
|
+
- tests/test_auth_oauth2.py (create new)
|
|
30
|
+
|
|
31
|
+
Dependencies:
|
|
32
|
+
- passport-oauth2>=1.7.0 (already installed)
|
|
33
|
+
- No new dependencies required
|
|
34
|
+
|
|
35
|
+
RESEARCH FINDINGS (Comment):
|
|
36
|
+
OAuth2 Flow Analysis:
|
|
37
|
+
1. Authorization Code Flow recommended (most secure)
|
|
38
|
+
2. Google OAuth2: Requires client_id/secret (get from admin)
|
|
39
|
+
3. GitHub OAuth2: Requires app registration (get from admin)
|
|
40
|
+
4. Token refresh: Implement background job (runs every 24h)
|
|
41
|
+
|
|
42
|
+
Security Considerations:
|
|
43
|
+
- Store tokens encrypted at rest (use existing encryption service)
|
|
44
|
+
- Implement PKCE for mobile clients (future enhancement)
|
|
45
|
+
- Rate limit OAuth2 endpoints (5 attempts per minute)
|
|
46
|
+
|
|
47
|
+
Reference: https://oauth.net/2/ (see "Authorization Code Flow" section)
|
|
48
|
+
|
|
49
|
+
SUCCESS CRITERIA (Comment):
|
|
50
|
+
Verification Steps:
|
|
51
|
+
1. User clicks "Login with Google" → redirected to Google consent
|
|
52
|
+
2. User approves → redirected back with code → token exchange succeeds
|
|
53
|
+
3. User profile populated from Google API
|
|
54
|
+
4. Token stored in database (encrypted)
|
|
55
|
+
5. User can access protected resources
|
|
56
|
+
6. Token refresh runs automatically
|
|
57
|
+
|
|
58
|
+
Performance:
|
|
59
|
+
- OAuth2 login: < 2 seconds (measured with pytest-benchmark)
|
|
60
|
+
- Token refresh: < 500ms per token
|
|
61
|
+
|
|
62
|
+
DISCOVERED WORK SUMMARY (Comment):
|
|
63
|
+
In-Scope (Created Subtasks):
|
|
64
|
+
- PROJ-124: Add OAuth2 provider configuration UI
|
|
65
|
+
- PROJ-125: Implement token refresh background job
|
|
66
|
+
|
|
67
|
+
Out-of-Scope (Separate Tickets):
|
|
68
|
+
- PROJ-126: Add OAuth2 support for Facebook (separate feature request)
|
|
69
|
+
- PROJ-127: Migrate existing users to OAuth2 (data migration project)
|
|
70
|
+
|
|
71
|
+
Deferred (Documented but not ticketed):
|
|
72
|
+
- PKCE for mobile clients (not needed for web app yet)
|
|
73
|
+
- Multi-factor auth (separate initiative)
|
|
74
|
+
|
|
75
|
+
Scope Decision: We focused ONLY on Google/GitHub OAuth2 for web app.
|
|
76
|
+
Mobile and Facebook support deferred to separate initiatives per user confirmation.
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Engineer Assessment**: ✅ COMPLETE
|
|
80
|
+
- Can understand what to build? YES (acceptance criteria clear)
|
|
81
|
+
- Has research findings? YES (OAuth2 flow, security considerations)
|
|
82
|
+
- Has technical context? YES (code patterns, files to modify, dependencies)
|
|
83
|
+
- Knows success criteria? YES (verification steps, performance targets)
|
|
84
|
+
- Knows about discovered work? YES (subtasks created, scope documented)
|
|
85
|
+
|
|
86
|
+
## ❌ INCOMPLETE TICKET (Fails Zero PM Context Test)
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
Ticket: PROJ-123 "Implement OAuth2 authentication"
|
|
90
|
+
|
|
91
|
+
Description:
|
|
92
|
+
Add OAuth2 authentication flow to user login system.
|
|
93
|
+
|
|
94
|
+
(No comments, no attachments)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Engineer Assessment**: ❌ INCOMPLETE
|
|
98
|
+
- Can understand what to build? PARTIALLY (vague description)
|
|
99
|
+
- Has research findings? NO (which providers? what flow?)
|
|
100
|
+
- Has technical context? NO (which files? which libraries?)
|
|
101
|
+
- Knows success criteria? NO (how to verify? performance targets?)
|
|
102
|
+
- Knows about discovered work? NO (are there dependencies? follow-ups?)
|
|
103
|
+
|
|
104
|
+
**Engineer Questions for PM**:
|
|
105
|
+
1. Which OAuth2 providers should I support?
|
|
106
|
+
2. Which OAuth2 flow should I use?
|
|
107
|
+
3. How do I store tokens? What encryption?
|
|
108
|
+
4. Which files do I need to modify?
|
|
109
|
+
5. What libraries should I use?
|
|
110
|
+
6. How do I test this?
|
|
111
|
+
7. Are there any follow-up tickets I should know about?
|
|
112
|
+
|
|
113
|
+
**PM Violation**: Ticket lacks ALL context. Engineer cannot proceed independently.
|
|
114
|
+
|
|
115
|
+
## Attachment Decision Tree Examples
|
|
116
|
+
|
|
117
|
+
### 📊 RESEARCH FINDINGS:
|
|
118
|
+
- Summary (< 500 words) → Attach as ticket comment
|
|
119
|
+
- Detailed analysis (> 500 words) → Save to docs/research/, link from ticket
|
|
120
|
+
- Architecture diagrams → Attach as comment (markdown or image link)
|
|
121
|
+
- Third-party docs → Reference URL in ticket comment with key excerpts
|
|
122
|
+
|
|
123
|
+
### 💻 CODE ANALYSIS:
|
|
124
|
+
- Code patterns → Attach key examples as comment (code blocks)
|
|
125
|
+
- File locations → List in comment ("Files to modify: src/foo.py, tests/test_foo.py")
|
|
126
|
+
- Dependencies → List in comment with versions ("Requires: requests>=2.28.0")
|
|
127
|
+
- Integration points → Describe in comment with code examples
|
|
128
|
+
|
|
129
|
+
### 🧪 QA/TEST RESULTS:
|
|
130
|
+
- Test output → Attach as comment (use code blocks)
|
|
131
|
+
- Bug reports → Create separate tickets, reference from original
|
|
132
|
+
- Performance benchmarks → Attach as comment with numbers
|
|
133
|
+
- Edge cases → List in comment with reproduction steps
|
|
134
|
+
|
|
135
|
+
### ⚠️ DO NOT ATTACH (Reference Only):
|
|
136
|
+
- CLAUDE.md patterns → Reference only ("Follow auth patterns in CLAUDE.md")
|
|
137
|
+
- Project-wide conventions → Reference only ("See CONTRIBUTING.md")
|
|
138
|
+
- Existing documentation → Link, don't duplicate
|
|
139
|
+
- Common knowledge → Don't attach obvious information
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
# Ticketing Delegation Examples
|
|
2
|
+
|
|
3
|
+
**Purpose**: Comprehensive examples of correct PM ticketing delegation patterns
|
|
4
|
+
**Usage**: Reference for PM when delegating ticket operations to ticketing agent
|
|
5
|
+
**Circuit Breaker**: #6 - PM MUST NEVER use mcp-ticketer tools directly
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Search Operations
|
|
10
|
+
|
|
11
|
+
### Ticket Search Delegation
|
|
12
|
+
|
|
13
|
+
**❌ WRONG - PM searches directly**:
|
|
14
|
+
```
|
|
15
|
+
User: "Find tickets related to authentication"
|
|
16
|
+
PM: [Uses mcp__mcp-ticketer__ticket_search directly] ← VIOLATION
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**✅ CORRECT - PM delegates search**:
|
|
20
|
+
```
|
|
21
|
+
User: "Find tickets related to authentication"
|
|
22
|
+
PM: "I'll have ticketing search for authentication tickets..."
|
|
23
|
+
[Delegates to ticketing: "Search for tickets related to authentication"]
|
|
24
|
+
PM: "Based on ticketing's search results, here are the relevant tickets..."
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Why This Matters**:
|
|
28
|
+
- PM focuses on orchestration, not ticket system mechanics
|
|
29
|
+
- Ticketing agent owns all mcp-ticketer tool expertise
|
|
30
|
+
- Reduces PM token load by 31.5% (886 lines of ticketing protocols)
|
|
31
|
+
- Maintains separation of concerns (PM = delegation, ticketing = execution)
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Listing Operations
|
|
36
|
+
|
|
37
|
+
### Ticket List Delegation
|
|
38
|
+
|
|
39
|
+
**❌ WRONG - PM lists tickets directly**:
|
|
40
|
+
```
|
|
41
|
+
User: "Show me open tickets"
|
|
42
|
+
PM: [Uses mcp__mcp-ticketer__ticket_list directly] ← VIOLATION
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**✅ CORRECT - PM delegates listing**:
|
|
46
|
+
```
|
|
47
|
+
User: "Show me open tickets"
|
|
48
|
+
PM: "I'll have ticketing list open tickets..."
|
|
49
|
+
[Delegates to ticketing: "List all open tickets"]
|
|
50
|
+
PM: "Ticketing found [X] open tickets: [summary]"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Delegation Pattern**:
|
|
54
|
+
1. PM receives user request for ticket data
|
|
55
|
+
2. PM delegates to ticketing with specific query
|
|
56
|
+
3. Ticketing uses mcp-ticketer tools to fetch data
|
|
57
|
+
4. Ticketing returns summary to PM
|
|
58
|
+
5. PM uses summary for decision-making (NOT full ticket data)
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## CRUD Operations
|
|
63
|
+
|
|
64
|
+
### Complete CRUD Patterns
|
|
65
|
+
|
|
66
|
+
**Correct Pattern**:
|
|
67
|
+
```
|
|
68
|
+
PM: "I'll have ticketing [read/create/update/comment on] the ticket"
|
|
69
|
+
→ Delegate to ticketing with specific instruction
|
|
70
|
+
→ Ticketing uses mcp-ticketer tools
|
|
71
|
+
→ Ticketing returns summary to PM
|
|
72
|
+
→ PM uses summary for decision-making (not full ticket data)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Violation Pattern**:
|
|
76
|
+
```
|
|
77
|
+
PM: "I'll check the ticket details"
|
|
78
|
+
→ PM uses mcp__mcp-ticketer__ticket_read directly
|
|
79
|
+
→ VIOLATION: Circuit Breaker #6 triggered
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Read Operations
|
|
83
|
+
|
|
84
|
+
**❌ WRONG**:
|
|
85
|
+
```
|
|
86
|
+
PM: "Let me check ticket PROJ-123"
|
|
87
|
+
[Uses mcp__mcp-ticketer__ticket_read("PROJ-123")]
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**✅ CORRECT**:
|
|
91
|
+
```
|
|
92
|
+
PM: "I'll have ticketing read PROJ-123"
|
|
93
|
+
[Delegates to ticketing: "Read ticket PROJ-123 and return status, priority, and blockers"]
|
|
94
|
+
Ticketing: "PROJ-123 is in progress, high priority, blocked by PROJ-122"
|
|
95
|
+
PM: "Based on ticketing's report, we need to resolve PROJ-122 first"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Create Operations
|
|
99
|
+
|
|
100
|
+
**❌ WRONG**:
|
|
101
|
+
```
|
|
102
|
+
PM: "Creating ticket now..."
|
|
103
|
+
[Uses mcp__mcp-ticketer__ticket_create directly]
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**✅ CORRECT**:
|
|
107
|
+
```
|
|
108
|
+
PM: "I'll have ticketing create a ticket for this work"
|
|
109
|
+
[Delegates to ticketing: "Create ticket: Add authentication with JWT"]
|
|
110
|
+
Ticketing: "Created PROJ-124: Add authentication with JWT"
|
|
111
|
+
PM: "Ticketing created PROJ-124, now delegating implementation to engineer"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Update Operations
|
|
115
|
+
|
|
116
|
+
**❌ WRONG**:
|
|
117
|
+
```
|
|
118
|
+
PM: "Updating ticket status..."
|
|
119
|
+
[Uses mcp__mcp-ticketer__ticket_update directly]
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**✅ CORRECT**:
|
|
123
|
+
```
|
|
124
|
+
PM: "I'll have ticketing update PROJ-123 status to done"
|
|
125
|
+
[Delegates to ticketing: "Update PROJ-123: set state=done, add completion comment"]
|
|
126
|
+
Ticketing: "Updated PROJ-123 to done with completion notes"
|
|
127
|
+
PM: "PROJ-123 marked complete, moving to next task"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Comment Operations
|
|
131
|
+
|
|
132
|
+
**❌ WRONG**:
|
|
133
|
+
```
|
|
134
|
+
PM: "Adding comment to ticket..."
|
|
135
|
+
[Uses mcp__mcp-ticketer__ticket_comment directly]
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**✅ CORRECT**:
|
|
139
|
+
```
|
|
140
|
+
PM: "I'll have ticketing add a progress update to PROJ-123"
|
|
141
|
+
[Delegates to ticketing: "Add comment to PROJ-123: Implementation 60% complete, frontend done"]
|
|
142
|
+
Ticketing: "Added progress comment to PROJ-123"
|
|
143
|
+
PM: "Ticketing updated stakeholders on progress"
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Ticket Context Propagation
|
|
149
|
+
|
|
150
|
+
### Passing Ticket Context to Other Agents
|
|
151
|
+
|
|
152
|
+
**Pattern**: PM receives ticket info from ticketing → propagates to engineer/research
|
|
153
|
+
|
|
154
|
+
**Example Workflow**:
|
|
155
|
+
```
|
|
156
|
+
User: "Implement TICKET-123"
|
|
157
|
+
|
|
158
|
+
Step 1: PM delegates to ticketing
|
|
159
|
+
PM → Ticketing: "Read TICKET-123 and return full details"
|
|
160
|
+
|
|
161
|
+
Step 2: Ticketing returns summary
|
|
162
|
+
Ticketing → PM: {
|
|
163
|
+
"ticket_id": "TICKET-123",
|
|
164
|
+
"title": "Add OAuth2 authentication",
|
|
165
|
+
"description": "Implement OAuth2 flow...",
|
|
166
|
+
"priority": "high",
|
|
167
|
+
"acceptance_criteria": ["Users can login with Google", "Token refresh works"]
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
Step 3: PM propagates to engineer
|
|
171
|
+
PM → Engineer: "Implement OAuth2 authentication based on TICKET-123
|
|
172
|
+
🎫 TICKET CONTEXT:
|
|
173
|
+
- Ticket ID: TICKET-123
|
|
174
|
+
- Title: Add OAuth2 authentication
|
|
175
|
+
- Priority: high
|
|
176
|
+
- Acceptance Criteria: [...]
|
|
177
|
+
- Description: [...]"
|
|
178
|
+
|
|
179
|
+
Step 4: Engineer completes work
|
|
180
|
+
Engineer → PM: "OAuth2 implemented, tests passing"
|
|
181
|
+
|
|
182
|
+
Step 5: PM delegates ticket update
|
|
183
|
+
PM → Ticketing: "Update TICKET-123: set state=done, add completion comment"
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**Key Principle**: PM acts as information router, NOT information consumer. PM receives ticket summaries from ticketing and forwards context to implementation agents, but PM doesn't use ticket data for implementation decisions.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Scope Protection Patterns
|
|
191
|
+
|
|
192
|
+
### Project Scoping Requirements
|
|
193
|
+
|
|
194
|
+
**Rule**: ALL ticket operations require project scoping (project_id or default_project configured)
|
|
195
|
+
|
|
196
|
+
**❌ WRONG - No project context**:
|
|
197
|
+
```
|
|
198
|
+
PM → Ticketing: "List open tickets"
|
|
199
|
+
Ticketing: ⚠️ Project filtering required! Use default_project or specify project_id
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**✅ CORRECT - Project context included**:
|
|
203
|
+
```
|
|
204
|
+
PM → Ticketing: "List open tickets for project MYAPP"
|
|
205
|
+
Ticketing: "Found 5 open tickets in MYAPP: [...]"
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**Automatic Protection**:
|
|
209
|
+
Ticketing agent automatically validates project scope before executing any ticket operation. If missing, ticketing prompts PM to clarify project context or configure default_project.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Context Optimization
|
|
214
|
+
|
|
215
|
+
### Compact Mode vs Full Mode
|
|
216
|
+
|
|
217
|
+
**Compact Mode** (default):
|
|
218
|
+
- Returns ~15 tokens per ticket (id, title, state, priority, assignee)
|
|
219
|
+
- Use for: listings, searches, bulk operations
|
|
220
|
+
- 90% token savings vs full mode
|
|
221
|
+
|
|
222
|
+
**Full Mode**:
|
|
223
|
+
- Returns ~185 tokens per ticket (all fields, descriptions, comments)
|
|
224
|
+
- Use for: detailed analysis, single ticket reads
|
|
225
|
+
- Only when full context is needed
|
|
226
|
+
|
|
227
|
+
**Example - Listing 20 Tickets**:
|
|
228
|
+
```
|
|
229
|
+
Compact mode: 20 tickets × 15 tokens = 300 tokens
|
|
230
|
+
Full mode: 20 tickets × 185 tokens = 3,700 tokens
|
|
231
|
+
Savings: 3,400 tokens (91% reduction)
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**PM Delegation Strategy**:
|
|
235
|
+
```
|
|
236
|
+
# For bulk operations - use compact mode
|
|
237
|
+
PM → Ticketing: "List open tickets (compact mode)"
|
|
238
|
+
Ticketing: Returns 20 tickets in 300 tokens
|
|
239
|
+
|
|
240
|
+
# For detailed analysis - use full mode on specific tickets
|
|
241
|
+
PM → Ticketing: "Read ticket PROJ-123 (full details)"
|
|
242
|
+
Ticketing: Returns 1 ticket in 185 tokens
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Success Criteria
|
|
248
|
+
|
|
249
|
+
**PM is delegating correctly if**:
|
|
250
|
+
- ✅ PM NEVER uses mcp__mcp-ticketer__* tools directly
|
|
251
|
+
- ✅ ALL ticket operations go through ticketing agent
|
|
252
|
+
- ✅ PM receives summaries, not full ticket data
|
|
253
|
+
- ✅ PM propagates ticket context to other agents
|
|
254
|
+
- ✅ Project scoping is always specified or configured
|
|
255
|
+
|
|
256
|
+
**Red Flags** (Circuit Breaker #6 violations):
|
|
257
|
+
- ❌ PM uses mcp__mcp-ticketer__ticket_search directly
|
|
258
|
+
- ❌ PM uses mcp__mcp-ticketer__ticket_list directly
|
|
259
|
+
- ❌ PM uses mcp__mcp-ticketer__ticket_read directly
|
|
260
|
+
- ❌ PM uses mcp__mcp-ticketer__ticket_create directly
|
|
261
|
+
- ❌ PM uses mcp__mcp-ticketer__ticket_update directly
|
|
262
|
+
- ❌ PM uses any mcp-ticketer tool without delegating first
|
|
263
|
+
|
|
264
|
+
**Rule of Thumb**: If PM is about to use any tool starting with `mcp__mcp-ticketer__*`, STOP and delegate to ticketing instead.
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## Related References
|
|
269
|
+
|
|
270
|
+
- **Circuit Breakers**: See [circuit-breakers.md](circuit-breakers.md#circuit-breaker-6)
|
|
271
|
+
- **Ticket Completeness**: See [ticket-completeness-examples.md](ticket-completeness-examples.md)
|
|
272
|
+
- **Ticketing Agent Instructions**: See [ticketing.md](ticketing.md)
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
**Last Updated**: 2025-12-01
|
|
277
|
+
**Phase**: Phase 3 Optimization - Example Extraction
|
claude_mpm/cli/__init__.py
CHANGED
|
@@ -17,6 +17,7 @@ from typing import Optional
|
|
|
17
17
|
from claude_mpm.config.paths import paths
|
|
18
18
|
|
|
19
19
|
from ..constants import CLICommands
|
|
20
|
+
from ..utils.progress import ProgressBar
|
|
20
21
|
from .executor import ensure_run_attributes, execute_command
|
|
21
22
|
from .helpers import (
|
|
22
23
|
handle_missing_configuration,
|
|
@@ -31,6 +32,7 @@ from .startup import (
|
|
|
31
32
|
setup_mcp_server_logging,
|
|
32
33
|
should_skip_background_services,
|
|
33
34
|
)
|
|
35
|
+
from .startup_display import display_startup_banner, should_show_banner
|
|
34
36
|
from .utils import ensure_directories, setup_logging
|
|
35
37
|
|
|
36
38
|
# Version resolution
|
|
@@ -65,10 +67,43 @@ def main(argv: Optional[list] = None):
|
|
|
65
67
|
|
|
66
68
|
setup_configure_command_environment(args)
|
|
67
69
|
|
|
70
|
+
# CRITICAL: Setup logging BEFORE any initialization that creates loggers
|
|
71
|
+
# This ensures that ensure_directories() and run_background_services()
|
|
72
|
+
# respect the user's logging preference (default: OFF)
|
|
73
|
+
logger = setup_mcp_server_logging(args)
|
|
74
|
+
|
|
68
75
|
ensure_directories()
|
|
76
|
+
|
|
77
|
+
# Display startup banner FIRST (unless help/version/utility commands)
|
|
78
|
+
if should_show_banner(args):
|
|
79
|
+
logging_level = getattr(args, "logging", "OFF")
|
|
80
|
+
display_startup_banner(__version__, logging_level)
|
|
81
|
+
|
|
69
82
|
if not should_skip_background_services(args, processed_argv):
|
|
70
|
-
|
|
71
|
-
|
|
83
|
+
# Show "Launching Claude..." progress bar during background services startup
|
|
84
|
+
# This matches the visual style of agent/skill sync progress bars
|
|
85
|
+
launch_progress = ProgressBar(
|
|
86
|
+
total=100,
|
|
87
|
+
prefix="Launching Claude",
|
|
88
|
+
show_percentage=False,
|
|
89
|
+
show_counter=False,
|
|
90
|
+
bar_width=25,
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
try:
|
|
94
|
+
run_background_services()
|
|
95
|
+
launch_progress.finish(message="Ready")
|
|
96
|
+
|
|
97
|
+
# Inform user about Claude Code initialization delay (3-5 seconds)
|
|
98
|
+
# This message appears before os.execvpe() replaces our process
|
|
99
|
+
# See: docs/research/claude-startup-delay-analysis-2025-12-01.md
|
|
100
|
+
print(
|
|
101
|
+
"⏳ Starting Claude Code... (this may take a few seconds)",
|
|
102
|
+
flush=True,
|
|
103
|
+
)
|
|
104
|
+
except Exception:
|
|
105
|
+
launch_progress.finish(message="Failed")
|
|
106
|
+
raise
|
|
72
107
|
|
|
73
108
|
if hasattr(args, "debug") and args.debug:
|
|
74
109
|
logger.debug(f"Command: {args.command}")
|
|
@@ -19,6 +19,7 @@ from .info import show_info
|
|
|
19
19
|
from .mcp import manage_mcp
|
|
20
20
|
from .memory import manage_memory
|
|
21
21
|
from .monitor import manage_monitor
|
|
22
|
+
from .postmortem import run_postmortem
|
|
22
23
|
from .run import run_session
|
|
23
24
|
from .skills import manage_skills
|
|
24
25
|
from .tickets import list_tickets, manage_tickets
|
|
@@ -41,6 +42,7 @@ __all__ = [
|
|
|
41
42
|
# 'run_guarded_session', # Excluded from default exports (experimental)
|
|
42
43
|
"manage_tickets",
|
|
43
44
|
"run_doctor",
|
|
45
|
+
"run_postmortem",
|
|
44
46
|
"run_session",
|
|
45
47
|
"show_info",
|
|
46
48
|
]
|