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.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/PM_INSTRUCTIONS.md +46 -0
- claude_mpm/agents/agent_loader.py +10 -17
- claude_mpm/agents/templates/circuit-breakers.md +138 -1
- claude_mpm/cli/commands/agent_state_manager.py +8 -17
- claude_mpm/cli/commands/configure.py +1046 -149
- claude_mpm/cli/commands/configure_agent_display.py +13 -6
- claude_mpm/cli/commands/mpm_init/core.py +158 -1
- claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
- claude_mpm/cli/commands/mpm_init/prompts.py +280 -0
- claude_mpm/cli/commands/summarize.py +413 -0
- claude_mpm/cli/executor.py +8 -0
- claude_mpm/cli/parsers/base_parser.py +5 -0
- claude_mpm/cli/startup.py +60 -53
- claude_mpm/commands/{mpm-ticket-organize.md → mpm-organize.md} +4 -5
- claude_mpm/config/agent_sources.py +27 -0
- claude_mpm/core/framework/loaders/agent_loader.py +8 -5
- claude_mpm/core/socketio_pool.py +3 -3
- claude_mpm/core/unified_agent_registry.py +5 -15
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.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/correlation_manager.py +60 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +35 -2
- claude_mpm/hooks/claude_hooks/hook_handler.py +4 -0
- 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/claude_hooks/services/connection_manager.py +4 -0
- claude_mpm/scripts/launch_monitor.py +93 -13
- claude_mpm/services/agents/agent_recommendation_service.py +279 -0
- claude_mpm/services/agents/deployment/agent_template_builder.py +3 -2
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +322 -53
- claude_mpm/services/agents/git_source_manager.py +20 -0
- claude_mpm/services/agents/sources/git_source_sync_service.py +8 -1
- claude_mpm/services/agents/toolchain_detector.py +6 -5
- claude_mpm/services/analysis/__init__.py +11 -1
- claude_mpm/services/analysis/clone_detector.py +1030 -0
- claude_mpm/services/command_deployment_service.py +0 -2
- claude_mpm/services/event_bus/config.py +3 -1
- claude_mpm/services/monitor/daemon.py +9 -2
- claude_mpm/services/monitor/daemon_manager.py +39 -3
- claude_mpm/services/monitor/server.py +225 -19
- claude_mpm/services/socketio/event_normalizer.py +15 -1
- claude_mpm/services/socketio/server/core.py +160 -21
- claude_mpm/services/version_control/git_operations.py +103 -0
- claude_mpm/utils/agent_filters.py +17 -44
- {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.3.dist-info}/METADATA +1 -77
- {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.3.dist-info}/RECORD +59 -114
- {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.3.dist-info}/entry_points.txt +0 -2
- claude_mpm/dashboard/analysis_runner.py +0 -455
- claude_mpm/dashboard/index.html +0 -13
- claude_mpm/dashboard/open_dashboard.py +0 -66
- claude_mpm/dashboard/static/css/activity.css +0 -1958
- claude_mpm/dashboard/static/css/connection-status.css +0 -370
- claude_mpm/dashboard/static/css/dashboard.css +0 -4701
- claude_mpm/dashboard/static/js/components/activity-tree.js +0 -1871
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
- claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
- claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
- claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
- claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
- claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
- claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
- claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
- claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
- claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
- claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
- claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
- claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
- claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
- claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
- claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
- claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
- claude_mpm/dashboard/static/js/connection-manager.js +0 -536
- claude_mpm/dashboard/static/js/dashboard.js +0 -1914
- claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
- claude_mpm/dashboard/static/js/socket-client.js +0 -1474
- claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
- claude_mpm/dashboard/static/socket.io.min.js +0 -7
- claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
- claude_mpm/dashboard/templates/code_simple.html +0 -153
- claude_mpm/dashboard/templates/index.html +0 -606
- claude_mpm/dashboard/test_dashboard.html +0 -372
- claude_mpm/scripts/mcp_server.py +0 -75
- claude_mpm/scripts/mcp_wrapper.py +0 -39
- claude_mpm/services/mcp_gateway/__init__.py +0 -159
- claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
- claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
- claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
- claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
- claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
- claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
- claude_mpm/services/mcp_gateway/core/base.py +0 -312
- claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
- claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
- claude_mpm/services/mcp_gateway/core/process_pool.py +0 -977
- claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
- claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
- claude_mpm/services/mcp_gateway/main.py +0 -589
- claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
- claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
- claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
- claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -414
- claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
- claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -712
- claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
- claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
- claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
- claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -555
- claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
- claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
- claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
- {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.3.dist-info}/WHEEL +0 -0
- {claude_mpm-5.1.9.dist-info → claude_mpm-5.4.3.dist-info}/licenses/LICENSE +0 -0
- {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
|
+
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
|
-
|
|
106
|
-
-
|
|
107
|
-
-
|
|
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
|
-
|
|
111
|
-
|
|
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 -
|
|
119
|
-
#
|
|
120
|
-
project_dir = Path.cwd() /
|
|
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 -
|
|
126
|
-
|
|
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=
|
|
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
|
|
323
|
-
project_agents_dir = Path.cwd() / ".claude
|
|
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
|