Parallel research using Fleet wave mechanics. Spawns multiple scout agents, each investigating a different angle of the same question. Findings are compressed between waves. Produces a unified research brief from multiple independent perspectives.
research-fleet is the research skill scaled to parallel execution. Instead of one agent running 2-4 queries sequentially, multiple scout agents investigate different angles simultaneously. Each scout produces independent findings. Between waves, findings are compressed into a unified brief.
Use this when the question is broad enough that multiple perspectives would produce better results than depth on a single thread.
If the question is narrow and focused, use the research skill instead. Don't parallelize what a single agent can answer in 5 minutes.
The user provides:
Break the research question into 3-5 independent angles:
Example: "Should we migrate from Express to Fastify?"
Each angle must be:
Spawn one scout agent per angle using Fleet wave mechanics:
For each scout:
.citadel/research/fleet-{slug}/{angle-slug}.mdAll scouts run in parallel. Wait for all to complete.
After Wave 1 completes:
If gaps or conflicts exist:
Skip Wave 2 if Wave 1 produced clear, consistent findings.
Write the unified report to .citadel/research/fleet-{slug}/REPORT.md:
# Research Fleet: {Topic}
> Question: {The original question}
> Date: {ISO date}
> Scouts: {N} across {waves} wave(s)
> Confidence: {overall: high/medium/low}
## Consensus Findings
{Findings confirmed by 2+ scouts}
## Conflicts
{Findings where scouts disagreed — present both sides}
## Key Findings by Angle
### {Angle 1}: {title}
{Summary from scout 1}
Source: {scout report path}
### {Angle 2}: {title}
{Summary from scout 2}
Source: {scout report path}
...
## Recommendation
{2-3 sentences: what the evidence says, what the recommendation is}
## Open Questions
{What couldn't be resolved — needs human judgment}
Also log to .citadel/telemetry/agent-runs.jsonl:
{"event":"research-fleet-complete","slug":"{slug}","scouts":0,"waves":0,"timestamp":"ISO"}
harness.json agentTimeouts.research).
If a scout exceeds its timeout, skip it and proceed with other scouts' results.
A timed-out scout's angle becomes a "Gap" in the final report.Every scout prompt MUST include this instruction:
Do NOT use WebFetch on GitHub repository pages (github.com/{user}/{repo}). These pages are massive HTML documents (500KB+) that hang the fetcher indefinitely. Instead:
- Use WebSearch to find information about repos (search snippets contain what you need)
- If you need a repo's README content, fetch the raw URL:
https://raw.githubusercontent.com/{user}/{repo}/{branch}/README.md- Never fetch rendered GitHub pages: issues, pull requests, repo root, or file views
This restriction exists because a real research-fleet run hung for 38+ minutes
on WebFetch(https://github.com/jehna/readme-best-practices) with zero output.
The circuit breaker didn't catch it because the tool didn't fail — it just
never completed.
---HANDOFF---
- Research Fleet: {topic}
- Scouts: {N} across {waves} wave(s)
- Consensus: {one-line summary of agreed findings}
- Conflicts: {any unresolved disagreements}
- Recommendation: {one-line}
- Report: .citadel/research/fleet-{slug}/REPORT.md
---