Research: Multi-Source Synthesis
What it does
Runs parallel research across several angles of a topic, each in its own subagent, then triangulates the findings and writes a cited report. Two modes: Quick (3 directions, executes immediately) for narrow questions, and Deep (up to 5 directions, posts a plan and waits for approval) for broad or comparative topics.
Requirements
- Web search and fetch tools in the agent runtime. Free option: Claude Code's built-in WebSearch and WebFetch.
- Subagents for parallel directions. Free option: Claude Code's Agent tool; without it, run directions sequentially.
Inputs and outputs
| Input | A topic (free text) and a mode (quick or deep, inferred from phrasing if not stated) |
| Output | Deep mode: ./research/<topic-slug-YYYYMMDD>/report.md, with one raw/direction-N.md per direction under the same folder. Quick mode: the report is delivered inline in chat, no file written. |
Worked example
Paste into Claude Code with this skill installed:
/agent-ops:research deep research: state of MCP server hosting options in 2026, compare managed vs self-hosted, freshness 6mo
Expected: a plan with 4-5 directions is posted and waits for "go"; after approval the report lands at ./research/mcp-server-hosting-20260907/report.md with one raw/direction-N.md per direction and inline citations.
Procedure
Deep triggers: user says "deep research", "deep dive", "comprehensive", or topic is broad/multi-faceted. Everything else defaults to Quick.
1. Scope
Determine mode, domain (tech/business/academic/general), freshness (7d/6mo/12mo/2-3yr/none), and restate the core question.
Read modules/{domain}.md and references/source-tiers.md.
If the plan depends on Reddit or forum evidence, also read
references/reddit.md before retrieval. It defines the supported access path,
sampling rules, and how to qualify community evidence.
2. Plan
Design broad, multi-angle directions. Each subagent has its own context window; make directions meaty so each covers 2-3 related subtopics.
Good: "Customer perception & brand positioning: reviews from multiple sites, website messaging, pricing structure, CRO changes via Wayback Machine." Bad: "Reviews analysis" (wastes an agent slot on a narrow angle)
Quick: 3 directions. Deep: up to 5 directions. If the user specifies a number, use that instead.
Plan format:
Research Plan: {topic}
Mode: Deep | Domain: {domain} | Freshness: {freshness}
Directions:
1. {direction 1: with scope description}
2. {direction 2}
...
Reply "go" to start, or suggest changes.
After sending the plan, you are done for this turn. Make no further tool calls. The user's next message will arrive as a new turn. Only proceed to step 3 when that message approves the plan.
Quick mode: skip approval, go directly to step 3.
3. Retrieve
Run date +%Y-%m-%d for today's date.
Step 2: Launch all directions as parallel subagents in a SINGLE message. Each call runs concurrently with its own context window.
For each direction, use the Agent tool (Claude Code) or equivalent Task/subagent primitive, with a general-purpose worker profile:
Agent({
description: "Research direction N",
prompt: `You are a research agent.
Direction: {direction text}
Topic: {overall topic}
Today: {YYYY-MM-DD}
Freshness: {constraint}
Output file: ./research/{slug}/raw/direction-N.md
- Use WebSearch extensively (10-20+ searches). Go deep.
- Use WebFetch to read full articles from quality sources. Try alternatives if a site blocks you.
- Write incrementally: after every 3-4 searches, update the output file with accumulated findings.
First write creates the file. Subsequent writes replace it with the full report so far.
- Structure as markdown: key findings with source URLs, confidence levels (high/medium/low), contradictions.
- Keep under 5000 words. Summarize rather than dump raw data.
- When done, confirm the file was written and its approximate word count.`,
model: "sonnet"
})
CRITICAL: Launch ALL directions in a single message; do NOT wait for one to finish before launching the next. Parallel subagents run concurrently.
Step 3: Verify:
wc -c ./research/{slug}/raw/direction-*.md 2>/dev/null
If any file is missing or under 500 bytes, retry those directions once with a single new Agent call. If still missing, note the gap and proceed with available data.
4. Synthesize
Read all raw/direction-N.md files. Cross-reference findings:
- Same claim from 2+ sources → state as fact with citations
- Single-source claim → qualify: "According to [Source], ..."
- Contradictions → present both sides with their sources
- Deduplicate URLs across directions
Write the report with [N] numbered inline citations. Include a bibliography at the end:
[1] Title - URL (Tier, accessed YYYY-MM-DD)
Include a Limitations section noting gaps, failed directions, and unverifiable claims.
Deep mode: save as report.md in the research folder.
Quick mode: draft inline (no file needed).
5. Deliver
Read back the report. Verify: claims have citations, no unsourced facts, contradictions handled, limitations noted. Fix issues before delivering.
Quick mode: Send the full report (under 4000 chars). Split into two messages if longer.
Deep mode: Send a summary with:
- Key findings (5-8 bullets with source links)
- Note that the full report is saved in the research folder
- Under 4000 chars
Read references/source-tiers.md for the full tier system.
for i in 1 2 3 4 5; do
[ -f /tmp/research_prompt_$i.txt ] || continue
env -u CLAUDECODE timeout 600 claude -p "$(cat /tmp/research_prompt_$i.txt)" \
--tools "WebSearch,WebFetch,Read,Write,Bash" \
--strict-mcp-config \
--disable-slash-commands \
--effort low \
--dangerously-skip-permissions \
--no-session-persistence \
--fallback-model haiku \
--verbose \
--model sonnet \
--max-turns 40 > /tmp/research_log_$i.txt 2>&1 &
echo "Launched direction $i (PID $!)"
sleep 5
done
wait
Write prompts to /tmp/research_prompt_N.txt first (same format as the Agent prompt above). Set the Bash timeout to 600000ms.