Ensemble Problem Solving
Generate multiple solutions in parallel by spawning 3 subagents with different approaches, then evaluate and select the best result.
When to Use
Activation phrases:
- •"Give me options for..."
- •"What's the best way to..."
- •"Explore different approaches..."
- •"I want to see alternatives..."
- •"Compare approaches for..."
- •"Which approach should I use..."
Good candidates:
- •Architecture decisions with trade-offs
- •Code generation with multiple valid implementations
- •API design with different philosophies
- •Naming, branding, documentation style
- •Refactoring strategies
- •Algorithm selection
Skip ensemble for:
- •Simple lookups or syntax questions
- •Single-cause bug fixes
- •File operations, git commands
- •Deterministic configuration changes
- •Tasks with one obvious solution
What It Does
- •Analyzes the task to determine if ensemble approach is valuable
- •Generates 3 distinct prompts using appropriate diversification strategy
- •Spawns 3 parallel subagents to develop solutions independently
- •Evaluates all solutions using weighted criteria
- •Returns the best solution with explanation and alternatives summary
Approach
Step 1: Classify Task Type
Determine which category fits:
- •Code Generation: Functions, classes, APIs, algorithms
- •Architecture/Design: System design, data models, patterns
- •Creative: Writing, naming, documentation
Step 2: Invoke Ensemble Orchestrator
code
Task tool with: - subagent_type: 'ensemble-orchestrator' - description: 'Generate and evaluate 3 parallel solutions' - prompt: [User's original task with full context]
The orchestrator handles:
- •Prompt diversification
- •Parallel execution
- •Solution evaluation
- •Winner selection
Step 3: Present Result
The orchestrator returns:
- •The winning solution (in full)
- •Evaluation scores for all 3 approaches
- •Why the winner was selected
- •When alternatives might be preferred
Diversification Strategies
For Code (Constraint Variation):
| Approach | Focus |
|---|---|
| Simplicity | Minimal code, maximum readability |
| Performance | Efficient, optimized |
| Extensibility | Clean abstractions, easy to extend |
For Architecture (Approach Variation):
| Approach | Focus |
|---|---|
| Top-down | Requirements → Interfaces → Implementation |
| Bottom-up | Primitives → Composition → Structure |
| Lateral | Analogies from other domains |
For Creative (Persona Variation):
| Approach | Focus |
|---|---|
| Expert | Technical precision, authoritative |
| Pragmatic | Ship-focused, practical |
| Innovative | Creative, unconventional |
Evaluation Rubric
| Criterion | Base Weight | Description |
|---|---|---|
| Correctness | 30% | Solves the problem correctly |
| Completeness | 20% | Addresses all requirements |
| Quality | 20% | How well-crafted |
| Clarity | 15% | How understandable |
| Elegance | 15% | How simple/beautiful |
Weights adjust based on task type.
Example
User: "What's the best way to implement a rate limiter?"
Skill:
- •Classifies as Code Generation
- •Invokes ensemble-orchestrator
- •Three approaches generated:
- •Simple: Token bucket with in-memory counter
- •Performance: Sliding window with atomic operations
- •Extensible: Strategy pattern with pluggable backends
- •Evaluation selects extensible approach (score 8.4)
- •Returns full implementation with explanation
Output:
code
## Selected Solution [Full rate limiter implementation with strategy pattern] ## Why This Solution Won The extensible approach scored highest (8.4) because it provides a clean abstraction that works for both simple use cases and complex distributed scenarios. The strategy pattern allows swapping Redis/Memcached backends without code changes. ## Alternatives - **Simple approach**: Best if you just need basic in-memory limiting and will never scale beyond one process. - **Performance approach**: Best for high-throughput scenarios where every microsecond matters.
Success Criteria
- •3 genuinely different solutions generated
- •Clear evaluation rationale provided
- •Winner selected with confidence
- •Alternatives summarized with use cases
- •User understands trade-offs
Token Cost
~4x overhead vs single attempt. Worth it for:
- •High-stakes architecture decisions
- •Creative work where first attempt rarely optimal
- •Learning scenarios where seeing alternatives is valuable
- •Code that will be maintained long-term
Integration
- •feature-planning: Can ensemble architecture decisions
- •code-auditor: Can ensemble analysis perspectives
- •plan-implementer: Executes the winning approach