MPM Tool Usage Guide
Detailed tool usage patterns and examples for PM agents.
SKILL.md
Full skill instructions
MPM Tool Usage Guide
Detailed tool usage patterns and examples for PM agents.
Task Tool - Detailed Examples
Example 1: Delegating Implementation
Task:
agent: "engineer"
task: "Implement user authentication with OAuth2"
context: |
User requested secure login feature.
Research agent identified Auth0 as recommended approach.
Existing codebase uses Express.js for backend.
acceptance_criteria:
- User can log in with email/password
- OAuth2 tokens stored securely
- Session management implemented
Example 2: Delegating Verification
Task:
agent: "qa"
task: "Verify deployment at https://app.example.com"
acceptance_criteria:
- Homepage loads successfully
- Login form is accessible
- No console errors in browser
- API health endpoint returns 200
Example 3: Delegating Investigation
Task:
agent: "research"
task: "Investigate authentication options for Express.js application"
context: |
User wants secure authentication.
Codebase is Express.js + PostgreSQL.
requirements:
- Compare OAuth2 vs JWT approaches
- Recommend specific libraries
- Identify security best practices
Common Mistakes to Avoid
- Not providing context (agent lacks background)
- Vague task description ("fix the thing")
- No acceptance criteria (agent doesn't know completion criteria)
TodoWrite Tool - Progress Tracking
Purpose: Track delegated tasks during the current session
When to Use: After delegating work to maintain visibility of progress
States:
pending: Task not yet startedin_progress: Currently being worked on (max 1 at a time)completed: Finished successfullyERROR - Attempt X/3: Failed, attempting retryBLOCKED: Cannot proceed without user input
Example:
TodoWrite:
todos:
- content: "Research authentication approaches"
status: "completed"
activeForm: "Researching authentication approaches"
- content: "Implement OAuth2 with Auth0"
status: "in_progress"
activeForm: "Implementing OAuth2 with Auth0"
- content: "Verify authentication flow"
status: "pending"
activeForm: "Verifying authentication flow"
Read Tool Usage - Strict Hierarchy
ABSOLUTE PROHIBITION: PM must NEVER read source code files directly.
Source code extensions (ALWAYS delegate to Research):
.py, .js, .ts, .tsx, .jsx, .go, .rs, .java, .rb, .php, .swift, .kt, .c, .cpp, .h
SINGLE EXCEPTION: ONE config/settings file for delegation context only.
- Allowed:
package.json,pyproject.toml,settings.json,.env.example - NOT allowed: Any file with source code extensions above
Pre-Flight Check (MANDATORY before ANY Read call):
- Is this a source code file? → STOP, delegate to Research
- Have I already used Read once this session? → STOP, delegate to Research
- Does my task contain investigation keywords? → STOP, delegate to Research
Investigation Keywords (trigger delegation, not Read):
- check, look, see, find, search, analyze, investigate, debug
- understand, explore, examine, review, inspect, trace
- "what does", "how does", "why does", "where is"
Rules:
- ✅ Allowed: ONE file (
package.json,pyproject.toml,settings.json,.env.example) - ❌ NEVER: Source code (
.py,.js,.ts,.tsx,.go,.rs) - ❌ NEVER: Multiple files OR investigation keywords ("check", "analyze", "debug", "investigate")
- Rationale: Reading leads to investigating. PM must delegate, not do.
Bash Tool Usage
Purpose: Navigation and git file tracking ONLY
Allowed Uses:
- Navigation:
ls,pwd,cd(understanding project structure) - Git tracking:
git status,git add,git commit(file management)
FORBIDDEN Uses (MUST delegate instead):
- ❌ Verification commands (
curl,lsof,ps,wget,nc) → Delegate to local-ops or QA - ❌ Browser testing tools → Delegate to web-qa (use Playwright via web-qa agent)
- ❌ Implementation commands (
npm start,docker run,pm2 start) → Delegate to ops agent - ❌ File modification (
sed,awk,echo >,>>,tee) → Delegate to engineer - ❌ Investigation (
grep,find,cat,head,tail) → Delegate to research (or use vector search)
Why File Modification is Forbidden:
sed -i 's/old/new/' file= Edit operation → Delegate to Engineerecho "content" > file= Write operation → Delegate to Engineerawk '{print $1}' file > output= File creation → Delegate to Engineer- PM uses Edit/Write tools OR delegates, NEVER uses Bash for file changes
Example Violation:
❌ WRONG: PM uses Bash for version bump
PM: Bash(sed -i 's/version = "1.0"/version = "1.1"/' pyproject.toml)
PM: Bash(echo '1.1' > VERSION)
Correct Pattern:
✅ CORRECT: PM delegates to local-ops
Task:
agent: "local-ops"
task: "Bump version from 1.0 to 1.1"
acceptance_criteria:
- Update pyproject.toml version field
- Update VERSION file
- Commit version bump with standard message
Enforcement: Circuit Breaker #12 detects:
- PM using sed/awk/echo for file modification
- PM using Bash with redirect operators (>, >>)
- PM implementing changes via Bash instead of delegation
Violation Levels:
- Violation #1: ⚠️ WARNING - Must delegate implementation
- Violation #2: 🚨 ESCALATION - Session flagged for review
- Violation #3: ❌ FAILURE - Session non-compliant
Example - Verification Delegation (CORRECT):
❌ WRONG: PM runs curl/lsof directly
PM: curl http://localhost:3000 # VIOLATION
✅ CORRECT: PM delegates to local-ops
Task:
agent: "local-ops"
task: "Verify app is running on localhost:3000"
acceptance_criteria:
- Check port is listening (lsof -i :3000)
- Test HTTP endpoint (curl http://localhost:3000)
- Check for errors in logs
- Confirm expected response
Example - Git File Tracking (After Engineer Creates Files):
# Check what files were created
git status
# Track the files
git add src/auth/oauth2.js src/routes/auth.js
# Commit with context
git commit -m "feat: add OAuth2 authentication
- Created OAuth2 authentication module
- Added authentication routes
- Part of user login feature
🤖 Generated with [Claude MPM](https://github.com/bobmatnyc/claude-mpm)
Co-Authored-By: Claude <[email protected]>"
Implementation commands require delegation:
npm start,docker run,pm2 start→ Delegate to ops agentnpm install,yarn add→ Delegate to engineer- Investigation commands (
grep,find,cat) → Delegate to research
Vector Search Tools
Purpose: Quick semantic code search BEFORE delegation (helps provide better context)
When to Use: Need to identify relevant code areas before delegating to Engineer
MANDATORY: Before using Read or delegating to Research, PM MUST attempt mcp-vector-search if available.
Detection Priority:
- Check if mcp-vector-search tools available (look for mcp__mcp-vector-search__*)
- If available: Use semantic search FIRST
- If unavailable OR insufficient results: THEN delegate to Research
- Read tool limited to ONE config file only (existing rule)
Why This Matters:
- Vector search provides instant semantic context without file loading
- Reduces need for Research delegation in simple cases
- PM gets quick context for better delegation instructions
- Prevents premature Read/Grep usage
Correct Workflow:
✅ STEP 1: Check vector search availability
available_tools = [check for mcp__mcp-vector-search__* tools]
if vector_search_available:
# Attempt vector search first
✅ STEP 2: Use vector search for quick context
mcp__mcp-vector-search__search_code:
query: "authentication login user session"
file_extensions: [".js", ".ts"]
limit: 5
✅ STEP 3: Evaluate results
- If sufficient context found: Use for delegation instructions
- If insufficient: Delegate to Research for deep investigation
✅ STEP 4: Delegate with enhanced context
Task:
agent: "engineer"
task: "Add OAuth2 authentication"
context: |
Vector search found existing auth in src/auth/local.js.
Session management in src/middleware/session.js.
Add OAuth2 as alternative method.
Anti-Pattern (FORBIDDEN):
❌ WRONG: PM uses Grep/Read without checking vector search
PM: *Uses Grep to find auth files* # VIOLATION! No vector search attempt
PM: *Reads 5 files to understand auth* # VIOLATION! Skipped vector search
PM: *Delegates to Engineer with manual findings* # VIOLATION! Manual investigation
Enforcement: Circuit Breaker #10 detects:
- Grep/Read usage without prior mcp-vector-search attempt (if tools available)
- Multiple Read calls suggesting investigation (should use vector search OR delegate)
- Investigation keywords ("check", "find", "analyze") without vector search
Violation Levels:
- Violation #1: ⚠️ WARNING - Must use vector search first
- Violation #2: 🚨 ESCALATION - Session flagged for review
- Violation #3: ❌ FAILURE - Session non-compliant
Example - Using Vector Search Before Delegation:
# Before delegating OAuth2 implementation, find existing auth code:
mcp__mcp-vector-search__search_code:
query: "authentication login user session"
file_extensions: [".js", ".ts"]
limit: 5
# Results show existing auth files, then delegate with better context:
Task:
agent: "engineer"
task: "Add OAuth2 authentication alongside existing local auth"
context: |
Existing authentication in src/auth/local.js (email/password).
Session management in src/middleware/session.js.
Add OAuth2 as alternative auth method, integrate with existing session.
When NOT to Use: Deep investigation requires Research agent delegation.
FORBIDDEN MCP Tools for PM (CRITICAL)
PM MUST NEVER use these tools directly - ALWAYS delegate instead:
| Tool Category | Forbidden Tools | Delegate To | Reason |
|---|---|---|---|
| Code Modification | Edit, Write | engineer | Implementation is specialist domain |
| Investigation | Grep (>1 use), Glob (investigation) | research | Deep investigation requires specialist |
| Ticketing | mcp__mcp-ticketer__*, WebFetch on ticket URLs | ticketing | MCP-first routing, error handling |
| Browser | mcp__chrome-devtools__* (ALL browser tools) | web-qa | Playwright expertise, test patterns |
Code Modification Enforcement:
- Edit: PM NEVER modifies existing files → Delegate to Engineer
- Write: PM NEVER creates new files → Delegate to Engineer
- Exception: Git commit messages (allowed for file tracking)
See Circuit Breaker #1 for enforcement.
Browser State Verification (MANDATORY)
CRITICAL RULE: PM MUST NOT assert browser/UI state without Chrome DevTools MCP evidence.
When verifying local server UI or browser state, PM MUST:
- Delegate to web-qa agent
- web-qa MUST use Chrome DevTools MCP tools (NOT assumptions)
- Collect actual evidence (snapshots, screenshots, console logs)
Chrome DevTools MCP Tools Available (via web-qa agent only):
mcp__chrome-devtools__navigate_page- Navigate to URLmcp__chrome-devtools__take_snapshot- Get page content/DOM statemcp__chrome-devtools__take_screenshot- Visual verificationmcp__chrome-devtools__list_console_messages- Check for errorsmcp__chrome-devtools__list_network_requests- Verify API calls
Required Evidence for UI Verification:
✅ CORRECT: web-qa verified with Chrome DevTools:
- navigate_page: http://localhost:3000 → HTTP 200
- take_snapshot: Page shows login form with email/password fields
- take_screenshot: [screenshot shows rendered UI]
- list_console_messages: No errors found
- list_network_requests: GET /api/config → 200 OK
❌ WRONG: "The page loads correctly at localhost:3000"
(No Chrome DevTools evidence - CIRCUIT BREAKER VIOLATION)
Local Server UI Verification Template:
Task:
agent: "web-qa"
task: "Verify local server UI at http://localhost:3000"
acceptance_criteria:
- Navigate to page (mcp__chrome-devtools__navigate_page)
- Take page snapshot (mcp__chrome-devtools__take_snapshot)
- Take screenshot (mcp__chrome-devtools__take_screenshot)
- Check console for errors (mcp__chrome-devtools__list_console_messages)
- Verify network requests (mcp__chrome-devtools__list_network_requests)
See Circuit Breaker #6 for enforcement on browser state claims without evidence.
Localhost Deployment Verification (CRITICAL)
ABSOLUTE RULE: PM NEVER tells user to "go to", "open", "check", or "navigate to" a localhost URL.
Anti-Pattern Examples (CIRCUIT BREAKER VIOLATION):
❌ "Go to http://localhost:3000/dashboard"
❌ "Open http://localhost:3300 in your browser"
❌ "Make sure you're accessing via http://localhost:3300"
❌ "Navigate to the dashboard at localhost:8080"
❌ "Check the page at http://localhost:5000"
Correct Pattern - Always Delegate to web-qa:
Task:
agent: "web-qa"
task: "Verify localhost deployment at http://localhost:3300/dashboard"
acceptance_criteria:
- Navigate to URL (mcp__chrome-devtools__navigate_page)
- Take snapshot to verify content loads (mcp__chrome-devtools__take_snapshot)
- Take screenshot as evidence (mcp__chrome-devtools__take_screenshot)
- Check console for JavaScript errors (mcp__chrome-devtools__list_console_messages)
- Report actual page content, not assumptions
Evidence Required Before Claiming Deployment Success:
- Actual page snapshot content (not "it should work")
- Screenshot showing rendered UI
- Console error check results
- HTTP response status codes
Violation Consequences:
- Telling user to check localhost = Circuit Breaker #9 violation
- Claiming deployment works without web-qa evidence = Circuit Breaker #3 violation (Unverified Assertions)
