deep-research

star 8

Multi-step autonomous research. Decomposes topics into search queries, fetches and analyzes sources, identifies gaps, refines queries, and synthesizes structured reports with inline citations.

greghavens By greghavens schedule Updated 3/2/2026

name: deep-research version: 1.0.0 description: > Multi-step autonomous research. Decomposes topics into search queries, fetches and analyzes sources, identifies gaps, refines queries, and synthesizes structured reports with inline citations. classification_ceiling: CONFIDENTIAL requires_tools: - web_search - web_fetch - llm_task network_domains:

Deep Research Methodology

You are now in deep research mode. Follow this methodology exactly — do not skip steps or reduce the number of searches/fetches below the minimums specified.

Step 0: Select Depth

Based on the user's wording, select a depth level. If unclear, default to Standard.

Depth Min Sources to Fetch Min Search Queries Refinement Rounds Trigger Words
Quick 5 3 1 "look into", "quick research", brief questions
Standard 10 8 2 "research", "report on", default for any research request
Deep 20 15 3 "thorough", "comprehensive", "deep dive", "detailed analysis"

Step 1: Generate Search Queries

Use llm_task to decompose the topic into diverse search queries:

llm_task: "Given the research topic '{topic}', generate exactly {N} specific search queries that cover different facets, angles, and perspectives. Include queries for: definitions, recent developments, expert opinions, counterarguments, statistics/data, and real-world examples. Return ONLY a JSON array of strings, nothing else."

Where {N} is the "Min Search Queries" from the depth table above.

Step 2: Execute ALL Search Queries

Call web_search for EVERY query from Step 1. Do not stop after one search. You must execute all {N} queries.

You can call multiple web_search tools in a single turn — do this to work efficiently. For example, at Standard depth, call web_search 8 times in a single response.

After all searches complete, collect all unique URLs. Deduplicate by domain — keep at most 2 URLs per domain to ensure source diversity.

Step 3: Fetch Sources

Call web_fetch on the top URLs from your deduplicated list. You MUST fetch at least the "Min Sources to Fetch" number from the depth table.

Call multiple web_fetch tools in a single turn for efficiency. For Standard depth, fetch 10 URLs in one batch (or split across two turns if needed).

If a fetch fails, skip it and fetch the next URL. Do NOT stop the research because one fetch failed.

Step 4: Analyze Each Source

Use llm_task to extract findings from EACH fetched source individually:

llm_task: "Extract key findings from this content related to '{topic}'. Content: {fetched_content}. Return structured JSON: { findings: [{ fact: string, confidence: 'high'|'medium'|'low', source_url: string }] }"

You may batch multiple llm_task calls in a single turn.

Step 5: Gap Analysis and Refinement

Use llm_task to identify gaps in your findings:

llm_task: "Given these findings about '{topic}': {all_findings_summary}. What important aspects are still missing or underrepresented? Generate {M} follow-up search queries to fill these gaps. Return ONLY a JSON array of strings."

Then repeat Steps 2-4 with the follow-up queries. Do this for the number of "Refinement Rounds" specified by the depth level.

Step 6: Synthesize Report

After all rounds are complete, write the final report directly (do NOT use llm_task for the final synthesis — write it yourself so you can use the full conversation context).

Output Format

Structure your report exactly as follows:

Executive Summary

2-3 sentences capturing the key takeaway.

Key Findings

Numbered findings with inline citations like [1], [2] referencing the Sources list.

Analysis

Deeper discussion: patterns, areas of consensus, areas of disagreement, surprising discoveries.

Sources

Numbered list of ALL URLs you fetched, with a one-line description of each.

Rules

  • You MUST execute the minimum number of searches and fetches for the selected depth. Doing fewer is a failure.
  • Always cite sources with inline [N] references.
  • Note when sources disagree with each other.
  • Flag low-confidence findings explicitly.
  • If you cannot find enough information, say so — never fabricate.
  • All fetched content inherits session taint automatically.
  • Call multiple tools per turn whenever possible to stay within iteration limits.
Install via CLI
npx skills add https://github.com/greghavens/triggerfish --skill deep-research
Repository Details
star Stars 8
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator