From envoy
Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies
How this skill is triggered — by the user, by Claude, or both
Slash command
/envoy:dispatching-parallel-agentsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
When you have multiple unrelated failures or independent tasks, investigating them sequentially wastes time. Each investigation is independent and can happen in parallel.
When you have multiple unrelated failures or independent tasks, investigating them sequentially wastes time. Each investigation is independent and can happen in parallel.
Core principle: Dispatch one agent per independent problem domain. Let them work concurrently.
Announce at start: "I'm using envoy:dispatching-parallel-agents to handle these independent tasks."
Use when:
Don't use when:
Group tasks/failures by what's broken:
Each domain is independent - fixing UserService doesn't affect component tests.
Before dispatching agents, create a shared scratchpad for coordination:
const scratchpad = require('../../lib/agent-scratchpad');
const pad = scratchpad.createEmpty();
// Register each agent with their scope
scratchpad.registerAgent(pad, 'agent-backend', 'Fix UserService', ['backend/']);
scratchpad.registerAgent(pad, 'agent-frontend', 'Fix UserCard', ['frontend/src/components/']);
scratchpad.registerAgent(pad, 'agent-db', 'Fix migration', ['backend/Migrations/']);
scratchpad.save(pad);
Use lib/context-budget.js to right-size each agent's prompt:
const { classifyComplexity, buildAgentPrompt, checkBudget } = require('../../lib/context-budget');
const tier = classifyComplexity({
filesChanged: 2,
isMechanical: false,
});
// tier.modelTier → 'sonnet', tier.maxPromptLines → 60
Use buildAgentPrompt() for LITM-aware section ordering — objective and constraints at the start (high attention), reference material in the middle, acceptance criteria at the end (high attention):
const prompt = buildAgentPrompt({
objective: 'Fix the 3 failing tests in CoachServiceTests.cs',
constraints: 'Follow TDD. Do NOT change files outside backend/.',
context: scratchpadBriefing, // Shared state awareness
reference: stackMistakes, // Middle (low attention) — reference only
acceptance: 'All 3 tests pass. Return summary of root cause and fix.',
learnings: reminders,
});
Each agent gets:
Agent({
description: "Fix UserService.GetById null reference",
prompt: `Fix the failing tests in backend/tests/UserServiceTests.cs`
})
Agent({
description: "Fix UserCard component not rendering",
prompt: `Fix the failing tests in frontend/src/components/__tests__/UserCard.test.tsx`
})
Agent({
description: "Fix migration rollback issue",
prompt: `Fix the migration rollback issue in backend/Migrations/`
})
// All three run concurrently
Include scratchpad instructions in each prompt:
If you discover something that affects other agents' work (shared utility
changes, new dependencies, interface changes), write it to .envoy-scratchpad.json:
const scratchpad = require('../../lib/agent-scratchpad');
const pad = scratchpad.load();
scratchpad.post(pad, '<your-agent-id>', 'discovery', '<what you found>', ['affected/file.ts']);
scratchpad.save(pad);
When agents return:
scratchpad.getConflicts(pad)scratchpad.clear()Use lib/context-budget.js → buildAgentPrompt() for LITM-aware prompt assembly. Good agent prompts are:
Example prompt (using buildAgentPrompt):
const prompt = buildAgentPrompt({
objective: `Fix the 3 failing tests in CoachServiceTests.cs:
1. "GetCoachById_WithInvalidId_ReturnsNull" - expects null but throws exception
2. "CreateCoach_WithDuplicateEmail_ThrowsConflict" - wrong exception type
3. "UpdateCoach_WithNonExistent_ReturnsNotFound" - test timing out`,
constraints: `Follow TDD. Use envoy:systematic-debugging for root cause.
Do NOT modify files outside backend/Services/ and backend/Tests/.`,
context: scratchpad.formatBriefing(pad, 'agent-backend'),
acceptance: `All 3 tests pass. Return: summary of root cause and what you fixed.`,
});
Too broad: "Fix all the tests" - agent gets lost Specific: "Fix CoachServiceTests.cs" - focused scope
No context: "Fix the race condition" - agent doesn't know where Context: Paste the error messages and test names
No constraints: Agent might refactor everything Constraints: "Do NOT change production code" or "Fix tests only"
Works well with:
envoy:pickup — Parallel strategy for independent tasksenvoy:systematic-debugging — Each agent uses this for their domainLibraries used:
lib/agent-scratchpad.js — Coordination between parallel agentslib/context-budget.js — Right-size prompts per task complexity, LITM-aware orderingAfter parallel work:
envoy:review on combined changesenvoy:verification before claiming completerequire('../../lib/agent-scratchpad').clear()Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub rutgerdijk/envoy --plugin envoy-bundle-copilot-adapter