Quick reference for testing subagents with the evaluation framework.
Tests the subagent directly by forcing mode: primary.
# CLI
npm run eval:sdk -- --subagent=coder-agent
# Makefile
make test-subagent SUBAGENT=coder-agent
What happens:
mode: subagent)Use when:
Tests the subagent via its parent agent (real-world usage).
# CLI
npm run eval:sdk -- --subagent=coder-agent --delegate
# Makefile
make test-subagent-delegate SUBAGENT=coder-agent
What happens:
Use when:
--subagent=coder-agent # Simple task executor
--subagent=tester # Test authoring
--subagent=reviewer # Code review
--subagent=build-agent # Type check & build
--subagent=codebase-pattern-analyst # Pattern analysis
--subagent=task-manager # Feature breakdown
--subagent=documentation # Doc generation
--subagent=contextscout # Context search
--subagent=agent-generator # Agent creation
--subagent=command-creator # Command creation
--subagent=context-organizer # Context organization
--subagent=domain-analyzer # Domain analysis
--subagent=workflow-designer # Workflow design
--subagent=image-specialist # Image editing
# With npm
npm run eval:sdk -- --subagent=coder-agent --pattern="**/smoke-test.yaml"
# With make
make test-subagent SUBAGENT=coder-agent
# With npm
npm run eval:sdk -- --subagent=coder-agent --delegate --verbose
# With make
make test-subagent-delegate SUBAGENT=coder-agent
npm run eval:sdk -- --subagent=tester --model=anthropic/claude-3-5-sonnet-20241022
npm run eval:sdk -- --subagent=reviewer --verbose --debug
⚡ Standalone Test Mode
Subagent: coder-agent
Mode: Forced to 'primary' for direct testing
Note: In production, this subagent runs as 'mode: subagent'
Starting test runner...
[TestRunner] Forced mode: primary for standalone subagent testing
✅ Test runner started
🔗 Delegation Test Mode
Subagent: coder-agent
Parent: opencoder
Tests will verify delegation from opencoder → coder-agent
Starting test runner...
✅ Test runner started
$ npm run eval:sdk -- --subagent=unknown-agent
❌ Error: Unknown subagent 'unknown-agent'
📋 Available subagents:
Code subagents (parent: opencoder):
- coder-agent, tester, reviewer, build-agent, codebase-pattern-analyst
Core subagents (parent: openagent):
- task-manager, documentation, contextscout
System-builder subagents (parent: system-builder):
- agent-generator, command-creator, context-organizer
- domain-analyzer, workflow-designer
Utils subagents (parent: openagent):
- image-specialist
$ npm run eval:sdk -- --agent=openagent --subagent=coder-agent --delegate
❌ Error: Cannot use --delegate with --agent
Use either:
--subagent=NAME (standalone mode)
--subagent=NAME --delegate (delegation mode)
--agent=NAME (main agent)
$ npm run eval:sdk -- --subagent=missing-agent
❌ Error: Agent file not found: .opencode/agent/subagents/code/missing-agent.md
Available agents: openagent, opencoder, coder-agent, tester, ...
evals/agents/subagents/
└── coder-agent/
└── tests/
├── standalone/ # For --subagent mode
│ ├── 01-simple-task.yaml
│ └── 02-error-handling.yaml
└── delegation/ # For --subagent --delegate mode
├── 01-opencoder-delegates.yaml
└── 02-task-completion.yaml
id: coder-standalone-01
name: Coder Agent - Simple Function Creation
description: Test coder-agent creates a simple function
prompts:
- text: |
Create a simple add function in src/utils/math.ts
behavior:
mustUseTools: [write]
requiresApproval: true
expectedViolations:
- rule: approval-gate
shouldViolate: false
id: coder-delegation-01
name: OpenCoder Delegates to Coder Agent
description: Test opencoder correctly delegates to coder-agent
prompts:
- text: |
Create a simple utility function.
This is a simple task, delegate it to @coder-agent.
behavior:
mustUseTools: [task] # Must delegate
requiresApproval: true
expectedViolations:
- rule: delegation
shouldViolate: false
Questions? See evals/README.md or open an issue.