AI agent skill · by @bobmatnyc
Mpm Agents Skills
Agent and skill deployment mechanics for MPM system architecture
Archived 2026-10-23 · Source updated 2026-08-31. Check the original repository for the latest version.
SKILL.md instructions
# MPM Agents & Skills Deployment Mechanics
**Category:** Core Knowledge/PM Education
**Purpose:** Explain agent and skill deployment mechanics to PM
**Triggers:** When PM needs to understand system architecture
## Overview
This skill provides comprehensive understanding of how Claude MPM's agents and skills actually work under the hood. Essential for PM decision-making about delegation, configuration, and troubleshooting.
## Agent Deployment Mechanics
### Where Agents Live
**Agent Sources (Priority Order):**
1. **Project agents** - `.claude/agents/` (highest priority)
2. **User agents** - `~/.claude-mpm/agents/` (user-created)
3. **System agents** - Built-in MPM templates (cached)
4. **Git sources** - Remote repositories (configured)
**Directory Structure:**
```
.claude/
└── agents/
├── engineer.md # Claude Code expects flat .md files
├── researcher.md
└── qa.md
.claude-mpm/
└── cache/
└── agents/ # Git sources cached here
├── engineer.md
└── templates/
```
### Agent Discovery & Loading Process
**1. Cache Sync (Git Sources)**
- `GitSourceSyncService` downloads from configured repositories
- Cached in `.claude-mpm/cache/agents/`
- Default source: `github.com/bobmatnyc/claude-mpm-agents`
**2. Agent Deployment**
- `AgentDeploymentService.deploy_agents()` orchestrates deployment
- Copies from cache to `.claude/agents/` (Claude Code expects this location)
- Flattens nested Git structure to flat directory
- Version checking prevents unnecessary redeployment
**3. Multi-Source Resolution**
- When multiple sources have same agent, highest version wins
- User agents override system agents (by design)
- Project agents override everything (local customization)
### Agent Configuration Relationships
**`configuration.yaml` (User Preferences):**
```yaml
agents:
auto_discover: true # Find agents automatically
enabled: ["engineer", "qa"] # Specific agents to deploy
excluded_agents: ["debug"] # Agents to skip/remove
precedence: ["project", "user", "system"] # Resolution order
```
**`auto_config.yaml` (Deployment Metadata):**
```yaml
# Generated by auto-configure process
toolchain_detected: python
recommended_agents: ["engineer", "testing"]
last_scan: "2024-02-25T10:30:00Z"
deployment_version: "5.9.32"
```
**Key Distinction:**
- `configuration.yaml` = User choices and preferences
- `auto_config.yaml` = System-generated analysis and metadata
### Agent Lifecycle
**Creation:**
1. Template exists in source (Git repo or bundled)
2. `AgentTemplateBuilder` combines base_agent.md + template
3. Frontmatter added with version, source info
4. Written to `.claude/agents/` as markdown file
**Version Management:**
- Each agent has version in frontmatter
- `AgentVersionManager` compares template vs deployed versions
- Updates only when source version is newer
- Force rebuild bypasses version check
**Cleanup:**
- Excluded agents removed from `.claude/agents/`
- Orphaned agents (no longer in sources) cleaned up
- Legacy YAML format converted to Markdown
## Skill Deployment Mechanics
### Where Skills Live
**Skill Sources:**
1. **Deployed skills** - `~/.claude/skills/` (Claude Code scans here)
2. **Cached skills** - `.claude-mpm/cache/skills/system/`
3. **Bundled skills** - Built into MPM installation
4. **Git sources** - Remote skill repositories
**Structure Transformation:**
```
# Git Repository Structure (Nested):
collaboration/
dispatching-parallel-agents/SKILL.md
brainstorming/SKILL.md
# Deployed Structure (Flat):
~/.claude/skills/
├── collaboration-dispatching-parallel-agents/SKILL.md
├── collaboration-brainstorming/SKILL.md
```
### Skill Discovery & Deployment
**1. Git Source Sync**
- `GitSkillSourceManager` handles remote skill sources
- Skills cached with nested structure preserved
- Manifest files track skill metadata
**2. Skill Deployment**
- `GitSkillSourceManager.deploy_skills()` flattens to Claude Code structure
- Each nested path becomes hyphen-separated name
- SKILL.md files copied to `~/.claude/skills/skill-name/SKILL.md`
**3. Selective Deployment**
- Agent requirements drive which skills to deploy
- Unused skills removed during deployment (cleanup)
- `.mpm-deployed-skills.json` tracks deployment index
### Skill Configuration
**No Direct Configuration:**
- Skills don't have user configuration like agents
- Deployed based on agent requirements analysis
- Agent templates specify needed skills in metadata
**Deployment Tracking:**
```json
// ~/.claude/skills/.mpm-deployed-skills.json
{
"deployed_skills": {
"systematic-debugging": {
"collection": "claude-mpm-skills",
"deployed_at": "2024-02-25T10:30:00Z"
}
},
"last_sync": "2024-02-25T10:30:00Z"
}
```
## Configuration File Relationships
### Primary Configuration Files
**1. `.claude-mpm/configuration.yaml`**
- **Purpose:** User preferences and settings
- **Contains:**
- Agent enable/disable lists
- Logging preferences
- Hook settings
- Orchestration mode
- API provider config
- **When modified:** By user via `claude-mpm configure` or manual editing
- **Scope:** Per-project or global
**2. `.claude-mpm/auto_config.yaml`**
- **Purpose:** Deployment metadata and analysis results
- **Contains:**
- Detected toolchain information
- Recommended agents based on analysis
- Last scan timestamps
- Deployment version tracking
- **When modified:** By `claude-mpm auto-configure` process
- **Scope:** Generated, not user-editable
**3. `.claude-mpm/config/agent_sources.yaml`**
- **Purpose:** Define where to find agent templates
- **Contains:**
- Git repository URLs and settings
- Source priority and enabled status
- System repo disable flag
- **When modified:** By user when adding custom agent sources
- **Scope:** Global configuration
### Configuration Hierarchy
**Loading Order:**
1. Built-in defaults
2. Global config (`~/.claude-mpm/configuration.yaml`)
3. Project config (`./claude-mpm/configuration.yaml`)
4. Environment variables
5. Command-line arguments (highest priority)
**Precedence Rules:**
- Project configs override global configs
- Explicit user settings override auto-detected settings
- Command-line flags override everything
## Startup Process Deep Dive
### 1. Configuration Loading
```python
# ConfigService loads in this order:
def load_configuration():
config = DefaultConfig()
config.merge(load_global_config()) # ~/.claude-mpm/
config.merge(load_project_config()) # ./.claude-mpm/
config.merge(environment_variables()) # CLAUDE_MPM_*
return config
```
### 2. Agent Deployment
```python
def startup_agent_deployment():
# 1. Sync git sources to cache
git_sync_service.sync_agents()
# 2. Deploy enabled agents to .claude/agents/
deployment_service.deploy_agents(
deployment_mode="update", # Skip unchanged
config=loaded_config
)
# 3. Remove excluded agents
reconciler.remove_excluded_agents()
```
### 3. Skill Deployment
```python
def startup_skill_deployment():
# 1. Analyze deployed agents for skill requirements
required_skills = agent_analyzer.get_required_skills()
# 2. Deploy only required skills (with cleanup)
skill_manager.deploy_skills(
skill_filter=required_skills, # Selective deployment
force=False
)
```
### 4. Service Initialization
- MCP servers started based on configuration
- Hook delegation system initialized
- Network services (if enabled) started
- Logging and monitoring setup
## Commands vs Skills: When to Use What
### CLI Commands
**Use for:**
- Configuration management (`claude-mpm configure`)
- System operations (`claude-mpm init`, `claude-mpm status`)
- Deployment management (`claude-mpm agents deploy`)
- Troubleshooting (`claude-mpm doctor`)
**Characteristics:**
- Direct system access
- Stateful operations
- Administrative functions
- Can modify configuration files
### Skills (via `/skill-name`)
**Use for:**
- Workflow guidance and patterns
- Knowledge queries and education
- Complex multi-step procedures
- Context-aware assistance
**Characteristics:**
- Read-only operations (mostly)
- Stateless knowledge sharing
- User guidance and education
- Cannot modify system configuration
**Mapping Examples:**
- `claude-mpm configure` ↔ `/mpm-config` (skill explains configuration)
- `claude-mpm agents deploy` ↔ No skill equivalent (system operation)
- `claude-mpm status` ↔ `/mpm-status` (skill explains status interpretation)
## Common PM Misconceptions (Corrected)
### ❌ "Auto-configure creates agent files"
**✅ Truth:** Auto-configure only updates `auto_config.yaml` with recommendations. Actual deployment happens during `claude-mpm run` or explicit deploy commands.
### ❌ "Configuration.yaml controls agent deployment directly"
**✅ Truth:** It specifies preferences. The deployment service reads these preferences and deploys accordingly. The files are still copied from cache to `.claude/agents/`.
### ❌ "Skills are configured like agents"
**✅ Truth:** Skills have no user configuration. They're deployed based on agent requirements analysis, not user preferences.
### ❌ "All agents from Git sources are deployed"
**✅ Truth:** Only enabled agents (after filtering by excluded_agents list) are deployed. Multi-source resolution happens first.
### ❌ ".claude/ directory is just cache"
**✅ Truth:** `.claude/` is the active deployment directory that Claude Code scans. `.claude-mpm/cache/` is the actual cache.
## Decision Trees for PM
### Should I deploy this agent?
```
Is agent needed for current project? → Yes
├─ Is it in enabled list or auto_discover=true? → Yes
│ ├─ Is it in excluded_agents list? → No
│ │ └─ ✅ Deploy via configuration
│ └─ Yes → ❌ Remove from excluded list first
└─ No → ❌ Add to excluded_agents to clean up
```
### How to troubleshoot deployment issues?
```
Agent not appearing in .claude/agents/?
├─ Check cache: `.claude-mpm/cache/agents/` exists? → No
│ └─ Run: claude-mpm agents sync
├─ Check config: In excluded_agents list? → Yes
│ └─ Run: claude-mpm configure (remove exclusion)
└─ Check logs: deployment_service.log for errors
```
### Should I use command or skill?
```
Need to change system state? → Yes
└─ Use CLI command (claude-mpm ...)
Need guidance or information? → Yes
└─ Use skill (/skill-name)
Need to understand how something works? → Yes
└─ Use this skill (/mpm-agents-skills)
```
## Quick Reference
### Key Directories
- **`.claude/agents/`** - Active agent deployment (Claude Code scans)
- **`.claude/skills/`** - Active skill deployment (Claude Code scans)
- **`.claude-mpm/cache/`** - Git sources cache
- **`.claude-mpm/configuration.yaml`** - User preferences
- **`.claude-mpm/auto_config.yaml`** - System metadata
### Key Services
- **`GitSourceSyncService`** - Downloads and caches remote agents
- **`AgentDeploymentService`** - Deploys agents to .claude/agents/
- **`GitSkillSourceManager`** - Handles skill sync and deployment
- **`DeploymentReconciler`** - Ensures deployed state matches config
### Essential Commands
- **`claude-mpm agents sync`** - Update cache from Git sources
- **`claude-mpm agents deploy --force`** - Force redeploy all agents
- **`claude-mpm configure`** - Interactive configuration management
- **`claude-mpm doctor`** - Diagnose deployment issues
## Remember
- **Deployment ≠ Configuration**: Configuration expresses preferences, deployment implements them
- **Cache ≠ Active**: Cache stores templates, .claude/ directories are active deployments
- **Skills follow agents**: Skill deployment driven by agent requirements, not user config
- **Precedence matters**: Project > User > System for both agents and configuration
- **Version awareness**: System only updates when source versions are newer (unless forced)
This architecture ensures clean separation between user intent (configuration) and system state (deployment) while maintaining flexibility for different deployment scenarios.