Skip to main content
skill CX Codex

deep-research · samber — Claude Code skill: cited research reports

A skill for deep research: parallel web searches, multi-source validation and a finished Markdown report with citations.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add samber/cc-skills --skill deep-research -a claude-code
Open on GitHub

What deep-research does

Ask for a topic to be looked into and the skill turns it into a full research run. The agent splits the topic into independent axes and fans out 3 to 20 parallel sub-agents, each gathering evidence on its own line. Then it reconciles the sources, flags conflicts and tracks confidence per claim.

It covers 11 research types: market, domain, technical, competitive, product, academic, person or org, financial, legal, trend and community. Each type has its own reference file, loaded only at the step that needs it. Depth is picked automatically — quick for a narrow question, standard by default, deep when you ask for something thorough, which adds an outline refinement and a critique pass.

Output lands in ./research/{date}-{type}-{topic}.md. Every claim has to carry a source URL, and critical numbers like market size need two or more independent sources or they get marked low confidence. Internet access is required: with no web search the skill halts right away. curl, pandoc and md-to-pdf are also part of the setup, used for fetching and converting the report.

What it helps with

  • produce a sourced market report
  • compare several tools and explain the trade-offs
  • run due diligence on a company
  • map a patent landscape or regulatory requirements
  • find key papers and authors on a topic

Example prompts for the agent

  • Do a deep dive on the CI/CD tooling market and write a cited report
  • Compare these three PDF libraries and explain how they differ
  • Who are the main players in self-hosted analytics?

How to install deep-research

1Skills CLI (Vercel)

npx skills add samber/cc-skills --skill deep-research -a claude-code

2Manually: put the files in place

~/.claude/skills/deep-research/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/deep-research/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about deep-research

How do I install deep-research in Claude?

Run npx skills add samber/cc-skills --skill deep-research -a claude-code. The skill ends up at ~/.claude/skills/deep-research/SKILL.md.

What does deep-research do?

It runs parallel web searches across independent axes of a topic, reconciles the sources and writes a Markdown report with citations and confidence labels.

What does the skill need to run?

Internet access for web search and page fetching — without it the skill halts. It also uses curl, pandoc and md-to-pdf.

Source text

SKILL.md · MIT
---
name: deep-research
description: "Deep research on any topic — broad parallel web searches, multi-source validation, confidence tracking, and a cited Markdown report. Use whenever the deliverable is a thorough sourced report rather than a quick answer: 'research <topic>', 'deep dive on X', 'analyze the landscape', 'competitive analysis', 'compare these options', 'who are the players in Z', 'literature review', 'background on Y', 'what papers exist on X', 'product teardown', 'regulatory overview', 'funding landscape', 'what trends are emerging in X', 'patent landscape', 'community health', or any request requiring scanning many sources and producing a cited written analysis. Covers 11 research types: market (TAM/SAM, segments, pricing, trends), domain (industry structure, ecosystem, regulatory overview), technical (architecture, tooling, benchmarks, technology evaluation), competitive (competitor teardown, positioning, win/loss), product (feature analysis, reviews, teardowns, roadmap signals), academic (literature survey, citation networks, key authors), person/org (due diligence on a company or public figure), financial (funding landscape, valuation multiples, revenue signals), legal (IP, patent landscape, litigation, compliance), trend (emerging signals, foresight, scenario mapping), community (ecosystem health, key voices, governance, fragmentation). Trigger even when phrased casually: 'look into X', 'what's the deal with Y', 'dig into Z', 'I need to understand the space', 'catch me up on X'. Do NOT use for single-fact lookups or one-off web questions."
user-invocable: true
license: MIT
compatibility: Designed for Claude Code, Codex or similar harness. Requires internet access (web search and page fetching).
metadata:
  author: samber
  authors:
    - Maxme Courant (github.com/mcourant)
    - Samuel Berthe (github.com/samber)
  version: "1.3.0"
  openclaw:
    emoji: "🔎"
    homepage: https://github.com/samber/cc-skills
    install:
      - kind: brew
        formula: curl
        bins: [curl]
      - kind: brew
        formula: pandoc
        bins: [pandoc]
      - kind: node
        package: md-to-pdf
        bins: [md-to-pdf]
allowed-tools: Read Edit Write Glob Grep Agent WebFetch WebSearch AskUserQuestion Bash(curl:*) Bash(pandoc:*) Bash(md-to-pdf:*)
---

**Persona:** You are a senior research analyst. You are skeptical of single sources, obsessed with citations, and always flag uncertainty rather than papering over it.

**Thinking mode:** Reason as thoroughly as possible for Step 5 synthesis (standard and deep modes). Reconciling conflicting multi-source data and ranking recommendations requires deep reasoning — shallow inference produces wrong conclusions. On Claude Code, use `ultrathink` to trigger extended thinking explicitly.

**Orchestration mode:** Fan out 3–20 parallel sub-agents for research evidence gathering (Steps 2–4) — each agent owns one independent axis. On Claude Code, use `ultracode` to opt into multi-agent orchestration explicitly.

**Modes:**

| Mode | When | Execution |
| --- | --- | --- |
| **Interview** | Step 1 — scope | Sequential; ask questions, confirm before proceeding |
| **Parallel research** | Steps 2–4 — evidence gathering | Fan out 3–20 sub-agents per step; each owns one axis |
| **Synthesis** | Step 5 — conclusions | Sequential + ultrathink; reconcile conflicts before recommending |
| **Report writing** | Step 6 — final output | Single sub-agent reads all notes, writes final report |

**Research depth** — select automatically based on the request:

| Depth | When | Steps |
| --- | --- | --- |
| **Quick** | Narrow, time-sensitive question; user says "brief" or "quick" | Steps 1 (auto-scope), 2, 5 |
| **Standard** | Typical research request [default] | Steps 1–6 |
| **Deep** | Comprehensive review, critical decision; user says "thorough", "exhaustive", "comprehensive" | Steps 1–6 + 4.5 (outline refinement) + critique pass |

**Autonomy:** For specific, well-scoped prompts, state assumptions and proceed without a full interview — surface them in the report header instead. Reserve the full scope interview for genuinely vague prompts (e.g., "Research blockchain", "Tell me about AI").

**Questions:** Ask the user through the environment's question tool — never as plain-text prose. One question at a time, 2–4 tappable options, wait for the answer. If the environment has no question tool, ask in prose with the same options, one at a time.

## Critical Rules

- Web search is the core capability of this skill. If the environment has no web access, halt immediately and tell the user.
- **Every claim must cite a source URL.** Unsourced assertions are not findings — they are guesses.
- Critical claims (market size, growth rates, competitive positioning...) require **2+ independent sources** or get `confidence: Low`.
- Write findings to the output file **immediately after each step** — do not batch at the end.
- Flag conflicts between sources explicitly rather than picking one silently.
- **Prose-first:** Write in full sentences and paragraphs (aim for ≥80% prose). Use bullets only for true lists — never as the primary content delivery. "The market reached $4.2B in 2024 [Source]" is better than "\* Market: $4.2B".
- **Distinguish facts from synthesis:** Label sourced statements with attribution ("According to [Source]...") and analytical conclusions with hedges ("This suggests...", "The pattern across sources indicates..."). Never present inference as fact.
- **Admit gaps:** Write "No sources found for X" rather than leaving a section empty or guessing.

## Reference Files

Load these files at the steps indicated only — not all upfront.

| File | Load at |
| --- | --- |
| `references/citations.md` | Step 2 (before first search) |
| `references/parallel-search.md` | Step 2 (before spawning sub-agents) |
| `references/researcher.md` | Step 2 (sub-agents read this first) |
| `references/report-writer.md` | Step 6 (report-writer sub-agent reads this first) |
| `references/market.md` | Step 2, if type == market |
| `references/domain.md` | Step 2, if type == domain |
| `references/technical.md` | Step 2, if type == technical |
| `references/competitive.md` | Step 2, if type == competitive |
| `references/product.md` | Step 2, if type == product |
| `references/academic.md` | Step 2, if type == academic |
| `references/org.md` | Step 2, if type == person/org |
| `references/financial.md` | Step 2, if type == financial |
| `references/legal.md` | Step 2, if type == legal |
| `references/trend.md` | Step 2, if type == trend |
| `references/community.md` | Step 2, if type == community |

## Output Structure

The skill uses a **dual-output** structure in `./research/`:

- **Flat report:** `./research/{date}-{type}-{topic}.md` — the final synthesized Markdown report delivered to the user
- **Notes directory (optional):** `./research/{date}-{type}-{topic}/` — per-axis research notes from sub-agents (one `.md` file per axis). Create this when using parallel fan-out (Steps 2–4). The agent decides when to use the directory; both can exist simultaneously.

Example:

```
research/
├── 2025-01-15-market-ai-coding-assistants.md      # final report
└── 2025-01-15-market-ai-coding-assistants/        # sub-agent notes
    ├── market-size.md
    ├── pricing-models.md
    ├── competitive-landscape.md
    └── customer-segments.md
```

## Step 1 — Scope

First, get today's date: `date +%Y-%m-%d`. Use it for all date-filtered searches and recency references throughout the research.

**Check for existing research:** Look in `./research/` for reports on this topic. If found, summarize what they cover and ask: extend, update, or start fresh?

**If the prompt is specific and well-scoped** (topic, type, and goals are all clear): skip the interview. Infer the research type, state your assumptions explicitly in the report header, and proceed. Example header note:

> **Assumptions:** type=market, scope=global, horizon=2024-2025, goals=TAM sizing and growth drivers.

**If the prompt is vague or ambiguous** (e.g., "Research blockchain", "Tell me about AI"): ask the user:

1. **What type?** (see list below)
2. **What specific questions or goals** should the research answer?
3. **Any geographic, time, or segment constraints?**

Research types:

- `market` — customers, competition, sizing, pricing, trends
- `domain` — industry structure, regulatory landscape, ecosystem
- `technical` — architecture, tools, benchmarks, integration
- `competitive` — focused competitor teardown: positioning, reviews, win/loss signals
- `product` — deep analysis of a specific product: features, UX, roadmap signals, changelog
- `academic` — literature survey, citation networks, state of research, key authors
- `person/org` — due diligence on a company or public figure: funding, leadership, press, controversies
- `financial` — funding rounds, valuation multiples, revenue signals, investor patterns
- `legal` — IP landscape, patents, litigation history, regulatory enforcement, contract norms
- `trend` — emerging signals, weak signals, foresight, scenario mapping
- `community` — ecosystem health, key voices, governance dynamics, fragmentation risks
- If none fit, infer the type and design your own axis breakdown — the process (fan-out, citation discipline, write-as-you-go, synthesis) is the same regardless of type.

Set output paths:

- Report: `./research/{date}-{type}-{topic}.md` (lowercase, hyphens; date first, then type, then topic; under 50 chars for topic portion)
- Notes directory (if using parallel fan-out): `./research/{date}-{type}-{topic}/`

Ask if the user wants a different path. Load `assets/report-template.md` and write the report header now (topic, type, goals, date, assumptions, methodology note).

## Step 2 — Core Research (Parallel Fan-out)

Load `references/citations.md`, `references/parallel-search.md`, and `references/researcher.md`. Load the type-specific reference file.

Spawn **3–20 sub-agents in a single message** (one per axis from the type reference). Each agent:

- Reads `references/researcher.md` first
- Searches its axis on the web and fetches the sources it cites
- Writes findings as prose paragraphs with inline citations — not bullet lists
- Returns URL, accessed date, and confidence level per claim
- Tags each source: **Primary** (official docs, filings, peer-reviewed), **Established** (major publications, analyst firms), or **Low** (blogs, forums, single opinions). Flag Low-tier sources prominently.
- Critical claims need 2+ sources or get `confidence: Low`
- Flags conflicts between sources explicitly
- Does not wait for other agents
- Writes output to `{notes-dir}/{axis}.md` (e.g., `./research/2025-01-15-market-ai-coding-assistants/market-size.md`)

**Sub-agent prompt template** (use exactly this format):

```
You are a research analyst. Your task: research one specific axis of a larger study.

**Topic:** {overall topic}
**Your axis:** {axis name and description}
**Research goals:** {what specific questions to answer on this axis}
**Geographic/time constraints:** {any from scope interview, or "none"}

Instructions:
1. Run web searches and fetch the relevant source pages.
2. For each finding, note the source URL, access date, and confidence level (High/Medium/Low per the ladder in researcher.md).
3. Tag each source: **Primary** (official docs, government filings, peer-reviewed papers), **Established** (major publications, analyst firms with editorial process), or **Low** (blogs, forums, single opinions). Flag Low-tier sources visibly.
4. Critical claims (numbers, market share, projections) need 2+ sources or get confidence: Low.
5. Flag any conflicts between sources explicitly — do not silently pick one.
6. The axis definition is a starting point, not a ceiling. If you find relevant information that falls outside the stated axis but adds meaningful insight for the overall topic, include it — label it clearly and explain why it matters.
7. External files (PDFs, datasets, analyst reports, regulatory filings, whitepapers, charts) may contain valuable data. When encountered, their key content should be summarized inline — do not leave them as bare links. The `curl` command is available for local downloads when needed.
8. Write findings as **prose paragraphs**, not bullet lists. Embed figures in sentences: "The market reached $4.2B in 2024 [Source]" rather than "* Market: $4.2B". Bullets are acceptable only for true enumerated lists (product names, compliance items, enumerated steps).
9. Distinguish sourced facts from your analysis: use "According to [Source]..." for direct findings and "This suggests..." or "The pattern indicates..." for your synthesis. Never present inference as fact.
10. If a topic cannot be found, write "No sources found for X" — do not guess or leave a blank.
11. Return your findings as a Markdown section ready to paste into a report.

Confidence ladder:
- High: 2+ reputable independent sources agree
- Medium: 1 reputable source (Primary or Established tier)
- Low: blog, forum, single opinion, Low-tier source, or inferred

Citation format: [Source Name](url) (accessed YYYY-MM-DD, confidence: High|Medium|Low, tier: Primary|Established|Low)

Output format:
## {Section heading}
{Prose paragraphs with inline citations. Bullets only for true lists.}

> Conflicts noted: {if any}
> Gaps: {what you couldn't find}

**As a first step, you must read {path_to_skill}/references/researcher.md for instructions on how to conduct research.**

Save your output notes to {absolute path to notes-dir}/{axis}.md
```

Example for a market research axis:

```
**Topic:** AI coding assistants market
**Your axis:** Market size and growth (TAM/SAM/SOM, historical growth, projections)
**Research goals:** What is the total addressable market? How fast is it growing? What are the key segments?
**Geographic/time constraints:** Global, 2020-2025
```

In order to ensure research is conducted as quickly as possible, spawn all sub-agents in parallel (single message with multiple Agent tool calls).

As sub-agents complete, immediately append their findings to the output report file under the appropriate section heading from `assets/report-template.md`. Do not wait for all agents to finish before writing.

## Step 3 — Competitive / Landscape Analysis (Parallel Fan-out)

Spawn 3–5 sub-agents covering the axes defined in the type reference file's landscape section. Same citation discipline. Each writes to `{notes-dir}/{axis}.md`. Append results to the output report file immediately.

## Step 4 — Deep Dive (Parallel Fan-out)

Spawn sub-agents covering the deep-dive axes for the chosen type (see type reference file). Same process. Append results immediately.

## Step 4.5 — Outline Refinement (Deep Mode Only)

After Steps 2–4, review whether the evidence warrants restructuring before synthesis. Ask:

- Did findings contradict the initial scope assumptions?
- Did an important angle emerge that wasn't in the original plan?
- Are any sections underpowered by evidence — or overloaded?

If yes: adapt the outline. Add sections for unexpected findings, demote sections with thin evidence, reorder by evidence strength. Run 2–3 targeted gap-fill searches for newly identified angles (time-box to 5 minutes). Document what changed and why in the report's methodology note.

Skip in quick and standard modes.

## Step 5 — Synthesis

**Use `ultrathink` here** (standard and deep modes).

Read the full output report file (which now contains all appended findings from Steps 2–4). Write the synthesis section:

```markdown
## Key Findings

(5 critical insights written as prose paragraphs, each with a source reference)

## Strategic Recommendations

1. [Recommendation] — Rationale. Evidence: [source].
2. ... (3–5 recommendations, ranked by impact)

## Risks and Uncertainties

- Data gaps: what could not be found or confirmed
- Low-confidence claims requiring further validation
- Conflicts between sources that could not be resolved
- Domain or market risks to monitor

## Next Steps

- Recommended follow-up research
- If the initial request is not fulfilled, loop on step 1 and ask more questions
- Decisions this research enables
```

Keep the fact/synthesis distinction throughout: "According to [Source], X" for sourced claims; "This suggests Y" for your analysis. If a recommendation rests on Low-confidence data, say so explicitly.

**Critique pass (deep mode only):** Before finalizing, red-team the synthesis. Ask: What's missing? What could be wrong? What alternative explanations exist? What biases might be present? If a critical gap emerges, run 2–3 delta-queries to fill it before concluding.

## Step 6 — Report Writer Sub-agent

Spawn a single **report-writer sub-agent** to produce the final polished report. This keeps the coordinator's context clean.

Use the Agent tool with `subagent_type="general-purpose"` and `run_in_background=false`:

```
Agent(
  run_in_background=false
  subagent_type="general-purpose",
  description="Write final report",
  prompt="Read the notes in {absolute path to notes-dir}/ and the current report at {absolute path to report-file} and synthesize into a final research report that answers: {the user's original question in full}.

Earlier research in this conversation to build on: {absolute paths of the earlier report and notes folder from Step 1, or "none"}

Save your final report to this exact path: {absolute path to report-file}

**As a first step, you must read {path_to_skill}/references/report-writer.md for instructions on how to write your research report.**"
)
```

After the report writer completes, the report at `./research/{date}-{type}-{topic}.md` is final.

## Step 7 — PDF Export (Optional)

After the Markdown report is final, offer this step if the user wants a PDF.

Try each tool in order, stop at the first that works:

1. **Pandoc** (best output quality):

   ```bash
   pandoc report.md -o report.pdf --pdf-engine=wkhtmltopdf
   # or with weasyprint:
   pandoc report.md -o report.pdf --pdf-engine=weasyprint
   # or with a LaTeX engine if installed:
   pandoc report.md -o report.pdf
   ```

2. **`md-to-pdf`** (Node, no LaTeX required):

   ```bash
   md-to-pdf report.md
   ```

Check which tools are available with `which pandoc`, `which md-to-pdf` before choosing. If neither is available, tell the user which to install.

## Model Context Protocol (MCP) Integration

This skill supports MCP connectors for extending research beyond web searches:

**Examples of Public Open Knowledge MCP:**

- `arxiv-mcp`: Search academic papers by subject, author, date, or citations. Returns abstracts, PDF links, and citation graphs.
- `reddit-mcp`: Access subreddit data — top posts, comments, discussion threads. Good for community insights and developer sentiment.
- `serp-mcp`: Wraps search engines (Google, Bing, DuckDuckGo) to return structured results: titles, snippets, URLs, related questions.

**Examples of Private Data MCP:**

- `gmail-mcp`: Queries email threads, attachments, senders, dates. Requires OAuth read-only scope.
- `notion-mcp`: Accesses databases, pages, and their properties. Searchable by title, content, last edited, or custom properties.
- `confluence-mcp`, `sharepoint-mcp`, or custom wiki MCPs for internal knowledge bases.

**MCP in the Research Workflow:**

- Spawn sub-agents against different MCP endpoints in parallel (Step 2 fan-out)
- When an MCP returns no results, flag the evidence gap explicitly per critical rule #7
- Critical claims from a single MCP source get `confidence: Low` per critical rule #4 except if from private high-value sources
- MCP data counts as `Primary` tier if from official docs/filings, `Established` if from major publications, `Low` if from blogs/forums

## Guardrails

- **Additional research limit:** Step 5 (additional round) can only be followed **once**. After those researchers finish, you MUST move directly to Step 6 (report writer). Output: "After these researchers finish, I will move directly to coordinating the report writer."
- **No fabrication:** If a source does not exist, say so and flag the gap.
- **No silent picking:** Conflicting sources must be reported, not resolved silently.
- **No batching:** Write to the file after each step, not at the end.
- **No over-claiming:** Hedge explicitly on Low-confidence data.
- **No inference as fact:** Label analytical conclusions with "This suggests..." or similar.
- **No diving without scoping:** For vague prompts, always scope first — an ambiguous topic produces an unfocused report.

## Disclaimer

Research reflects a snapshot in time. Web content changes. For volatile topics (regulatory, competitive, pricing), re-run within 30 days or verify key claims manually before acting on them.

© samber · MIT · samber/cc-skills

Similar skills

All skills for Agent setup: memory, context, orchestration →

deep-research by other authors comes first.

deep-research affaan-m Turns a vague “research this” request into a cited report: sub-questions, 15–30 sources, an inline reference under each finding and a confidence level. CX Codex +1 5,100installs deep-research bytedance A skill for thorough web research using multi-angle analysis methodology. Use it instead of basic search when you need to understand a topic from all angles before writing content or tackling a complex question. CX Codex +1 2,800installs deep-research 199-biotechnologies Runs multi-stage research, checks claims against sources, and assembles structured reports. Use it for complex analysis and comparisons, not quick lookups. CX Codex +1 10,200installs deep-research ruvnet Orchestrates multi-phase research using web search, codebase analysis, and memory storage. It generates structured findings with evidence ratings for complex topics. CX Codex +1 893installs deep-research HKUSTDial Runs a topic investigation in the shape of a survey paper: pins the questions, searches from several angles, checks every reference and answers each question in the final report. Useful before you commit to a topic. CX Codex +1 496installs github-deep-research bytedance Runs multi-round research on any GitHub repository and writes a structured markdown report with a timeline, metrics and Mermaid diagrams. CX Codex +1 2,900installs research-deep Weizhena Reads outline.yaml and spins up a separate agent per item, writing each result to a structured JSON file. CX Codex +1 909installs firecrawl-deep-research firecrawl Turns a hard topic into a cited analytical report: it gathers sources from the open web with Firecrawl, works several angles and links the evidence. CX Codex +1 35,400installs parallel-deep-research parallel Runs multi-step deep research jobs using parallel-cli. Use it when you need an exhaustive markdown report with citations rather than a quick web search. CX Codex +1 15,600installs financial-deep-research rebyteai-template A skill for deep financial research: pulls from many sources, verifies each claim, and packages a cited report. CX Codex +1 978installs tooluniverse-literature-deep-research mims-harvard A skill for deep literature search across PubMed, EuropePMC and bioRxiv, with citation networks and evidence grading. Useful when you need a review with citations. CX Codex +1 664installs

From the same set19

frontend-design-deslop A skill that steers generated interfaces away from the default AI look: typography, OKLCH color, design tokens, dark mode, accessibility. CX Codex +1 4,800installs copywriting-tone-of-voice-creator Generates a structured TONE.md brand voice guide or adapts an existing one to new channels. Built for content pipelines and agent-driven writing. CX Codex +1 4,800installs copywriting-cta Designs the call-to-action at the bottom of an article: copy, placement, A/B test plan and an accessibility check. Built for blogs, newsletters and brand publications. CX Codex +1 4,600installs technical-article-writer Drafts developer-focused tutorials, benchmarks, and postmortems. It guides you through an intake interview and generates 10 headline options. CX Codex +1 4,700installs conventional-git Enforces Conventional Commits v1.0.0 rules for branch names and commit messages. Useful for parseable git history and automated changelogs on GitHub and GitLab. CX Codex +1 4,600installs chrome-extension Guides agents through Chrome extension work with Manifest V3. Use it for manifests, content scripts, background logic, browser APIs, and Chrome Web Store releases. CX Codex +1 4,500installs influence-and-negotiation A negotiation coach skill: prepares you for a deal, a raise talk or a hard 1:1, and drafts your next line while the conversation is live. CX Codex +1 4,500installs site-launch-checklist Runs an interactive pre-release audit for websites and web apps, covering DNS, security headers, GDPR rules, SEO, and analytics before production deployment. CX Codex +1 4,400installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor