<di="center">
Stop ad-hoc Googling. Start documented in.

![Claude Code]()
![Skills]()


![Stars]()
<br>
Docs · Install · How it works · Contribute
<br>
</div>
---
A Claude Code skill that turns "research this topic" into a <!--gen:count:phases-->13<!--/gen-->-phase pipeline with hypothesis testing, parallel sub-agent search, source triangulation, and ad 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.
<table>
<tr>
<th width="50%">Without this</th>
<th width="50%">With this</th>
</tr>
<tr>
<td>
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)*
</td>
<td>
17-section plan.md documents every choice
Each source = file with quotes
Mandatory ad pass + opposition queries
Atomic theses in findings/FN.md reusable
<!--gen:count:channels-->29<!--/gen--> named channels + <!--gen:count:stat_sources-->460<!--/gen-->+ stat sources
Every claim → [s12] link → specific quote
</td>
</tr>
</table>
---
<details open>
<summary><b>For Claude Code (CLI)</b></summary>
That's it. Now type any of these in a Claude Code session:
</details>
<details>
<summary><b>For Claude Desktop (Skills enabled)</b></summary>
</details>
<details>
<summary><b>For other LLMs (Codex, Gemini, local)</b></summary>
The <!--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.
Full instructions →
</details>
---
The skill runs <!--gen:count:phases-->13<!--/gen--> phases in order:
| Phase | Name | What happens |
|:---:|:---|:---|
<!--gen:phases:table:en-->
| 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 | E filter | sonnet / low |
| 5.7 | Wiki reconcile | sonnet / low |
| 6 | Synthesis + multi-angle red team | opus / high |
| 6.5 | | haiku / low |
| 7 | Refresh targets | sonnet / medium |
| 8 | Decision walkthrough | opus / high |
<!--/gen-->
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-le step in the whole pipeline — Gemini Deep Research calls plan review its "biggest lever o 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 le, 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 e.
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 e 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-le: a source that measures its own product, self-reports a benchmark, or is directly disputed by another collected source gets a strict caveat: marker ( / 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 unresol) — the same rule shape as primary-first sourcing. 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 to ./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/.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, e/, ./*.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 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 e's retelling) and forward (who's citing it since), catching sources no keyword query would surface.memo.md — a one-page decision memo (recommendation, resol, 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 e 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 e scores any run on 6 axes.
---
<table>
<tr>
<td width="33%" ="top">
10 categories: FRAME · EXPLAIN · COMPARE · MAP · · ANALYZE · CLOSE · PEOPLE · NUMBERS · CONTEXT
Each block has its own template, anti-patterns, and composition rules.
Block library →
</td>
<td width="33%" ="top">
Named strategies with query patterns + paywall fallbacks:
web-general · academic · preprint-servers · code-github · forum-discussion · news-current · industry-reports · regulatory-legal · competiti · data-statistical-gov · product-analytics · crypto-analytics · api-direct · *and more*
Channels catalog →
</td>
<td width="33%" ="top">
14 cross-industry + 19 industry categories. Each entry: URL · Type · Access · Quality · Limitations · Combine-with · Fallback.
Categories: go · companies_public · crypto · health · education · climate_env · science · 19 industries
Sources catalog →
Plus a signal registry: 1072 endpoints live and filed by what question they answer — parliamentary APIs, ad feeds, climate and macro endpoints. Loaded one file at a time, outside the base context budget.
Registry →
</td>
</tr>
<tr>
<td ="top">
| Genre | When |
|:---|:---|
| qa | Open meta-research |
| explainer | "How does X work" |
| decision | "X or Y" |
| landscape | "Who's in this space" |
| | "Is X true" |
| custom | Hybrid, assembled per question |
Genres →
</td>
<td ="top">
Free no-auth APIs prioritized:
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
Patents and grants are first-class categories: patents/ (USPTO ODP, EPO OPS, EPO LOD, WIPO) and grants/ (NSF, NIH RePORTER, CORDIS, Grants.go entry carries a : date — access terms rot, and a stale "free, no key" sends a run into a paywall.
Auth via env vars only — skill never asks for keys inline.
API catalog →
</td>
<td ="top">
GitHub Actions cron all endpoints + discovers upstream additions:
reports/ branchWorkflow →
</td>
</tr>
<tr>
<td ="top">
Per-phase model selection — quality where it multiplies, cheap where it parallelizes:
~$2 instead of ~$8 on a deep run, *and* higher quality on critical phases. O with with all on opus / with cheap mode.
Routing →
</td>
<td ="top">
Compare research quality across models. Same question, different configs, scored on 6 axes:
Weighted sum with a citation floor — hallucinated sources can't win on depth. = quality per dollar.
Eval →
</td>
<td ="top">
check_citations.py resol source URL — dead OPEN links flagged as likely hallucinations; transport flaps marked UNKNOWN, not penalized.
Ignores en (trust_en). --strict for CI.
runs four layers: li (does the source exist), faithfulness (does it actually entail the claim it's cited for), qualifier preser (does the report still say what the ledger said), and construct pro (do the frameworks, taxonomies and named "laws" the report uses exist outside it). land in ./*.json, one producer per file.
The 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: strategic content fabrication, 18.95% of errors), and it passes a citation check with every URL alive.
Numbers get two independent passes: check_number_pro.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 ne by anything.
Check →
</td>
<td ="top">
scripts/.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, e/, ./*.json, the dated report.
A 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.
It 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 retrie and the finding ne the report; and that no unsourced construct sits in the memo or TL;DR.
Its 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 e.py enforces the caveat: field as a strict enum (- / / self-reported / disputed:sNN) instead of free text, so it stays greppable.
→
</td>
</tr>
</table>
---
Sample output for a typical decision-genre research:
Final report structure (assembled from the blocks chosen in plan.md):
Every claim is clickable to its source. A month later, you don't re-research — you read.
---
The catalog is most when it grows. Easy contributions:
| Time | Type | Example |
|:---:|:---|:---|
| 15 min | Add a stat source | Add SimilarWeb Pro to consumer_digital |
| 15 min | Improve a query pattern | Better arxi queries for biology |
| 30 min | New search channel | Add patent-search with USPTO+EPO fallback |
| 1-2h | New industry category | Add industries/aerospace.md |
| 2-4h | New report block | Add decision-tree to compare.md |
| Half-day | LLM adapter | Add codex/ folder with adapted protocols |
Full contributing guide →
![Contributors]()
---
<details>
<summary><b>How is this different from ChatGPT Deep Research / Perplexity?</b></summary>
Those 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.
They also don't separate sources into files, don't do explicit triangulation, don't run ad passes, and don't produce reusable atomic theses. Nor do they filter e for relevance before synthesis (feeding a model e you found measurably hurts quality — Search-o1 dropped from 33% to 24% accuracy doing that) or that a cited source actually *supports* the claim it's attached to, rather than just existing (faithfulness, not just li). 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.
Honesty 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 e the report. 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.
</details>
<details>
<summary><b>Does it work without Claude Code CLI?</b></summary>
Yes — on Claude Desktop with Skills enabled. Also works manually with any LLM by loading the markdown files into context (see "Use with other LLMs" below).
</details>
<details>
<summary><b>What's a research output look like?</b></summary>
See the 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.
Every claim in the final report links to a specific sources/NN.md file.
</details>
<details>
<summary><b>Why so many files? Isn't this o?</b></summary>
For 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.
The file-per-source structure is the key reuse mechanism. A single research often informs 3-5 future researches because you can cite indi sources/NN.md directly.
</details>
<details>
<summary><b>Is this just prompt engineering?</b></summary>
It's structured methodology + curated catalog + reusable templates + automation.
scripts/.py machine-checks phase completeness, not just stylePrompts are an implementation detail, not the value.
</details>
<details>
<summary><b>What stops the report from being unactionable — "well-researched but useless"?</b></summary>
The 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:
1. 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.
2. 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.
3. 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.
</details>
<details>
<summary><b>Can I use this commercially?</b></summary>
Yes — MIT licensed. Use it, modify it, integrate it into products. Attribution appreciated but not required.
</details>
---
The methodology is portable. ~70% of content is LLM-agnostic markdown templates.
| Component | Claude-specific | Uni |
|:---|:---:|:---:|
| SKILL.md frontmatter | ✓ | — |
| Sub-agent Explore type | ✓ | — |
| <!--gen:count:phases-->13<!--/gen-->-phase workflow | — | ✓ |
| <!--gen:count:blocks-->106<!--/gen--> report blocks | — | ✓ |
| <!--gen:count:channels-->29<!--/gen--> search channels | — | ✓ |
| <!--gen:count:stat_sources-->460<!--/gen-->+ stat sources | — | ✓ |
To adapt:
1. Load SKILL.md + relevant references/*.md into the LLM's context
2. Replace sub-agent parallelism with separate chat sessions per subtopic
3. Manage source files (sources/NN.md) externally — LLM produces content
4. PRs welcome for codex/, gemini/, local/ adapters
---
<di="center">
![Star History Chart]()
</div>
---
<details>
<summary><h2>На русском</h2></summary>
Deepdive — скилл для Claude Code, превращающий «загугли это» в дисциплинированный <!--gen:count:phases-->13<!--/gen-->-фазный процесс.
e/./faithfulness.jsonscripts/.py) — машинная проверка, что каждая обязательная для режима фаза оставила артефакт; пропущенная фаза не проходит проверкуroot: у каждого источника + snowball-пасс по цепочкам цитирований; триангуляция требует ≥2 разных первоисточников, не только ≥3 источников разного типа (десять пересказов одного пресс-релиза — один голос)memo.md (фаза 6, всегда) — одностраничный decision-меморандум: рекомендация без «it depends», разрешённые вилки, ключевые числа со ссылками, next actions — то, что реально входит в твой процесс принятия решенийapplication.md; глобальный ledger отслеживает, приводят ли твои ресёрчи к решениям вообщеТриггеры: «проведи ресёрч», «изучи тему», «копни глубоко», «deep dive»
Каталог растёт через PRs. Самые ценные — новые источники в stat_sources/ и api_sources/. См. CONTRIBUTING.md.
</details>
---
<di="center">
If this skill saves you time, give it a star — it's the only metric I check.
</div>
开发语言:Python
Star 数:372
该项目属于红蓝攻防方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕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, multi-angle red team, four-layer citation verification. 105 blocks, 29 channels, 460+ stat sources, 47 APIs, 1072 verified endpoints.展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | deepdive - Deepdive skill for Claude Code — 12-phase research |
| 所属分类 | 红蓝攻防 |
| 发布作者 | admin |
| 发布时间 | 2026-10-06 00:42:44 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 413 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |