claude-mpm 5.1.9__py3-none-any.whl → 5.4.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of claude-mpm might be problematic. Click here for more details.

Files changed (131) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/PM_INSTRUCTIONS.md +46 -0
  3. claude_mpm/agents/agent_loader.py +10 -17
  4. claude_mpm/agents/templates/circuit-breakers.md +138 -1
  5. claude_mpm/cli/commands/agent_state_manager.py +8 -17
  6. claude_mpm/cli/commands/configure.py +1046 -149
  7. claude_mpm/cli/commands/configure_agent_display.py +13 -6
  8. claude_mpm/cli/commands/mpm_init/core.py +158 -1
  9. claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
  10. claude_mpm/cli/commands/mpm_init/prompts.py +280 -0
  11. claude_mpm/cli/commands/summarize.py +413 -0
  12. claude_mpm/cli/executor.py +8 -0
  13. claude_mpm/cli/parsers/base_parser.py +5 -0
  14. claude_mpm/cli/startup.py +60 -53
  15. claude_mpm/commands/{mpm-ticket-organize.md → mpm-organize.md} +4 -5
  16. claude_mpm/config/agent_sources.py +27 -0
  17. claude_mpm/core/framework/loaders/agent_loader.py +8 -5
  18. claude_mpm/core/socketio_pool.py +3 -3
  19. claude_mpm/core/unified_agent_registry.py +5 -15
  20. claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
  21. claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-313.pyc +0 -0
  22. claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
  23. claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
  24. claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
  25. claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
  26. claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
  27. claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
  28. claude_mpm/hooks/claude_hooks/event_handlers.py +35 -2
  29. claude_mpm/hooks/claude_hooks/hook_handler.py +4 -0
  30. claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
  31. claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
  32. claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
  33. claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
  34. claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
  35. claude_mpm/hooks/claude_hooks/services/connection_manager.py +4 -0
  36. claude_mpm/scripts/launch_monitor.py +93 -13
  37. claude_mpm/services/agents/agent_recommendation_service.py +279 -0
  38. claude_mpm/services/agents/deployment/agent_template_builder.py +3 -2
  39. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +322 -53
  40. claude_mpm/services/agents/git_source_manager.py +20 -0
  41. claude_mpm/services/agents/sources/git_source_sync_service.py +8 -1
  42. claude_mpm/services/agents/toolchain_detector.py +6 -5
  43. claude_mpm/services/analysis/__init__.py +11 -1
  44. claude_mpm/services/analysis/clone_detector.py +1030 -0
  45. claude_mpm/services/command_deployment_service.py +0 -2
  46. claude_mpm/services/event_bus/config.py +3 -1
  47. claude_mpm/services/monitor/daemon.py +9 -2
  48. claude_mpm/services/monitor/daemon_manager.py +39 -3
  49. claude_mpm/services/monitor/server.py +225 -19
  50. claude_mpm/services/socketio/event_normalizer.py +15 -1
  51. claude_mpm/services/socketio/server/core.py +160 -21
  52. claude_mpm/services/version_control/git_operations.py +103 -0
  53. claude_mpm/utils/agent_filters.py +17 -44
  54. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.3.dist-info}/METADATA +1 -77
  55. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.3.dist-info}/RECORD +59 -114
  56. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.3.dist-info}/entry_points.txt +0 -2
  57. claude_mpm/dashboard/analysis_runner.py +0 -455
  58. claude_mpm/dashboard/index.html +0 -13
  59. claude_mpm/dashboard/open_dashboard.py +0 -66
  60. claude_mpm/dashboard/static/css/activity.css +0 -1958
  61. claude_mpm/dashboard/static/css/connection-status.css +0 -370
  62. claude_mpm/dashboard/static/css/dashboard.css +0 -4701
  63. claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
  64. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
  65. claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
  66. claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
  67. claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
  68. claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
  69. claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
  70. claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
  71. claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
  72. claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
  73. claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
  74. claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
  75. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
  76. claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
  77. claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
  78. claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
  79. claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
  80. claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
  81. claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
  82. claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
  83. claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
  84. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
  85. claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
  86. claude_mpm/dashboard/static/js/connection-manager.js +0 -536
  87. claude_mpm/dashboard/static/js/dashboard.js +0 -1914
  88. claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
  89. claude_mpm/dashboard/static/js/socket-client.js +0 -1474
  90. claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
  91. claude_mpm/dashboard/static/socket.io.min.js +0 -7
  92. claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
  93. claude_mpm/dashboard/templates/code_simple.html +0 -153
  94. claude_mpm/dashboard/templates/index.html +0 -606
  95. claude_mpm/dashboard/test_dashboard.html +0 -372
  96. claude_mpm/scripts/mcp_server.py +0 -75
  97. claude_mpm/scripts/mcp_wrapper.py +0 -39
  98. claude_mpm/services/mcp_gateway/__init__.py +0 -159
  99. claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
  100. claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
  101. claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
  102. claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
  103. claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
  104. claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
  105. claude_mpm/services/mcp_gateway/core/base.py +0 -312
  106. claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
  107. claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
  108. claude_mpm/services/mcp_gateway/core/process_pool.py +0 -977
  109. claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
  110. claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
  111. claude_mpm/services/mcp_gateway/main.py +0 -589
  112. claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
  113. claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
  114. claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
  115. claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
  116. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -414
  117. claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
  118. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -712
  119. claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
  120. claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
  121. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
  122. claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
  123. claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
  124. claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
  125. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -555
  126. claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
  127. claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
  128. claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
  129. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.3.dist-info}/WHEEL +0 -0
  130. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.3.dist-info}/licenses/LICENSE +0 -0
  131. {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.3.dist-info}/top_level.txt +0 -0
claude_mpm/VERSION CHANGED
@@ -1 +1 @@
1
- 5.1.9
1
+ 5.4.3
@@ -453,6 +453,28 @@ Delegate when work involves:
453
453
 
454
454
  **Why Version Control**: Handles PR workflows, branch management, and git operations beyond basic file tracking.
455
455
 
456
+ **Branch Protection Awareness**: PM must check git user before delegating direct main branch pushes:
457
+ - Only `bobmatnyc@users.noreply.github.com` can push directly to main
458
+ - For other users, PM must route through feature branch + PR workflow
459
+ - Check user: `git config user.email`
460
+ - Applies to: MPM, agents, and skills repositories
461
+
462
+ ### MPM Skills Manager Agent
463
+
464
+ Delegate when work involves:
465
+ - Creating or improving Claude Code skills
466
+ - Recommending skills based on project technology stack
467
+ - Technology stack detection and analysis
468
+ - Skill lifecycle management (deploy, update, remove)
469
+ - Updating skill manifest.json
470
+ - Creating PRs for skill repository contributions
471
+ - Validating skill structure and metadata
472
+ - Skill discovery and search
473
+
474
+ **Why MPM Skills Manager**: Manages complete skill lifecycle including technology detection, discovery, recommendation, deployment, and PR-based improvements to skills repository. Has direct access to manifest.json, skill validation tools, and GitHub PR workflow integration.
475
+
476
+ **Trigger Keywords**: "skill", "add skill", "create skill", "improve skill", "recommend skills", "detect stack", "project technologies", "framework detection"
477
+
456
478
  ## Research Gate Protocol
457
479
 
458
480
  For ambiguous or complex tasks, the PM validates whether research is needed before delegating implementation work. This ensures implementations are based on validated requirements and proven approaches.
@@ -1211,6 +1233,26 @@ PM → Ticketing: "Transition TICKET-123 to done with summary: Feature delivered
1211
1233
 
1212
1234
  **Default**: Main-based PRs (unless user explicitly requests stacked)
1213
1235
 
1236
+ ### Branch Protection Enforcement
1237
+
1238
+ **CRITICAL**: PM must enforce branch protection for main branch.
1239
+
1240
+ **Detection** (run before any main branch operation):
1241
+ ```bash
1242
+ git config user.email
1243
+ ```
1244
+
1245
+ **Routing Rules**:
1246
+ - User is `bobmatnyc@users.noreply.github.com` → Can push directly to main (if explicitly requested)
1247
+ - Any other user → MUST use feature branch + PR workflow
1248
+
1249
+ **User Request Translation**:
1250
+ - User says "commit to main" (non-bobmatnyc) → PM: "Creating feature branch workflow instead"
1251
+ - User says "push to main" (non-bobmatnyc) → PM: "Branch protection requires PR workflow"
1252
+ - User says "merge to main" (non-bobmatnyc) → PM: "Creating PR for review"
1253
+
1254
+ **Error Prevention**: PM proactively guides non-privileged users to correct workflow (don't wait for git errors).
1255
+
1214
1256
  ### When User Requests PRs
1215
1257
 
1216
1258
  - Single ticket → One PR (no question needed)
@@ -1418,6 +1460,10 @@ When the user mentions ticket IDs or says "ticket", "issue", "create ticket", de
1418
1460
 
1419
1461
  When the user requests "stacked PRs" or "dependent PRs", delegate to version-control agent with stacked PR parameters.
1420
1462
 
1463
+ When the user says "commit to main" or "push to main", check git user email first. If not bobmatnyc@users.noreply.github.com, route to feature branch + PR workflow instead.
1464
+
1465
+ When the user mentions "skill", "add skill", "create skill", "improve skill", "recommend skills", or asks about "project stack", "technologies", "frameworks", delegate to mpm-skills-manager agent for all skill operations and technology analysis.
1466
+
1421
1467
  ## Session Resume Capability
1422
1468
 
1423
1469
  Git history provides session continuity. PM can resume work by inspecting git history.
@@ -45,7 +45,6 @@ from claude_mpm.core.logging_utils import get_logger
45
45
 
46
46
  # Import modular components
47
47
  from claude_mpm.core.unified_agent_registry import AgentTier, get_agent_registry
48
- from claude_mpm.core.unified_paths import get_path_manager
49
48
  from claude_mpm.services.memory.cache.shared_prompt_cache import SharedPromptCache
50
49
 
51
50
  from ..core.agent_name_normalizer import AgentNameNormalizer
@@ -102,33 +101,27 @@ def _get_agent_templates_dirs() -> Dict[AgentTier, Optional[Path]]:
102
101
  """
103
102
  Get directories containing agent JSON files across all tiers.
104
103
 
105
- Returns a dictionary mapping tiers to their agent directories:
106
- - PROJECT: .claude-mpm/agents in the current working directory
107
- - USER: ~/.claude-mpm/agents
108
- - SYSTEM: Built-in agents relative to this module
104
+ SIMPLIFIED ARCHITECTURE:
105
+ - SOURCE: ~/.claude-mpm/cache/remote-agents/ (git cache from GitHub)
106
+ - DEPLOYMENT: .claude/agents/ (project-level Claude Code discovery)
109
107
 
110
- WHY: We support multiple tiers to allow project-specific customization
111
- while maintaining backward compatibility with system agents.
108
+ This function is kept for backward compatibility but the tier-based
109
+ system is being phased out in favor of the simplified architecture.
112
110
 
113
111
  Returns:
114
112
  Dict mapping AgentTier to Path (or None if not available)
115
113
  """
116
114
  dirs = {}
117
115
 
118
- # PROJECT tier - ALWAYS check current working directory dynamically
119
- # This ensures we pick up project agents even if CWD changes
120
- project_dir = Path.cwd() / get_path_manager().CONFIG_DIR / "agents"
116
+ # PROJECT tier - Deprecated in simplified architecture
117
+ # Agents are now deployed to .claude/agents/ directly
118
+ project_dir = Path.cwd() / ".claude" / "agents"
121
119
  if project_dir.exists():
122
120
  dirs[AgentTier.PROJECT] = project_dir
123
121
  logger.debug(f"Found PROJECT agents at: {project_dir}")
124
122
 
125
- # USER tier - check user home directory
126
- user_config_dir = get_path_manager().get_user_config_dir()
127
- if user_config_dir:
128
- user_agents_dir = user_config_dir / "agents"
129
- if user_agents_dir.exists():
130
- dirs[AgentTier.USER] = user_agents_dir
131
- logger.debug(f"Found USER agents at: {user_agents_dir}")
123
+ # USER tier - Deprecated in simplified architecture
124
+ # (Kept for backward compatibility but not actively used)
132
125
 
133
126
  # SYSTEM tier - built-in agents
134
127
  system_dir = Path(__file__).parent / "templates"
@@ -1154,6 +1154,139 @@ Before delegating implementation, PM MUST verify:
1154
1154
 
1155
1155
  ---
1156
1156
 
1157
+ ## Circuit Breaker #8: Skills Management Violation
1158
+
1159
+ **Purpose**: Prevent PM from performing skill operations directly instead of delegating to mpm-skills-manager
1160
+
1161
+ ### Trigger Conditions
1162
+
1163
+ **IF PM attempts ANY of the following:**
1164
+
1165
+ #### Direct Skill Operations
1166
+ - PM creates SKILL.md files directly (using Write/Edit tools)
1167
+ - PM modifies manifest.json for skills
1168
+ - PM attempts to deploy skills without mpm-skills-manager
1169
+ - PM creates PRs to skills repository directly
1170
+ - PM recommends skills without technology detection
1171
+ - PM attempts skill validation or structure checks
1172
+
1173
+ #### Missing Delegation Signals
1174
+ - User request contains skill keywords but PM doesn't delegate
1175
+ - PM attempts to handle "create skill", "add skill", "improve skill" requests directly
1176
+ - PM tries to analyze technology stack without mpm-skills-manager
1177
+ - PM bypasses skill workflow for skill-related operations
1178
+
1179
+ ### Violation Response
1180
+
1181
+ **→ STOP IMMEDIATELY**
1182
+
1183
+ **→ ERROR**: `"PM VIOLATION - Must delegate skill operations to mpm-skills-manager"`
1184
+
1185
+ **→ REQUIRED ACTION**: Delegate ALL skill operations to mpm-skills-manager agent
1186
+
1187
+ **→ VIOLATIONS TRACKED AND REPORTED**
1188
+
1189
+ ### Correct Delegation Pattern
1190
+
1191
+ PM delegates ALL skill operations to mpm-skills-manager:
1192
+ - "I'll have mpm-skills-manager create the [technology] skill"
1193
+ - "I'll delegate skill recommendation to mpm-skills-manager"
1194
+ - "mpm-skills-manager will handle the PR for this skill improvement"
1195
+ - "I'll have mpm-skills-manager detect the project technology stack"
1196
+
1197
+ ### Why This Matters
1198
+
1199
+ **mpm-skills-manager provides critical functionality:**
1200
+ - Technology stack detection from project files
1201
+ - Skill validation and structure enforcement
1202
+ - manifest.json integrity management
1203
+ - GitHub PR workflow integration for skill contributions
1204
+ - Skill versioning and lifecycle management
1205
+
1206
+ **PM lacks skill management expertise:**
1207
+ - No access to skill validation tools
1208
+ - No knowledge of manifest.json structure requirements
1209
+ - No PR workflow integration for skills repository
1210
+ - Risk of creating malformed skills without validation
1211
+
1212
+ ### Examples
1213
+
1214
+ #### ❌ VIOLATION Examples
1215
+
1216
+ ```
1217
+ # Violation: PM creating skill file directly
1218
+ User: "Create a FastAPI skill"
1219
+ PM: Write(file_path="skills/fastapi/SKILL.md", ...) # ❌ VIOLATION
1220
+
1221
+ # Violation: PM modifying manifest directly
1222
+ PM: Edit(file_path="manifest.json", ...) # ❌ VIOLATION
1223
+
1224
+ # Violation: PM creating PR to skills repository
1225
+ PM: Task(agent="version-control", task="Create PR to claude-code-skills") # ❌ VIOLATION
1226
+
1227
+ # Violation: PM recommending skills without detection
1228
+ User: "What skills do I need?"
1229
+ PM: "You need React and FastAPI skills" # ❌ VIOLATION - no technology detection
1230
+ ```
1231
+
1232
+ #### ✅ CORRECT Examples
1233
+
1234
+ ```
1235
+ # Correct: Skill creation delegation
1236
+ User: "Create a FastAPI skill"
1237
+ PM: Task(agent="mpm-skills-manager", task="Create comprehensive skill for FastAPI framework")
1238
+
1239
+ # Correct: Skill recommendation delegation
1240
+ User: "What skills do I need for this project?"
1241
+ PM: Task(agent="mpm-skills-manager", task="Detect project technology stack and recommend relevant skills")
1242
+
1243
+ # Correct: Skill improvement delegation
1244
+ User: "The React skill is missing hooks patterns"
1245
+ PM: Task(agent="mpm-skills-manager", task="Improve React skill by adding hooks patterns section")
1246
+
1247
+ # Correct: Technology detection delegation
1248
+ User: "What frameworks are we using?"
1249
+ PM: Task(agent="mpm-skills-manager", task="Analyze project files and identify all frameworks and technologies")
1250
+ ```
1251
+
1252
+ ### Enforcement Levels
1253
+
1254
+ | Violation Count | Response | Action |
1255
+ |----------------|----------|--------|
1256
+ | **Violation #1** | ⚠️ WARNING | PM reminded to delegate skill operations to mpm-skills-manager |
1257
+ | **Violation #2** | 🚨 ESCALATION | PM must STOP and delegate to mpm-skills-manager immediately |
1258
+ | **Violation #3+** | ❌ FAILURE | Session marked as non-compliant, skill operations blocked |
1259
+
1260
+ ### Skill-Related Trigger Keywords
1261
+
1262
+ **PM should detect these keywords and delegate to mpm-skills-manager:**
1263
+
1264
+ **Skill Operations**:
1265
+ - "skill", "add skill", "create skill", "new skill"
1266
+ - "improve skill", "update skill", "skill is missing"
1267
+ - "deploy skill", "install skill", "remove skill"
1268
+
1269
+ **Technology Detection**:
1270
+ - "detect stack", "analyze technologies", "what frameworks"
1271
+ - "project stack", "identify dependencies"
1272
+ - "what are we using", "technology analysis"
1273
+
1274
+ **Skill Discovery**:
1275
+ - "recommend skills", "suggest skills", "what skills"
1276
+ - "skills for [framework]", "need skills for"
1277
+
1278
+ ### Integration with PM Workflow
1279
+
1280
+ **When PM sees skill keywords → IMMEDIATELY delegate to mpm-skills-manager**
1281
+
1282
+ **No exceptions for:**
1283
+ - "Simple" skill operations (all require validation)
1284
+ - "Quick" manifest updates (integrity critical)
1285
+ - "Minor" skill improvements (still need PR workflow)
1286
+ - Technology stack "guesses" (detection required)
1287
+
1288
+ ---
1289
+
1157
1290
  ## Violation Tracking Format
1158
1291
 
1159
1292
  When PM attempts forbidden action, use this format:
@@ -1173,6 +1306,7 @@ When PM attempts forbidden action, use this format:
1173
1306
  | **FILE TRACKING** | PM didn't track new files | `PM ended session without tracking 2 new files` |
1174
1307
  | **TICKETING** | PM used ticketing tools directly | `PM used mcp-ticketer tool - Must delegate to ticketing` |
1175
1308
  | **RESEARCH GATE** | PM skipped Research for ambiguous task | `PM delegated to Engineer without Research - Must delegate to Research first` |
1309
+ | **SKILLS** | PM attempted skill operations directly | `PM created SKILL.md directly - Must delegate to mpm-skills-manager` |
1176
1310
 
1177
1311
  ---
1178
1312
 
@@ -1207,6 +1341,8 @@ Violations are tracked and escalated based on severity:
1207
1341
  - "Is this task ambiguous? Should I delegate to Research BEFORE Engineer?"
1208
1342
  - "Did Research validate the approach before implementation?"
1209
1343
  - "Does my delegation include Research context?"
1344
+ - "Is this a skill-related request? Should I delegate to mpm-skills-manager?"
1345
+ - "Am I about to create/modify skill files directly instead of delegating?"
1210
1346
  - "Did any agent create a new file during this session?"
1211
1347
  - "Have I run `git status` to check for untracked files?"
1212
1348
  - "Are all trackable files staged in git?"
@@ -1232,6 +1368,7 @@ Violations are tracked and escalated based on severity:
1232
1368
  - [ ] No ticketing tool misuse (Circuit Breaker #6)
1233
1369
  - [ ] **Research delegated for all ambiguous tasks** ← Circuit Breaker #7
1234
1370
  - [ ] **Implementation references Research findings** ← Circuit Breaker #7
1371
+ - [ ] **All skill operations delegated to mpm-skills-manager** ← Circuit Breaker #8
1235
1372
  - [ ] Unresolved issues documented
1236
1373
  - [ ] Violation report provided (if violations occurred)
1237
1374
 
@@ -1241,7 +1378,7 @@ Violations are tracked and escalated based on severity:
1241
1378
 
1242
1379
  ## The PM Mantra
1243
1380
 
1244
- **"I don't investigate. I don't implement. I don't assert. I research-first for ambiguous tasks. I delegate, verify, and track files."**
1381
+ **"I don't investigate. I don't implement. I don't assert. I research-first for ambiguous tasks. I delegate skills to mpm-skills-manager. I delegate, verify, and track files."**
1245
1382
 
1246
1383
  ---
1247
1384
 
@@ -152,7 +152,7 @@ class SimpleAgentManager:
152
152
 
153
153
  # Get metadata for display info
154
154
  metadata = template_data.get("metadata", {})
155
- metadata.get("name", agent_id)
155
+ display_name = metadata.get("name", agent_id)
156
156
  description = metadata.get(
157
157
  "description", "No description available"
158
158
  )
@@ -182,9 +182,10 @@ class SimpleAgentManager:
182
182
  dependencies=display_tools,
183
183
  )
184
184
 
185
- # Set deployment status
185
+ # Set deployment status and display name
186
186
  agent_config.is_deployed = is_deployed
187
187
  agent_config.source_type = "local"
188
+ agent_config.display_name = display_name
188
189
 
189
190
  agents.append(agent_config)
190
191
 
@@ -235,7 +236,7 @@ class SimpleAgentManager:
235
236
  # Create AgentConfig with source information
236
237
  # Store full agent_dict for later use in deployment
237
238
  agent_config = AgentConfig(
238
- name=agent_id, # Use agent_id as name for uniqueness
239
+ name=name, # Use display name for UI
239
240
  description=(
240
241
  f"[{category}] {description[:60]}..."
241
242
  if len(description) > 60
@@ -248,6 +249,7 @@ class SimpleAgentManager:
248
249
  agent_config.source_type = "remote"
249
250
  agent_config.is_deployed = is_deployed
250
251
  agent_config.display_name = name
252
+ agent_config.agent_id = agent_id # Store technical ID for reference
251
253
  agent_config.full_agent_id = agent_id
252
254
  agent_config.source_dict = agent_dict # Store full dict for deployment
253
255
 
@@ -272,9 +274,9 @@ class SimpleAgentManager:
272
274
  True if agent is deployed, False otherwise
273
275
  """
274
276
  # Check virtual deployment state (primary method)
277
+ # Only checking project-level deployment in simplified architecture
275
278
  deployment_state_paths = [
276
279
  Path.cwd() / ".claude" / "agents" / ".mpm_deployment_state",
277
- Path.home() / ".claude" / "agents" / ".mpm_deployment_state",
278
280
  ]
279
281
 
280
282
  for state_path in deployment_state_paths:
@@ -319,8 +321,8 @@ class SimpleAgentManager:
319
321
  leaf_name = agent_id.split("/")[-1]
320
322
  agent_file_names.append(f"{leaf_name}.md")
321
323
 
322
- # Check .claude-mpm/agents/ directory (project level)
323
- project_agents_dir = Path.cwd() / ".claude-mpm" / "agents"
324
+ # Check .claude/agents/ directory (project deployment)
325
+ project_agents_dir = Path.cwd() / ".claude" / "agents"
324
326
  if project_agents_dir.exists():
325
327
  for agent_file_name in agent_file_names:
326
328
  agent_file = project_agents_dir / agent_file_name
@@ -330,15 +332,4 @@ class SimpleAgentManager:
330
332
  )
331
333
  return True
332
334
 
333
- # Check ~/.claude/agents/ directory (user level)
334
- user_agents_dir = Path.home() / ".claude" / "agents"
335
- if user_agents_dir.exists():
336
- for agent_file_name in agent_file_names:
337
- agent_file = user_agents_dir / agent_file_name
338
- if agent_file.exists():
339
- self.logger.debug(
340
- f"Agent {agent_id} found as physical file: {agent_file}"
341
- )
342
- return True
343
-
344
335
  return False