deep-research

star 42

Conducts multi-step deep research on any topic using iterative search, reflection, and synthesis. Use when the user asks to research, investigate, survey, compare, analyze, deep-dive, or explore a topic in depth. Covers web research, codebase analysis, documentation review, and mixed-source investigation.

madebyaris By madebyaris schedule Updated 3/5/2026

name: deep-research description: Conducts multi-step deep research on any topic using iterative search, reflection, and synthesis. Use when the user asks to research, investigate, survey, compare, analyze, deep-dive, or explore a topic in depth. Covers web research, codebase analysis, documentation review, and mixed-source investigation.

Deep Research

Conduct thorough, multi-step research using an iterative loop of search, compress, reflect, and synthesize. Works with any Cursor-supported model.

Effort Scaling

Before starting, calibrate depth to the question:

Tier When Searches Subagents Output
Quick Focused factual question, single concept 2-3 None Concise answer with sources
Standard Multi-faceted topic, comparison, how-something-works 5-8 None Structured analysis with sections
Exhaustive Comprehensive survey, architecture decision, landscape review 10+ Parallel Task subagents Full report with citations
Calibration:
  Question complexity: [single-fact / multi-faceted / comprehensive]
  Source diversity needed: [one source type / mixed]
  User expectation: [quick answer / detailed analysis / full report]
  -> Tier: [Quick / Standard / Exhaustive]

Phase 0: Scope

Immediately classify the research request before any searching.

Step 1 -- Classify research type:

Type Signal Example
Comparison "vs", "compare", "which is better", "difference between" "React vs Vue for enterprise apps"
Explanation "how does", "what is", "explain", "why does" "How does Raft consensus work?"
Investigation "debug", "find out why", "what caused", "root cause" "Why is our build 3x slower?"
Survey "landscape", "options for", "state of", "overview" "State of CSS-in-JS in 2026"
Fact-check "is it true", "verify", "confirm" "Does React 19 still need keys?"

Step 2 -- Determine sources:

Source When to use
WebSearch + WebFetch General knowledge, current events, library docs, community solutions
SemanticSearch + Grep + Read Codebase-specific questions, internal patterns, project architecture
Mixed "How should we implement X?" (need both external best practices and internal conventions)

Step 3 -- Generate a one-paragraph research brief:

Research brief:
  Question: [exact user question]
  Type: [comparison / explanation / investigation / survey / fact-check]
  Sources: [web / codebase / mixed]
  Tier: [quick / standard / exhaustive]
  Key dimensions to cover: [list 3-5 specific aspects]
  Out of scope: [anything explicitly excluded]

Do NOT present this brief to the user. Proceed to Phase 1 immediately.


Phase 1: Plan

Decompose the research brief into concrete sub-queries.

Decomposition strategy by type:

  • Comparison: One sub-query per item being compared, plus one for the comparison criteria
  • Explanation: Start broad (overview), then narrow (mechanism, edge cases, alternatives)
  • Investigation: Hypothesis-first -- form 2-3 hypotheses, create sub-queries to test each
  • Survey: One sub-query per category/dimension in the landscape
  • Fact-check: One sub-query for the claim, one for counter-evidence, one for authoritative source

For Standard/Exhaustive tier, create a TodoWrite tracker:

TodoWrite(todos=[
  { id: "DR-scope", content: "Research: [brief summary]", status: "completed" },
  { id: "DR-q1", content: "Sub-query: [first sub-query]", status: "in_progress" },
  { id: "DR-q2", content: "Sub-query: [second sub-query]", status: "pending" },
  ...
  { id: "DR-synth", content: "Synthesize findings into report", status: "pending" }
], merge=false)

For Exhaustive tier, evaluate which sub-queries are independent (can run in parallel via Task subagents) vs. dependent (must run sequentially because results inform next query).


Phase 2: Research Loop

This is the core iterative cycle. Execute it per sub-query.

Search

Web research pattern:

1. WebSearch(search_term="[specific, well-formed query] [current year if recency matters]")
2. If a result looks highly relevant, WebFetch the full page
3. Immediately compress: extract only the facts relevant to the sub-query

Codebase research pattern:

1. SemanticSearch(query="[natural language question]", target_directories=[relevant dir])
2. If results point to specific files, Read those files
3. If searching for exact symbols, use Grep
4. Compress: extract the pattern/answer, not the full file contents

Parallel subagent pattern (Exhaustive tier only):

Launch up to 3 parallel Task subagents for independent sub-queries:

Task(
  subagent_type="generalPurpose",
  description="Research [topic]",
  prompt="Research the following question and return a compressed summary with sources:
    Question: [sub-query]
    Search using WebSearch and WebFetch. Return:
    1. Key findings (bullet points)
    2. Sources (title + URL for each)
    3. Confidence: certain / likely / uncertain
    Do NOT return raw search results. Summarize.",
  model="fast"
)

Compress (after EVERY search)

Do NOT accumulate raw search results. After each search or WebFetch:

Compression template:
  Source: [URL or file path]
  Key finding: [1-3 sentences of relevant information]
  Confidence: [certain / likely / uncertain]
  Relevance: [directly answers sub-query / provides context / tangential]

Drop tangential results immediately. Only carry forward "directly answers" and "provides context" findings.

Reflect (after every 2-3 searches)

Pause and evaluate using this checklist:

Reflection checkpoint:
  1. Coverage: Which sub-queries are answered? Which have gaps?
  2. Confidence: Am I seeing convergence across sources, or contradictions?
  3. Diminishing returns: Are my last 2 searches finding new information, or repeating what I already know?
  4. Pivots needed: Has anything I found changed what I should be searching for?
  5. Sufficiency: Can I answer the original question with what I have?

  Decision: [continue searching / pivot strategy / proceed to synthesis]

Stop searching when:

  • 3+ independent sources confirm the same finding
  • Last 2 searches returned no new information
  • All sub-queries are answered at the target confidence level
  • Maximum search budget for the tier is reached

Pivot when:

  • Initial hypothesis was wrong -- reformulate sub-queries
  • A new dimension emerged that the original plan missed -- add a sub-query
  • Sources contradict each other -- search for authoritative tiebreaker

Evolving Summary

Maintain a running summary that gets updated (not appended to) after each reflection:

Working summary (updated, not appended):
  [Paragraph 1: What I know with high confidence]
  [Paragraph 2: What I know with moderate confidence]
  [Paragraph 3: Open questions / contradictions / gaps]
  Sources so far: [numbered list]

This is the "evolving report as memory" pattern. Previous raw search results can be released from active context once compressed into this summary.


Phase 3: Synthesize

Generate the final output in a SINGLE pass from the evolving summary and compressed findings.

Do NOT:

  • Generate sections independently and merge them (produces disjointed output)
  • Copy-paste raw search results into the report
  • Include findings you flagged as "tangential" during compression

Do:

  • Write the full response in one coherent pass
  • Resolve contradictions explicitly ("Source A claims X, while Source B claims Y. Based on [reasoning], Y is more credible because...")
  • Organize with clear headings for Standard/Exhaustive tier
  • Include inline citations: [Source Title](URL) or file path references

Structure by research type:

  • Comparison: Table or side-by-side, then analysis of tradeoffs, then recommendation
  • Explanation: Overview, then mechanism/details, then edge cases/caveats
  • Investigation: Hypothesis, evidence for/against, conclusion
  • Survey: Categories, key players/options per category, trends, recommendations
  • Fact-check: Claim, evidence, verdict (confirmed/partially true/false/unverifiable)

Phase 4: Deliver

Citation Format

Every factual claim must have a source. Use inline links:

React Server Components reduce bundle size by up to 30% [React Blog](https://react.dev/blog/...).

For codebase findings, cite file paths:

The auth middleware uses JWT validation (`src/middleware/auth.ts:42-58`).

Confidence Flags

End the report with an honest assessment:

Confidence assessment:
  - High confidence: [claims well-supported by multiple sources]
  - Moderate confidence: [claims from single authoritative source]
  - Low confidence / needs verification: [claims from informal sources or with contradictions]

Mark Completion

Update TodoWrite to mark all research sub-queries and synthesis as completed.


Model Compatibility

This skill uses only Cursor-native tools and plain behavioral instructions:

  • No model-specific prompting syntax
  • No assumptions about thinking/reasoning format
  • All tool references (WebSearch, WebFetch, SemanticSearch, Grep, Read, Task, TodoWrite) are Cursor-standard
  • Reflection happens in whatever reasoning mechanism the model supports

The iterative search-compress-reflect loop is a behavioral pattern, not a code construct. Any model that can call tools and reason about results can execute it.


Quick Reference

SCOPE  -> Classify type + sources + tier (no searching yet)
PLAN   -> Decompose into sub-queries, create tracker
SEARCH -> Execute queries, compress each result immediately
REFLECT -> Every 2-3 searches: coverage? gaps? pivot? stop?
SYNTH  -> One-shot report from compressed findings
DELIVER -> Citations, confidence flags, completion

Additional Resources

  • For detailed examples and failure mode recovery, see reference.md
Install via CLI
npx skills add https://github.com/madebyaris/chaca-scanner --skill deep-research
Repository Details
star Stars 42
call_split Forks 2
navigation Branch main
article Path SKILL.md
More from Creator