rlm-orchestrator
skillImplement RLM-style (Recursive Language Model) orchestration for complex tasks. This skill should be used when facing large context requirements, multi-part tasks that would benefit from parallel execution, or when context rot is a concern. Automatically decomposes tasks, spawns parallel subagents, aggregates results, and iterates until completion. Inspired by the RLM research paper (arXiv:2512.24601).
apm::install
apm install @belumume/rlm-orchestratorapm::skill.md
---
name: rlm-orchestrator
description: >-
Implement RLM-style (Recursive Language Model) orchestration for complex tasks.
This skill should be used when facing large context requirements, multi-part tasks
that would benefit from parallel execution, or when context rot is a concern.
Automatically decomposes tasks, spawns parallel subagents, aggregates results,
and iterates until completion. Inspired by the RLM research paper (arXiv:2512.24601).
trigger: >-
When user mentions "RLM", "recursive", "parallel agents", "context rot prevention",
"large context task", or when facing tasks that would exceed comfortable context limits
version: 1.0.0
tags:
- orchestration
- subagents
- context-management
- parallel-execution
- rlm
- claude-code-only
---
# RLM-Style Recursive Orchestrator
Implement the orchestrator pattern from RLM research to handle arbitrarily large contexts
and complex multi-part tasks. The main conversation acts as the recursive coordinator,
spawning depth-1 subagents and aggregating results.
## Core Principle
> "No single language model call should require handling a huge context."
> — RLM Research (arXiv:2512.24601)
Since Claude Code subagents cannot spawn children (architectural limit), the main
conversation becomes the "recursion stack," enabling functional depth >1.
## When to Use This Skill
**Ideal for:**
- Tasks requiring >100K tokens of context
- Multi-file analysis or refactoring
- Research tasks with many sources
- Batch processing with independent partitions
- Any task showing signs of context rot (degraded recall, repeated mistakes)
**Not ideal for:**
- Simple single-file changes
- Tasks requiring tight sequential dependencies
- Quick exploratory questions
## The RLM Orchestration Pattern
```
Main Session (orchestrator/recursion stack)
│
├─[DECOMPOSE]─ Analyze task, identify independent partitions
│
├─[SPAWN BATCH 1]──┬── Subagent A (fresh 200K context) → summary
│ ├── Subagent B (fresh 200K context) → summary
│ └── Subagent C (fresh 200K context) → summary
│
├─[AGGREGATE]─ Combine results, identify gaps
│
├─[SPAWN BATCH 2]──┬── Subagent D (uses batch 1 results) → summary
│ └── Subagent E (uses batch 1 results) → summary
│
├─[AGGREGATE]─ Final combination
│
└─[COMPLETE]─ Return unified result
```
## Orchestration Protocol
### Phase 1: Task Analysis and Decomposition
Before spawning any subagents, analyze the task:
1. **Estimate context requirements**
- Count files/sources to process
- Estimate tokens (~4 bytes per token)
- If <50K tokens total, consider direct execution
2. **Identify partition boundaries**
- Find natural divisions (files, sections, topics)
- Ensure partitions are independent (no cross-dependencies)
- Aim for 3-7 partitions per batch (Claude Code limit: ~10 concurrent)
3. **Define aggregation strategy**
- How will partition results combine?
- What format should subagent outputs use?
- What information must propagate between batches?
### Phase 2: Subagent Dispatch
For each batch of partitions:
1. **Prepare subagent prompts** using the template in `references/subagent-prompt-template.md`
2. **Spawn subagents in parallel** using the Task tool:
```
Task(subagent_type="general-purpose", description="[partition description]", prompt="...")
Task(subagent_type="Explore", description="[research partition]", prompt="...")
```
3. **Use appropriate subagent types:**
- `Explore` - For read-only research, file discovery
- `general-purpose` - For tasks requiring code changes
- `Plan` - For architecture/design work
4. **Run in background when appropriate:**
- Set `run_in_background=true` for long-running tasks
- Check results via `TaskOutput` or `Read` on output file
### Phase 3: Result Aggregation
When subagents complete:
1. **Collect all results** - Read summaries from each subagent
2. **Validate completeness** - Check for error indicators:
- "could not find", "unable to", "failed to"
- Missing expected outputs
- Incomplete coverage of partition
3. **Merge results** using appropriate strategy:
- **Union**: Combine all findings (research tasks)
- **Synthesis**: Create unified narrative (analysis tasks)
- **Reduce**: Aggregate metrics (measurement tasks)
4. **Identify gaps** - What wasn't covered? What needs follow-up?
### Phase 4: Iteration (if needed)
If gaps exist:
1. **Create follow-up partitions** for uncovered areas
2. **Include previous batch context** in new subagent prompts
3. **Spawn next batch** with refined focus
4. **Repeat until complete** or max iterations reached
## Emerged Strategies (from RLM Research)
Encode these strategies in subagent prompts:
### Peeking
> Sample the beginning of context to understand structure before deep processing.
```markdown
Before analyzing fully, first peek at the structure:
1. Read first 50 lines of each file
2. Identify file types and organization
3. Then proceed with targeted analysis
```
### Grepping
> Use pattern-based filtering to narrow context before semantic processing.
```markdown
Use Grep to filter before reading:
1. Search for relevant patterns: `Grep(pattern="error|exception|fail")`
2. Read only matching files fully
3. This reduces context consumption by 80%+
```
### Partition + Map
> Break context into chunks, process in parallel, then aggregate.
```markdown
This task uses partition+map strategy:
1. You handle partition [X] of [N]
2. Your partition covers: [specific scope]
3. Return findings in this format: [format spec]
4. Orchestrator will aggregate all partition results
```
### Summarization
> Extract condensed information for parent decision-making.
```markdown
Return a structured summary, not raw data:
- Key findings (3-5 bullet points)
- Specific file:line references
- Confidence level (high/medium/low)
- Gaps or uncertainties
```
## Token Budget Management
Track token consumption across the orchestration:
| Component | Estimated Tokens | Notes |
|-----------|------------------|-------|
| Main conversation | 200K max | Reserve 50K for orchestration |
| Per subagent | 200K max | Fresh context each |
| Subagent overhead | ~20K | System prompt + tools |
| Summary return | ~2-5K | Per subagent result |
**Budget formula:**
```
Effective capacity = (Main 150K usable) + (N subagents × 180K usable each)
For 5 subagents: 150K + 900K = ~1M effective tokens
```
## Integration with Existing Skills
This skill works with:
- **superpowers:brainstorming** - Use first to decompose complex problems
- **superpowers:writing-plans** - Create task partition structure
- **superpowers:dispatching-parallel-agents** - Detailed parallel dispatch patterns
- **superpowers:subagent-driven-development** - For implementation tasks
- **ralph-loop** - For autonomous iteration within partitions
## Example: Large Codebase Analysis
```markdown
# Task: Analyze security vulnerabilities across 500 files
## Phase 1: Decomposition
- Partition by directory: src/, lib/, tests/, config/
- Each partition: ~125 files, ~50K tokens
- Aggregation: Union of findings with deduplication
## Phase 2: Dispatch (Batch 1)
- Subagent A: src/ directory - authentication code
- Subagent B: lib/ directory - utility functions
- Subagent C: config/ directory - configuration files
- Subagent D: tests/ directory - test coverage gaps
## Phase 3: Aggregate
- Combine all vulnerability findings
- Cross-reference duplicates
- Prioritize by severity
## Phase 4: Follow-up (if needed)
- Deep dive on critical findings
- Verify false positives
```
## Troubleshooting
**Subagent returns incomplete results:**
- Check if partition was too large (reduce scope)
- Verify subagent had appropriate tools
- Retry with more specific instructions
**Aggregation produces conflicts:**
- Subagents may find contradictory information
- Spawn a "resolver" subagent to investigate conflicts
- Or present both findings with uncertainty markers
**Context still rotting in main session:**
- You're keeping too much in the main context
- Delegate more aggressively to subagents
- Trust summaries instead of raw data
**Hitting concurrent subagent limit:**
- Queue batches: 10 concurrent max
- Wait for batch completion before spawning next
- Consider if fewer, larger partitions would work
## Quick Start Template
For any large task, start with:
```markdown
I'll use RLM orchestration for this task.
**Task Analysis:**
- Total scope: [X files / Y sources / Z components]
- Estimated tokens: [rough estimate]
- Natural partitions: [list 3-7 independent parts]
**Orchestration Plan:**
1. Batch 1: [partitions A, B, C] - parallel Explore subagents
2. Aggregate: [strategy]
3. Batch 2 (if needed): [follow-up partitions]
**Subagent assignments:**
- Subagent A: [specific scope and instructions]
- Subagent B: [specific scope and instructions]
...
Proceeding with Phase 1...
```