feature-council
Feature Council: Multi-Agent Feature Implementation
Spawns multiple agents to implement the same feature independently, then synthesizes the best parts from each. Unlike code-council (majority voting for bugs), this skill merges strengths because features have multiple valid approaches.
Use this for complex features where you want diverse implementations and comprehensive coverage.
Step 0: Ask User How Many Agents
Before doing anything else, ask the user how many solver agents to use:
How many solver agents would you like me to use? (3-10)
Recommendations:
- 3 agents: Faster, good for straightforward features
- 5 agents: Good balance of diversity and speed
- 7 agents: Comprehensive coverage
- 10 agents: Maximum diversity (complex features)
Note: Each agent will independently implement the entire feature.
More agents = more diverse approaches and edge case coverage.
Wait for the user's response. If they specified a number (e.g., "feature council of 5"), use that.
Minimum: 3 agents | Maximum: 10 agents
CRITICAL: Pure Independence
What This Means
- NO orchestrator exploration - Do NOT read files or gather context before spawning agents
- Raw user prompt to all agents - Each agent gets the user's original request, unchanged
- Each agent explores independently - Agents discover the codebase themselves
- Each agent implements fully - Complete, working implementations
Why This Matters
Independent implementations mean:
- Different architectural choices to compare
- Different edge cases discovered
- Different error handling approaches
- More comprehensive final solution
Workflow
Step 1: Capture the Raw User Prompt
Take the user's request exactly as stated. Do NOT:
- ❌ Read files first
- ❌ Explore the codebase
- ❌ Add context
- ❌ Rephrase or enhance the prompt
Just capture what the user said.
Step 2: Spawn Agents IN PARALLEL with RAW PROMPT
Spawn ALL agents simultaneously. Each gets the exact same raw prompt:
Task(agent: "feature-solver-1", prompt: "[USER'S EXACT WORDS]")
Task(agent: "feature-solver-2", prompt: "[USER'S EXACT WORDS]")
Task(agent: "feature-solver-3", prompt: "[USER'S EXACT WORDS]")
... (all in the SAME batch - parallel execution)
DO NOT modify the prompt. DO NOT add context. Raw user words only.
Step 3: Agents Work Independently
Each agent will:
- Read and understand the user's feature request
- Explore the codebase to understand existing patterns
- Design their approach
- Implement the complete feature
- Handle edge cases they identify
- Verify their implementation
Each agent works in complete isolation.
Step 4: Track Progress & Collect Solutions
As agents complete, show progress to the user:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
AGENT PROGRESS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☑ Agent 1 - Complete
☑ Agent 2 - Complete
☑ Agent 3 - Complete
☐ Agent 4 - Working...
☐ Agent 5 - Working...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Collect all outputs when complete.
Step 5: Analyze & Compare Implementations
DO NOT use majority voting. Instead, analyze each implementation for:
| Category | What to Look For |
|---|---|
| Architecture | Design patterns, code organization, modularity |
| Edge Cases | What edge cases did each agent handle? |
| Error Handling | How robust is the error handling? |
| Type Safety | Type definitions, null checks, validation |
| Performance | Efficiency, caching, optimization |
| Maintainability | Readability, documentation, testability |
| Codebase Fit | How well does it match existing patterns? |
Create a comparison matrix:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
IMPLEMENTATION COMPARISON
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Aspect | Agent 1 | Agent 2 | Agent 3 | Agent 4 | Agent 5 |
|-----------------|---------|---------|---------|---------|---------|
| Architecture | MVC | Service | MVC | MVC | Modular |
| Edge Cases | 3 | 5 | 4 | 3 | 6 |
| Error Handling | Basic | Robust | Good | Basic | Robust |
| Type Safety | ✓ | ✓✓ | ✓ | ✓ | ✓✓ |
| Codebase Match | 90% | 75% | 95% | 85% | 80% |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Step 6: Synthesize Best Solution
Combine the best elements from each agent:
- Select base implementation - Choose the one that best matches codebase patterns
- Incorporate edge cases - Add edge cases from other agents the base missed
- Enhance error handling - Use the most robust error handling approach
- Improve type safety - Merge type definitions and validations
- Document sources - Track which elements came from which agent
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SYNTHESIS DECISION
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Base: Agent 3 (best codebase pattern match)
Incorporating from other agents:
├─ Agent 2: Robust error handling pattern
├─ Agent 5: Edge cases for [empty input, concurrent access]
├─ Agent 2: Type definitions for [UserInput, ValidationResult]
└─ Agent 4: Caching optimization
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Step 7: Create Finalized Implementation Plan
Before implementing, create a detailed execution plan from the synthesized solution:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 IMPLEMENTATION PLAN
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## Files to Create
| # | File Path | Purpose | Source |
|---|-----------|---------|--------|
| 1 | path/to/NewService.ts | Main service class | Agent 3 base |
| 2 | path/to/types.ts | Type definitions | Agent 2 |
| 3 | path/to/utils.ts | Helper functions | Agent 5 |
## Files to Modify
| # | File Path | Changes | Source |
|---|-----------|---------|--------|
| 1 | path/to/index.ts | Add export | Agent 3 |
| 2 | path/to/config.ts | Add config entry | Agent 4 |
| 3 | path/to/app.ts | Register service | Agent 3 |
## Implementation Order
1. **Create types.ts** (no dependencies)
- Define interfaces and types
- From: Agent 2
2. **Create utils.ts** (depends on types)
- Add helper functions
- From: Agent 5
3. **Create NewService.ts** (depends on types, utils)
- Main implementation
- From: Agent 3 + Agent 2 error handling
4. **Modify config.ts** (no dependencies)
- Add configuration
- From: Agent 4
5. **Modify index.ts** (depends on NewService)
- Export new service
- From: Agent 3
6. **Modify app.ts** (depends on all above)
- Register and initialize
- From: Agent 3
## Edge Cases to Handle
| Edge Case | How Handled | Source |
|-----------|-------------|--------|
| Empty input | Return early with default | Agent 5 |
| Null values | Null coalescing + validation | Agent 2 |
| Concurrent access | Mutex lock | Agent 5 |
| Network timeout | Retry with backoff | Agent 4 |
## Error Handling Strategy
- Pattern: [from Agent 2]
- Logging: [approach]
- Recovery: [approach]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
This plan ensures:
- Correct dependency order
- All edge cases addressed
- Clear traceability to source agents
Step 8: Execute Implementation Plan
Follow the plan step-by-step. For each step:
- Create/modify the file as specified
- Verify it matches the synthesized approach
- Move to next step
Step 9: Report Results
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
FEATURE COUNCIL RESULTS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## 📊 Implementation Comparison
| Agent | Architecture | Edge Cases | Error Handling | Codebase Fit |
|-------|--------------|------------|----------------|--------------|
| 1 | [approach] | [count] | [quality] | [%] |
| 2 | [approach] | [count] | [quality] | [%] |
| ... | ... | ... | ... | ... |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## 🔍 What Each Agent Contributed
### Agent 1
- Approach: [brief description]
- Unique strength: [what this agent did best]
- Used in final: [what was incorporated]
### Agent 2
- Approach: [brief description]
- Unique strength: [what this agent did best]
- Used in final: [what was incorporated]
... (for each agent)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## 📋 Implementation Plan Executed
| Step | File | Action | Status |
|------|------|--------|--------|
| 1 | path/to/types.ts | Created | ✅ |
| 2 | path/to/utils.ts | Created | ✅ |
| 3 | path/to/Service.ts | Created | ✅ |
| 4 | path/to/config.ts | Modified | ✅ |
| 5 | path/to/index.ts | Modified | ✅ |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## 🧬 Synthesis Breakdown
| Element | Source Agent | Reason |
|---------|--------------|--------|
| Base architecture | Agent 3 | Best codebase pattern match (95%) |
| Error handling | Agent 2 | Most comprehensive try/catch + logging |
| Edge case: empty input | Agent 5 | Only agent that handled this |
| Edge case: concurrent | Agent 5 | Race condition prevention |
| Type definitions | Agent 2 | Strictest typing |
| Caching layer | Agent 4 | Performance optimization |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## 📈 Final Solution Quality
- **Edge Cases Covered**: [total unique from all agents]
- **Error Handling**: [description]
- **Codebase Fit**: [% and explanation]
- **Type Safety**: [description]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## ✅ Implemented Solution
[The synthesized implementation]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## 📁 Files Created/Modified
[List of all files with brief descriptions]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Configuration
| Mode | Agents | Use Case |
|---|---|---|
feature council of 3 |
3 | Simple features, faster |
feature council of 5 |
5 | Good balance |
feature council of 7 |
7 | Complex features |
feature council of 10 |
10 | Maximum coverage |
If user just says feature council, ask them to choose.
Difference from Code Council
| Aspect | Code Council | Feature Council |
|---|---|---|
| Purpose | Bug fixes, algorithms | Feature implementation |
| Selection | Majority voting | Synthesis/merge |
| Output | Single winning solution | Best-of-all combined |
| Metric | Correctness consensus | Comprehensiveness |
Agents
10 feature solver agents in agents/ directory:
feature-solver-1throughfeature-solver-10
All agents:
- Same instructions (focused on feature implementation)
- Same temperature (0.7)
- Same tools (Read, Grep, Glob, LS)
- Use ultrathink (extended thinking)
- Emphasize codebase pattern matching and edge case coverage
Why Synthesis > Voting for Features
With bugs, there's ONE correct answer. With features:
- Multiple valid architectures exist
- One agent might catch edge cases others miss
- Error handling approaches can be combined
- Type safety can be merged
Synthesis captures the union of good ideas rather than picking one.
When to Use
✅ Use feature-council for:
- Complex features with many edge cases
- Features where you're unsure of best approach
- High-stakes production code
- When you want comprehensive coverage
❌ Don't use for:
- Simple CRUD operations
- Bug fixes (use code-council instead)
- When speed matters more than coverage