--- name: dispatching-parallel-agents description: "Dispatch one agent per independent problem in parallel." version: 1.0.0 author: Hermes Agent (adapted from obra/superpowers) license: MIT platforms: [linux] metadata: hermes: tags: [parallel, delegation, subagent, dispatch] related_skills: [subagent-driven-development, agent-routing] --- # Dispatching Parallel Agents When you have multiple unrelated failures (different test files, different subsystems, different bugs), 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. ## When to Use - 3+ test files failing with different root causes - Multiple subsystems broken independently - Each problem can be understood without context from others - No shared state between investigations ## When NOT to Use - Failures are related (fix one might fix others) - Need to understand full system state - Agents would interfere with each other - Exploratory debugging (you don't know what's broken yet) ## The Pattern ### 1. Identify Independent Domains Group failures by what's broken: - File A tests: Tool approval flow - File B tests: Batch completion behavior - File C tests: Abort functionality Each domain is independent - fixing tool approval doesn't affect abort tests. ### 2. Create Focused Agent Tasks Each agent gets: - Specific scope: One test file or subsystem - Clear goal: Make these tests pass - Constraints: Don't change other code - Expected output: Summary of what you found and fixed ### 3. Dispatch in Parallel Issue all subagent dispatches in the same response — they run in parallel. Multiple dispatch calls in one response = parallel execution. One per response = sequential. ### 4. Review and Integrate When agents return: - Read each summary - Verify fixes don't conflict - Run full test suite - Integrate all changes ## Agent Prompt Structure Good agent prompts are: 1. Focused - One clear problem domain 2. Self-contained - All context needed to understand the problem 3. Specific about output - What should the agent return? Example: ``` Fix the 3 failing tests in src/agents/agent-tool-abort.test.ts: 1. "should abort tool with partial output capture" - expects 'interrupted at' in message 2. "should handle mixed completed and aborted tools" - fast tool aborted instead of completed 3. "should properly track pendingToolCount" - expects 3 results but gets 0 These are timing/race condition issues. Your task: 1. Read the test file and understand what each test verifies 2. Identify root cause - timing issues or actual bugs? 3. Fix by: - Replacing arbitrary timeouts with event-based waiting - Fixing bugs in abort implementation if found - Adjusting test expectations if testing changed behavior Do NOT just increase timeouts - find the real issue. Return: Summary of what you found and what you fixed. ``` ## Common Mistakes - Too broad: "Fix all the tests" - agent gets lost - No context: "Fix the race condition" - agent doesn't know where - No constraints: Agent might refactor everything - Vague output: "Fix it" - you don't know what changed ## Verification After agents return: 1. Review each summary - Understand what changed 2. Check for conflicts - Did agents edit same code? 3. Run full suite - Verify all fixes work together 4. Spot check - Agents can make systematic errors