Initial: pi-skill — 68 skills, 43 extensions, 11 themes for Pi
This commit is contained in:
213
commands/commander/co-op.md
Normal file
213
commands/commander/co-op.md
Normal file
@@ -0,0 +1,213 @@
|
||||
---
|
||||
description: "Spawn up to 10 cooperative agents that actively help each other, share discoveries, request assistance, and spawn helpers"
|
||||
argument-hint: "[task description or 'pending'/'backlog' to process existing tasks]"
|
||||
allowed-tools: ["Task", "TaskOutput", "mcp__commander__commander_task", "mcp__commander__commander_session", "mcp__commander__commander_mailbox", "mcp__commander__commander_cooperation", "mcp__commander__commander_orchestration", "mcp__commander__commander_dependency", "Bash", "Read", "Edit"]
|
||||
---
|
||||
|
||||
# /co-op — Cooperative Agent Team Mode
|
||||
|
||||
Spawn up to **10 cooperative agents** that actively help each other through Commander's cooperation system. Unlike regular teams where agents work in isolation, `/co-op` agents share discoveries, request help when stuck, offer assistance when done early, and can request helper spawns for specialist work.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ COORDINATOR (You) │
|
||||
│ Monitor cooperation, handle spawns │
|
||||
└──────────────────────┬──────────────────────────────────────┘
|
||||
│ spawns up to 10
|
||||
┌──────────────┼──────────────┐
|
||||
▼ ▼ ▼
|
||||
┌───────────┐ ┌───────────┐ ┌───────────┐
|
||||
│ co-op-1 │ │ co-op-2 │ │ co-op-N │
|
||||
│ │◄─►│ │◄─►│ │
|
||||
│ share │ │ help │ │ discover │
|
||||
│ discover │ │ offer │ │ spawn │
|
||||
└───────────┘ └───────────┘ └───────────┘
|
||||
│ │ │
|
||||
└──────────────┼──────────────┘
|
||||
▼
|
||||
commander_cooperation
|
||||
(shared discoveries,
|
||||
help requests, team status)
|
||||
```
|
||||
|
||||
## Step 1: Determine Task Source
|
||||
|
||||
Parse `$ARGUMENTS` to determine the work:
|
||||
|
||||
**If processing existing tasks** (e.g., "pending", "backlog", "failed"):
|
||||
```
|
||||
mcp__commander__commander_task(operation="list", status="pending", limit=20)
|
||||
```
|
||||
|
||||
**If given a new task description**, decompose it into subtasks. Think about:
|
||||
- What are the independent work streams?
|
||||
- What dependencies exist?
|
||||
- What specialist knowledge is needed?
|
||||
- Aim for 3-10 subtasks that can be parallelized.
|
||||
|
||||
## Step 2: Create Task Group
|
||||
|
||||
```
|
||||
mcp__commander__commander_task(
|
||||
operation="group:create",
|
||||
group_name="co-op: [brief summary]",
|
||||
initiative_summary="[1-2 sentence summary of the cooperative effort]",
|
||||
total_waves=1,
|
||||
working_directory="[current working directory]",
|
||||
tasks=[
|
||||
{
|
||||
"description": "[subtask 1]",
|
||||
"task_prompt": "[detailed instructions including cooperative protocol]",
|
||||
"dependency_order": 0,
|
||||
"context": "[relevant context for this subtask]"
|
||||
},
|
||||
// ... more tasks
|
||||
]
|
||||
)
|
||||
```
|
||||
|
||||
## Step 3: Spawn Cooperative Agents (Up to 10)
|
||||
|
||||
For each task, spawn a background agent with the **cooperative protocol** baked in.
|
||||
|
||||
**IMPORTANT**: Spawn ALL agents in a SINGLE response using multiple Task() calls:
|
||||
|
||||
```
|
||||
Task(
|
||||
subagent_type="general-purpose",
|
||||
run_in_background=true,
|
||||
prompt="You are co-op-agent-1, a COOPERATIVE agent in /co-op team mode.
|
||||
|
||||
## Your Task
|
||||
- Task ID: {task_id}
|
||||
- Description: {description}
|
||||
- Working Directory: {working_directory}
|
||||
- Group ID: {group_id}
|
||||
- Your Agent Name: co-op-agent-1
|
||||
|
||||
## Sibling Tasks (your teammates):
|
||||
{list of other tasks and their descriptions}
|
||||
|
||||
## COOPERATIVE PROTOCOL
|
||||
|
||||
### 1. Claim your task
|
||||
mcp__commander__commander_task(operation='claim', task_id={task_id}, agent_name='co-op-agent-1', model_id='claude-sonnet-4-20250514')
|
||||
|
||||
### 2. Check in with team FIRST
|
||||
mcp__commander__commander_cooperation(operation='team:status', group_id={group_id})
|
||||
mcp__commander__commander_cooperation(operation='team:discoveries', group_id={group_id})
|
||||
mcp__commander__commander_mailbox(operation='inbox', agent_name='co-op-agent-1')
|
||||
|
||||
### 3. Do your work — and SHARE discoveries as you go
|
||||
When you find something useful (file locations, API patterns, config, architecture insights):
|
||||
mcp__commander__commander_cooperation(operation='share:discovery', from_agent='co-op-agent-1', group_id={group_id}, body='...', discovery_type='...', tags=['...'])
|
||||
|
||||
### 4. Ask for help if stuck (after 2+ failed attempts)
|
||||
mcp__commander__commander_cooperation(operation='help:request', from_agent='co-op-agent-1', task_id={task_id}, body='Stuck on: ...', urgency='high')
|
||||
|
||||
### 5. When done, check if teammates need help
|
||||
mcp__commander__commander_cooperation(operation='team:help_needed', group_id={group_id})
|
||||
If someone needs help, offer:
|
||||
mcp__commander__commander_cooperation(operation='help:offer', from_agent='co-op-agent-1', to_agent='[stuck agent]', body='I can help with...')
|
||||
|
||||
### 6. Complete your task
|
||||
mcp__commander__commander_task(operation='complete', task_id={task_id}, result='[summary]')
|
||||
|
||||
### 7. Send status update
|
||||
mcp__commander__commander_mailbox(operation='send', from_agent='co-op-agent-1', to_agent='commander', body='Completed: [summary]', message_type='worker_done', task_id={task_id}, group_id={group_id})
|
||||
|
||||
### 8. Cleanup
|
||||
mcp__commander__commander_session(operation='cleanup:self')
|
||||
|
||||
## Rules
|
||||
- ALWAYS check team discoveries before starting work
|
||||
- Share discoveries IMMEDIATELY — don't hoard knowledge
|
||||
- Ask for help after 2 failed attempts
|
||||
- Offer help when you finish early
|
||||
- Keep status updates concise"
|
||||
)
|
||||
```
|
||||
|
||||
## Step 4: Monitor Cooperation
|
||||
|
||||
While agents work, periodically check:
|
||||
|
||||
```
|
||||
# Team-wide status
|
||||
mcp__commander__commander_cooperation(operation="team:status", group_id={group_id})
|
||||
|
||||
# Any open help requests needing intervention
|
||||
mcp__commander__commander_cooperation(operation="team:help_needed", group_id={group_id})
|
||||
|
||||
# Check agent progress
|
||||
TaskOutput(task_id="{agent_id}", block=false)
|
||||
```
|
||||
|
||||
### Handle Spawn Requests
|
||||
|
||||
If an agent sends a `spawn:request`, create and spawn the helper:
|
||||
|
||||
```
|
||||
# Create helper task
|
||||
mcp__commander__commander_task(
|
||||
operation="create",
|
||||
description="[helper task from spawn request]",
|
||||
working_directory="[cwd]",
|
||||
context="Helper spawned by {requesting_agent}: {reason}"
|
||||
)
|
||||
|
||||
# Spawn helper agent
|
||||
Task(
|
||||
subagent_type="general-purpose",
|
||||
run_in_background=true,
|
||||
prompt="You are co-op-helper-{N}, spawned to help {requesting_agent}.
|
||||
Their request: {spawn_body}
|
||||
Group ID: {group_id}
|
||||
|
||||
1. Check team discoveries first
|
||||
2. Do the requested work
|
||||
3. Share your results via share:context
|
||||
4. Notify the requesting agent via mailbox
|
||||
5. Cleanup your session"
|
||||
)
|
||||
```
|
||||
|
||||
### Handle Blockers
|
||||
|
||||
If a blocker is reported, try to resolve it or escalate to the user.
|
||||
|
||||
## Step 5: Report Summary
|
||||
|
||||
When all agents complete, report:
|
||||
|
||||
```
|
||||
## /co-op Summary
|
||||
|
||||
### Results
|
||||
- **Tasks**: X completed, Y failed out of Z total
|
||||
- **Agents**: N cooperative agents spawned
|
||||
- **Helpers**: M helper agents spawned on-demand
|
||||
|
||||
### Cooperation Activity
|
||||
- **Discoveries shared**: D findings (list highlights)
|
||||
- **Help interactions**: H (who helped whom)
|
||||
- **Spawn requests**: S (what specialists were needed)
|
||||
|
||||
### Key Discoveries
|
||||
1. [Most impactful discovery]
|
||||
2. [Second discovery]
|
||||
...
|
||||
|
||||
### Execution Time
|
||||
Total: Xm Ys
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- **Maximum 10 agents** at once (configurable)
|
||||
- You are the **coordinator** — do NOT do the work yourself
|
||||
- Use `TaskOutput(block=true)` only when all agents are running and you need to wait
|
||||
- Discoveries persist in the database — future agents can access them
|
||||
- The cooperation protocol is what makes `/co-op` special — enforce it
|
||||
Reference in New Issue
Block a user