{"id":"fb36cb26-6aee-4030-9bf1-0dda436e1984","slug":"deepdive","kind":"skill","name":"deepdive","summary":"Deepdive skill for Claude Code — 12-phase research pipeline: plan-review gate, parallel sub-agent search, claims-ledger triangulation with dissent protection, relevance × authority evidence filter, mu","owner":"Socialpranker","repoUrl":"https://github.com/Socialpranker/deepdive","license":"MIT","licenseTier":"permissive","trust":"community","stars":373,"match":null,"fewStars":false,"format":"skill","createdAt":null,"addedAt":"2026-10-14T06:02:18.853Z","logoUrl":"https://avatars.githubusercontent.com/u/273312799?u=f03faea53bf05139c9a0b4433d0318faa318ce75&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["search","developer-tools","files-documents"],"tags":["ai-research-assistant","anthropic","claude","claude-code","deep-research","llm-research","markdown","meta-research"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-14T06:05:36.969Z","sample":false,"url":"https://conduits.dev/tools/deepdive","language":"Python","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<div align=\"center\">\n\n# Deepdive\n\n### A structured meta-research skill for Claude Code\n\n**Stop ad-hoc Googling. Start documented investigation.**\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow?style=flat-square)](LICENSE)\n[![Claude Code](https://img.shields.io/badge/Claude%20Code-Compatible-d97757?style=flat-square)](https://claude.com/claude-code)\n[![Skills](https://img.shields.io/badge/Anthropic-Agent%20Skills-d97757?style=flat-square)](https://docs.anthropic.com/claude/docs/skills)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat-square)](CONTRIBUTING.md)\n[![Auto-Validated](https://img.shields.io/badge/APIs-Auto--Validated%20Weekly-blueviolet?style=flat-square)](.github/workflows/catalog-sync.yml)\n[![Stars](https://img.shields.io/github/stars/Socialpranker/deepdive?style=flat-square&logo=github)](https://github.com/Socialpranker/deepdive/stargazers)\n\n<br>\n\n**[Docs](https://socialpranker.github.io/deepdive/)** · **[Install](#install-in-30-seconds)** · **[How it works](#how-it-works)** · **[Contribute](CONTRIBUTING.md)**\n\n<br>\n\n```\nYou: investigate the trade-offs between Postgres logical replication and CDC tooling\n\nClaude:  ✓ Reframed your question (3 hypotheses) + decision spec: what you'll do with the answer\n         ✓ Picked genre: decision (comparison + validation)\n         ✓ Wrote plan.md (17 sections)\n         ✓ Checked your env: 4 APIs available, 2 fallback to HTML\n         ✓ Launched 4 sub-agents across 12 channels\n         ✓ Saved 23 sources to sources/ with quotes, provenance-checked\n         ✓ Ran adversarial pass (3 counter-arguments + an \"execute this\" role)\n         ✓ Report ready: research/postgres-replication-vs-cdc/2026-05-21_decision.md\n         ✓ Walked through your decision forks — you picked CDC tooling, logged to application.md\n```\n\n</div>\n\n---\n\n## What this is\n\nA [Claude Code skill](https://docs.anthropic.com/claude/docs/skills) that turns **\"research this topic\"** into a **<!--gen:count:phases-->13<!--/gen-->-phase pipeline** with hypothesis testing, parallel sub-agent search, source triangulation, and adversarial review.\n\nThe 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.\n\n> **New here?** Start with the [Quickstart](QUICKSTART.md) — install → invoke → first result in ~5 min.\n\n<table>\n<tr>\n<th width=\"50%\">Without this</th>\n<th width=\"50%\">With this</th>\n</tr>\n<tr>\n<td>\n\nOne-shot prompt → wall of text\n\nSources lost in chat history\n\nNo way to detect bias\n\nNo reuse next time\n\nGeneric Google results\n\nSources include... *(vague)*\n\n</td>\n<td>\n\n17-section `plan.md` documents every choice\n\nEach source = file with verbatim quotes\n\nMandatory adversarial pass + opposition queries\n\nAtomic theses in `findings/FN.md` reusable\n\n<!--gen:count:channels-->29<!--/gen--> named channels + <!--gen:count:stat_sources-->460<!--/gen-->+ stat sources\n\nEvery claim → `[s12]` link → specific quote\n\n</td>\n</tr>\n</table>\n\n---\n\n## Install in 30 seconds\n\n<details open>\n<summary><b>For Claude Code (CLI)</b></summary>\n\n```bash\ngit clone https://github.com/Socialpranker/deepdive.git \\\n  ~/.claude/skills/deepdive\n```\n\nThat's it. Now type any of these in a Claude Code session:\n- \"Investigate X\"\n- \"Изучи тему\"\n- \"Validate this hypothesis\"\n\n</details>\n\n<details>\n<summary><b>For Claude Desktop (Skills enabled)</b></summary>\n\n```bash\n# Clone\ngit clone https://github.com/Socialpranker/deepdive.git\ncd deepdive\n\n# Package as .skill bundle\nzip -r ../deepdive.skill . -x \".*\" -x \"*.zip\"\n\n# Upload via Claude.app → Settings → Skills → Add Skill\n```\n\n</details>\n\n<details>\n<summary><b>For other LLMs (Codex, Gemini, local)</b></summary>\n\nThe <!--gen:count:phases-->13<!--/gen-->-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.\n\n[Full instructions →](#use-with-other-llms-codex-gemini-etc)\n\n</details>\n\n---\n\n## How it works\n\nThe skill runs **<!--gen:count:phases-->13<!--/gen--> phases** in order:\n\n| Phase | Name | What happens |\n|:---:|:---|:---|\n<!--gen:phases:table:en-->\n| **1** | **Reframing** | opus / high |\n| **2** | **Genre & block selection** | sonnet / medium |\n| **3** | **Plan** | opus / medium |\n| **3.5** | **Capability Discovery** | sonnet / low |\n| **3.7** | **Plan-review gate** | sonnet / low |\n| **4** | **Search** | sonnet / medium |\n| **5** | **Claims-ledger + triangulation** | haiku / low |\n| **5.5** | **Evidence filter** | sonnet / low |\n| **5.7** | **Wiki reconcile** | sonnet / low |\n| **6** | **Synthesis + multi-angle red team** | opus / high |\n| **6.5** | **Verify** | haiku / low |\n| **7** | **Refresh targets** | sonnet / medium |\n| **8** | **Decision walkthrough** | opus / high |\n<!--/gen-->\n\nEach 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.\n\nEvery 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.\n\nReframing (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.\n\nPhase 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:\n- **Cheap goal-check** — after each round, a Haiku pass tags every subquestion `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.\n- **No-progress circuit breaker** — two consecutive rounds that add nothing new to the source pool stop the loop immediately, regardless of remaining budget. The unresolved thread goes to Open Questions instead of burning tokens chasing a dead end.\n- **Least-to-most decomposition** — for layered questions (\"X given Y\"), subquestions are leveled `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.\n\nScoring (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.\n\nFor medium/deep depth, the pipeline runs two more machine-checked passes most one-shot research skips entirely:\n- **Evidence filter (5.5)** — a CRAG-style relevance classifier runs on every (claim, source) pair *before* synthesis and keeps only the quotes that actually support that specific claim. Dumping every found source into synthesis measurably hurts quality (Search-o1 dropped 33%→24% doing exactly that); this is the fix, not a nice-to-have.\n- **Faithfulness verification (6.5)** — beyond checking that a cited link is alive, the skill checks that the source *entails* the claim it's attached to (RAGAS/ALCE-style claim⊨quote), and writes `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.\n\nNone 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.\n\nA 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:\n\n- **Reframing (1) captures a decision spec**, not just a topic: the action you'll take, who reads the report and what they do next, and at least one falsifiable if-then fork (\"if the research shows X, I do A\"). No fork means the research changes nothing — the skill downgrades to shallow \"curiosity mode\" with an explicit label instead of quietly running a full pipeline for a dead-end doc.\n- **Sourcing (4-5) tracks provenance, not just source count.** A `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.\n- **Synthesis (6) produces `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.\n- **Red team (6) gets a fourth role — the Executor** — who plays your own decision-spec consumer and tries to actually act on the report using only its content, flagging every place a hedge phrase or a missing number blocks a real decision.\n- **Decision walkthrough (8) is mandatory at every depth, including shallow.** The report isn't discussed, it's executed: the skill walks you through each fork one at a time (\"research showed X [s03][s11] — does fork A fire? your call?\") and logs the outcome — decided, blocked on missing data (one bounded gap-search, then honest `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.\n\nWant to compare models head-to-head? The [eval harness](eval/README.md) scores any run on 6 axes.\n\n---\n\n## What's inside\n\n<table>\n<tr>\n<td width=\"33%\" valign=\"top\">\n\n### <!--gen:count:blocks-->106<!--/gen--> Report Blocks\n\n10 categories: **FRAME** · **EXPLAIN** · **COMPARE** · **MAP** · **VALIDATE** · **ANALYZE** · **CLOSE** · **PEOPLE** · **NUMBERS** · **CONTEXT**\n\nEach block has its own template, anti-patterns, and composition rules.\n\n[Block library →](references/blocks/INDEX.md)\n\n</td>\n<td width=\"33%\" valign=\"top\">\n\n### <!--gen:count:channels-->29<!--/gen--> Search Channels\n\nNamed strategies with query patterns + paywall fallbacks:\n\n`web-general` · `academic` · `preprint-servers` · `code-github` · `forum-discussion` · `news-current` · `industry-reports` · `regulatory-legal` · `competitive-signals` · `data-statistical-gov` · `product-analytics` · `crypto-analytics` · `api-direct` · *and more*\n\n[Channels catalog →](references/channels.md)\n\n</td>\n<td width=\"33%\" valign=\"top\">\n\n### <!--gen:count:stat_sources-->460<!--/gen-->+ Stat Sources\n\n14 cross-industry + 19 industry categories. Each entry: URL · Type · Access · Quality · Limitations · Combine-with · Fallback.\n\nCategories: `gov_macro` · `companies_public` · `crypto` · `health` · `education` · `climate_env` · `science` · 19 industries\n\n[Sources catalog →](references/stat_sources/INDEX.md)\n\n**Plus a signal registry:** 1072 endpoints verified live and filed by what question they answer — parliamentary APIs, advisory feeds, climate and macro endpoints. Loaded one file at a time, outside the base context budget.\n\n[Registry →](references/registry/INDEX.md)\n\n</td>\n</tr>\n<tr>\n<td valign=\"top\">\n\n### 6 Report Genres\n\n| Genre | When |\n|:---|:---|\n| `qa` | Open meta-research |\n| `explainer` | \"How does X work\" |\n| `decision` | \"X or Y\" |\n| `landscape` | \"Who's in this space\" |\n| `validation` | \"Is X true\" |\n| `custom` | Hybrid, assembled per question |\n\n[Genres →](references/genres.md)\n\n</td>\n<td valign=\"top\">\n\n### <!--gen:count:api-->47<!--/gen-->+ API Endpoints\n\nFree no-auth APIs prioritized:\n\n`Semantic Scholar` · `OpenAlex` · `CrossRef` · `arXiv` · `DefiLlama` · `CoinGecko` · `HN Algolia` · `World Bank` · `SEC EDGAR` · `ClinicalTrials.gov` · `PubMed` · `GDELT` · `NSF Awards` · `NIH RePORTER` · `Grants.gov` · `EPO Linked Open Data`\n\nPatents and grants are first-class categories: `patents/` (USPTO ODP, EPO OPS, EPO LOD, WIPO) and `grants/` (NSF, NIH RePORTER, CORDIS, Grants.gov). Every entry carries a `Verified:` date — access terms rot, and a stale \"free, no key\" sends a run into a paywall.\n\nAuth via env vars only — skill never asks for keys inline.\n\n[API catalog →](references/api_sources/INDEX.md)\n\n</td>\n<td valign=\"top\">\n\n### Weekly Auto-Sync\n\nGitHub Actions cron validates all endpoints + discovers upstream additions:\n\n- HEAD-check <!--gen:count:api-->47<!--/gen-->+ APIs weekly\n- Scan public-apis & awesome-public-datasets\n- Auto-PR for dead endpoints\n- Reports committed to `reports/` branch\n\n[Workflow →](.github/workflows/catalog-sync.yml)\n\n</td>\n</tr>\n<tr>\n<td valign=\"top\">\n\n### Model Routing\n\nPer-phase model selection — quality where it multiplies, cheap where it parallelizes:\n\n- Reframing / plan / adversarial → **Opus**\n- Sub-agent fan-out (search) → **Haiku** (cheap × N)\n- Synthesis → **Sonnet/high**\n\n~$2 instead of ~$8 on a deep run, *and* higher quality on critical phases. Override with `with all on opus` / `with cheap mode`.\n\n[Routing →](references/model_routing.md)\n\n</td>\n<td valign=\"top\">\n\n### Eval Harness\n\nCompare research quality across models. Same question, different configs, scored on 6 axes:\n\n- Deterministic (script): citation integrity, source diversity, cost\n- Semantic (LLM-judge): accuracy, coverage, adversarial honesty\n\nWeighted sum with a **citation floor** — hallucinated sources can't win on depth. Verdict = quality per dollar.\n\n[Eval →](eval/README.md)\n\n</td>\n<td valign=\"top\">\n\n### Citation Check\n\n`check_citations.py` resolves every source URL — dead `OPEN` links flagged as likely hallucinations; transport flaps marked `UNKNOWN`, not penalized.\n\nIgnores env proxies (`trust_env=False`). `--strict` for CI.\n\nVerification runs four layers: **liveness** (does the source exist), **faithfulness** (does it actually entail the claim it's cited for), **qualifier preservation** (does the report still say what the ledger said), and **construct provenance** (do the frameworks, taxonomies and named \"laws\" the report uses exist outside it). Verdicts land in `.verify/*.json`, one producer per file.\n\nThe fourth layer exists because the first three all join on `claim_id` — and a fabricated *name* has none. That is the largest measured class of generation defect in research agents ([FINDER/DEFT](https://arxiv.org/abs/2512.01948): strategic content fabrication, 18.95% of errors), and it passes a citation check with every URL alive.\n\nNumbers get two independent passes: `check_number_provenance.py` on **origin** (who produced the figure; does one value circulate across supposedly independent roots) and `check_number_arithmetic.py` on **computation** — every `derived` figure in `numbers.csv` is recomputed from its own declared `formula` + `inputs`, and `share` groups must sum to 100. A percentage computed in prose is otherwise never re-checked by anything.\n\n[Check →](eval/check_citations.py)\n\n</td>\n<td valign=\"top\">\n\n### Phase-gate Validator\n\n`scripts/validate_phases.py` reads a finished run's `mode:` frontmatter and checks that every phase mandatory for that depth left its file artifact — `plan.md`, `state.md`, `claims.csv`, `numbers.csv`, `outline.md`, `evidence/`, `.verify/*.json`, the dated report.\n\nA skipped phase fails the check (`--strict` for CI) instead of the model just asserting \"done\" — it's a **finish-up blocker**, not advice. Machine insurance against the one failure mode a markdown methodology can't fix by discipline alone.\n\nIt also checks three things a missing-file test cannot: that `state.md` is a **rebuilt** round window (Known/Gaps/Next, size-capped) and not an appended second transcript; that every `triangulated`/`contested` claim is mapped to a section in `outline.md` — the **synthesis gap**, where retrieval succeeded and the finding never reached the report; and that no `unsourced` construct sits in the memo or TL;DR.\n\nIts own inputs are machine-built too: `scripts/build_sources_csv.py` generates `sources.csv` deterministically from `sources/NN.md` frontmatter (`--check` for CI drift), and `eval/validate_structure.py` enforces the `caveat:` field as a strict enum (`-` / `vendor` / `self-reported` / `disputed:sNN`) instead of free text, so it stays greppable.\n\n[Validator →](scripts/README.md)\n\n</td>\n</tr>\n</table>\n\n---\n\n## Example folder\n\nSample output for a typical `decision`-genre research:\n\n```\nresearch/<topic-slug>/\n├── plan.md                              # 17-section plan\n├── state.md                             # Round window, rewritten each round\n├── sources.csv                          # Index with C/R/B scoring\n├── claims.csv                           # Claim ledger + triangulation status\n├── numbers.csv                          # Every figure the report stands on\n├── outline.md                           # section → block → claim_id map\n├── sources/                             # One file per source\n│   ├── 01_vendor-docs.md                # Primary, total=14\n│   ├── 02_benchmark-paper.md            # Academic, total=12\n│   ├── 03_industry-report.md            # Industry, total=13\n│   ├── 04_forum-thread.md               # Forum, total=9 (opposition)\n│   └── ... (19 more)\n├── findings/\n│   ├── F1_<atomic-thesis>.md            # confidence: high\n│   └── F2_<atomic-thesis>.md            # confidence: medium\n├── .verify/                             # One producer per file, many consumers\n│   ├── authority.json                   # Phase 5.5 — who may assert this\n│   ├── citations.json                   # Layer 1 — liveness\n│   ├── faithfulness.json                # Layer 2 — entailment\n│   ├── qualifiers.json                  # Layer 3 — scope drift\n│   └── constructs.json                  # Layer 4 — named-construct provenance\n├── memo.md                              # One-page decision memo (always)\n├── application.md                       # Decision walkthrough verdict (always)\n└── 2026-05-21_decision.md               # Final report\n```\n\nFinal report structure (assembled from the blocks chosen in plan.md):\n\n```markdown\n## TL;DR\n- Claim A holds under condition X [confidence: high]\n- Claim B holds conditionally on threshold Y [confidence: medium]\n- Claim C is disputed by opposition sources [confidence: low]\n\n## Mental model\n[How the underlying mechanism works...]\n\n## Falsification criteria\nWhat would disprove H1, H2, H3...\n\n## Verdict conditional\nRecommendation IF: <conditions met>\nDifferent recommendation OTHERWISE: <conditions broken>\n\n## Counter-arguments (steel-man)\nCA1: \"<the strongest opposing claim>\" [source: s09]\n     → Our answer: <conditions under which CA1 fails>\nCA2: ...\n```\n\nEvery claim is clickable to its source. A month later, you don't re-research — you read.\n\n---\n\n## Contribute\n\nThe catalog is most valuable when **it grows**. Easy contributions:\n\n| Time | Type | Example |\n|:---:|:---|:---|\n| 15 min | Add a stat source | `Add SimilarWeb Pro to consumer_digital` |\n| 15 min | Improve a query pattern | `Better arxiv channel queries for biology` |\n| 30 min | New search channel | `Add patent-search with USPTO+EPO fallback` |\n| 1-2h | New industry category | `Add industries/aerospace.md` |\n| 2-4h | New report block | `Add decision-tree to compare.md` |\n| Half-day | LLM adapter | `Add codex/ folder with adapted protocols` |\n\n[Full contributing guide →](CONTRIBUTING.md)\n\n[![Contributors](https://contrib.rocks/image?repo=Socialpranker/deepdive)](https://github.com/Socialpranker/deepdive/graphs/contributors)\n\n---\n\n## FAQ\n\n<details>\n<summary><b>How is this different from ChatGPT Deep Research / Perplexity?</b></summary>\n\nThose are **products** — closed UI, fixed flow, opaque source selection. This is **open methodology** — you control every step, the protocol is markdown you can fork, the source catalog is yours to extend.\n\nThey also don't separate sources into files, don't do explicit triangulation, don't run adversarial passes, and don't produce reusable atomic theses. Nor do they filter evidence for relevance before synthesis (feeding a model everything you found measurably hurts quality — Search-o1 dropped from 33% to 24% accuracy doing that) or verify that a cited source actually *supports* the claim it's attached to, rather than just existing (faithfulness, not just liveness). Citation fabrication is common enough industry-wide — the Tow Center found a >60% error rate in AI-generated citations — that checking for it is a real differentiator, not a nice-to-have.\n\nHonesty about sources goes further than checking they exist: scoring flags a source that's measuring its own product, self-reporting a benchmark, or directly disputed by another collected source, and caps the confidence of any claim resting on that number — *before* it ever reaches the report. Vendor benchmarks getting quietly repeated as fact is a market-wide problem; catching it on input, not as an afterthought, is the same honesty principle as faithfulness applied one step earlier.\n\n</details>\n\n<details>\n<summary><b>Does it work without Claude Code CLI?</b></summary>\n\nYes — on Claude Desktop with Skills enabled. Also works manually with any LLM by loading the markdown files into context (see [\"Use with other LLMs\"](#use-with-other-llms-codex-gemini-etc) below).\n\n</details>\n\n<details>\n<summary><b>What's a research output look like?</b></summary>\n\nSee the [example folder](#example-folder) above. TL;DR: a folder with `plan.md` + `sources/NN.md` per source + `findings/FN.md` atomic theses + final `<date>_<genre>.md` report.\n\nEvery claim in the final report links to a specific `sources/NN.md` file.\n\n</details>\n\n<details>\n<summary><b>Why so many files? Isn't this overkill?</b></summary>\n\nFor a 5-minute \"what's the latest X\" question — yes. That's why `shallow` mode exists (5-7 sources, no sub-agents, ~15 min). The full machinery is for `medium` (1 hour) and `deep` (3 hours) when you need to actually use the output for a decision.\n\nThe file-per-source structure is the key **reuse** mechanism. A single research often informs 3-5 future researches because you can cite individual `sources/NN.md` directly.\n\n</details>\n\n<details>\n<summary><b>Is this just prompt engineering?</b></summary>\n\nIt's **structured methodology + curated catalog + reusable templates + automation**.\n\n- The <!--gen:count:phases-->13<!--/gen-->-phase workflow forces discipline\n- <!--gen:count:stat_sources-->460<!--/gen-->+ stat sources catalog is curated knowledge\n- <!--gen:count:blocks-->106<!--/gen--> reusable blocks compose any report shape\n- `scripts/validate_phases.py` machine-checks phase completeness, not just style\n- A decision spec + mandatory walkthrough (phase 8) ties every research to an actual action, not just a document\n- Weekly auto-validation keeps the catalog alive\n- 25+ upstream awesome-lists give infinite discovery layer\n\nPrompts are an implementation detail, not the value.\n\n</details>\n\n<details>\n<summary><b>What stops the report from being unactionable — \"well-researched but useless\"?</b></summary>\n\nThe most common failure mode of open-ended research isn't bad sourcing, it's a report nobody knows what to do with. Three things guard against that specifically:\n\n1. **Reframing won't accept a topic without a decision spec** — an action, a consumer, and at least one falsifiable if-then fork. No fork, no medium/deep run; it downgrades to a labeled shallow \"curiosity\" pass instead.\n2. **Synthesis is banned from ending on \"it depends\"** without mapping the condition to one of your forks, and a fourth red-team role tries to actually *execute* the recommendation using only the report, flagging every hedge and missing number that blocks a real decision.\n3. **Phase 8 (Decision walkthrough) is mandatory at every depth** — the skill walks you through your forks one at a time and logs whether each was decided, blocked on data, or deferred to `application.md`. A global ledger tracks unapplied research across sessions so the pattern doesn't repeat silently.\n\n</details>\n\n<details>\n<summary><b>Can I use this commercially?</b></summary>\n\nYes — MIT licensed. Use it, modify it, integrate it into products. Attribution appreciated but not required.\n\n</details>\n\n---\n\n### Use with other LLMs (Codex, Gemini, etc.)\n\nThe methodology is portable. ~70% of content is LLM-agnostic markdown templates.\n\n| Component | Claude-specific | Universal |\n|:---|:---:|:---:|\n| `SKILL.md` frontmatter | ✓ | — |\n| Sub-agent `Explore` type | ✓ | — |\n| <!--gen:count:phases-->13<!--/gen-->-phase workflow | — | ✓ |\n| <!--gen:count:blocks-->106<!--/gen--> report blocks | — | ✓ |\n| <!--gen:count:channels-->29<!--/gen--> search channels | — | ✓ |\n| <!--gen:count:stat_sources-->460<!--/gen-->+ stat sources | — | ✓ |\n\n**To adapt:**\n1. Load `SKILL.md` + relevant `references/*.md` into the LLM's context\n2. Replace sub-agent parallelism with separate chat sessions per subtopic\n3. Manage source files (`sources/NN.md`) externally — LLM produces content\n4. PRs welcome for `codex/`, `gemini/`, `local/` adapters\n\n---\n\n<div align=\"center\">\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=Socialpranker/deepdive&type=Date)](https://star-history.com/#Socialpranker/deepdive&Date)\n\n</div>\n\n---\n\n<details>\n<summary><h2>На русском</h2></summary>\n\n**Deepdive** — скилл для [Claude Code](https://claude.com/claude-code), превращающий «загугли это» в дисциплинированный <!--gen:count:phases-->13<!--/gen-->-фазный процесс.\n\n### Что внутри\n\n- **<!--gen:count:phases-->13<!--/gen--> фаз workflow**: <!--gen:phases:list:ru-->Reframing → Genre & block selection → Plan → Capability Discovery → Plan-review gate → Поиск → Claims-ledger + триангуляция → Evidence-фильтр → Сверка с вики → Синтез + multi-angle red team → Verify → Refresh targets → Decision walkthrough<!--/gen-->\n- **<!--gen:count:genres-->6<!--/gen--> жанров отчёта**: qa / explainer / decision / landscape / validation / custom\n- **<!--gen:count:blocks-->106<!--/gen--> блоков** в 10 категориях — переиспользуемые секции с шаблонами и анти-паттернами\n- **<!--gen:count:channels-->29<!--/gen--> каналов поиска** с paywall fallback протоколом (включая api-direct)\n- **<!--gen:count:stat_sources-->460<!--/gen-->+ статистических источников** в 14 cross-industry + 19 отраслевых категориях\n- **<!--gen:count:api-->47<!--/gen-->+ API endpoints** для programmatic доступа (free no-auth приоритетны)\n- **plan.md** с 17 секциями для прозрачности\n- **Plan-review gate** (фаза 3.7) — единственная human-in-the-loop точка перед дорогой Фазой 4: план (гипотезы, жанр, каналы) показывается и утверждается ДО поиска; жёсткость по режиму (deep — ждать «Ок», medium — soft, shallow — skip)\n- **Multi-angle red team** из враждебных ролей (Skeptic/Contrarian/Gap-hunter) с триажем severity (обязателен для medium/deep)\n- **Evidence-фильтр** (фаза 5.5) — CRAG-классификатор keep/drop по паре (тезис, источник) перед синтезом: наивная подача всего найденного снижает качество (Search-o1 33%→24%), в синтез идут только relevant-цитаты из `evidence/`\n- **Faithfulness-верификация** (фаза 6.5, второй слой) — помимо liveness (жива ли ссылка) проверяется entailment «источник ⊨ тезис» (RAGAS-декомпозиция + ALCE), вердикты SUPPORTED/PARTIAL/UNSUPPORTED в `.verify/faithfulness.json`\n- **No-progress circuit breaker** (фаза 4) — 2 раунда подряд без новой информации → стоп, нерешённое уходит в Open Questions вместо сжигания бюджета\n- **Дешёвый goal-check** (фаза 4) — Haiku между раундами помечает каждый подвопрос met/partial/unmet, направляя следующий раунд и удешевляя дорогую Opus-оценку\n- **Least-to-most декомпозиция** (фаза 4) — многошаговые подвопросы («X учитывая Y») раскладываются по уровням L1→L2 с накоплением контекста между ними вместо плоского параллельного запуска\n- **Phase-gate валидатор** (`scripts/validate_phases.py`) — машинная проверка, что каждая обязательная для режима фаза оставила артефакт; пропущенная фаза не проходит проверку\n- **Decision Spec** (фаза 1) — решение+срок / потребитель→шаг / ≥1 опровергаемая if-then вилка; без вилки ресёрч ничего не меняет — честный даунгрейд в shallow вместо мёртвого deep-отчёта\n- **Provenance-триангуляция** (фазы 4-5) — поле `root:` у каждого источника + snowball-пасс по цепочкам цитирований; триангуляция требует ≥2 разных первоисточников, не только ≥3 источников разного типа (десять пересказов одного пресс-релиза — один голос)\n- **`memo.md`** (фаза 6, всегда) — одностраничный decision-меморандум: рекомендация без «it depends», разрешённые вилки, ключевые числа со ссылками, next actions — то, что реально входит в твой процесс принятия решений\n- **Роль «Исполнитель»** в red team (фаза 6, medium/deep) — симулирует потребителя из Decision Spec и пытается исполнить решение по одному отчёту, ловя обтекаемый язык и пропущенные числа\n- **Decision walkthrough** (фаза 8, обязательна всегда) — отчёт не обсуждается, а исполняется: скилл проводит по вилкам решения одну за одной и записывает вердикт (принято / заблокировано данными / отложено) в `application.md`; глобальный ledger отслеживает, приводят ли твои ресёрчи к решениям вообще\n- **Weekly auto-validation** через GitHub Actions\n\n### Установка\n\n```bash\ngit clone https://github.com/Socialpranker/deepdive.git ~/.claude/skills/deepdive\n```\n\nТриггеры: «проведи ресёрч», «изучи тему», «копни глубоко», «deep dive»\n\n### Вклад\n\nКаталог растёт через PRs. Самые ценные — новые источники в `stat_sources/` и `api_sources/`. См. [CONTRIBUTING.md](CONTRIBUTING.md).\n\n</details>\n\n---\n\n<div align=\"center\">\n\n### Built by [Socialpranker](https://github.com/Socialpranker) · [MIT License](LICENSE) · [Roadmap](https://github.com/Socialpranker/deepdive/discussions)\n\n**If this skill saves you time, [give it a star](https://github.com/Socialpranker/deepdive)** — it's the only metric I check.\n\n</div>\n"}