deepdive is a Claude Code plugin with 1 hand-picked skill, indexed on Flowy in the Writing category.
> /plugin marketplace add Socialpranker/deepdive> /plugin install deepdive@deepdive
Stop ad-hoc Googling. Start documented investigation.
Docs · Install · How it works · Contribute
You: investigate the trade-offs between Postgres logical replication and CDC tooling
Claude: ✓ Reframed your question (3 hypotheses) + decision spec: what you'll do with the answer
✓ Picked genre: decision (comparison + validation)
✓ Wrote plan.md (17 sections)
✓ Checked your env: 4 APIs available, 2 fallback to HTML
✓ Launched 4 sub-agents across 12 channels
✓ Saved 23 sources to sources/ with quotes, provenance-checked
✓ Ran adversarial pass (3 counter-arguments + an "execute this" role)
✓ Report ready: research/postgres-replication-vs-cdc/2026-05-21_decision.md
✓ Walked through your decision forks — you picked CDC tooling, logged to application.md
A Claude Code skill that turns "research this topic" into a 13-phase pipeline with hypothesis testing, parallel sub-agent search, source triangulation, and adversarial review.
The output is a folder you can return to in a month. Every claim traces to a specific source file. The plan documents why you made every choice. No re-research needed.
New here? Start with the Quickstart — install → invoke → first result in ~5 min.
One-shot prompt → wall of text
Sources lost in chat history
No way to detect bias
No reuse next time
Generic Google results
Sources include... (vague)
17-section plan.md documents every choice
Each source = file with verbatim quotes
Mandatory adversarial pass + opposition queries
Atomic theses in findings/FN.md reusable
Every claim → [s12] link → specific quote
git clone https://github.com/Socialpranker/deepdive.git \
~/.claude/skills/deepdive
That's it. Now type any of these in a Claude Code session:
# Clone
git clone https://github.com/Socialpranker/deepdive.git
cd deepdive
# Package as .skill bundle
zip -r ../deepdive.skill . -x ".*" -x "*.zip"
# Upload via Claude.app → Settings → Skills → Add Skill
The 13-phase methodology is portable. Load SKILL.md + references/*.md into the LLM's context manually. Skip the sub-agent parts and use separate chat sessions per subtopic.
Full instructions →
The skill runs 13 phases in order:
| Phase | Name | What happens |
|---|
| 1 | Reframing | opus / high | | 2 | Genre & block selection | sonnet / medium | | 3 | Plan | opus / medium | | 3.5 | Capability Discovery | sonnet / low | | 3.7 | Plan-review gate | sonnet / low | | 4 | Search | sonnet / medium | | 5 | Claims-ledger + triangulation | haiku / low | | 5.5 | Evidence filter | sonnet / low | | 5.7 | Wiki reconcile | sonnet / low | | 6 | Synthesis + multi-angle red team | opus / high | | 6.5 | Verify | haiku / low | | 7 | Refresh targets | sonnet / medium | | 8 | Decision walkthrough | opus / high |
Each phase runs on a model matched to its task — Opus where reasoning multiplies (1/3/6), Haiku for the parallel fan-out (4). The skill announces the routing and an estimated cost up front, once.
Every phase is transparent: you see what's happening, you confirm key decisions, and you get a folder you can return to. Before any search fires, the plan-review gate (3.7) shows you the reframing, hypotheses, genre, and channels and lets you approve or edit them — strictness scales with mode (deep waits for an explicit go-ahead, medium is a soft check, shallow skips it). Editing the plan before execution is the single highest-leverage step in the whole pipeline — Gemini Deep Research calls plan review its "biggest lever over output quality," and a wrong plan executed perfectly still produces a wrong report.
Reframing (1) doesn't just restate the question — a router classifies its profile (factual / multi-step / relational / comparative / landscape) and that classification picks the decomposition method: factual questions get flat independent subquestions, multi-step ones ("X given Y") get least-to-most leveling, comparative ones get a shared axis matrix with mandatory opposition queries per candidate. Picking the wrong decomposition for a question's shape is a silent failure mode — the router makes the choice explicit instead of defaulting to "flat parallel" for everything.
Phase 4 (Search) isn't a single pass — it's a bounded loop with three cheap safeguards so it doesn't quietly waste budget or silently give up:
met / partial / unmet with a one-line reason. This is what the expensive Opus evaluation reads instead of re-deriving the gap from scratch, and it's what targets the next round's dispatch.L1 → L2 instead of dispatched flat in parallel: L1 rounds run first, concrete facts they surface get carried forward, and L2 queries are launched already sharpened by that context. Independent subquestions still run flat.Scoring (5) doesn't stop at the usual Credibility/Recency/Bias rating — it also flags input-level skepticism: a source that measures its own product, self-reports a benchmark, or is directly disputed by another collected source gets a strict caveat: marker (vendor / self-reported / disputed:sNN) before the claim reaches claims.csv, not after synthesis has already built on it. A claim whose key number carries that marker is capped at confidence: medium (or low for an unresolved dispute) — the same rule shape as primary-first sourcing. Vendor benchmarks are the numbers that most often get quietly repeated as fact; catching them on the way in, not in the red team pass at the end, is the point.
For medium/deep depth, the pipeline runs two more machine-checked passes most one-shot research skips entirely:
SUPPORTED / PARTIAL / UNSUPPORTED verdicts to .verify/faithfulness.json. Citation fabrication is common enough industry-wide — the Tow Center found a >60% error rate in AI-generated citations — that checking for it, not just for dead links, is a real differentiator.None of this is enforced by discipline alone: scripts/validate_phases.py reads a finished run's mode: and checks that every phase mandatory for that mode actually left its file artifact (plan.md, claims.csv, evidence/, .verify/*.json, the dated report, ...). A skipped phase fails the check instead of silently passing — the model can't just claim "done." As of finish-up, this check is a blocker, not a suggestion: the skill won't report a research as done on a red gate, symmetrically to how a report isn't "done" without its verification header. sources.csv itself is now built the same deterministic way — scripts/build_sources_csv.py generates it from sources/NN.md frontmatter (with a --check mode for CI) instead of being assembled by hand each run.
A well-cited report that changes nothing is still a failure — the skill's answer to that is a decision spine running through the whole pipeline, not a bolt-on question at the end:
root: field on every source flags what it's actually retelling — ten articles quoting one press release are one voice, not ten, so triangulation now requires ≥2 distinct roots in addition to ≥3 sources and ≥2 types. A snowball pass also chains citations backward (to the primary study everyone's retelling) and forward (who's citing it since), catching sources no keyword query would surface.memo.md — a one-page decision memo (recommendation, resolved forks, 3 key numbers with sources, the main risk, next actions) designed to be the thing that actually enters your decision process, with the full report as its evidence base. A conditional recommendation mapped to your forks is required; an unconditional "it depends" is not an acceptable ending.blocked), or deferred — to application.md. A global ledger tracks whether past research actually led anywhere, and Phase 1 reads it back on your next research to flag a pattern of dead-end runs.Want to compare models head-to-head? The eval harness scores any run on 6 axes.
deepdive is a Claude Code plugin with 1 hand-picked skill, indexed on Flowy in the Writing category. Install it with the command on its page. It includes deepdive. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it