deep-research
A Claude Code skill from Affaan M's everything-claude-code repo for multi-source cited research using firecrawl and exa MCPs. Six-step workflow — clarify, decompose into 3–5 sub-questions, multi-source search (15–30 unique sources), deep-read 3–5 in full, synthesize with inline citations, deliver an executive summary plus full report. Flags itself as drift-prone since MCP tool names change.
Produce cited research reports from multiple web sources without making up findings when search fails
Trigger phrases
Phrases that activate this skill when typed to Claude Code:
deep dive on this technologyresearch the competitive landscapeinvestigate the current state of X
What it does
deep-research is the cited-research skill in Affaan M’s everything-claude-code — see skills/deep-research. It runs a six-step workflow against firecrawl and exa MCP servers: understand the goal (1–2 clarifying questions), decompose into 3–5 sub-questions, execute multi-source search (15–30 unique sources, 2–3 keyword variations per sub-question, mix general + news queries), deep-read 3–5 of the most promising URLs in full (not just snippets), synthesize with inline citations, deliver an executive summary plus full report.
The skill is explicit that it’s drift-prone — firecrawl and exa MCP tool names, quotas, and result shapes change. The upstream calls out tool names that the operator should verify before relying on them: firecrawl_search, firecrawl_scrape, firecrawl_crawl from firecrawl; web_search_exa, web_search_advanced_exa, crawling_exa from exa. Both servers together give the best coverage; either alone works at lower fidelity.
Quality rules are non-negotiable: every claim needs a source, cross-reference single-source claims as unverified, prefer sources from the last 12 months, acknowledge gaps explicitly (“insufficient data found”), separate fact from inference (label estimates and opinions). For broad topics the skill recommends parallel subagents via the Task tool — three research agents covering two sub-questions each, synthesized by the main session. This is the parallel pattern that turns 5-sub-question research from sequential into one-pass-and-merge.
When to use it
- Topic requiring synthesis from multiple sources (technology evaluation, market sizing, competitive landscape)
- Due diligence on companies, investors, or technologies before a decision
- User says “research”, “deep dive”, “investigate”, or “what’s the current state of”
- Broad questions where one search query won’t suffice and the answer needs multiple cited sources
- Multi-day investigations where parallel subagent execution saves wall time
When not to reach for it:
- Customer / user research for marketing — that’s
customer-research(different domain, different sources) - Single-source factual lookup — overkill
- Code research where the answer is a code example — that’s
exa-searchdirectly - Internal company knowledge — this skill is web-focused, not Notion / Confluence search
Install
From affaan-m/everything-claude-code at skills/deep-research/. Drop the folder into ~/.claude/skills/deep-research/. Runtime requires at least one of firecrawl or exa MCP configured in ~/.claude.json (or ~/.codex/config.toml). Both together is the recommended configuration. The skill flags that MCP tool surfaces change — verify the exposed tool names against the current docs before depending on a specific function in production work.
What a session looks like
- Clarify the goal. “Research the current state of nuclear fusion energy” — 1–2 quick clarifying questions: learning, decision, or writing? Specific angle?
- Decompose. 3–5 sub-questions: what are the main approaches today, what milestones have been hit, what’s the funding landscape, who’s leading, what’s the regulatory state.
- Multi-source search per sub-question.
web_search_exafor general,web_search_advanced_exawithstartPublishedDate: "2025-01-01"for recency,firecrawl_searchfor parallel coverage. 2–3 keyword variations per sub-question. Aim for 15–30 unique sources total. - Deep-read 3–5 key sources. Don’t rely on snippets.
firecrawl_scrapeorcrawling_exafor full content on the highest-signal URLs. - Synthesize. Three major themes, inline citations on every claim, executive summary on top, key takeaways at the bottom, sources list with one-line summaries.
- Deliver. Short topics get the full report in chat; long reports get the executive summary + key takeaways in chat with the full report saved to a file.
Parallel variation: launch three research agents via Task tool, each covering two sub-questions, with the main session synthesizing into the final report. Wall time drops without quality loss.
The discipline that makes it work: acknowledge gaps. The skill is explicit — if a sub-question turned up nothing, say so, label it “insufficient data found”, don’t fabricate. That’s the wedge that separates real research from plausible-sounding generative content.
Receipts
TODO — to be filled in from a real session. Once the skill has been run on a real research task, this section will capture: how many unique sources the actual search produced vs. the 15–30 target, which MCP tool name had drifted since the skill was authored (firecrawl and exa both change frequently), how often the “insufficient data found” admission fired vs. the model wanting to extrapolate, and whether parallel subagent execution actually saved wall time or hit rate-limit contention on the MCP servers.
Source and attribution
From Affaan M’s everything-claude-code — an MIT-licensed skill collection covering harness construction, agent ops, video, payments, and platform-specific patterns.
License: MIT.
Quoting the no-hallucination rule verbatim: “If you don’t know, say ‘insufficient data found.’” The non-negotiable. Cited research is only useful if the citations are real; the skill puts the “I couldn’t find this” admission ahead of the temptation to plausibly reconstruct.