coreyhaines31/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 WebSearch, WebFetch, 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 WebSearch: this is multi-pass with verification.
npx skills add https://github.com/coreyhaines31/makerskills --skill deep-research
Plans, executes, and synthesizes research from multiple sources. Archives the output so the corpus compounds.
Restate the research question in one tight sentence. If ambiguous, ask the user:
Output: Research question: <one sentence>
Pick from this menu based on the question type. Note which sources you'll hit and why.
| Source | When to use | Tool |
|---|---|---|
| Web search (Google) | Authoritative articles, docs, official statements | WebSearch |
| /last30days | What people are *actually saying* right now — Reddit, X, YouTube, HN, web recency | Skill({skill: "last30days", args: "<topic>"}) |
| Specific URLs | When the user hands over starting URLs | WebFetch |
| Browsable pages (auth-walled, JS-heavy) | Pricing pages, product tours, profiles | agent-browser via the compound-engineering:agent-browser skill |
| Memory | Prior research / decisions / context the user already captured | grep ~/.claude/memory/ |
| Notion | If the topic touches a known Notion workspace | Direct Notion API (key in $NOTION_API_KEY, see reference_notion_api.md) |
| Research archive | Prior /deep-research runs that touched this topic | grep ${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 WebSearch).
Run each chosen source. For each result, capture:
Don't synthesize yet — just collect.
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] ...
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>
After archiving:
business-brainstorm — calls this skill during the market validation step/domain — when research includes "is the .com available"/last30days — one of the data sourcesTake coreyhaines31/deep-research from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.