Execute multiple Claude Code agents in parallel using the cpo CLI tool. Use when running parallel tasks, monitoring execution, or understanding the execution workflow.
Execute multiple Claude Code agents in parallel using the cpo CLI tool. Use when running parallel tasks, monitoring execution, or understanding the execution workflow.
/plugin marketplace add jpoutrin/product-forge/plugin install product-design@product-forge-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Execute multiple Claude Code agents in parallel using the cpo (Claude Parallel Orchestrator) CLI.
The cpo tool handles all execution complexity: git worktrees, wave dependencies, and progress monitoring.
pip install claude-parallel-orchestrator
# or
pipx install claude-parallel-orchestrator
| Command | Description |
|---|---|
cpo validate <dir> | Validate manifest structure and prompts |
cpo run <dir> | Execute all waves (respects dependencies) |
cpo status <dir> | Check execution status |
# 1. Validate before execution
cpo validate parallel/TS-0042-inventory-system/
# 2. Execute parallel agents
cpo run parallel/TS-0042-inventory-system/
# 3. Monitor progress (in another terminal)
cpo status parallel/TS-0042-inventory-system/
cpo run Doeslogs/ and report.jsonTasks execute in waves based on dependencies:
Wave 1: task-001, task-002, task-003 (parallel - no deps)
↓ wait for completion
Wave 2: task-004, task-005 (parallel - depend on Wave 1)
↓ wait for completion
Wave 3: task-006 (sequential - depend on Wave 2)
Each wave waits for all tasks in the previous wave to complete before starting.
Agents run with --dangerously-skip-permissions because they're isolated in worktrees:
For programmatic orchestration in CI/CD or custom workflows:
// orchestrator.ts
import { ClaudeAgent } from '@anthropic-ai/claude-agent-sdk';
import { readdir, readFile } from 'fs/promises';
import { join } from 'path';
async function runParallelTasks(parallelDir: string) {
const tasksDir = join(parallelDir, 'tasks');
const contextFile = join(parallelDir, 'context.md');
const context = await readFile(contextFile, 'utf-8');
const tasks = await readdir(tasksDir);
const agents = tasks
.filter(f => f.endsWith('.md'))
.map(async (taskFile) => {
const taskPath = join(tasksDir, taskFile);
const taskContent = await readFile(taskPath, 'utf-8');
const agent = new ClaudeAgent({
systemPrompt: `You are implementing a task.
Context: ${context}
Follow contracts in ${parallelDir}/contracts/.`,
});
return agent.run(`Execute this task:\n\n${taskContent}`);
});
const results = await Promise.all(agents);
return results;
}
runParallelTasks('parallel/TS-0042-inventory-system');
Agents signal completion by creating a marker file:
touch .claude-task-complete
This enables:
cpo to detect task completion| Method | Best For | Parallelism |
|---|---|---|
| cpo CLI | Standard workflow, most users | True parallel with wave deps |
| Claude Code SDK | CI/CD, custom orchestration | Fully programmable |
cpo validate before cpo runlogs/task-*.log for debugging/parallel-integrate after all tasks completeAfter execution:
parallel/TS-0042-inventory-system/
logs/
task-001.log # Agent output
task-002.log
...
report.json # Execution summary
integration-report.md # Generated by /parallel-integrate
parallel-agents skill: Overall workflow and directory structureparallel-decompose skill: Creating tasks before executionparallel-prompt-generator skill: Generate prompts from task specsagent-tools skill: Tool permissions (for granular control)/parallel-integrate command: Post-execution verificationThis skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.