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
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:
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