Skip to the content

deep-research

When you want multi-source, multi-step research on a topic — competitor research before a sales call, market research for a new business idea, positioning angles, due diligence on a partnership or podcast guest, tech decision research (which DB, which auth), or any \"I need to actually understand X.\" Combines web search, URL fetch, agent-browser, last30days (Reddit/X/YouTube/HN/web recency), memory, and Notion.

From Corey Haines' makerskills, MIT, pinned at cc31579. Updated 2026-10-08.

The file, as Kwern runs it

Nothing below is rewritten or cut. The description a model routes on comes first, then the file itself. The whole thing, frontmatter included, is at /skills/deep-research.md.

description

When you want multi-source, multi-step research on a topic — competitor research before a sales call, market research for a new business idea, positioning angles, due diligence on a partnership or podcast guest, tech decision research (which DB, which auth), or any \"I need to actually understand X.\" Combines web search, URL fetch, agent-browser, last30days (Reddit/X/YouTube/HN/web recency), memory, and Notion. Outputs a structured brief with citations, contradictions, gaps, and recommended next steps. Archives every research run to ~/.config/makerskills/deep-research/archive/ so past work is searchable. Triggers on \"/deep-research,\" \"research X,\" \"investigate X,\" \"do a deep dive on X,\" \"look into X,\" \"what's actually happening with X,\" \"due diligence on X,\" \"validate this market.\" Differs from a one-shot web search: this is multi-pass with verification.

Plans, executes, and synthesizes research from multiple sources. Archives the output so the corpus compounds.

Step 1 — Frame the question

Restate the research question in one tight sentence. If ambiguous, ask the user:

  • What's the decision this research will inform?
  • What's the minimum useful answer? (Saves over-researching.)
  • Any sources to prioritize or avoid?

Output: **Research question:** <one sentence>

Step 2 — Plan the sources

Pick from this menu based on the question type. Note which sources you'll hit and why.

SourceWhen to useHow (tool names vary by agent)
Web search (Google)Authoritative articles, docs, official statementsYour agent's web search (e.g. WebSearch in Claude Code)
/last30daysWhat people are actually saying right now — Reddit, X, YouTube, HN, web recencyThe last30days skill, if installed. Otherwise skip it and note the gap
Specific URLsWhen the user hands over starting URLsYour agent's URL fetch (e.g. WebFetch), or curl + defuddle
Browsable pages (auth-walled, JS-heavy)Pricing pages, product tours, profilesagent-browser CLI (any agent with a shell)
MemoryPrior research / decisions / context the user already capturedyour agent's memory, or grep ${MAKERSKILLS_MEMORY:-${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/memory}/
NotionIf the topic touches a known Notion workspaceDirect Notion API (key in $NOTION_API_KEY, see reference_notion_api.md)
Research archivePrior /deep-research runs that touched this topicgrep ${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/deep-research/archive/

Run discovery passes in parallel where possible. Sequential only when one source needs another's output (e.g., agent-browser a URL discovered by web search).

Step 3 — Execute discovery

Run each chosen source. For each result, capture:

  • The source (URL or system)
  • 1–3 sentence summary of what was said
  • Date / recency
  • Confidence in the source (high/medium/low)

Don't synthesize yet — just collect.

Step 4 — Synthesize

  1. Group findings by theme or sub-question
  2. Contradiction check — flag anywhere sources disagree. Don't average them; surface the disagreement.
  3. Confidence: high (multiple independent sources agree), medium (one strong source or several weak), low (single anecdote or speculation)
  4. Gaps: what would change the answer? What's NOT in the corpus?

Step 5 — Output the brief

Use this template:

# Research: <question>

**Date:** <YYYY-MM-DD>
**Decision this informs:** <one line>
**Confidence overall:** high / medium / low

## TL;DR
<2–4 sentences with the answer>

## Key findings

### 1. <Finding>
<2–4 sentences>. Sources: [1], [3], [5]

### 2. <Finding>
...

## Contradictions / uncertainty
- <where sources disagree, with each side cited>

## Gaps
- <what's missing from the corpus>
- <what to research next to close the gap>

## Recommended next steps
1. <action>
2. <action>

## Sources
[1] <Title> — <URL or system> (<date>) — <confidence>
[2] ...

Step 6 — Archive

Archives live in ${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/deep-research/archive/ (create the directory if missing). Never write archives inside the skill's own folder — skill installs and upgrades re-sync from source and wipe anything saved there. Migration: if this skill's folder contains an old references/research-archive/ with user entries, move those files into the archive directory first.

Write the brief to <archive dir>/<YYYY-MM-DD>-<slug>.md so it's grep-able forever. Slug = kebab-case of the topic.

Also append a one-line entry to <archive dir>/INDEX.md (create if missing):

- 2026-06-15 — [<topic>](./<filename>.md) — <one-line TL;DR>

Step 7 — Surface

After archiving:

  • Show the full brief in chat
  • Tell the user the archive path
  • Offer: "Push to Notion or save to a project's docs?"

Composes with

  • business-brainstorm — calls this skill during the market validation step
  • /domain — when research includes "is the .com available"
  • /last30days — one of the data sources

Notes on quality

  • Always cite. Every claim in the brief needs a source pointer.
  • Recency matters — note dates on each source. For fast-moving topics (AI, startups), de-weight sources >12 months old.
  • Don't trust a single source for high-stakes claims. Re-search until you have at least 2 independent corroborations or surface the uncertainty.
  • No padding. If the answer is one paragraph, return one paragraph. The template is a maximum, not a minimum.

Someone is asking for what you built today.

On Reddit, on X, in ChatGPT's answers. Kwern finds them every morning and drafts the reply in your voice; you decide what goes out.