From STORM Deep Research
Stanford STORM-style PhD-grade deep research in ONE prompt. Use when the user wants to research a topic deeply, get a multi-perspective and source-grounded report, a literature-review-style briefing, "research like a PhD / like a Stanford grad student", a STORM report, or an in-depth cited analysis of any subject. Runs perspective discovery, parallel grounded web interviews, a contradiction map, an outline, a fully cited Wikipedia-style article, a synthesis briefing, and a self peer-review with reliability scores.
How this skill is triggered — by the user, by Claude, or both
Slash command
/storm:storm <topic> [--depth quick|standard|deep] [--lang fr|en|...] [--no-web]<topic> [--depth quick|standard|deep] [--lang fr|en|...] [--no-web]inheritThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are running **STORM** (Synthesis of Topic Outlines through Retrieval and
You are running STORM (Synthesis of Topic Outlines through Retrieval and Multi-perspective Question asking), the Stanford OVAL research method, fused with Nav Toor's 4-prompt adaptation — executed end-to-end from this single invocation. Your job is to turn one topic into a multi-perspective, source-grounded, fully cited research deliverable that would take a PhD student 40–60 hours by hand.
Topic / arguments: $ARGUMENTS
If $ARGUMENTS is empty, ask the user for exactly one thing — the topic — then
proceed. Otherwise parse it as:
--depth quick|standard|deep (default standard);--lang <code> (default: the language of the topic/query — write
the entire deliverable in that language, e.g. French if the topic is French);--no-web (skip web retrieval; rely on parametric knowledge only and
clearly flag the report as ungrounded — prefer /storm:storm-brief for that).Read
reference.md(next to this file) now for the exact persona set, interview protocol, word caps, citation-globalization algorithm, and the final report template. Follow it precisely.
Create a TodoWrite list with the 7 phases below and work through them in order. Tell the user this is a deep, multi-agent run (it will dispatch several subagents and make many web searches) before you start the heavy work.
| Depth | Perspectives | Interview rounds | Section writers |
|---|---|---|---|
| quick | 3 + basic | 2 | inline (no subagents) |
| standard | 5 + basic | 3 | parallel subagents |
| deep | 6–7 + basic | 4 | parallel subagents |
"+ basic" = always include the STORM Basic fact writer generalist pass.
STORM persona survey (standard/deep): first run 1–2 quick WebSearches for
survey / overview / "encyclopedia" articles on the topic and skim their section
structure (tables of contents). Derive 1–2 topic-specific personas from
recurring specialist sections (e.g. a "Clinician" for a disease, a "Regulator"
for a policy). For quick depth, skip the survey. This is STORM's actual
data-driven persona discovery.
Then fix the persona list: map the remaining slots onto Nav Toor's five lenses, adapted and renamed to fit the topic (drop one that genuinely doesn't apply):
Always add the STORM Basic fact writer — a generalist who simply nails the broad, foundational facts.
State your final persona list (and any topic-specific adaptation) in one short block before dispatching.
This is STORM's knowledge-curation stage and the heart of the method.
storm-researcher subagent per persona, ALL IN PARALLEL
(multiple Task calls in a single message). Use subagent type
storm:storm-researcher (plugin agents are always namespaced plugin:agent).
If that exact type isn't available, use general-purpose and give it BOTH the
interview protocol (reference.md §3) AND the full return-packet schema from
agents/storm-researcher.md (or tell it to Read that file), so the fallback
returns the same structured packet.TOPIC, its PERSPECTIVE (name + focus), ROUNDS
(per depth), and LANGUAGE.[n] citations, an only-this-perspective insight, strongest evidence, open
question, and a numbered Sources list (Title — URL).--no-web, skip subagents and instead reason through each perspective
yourself from parametric knowledge, clearly labeling everything as
ungrounded.When the packets return, build the global source pool: collect every source
together with the key facts/snippets each researcher attached to it,
de-duplicate by URL (merging the facts), and assign each unique URL a single
global index [1..N]. Keep a map from each subagent's local citations to the
global index. (See the globalization algorithm in reference.md §4.)
Analyze the packets together (Nav Toor's Prompt 2):
Every
[n]you carry over from a researcher packet into the contradiction map must first be converted to its global index via the Phase 2 map — local packet numbers must never appear in the deliverable.
STORM outline stage: first sketch a draft outline from general knowledge, then
refine it using the interview findings and the contradiction map. Use
Markdown depth #/##/###. The outline should be comprehensive and
non-redundant; do not include a "Summary"/"Introduction" section (the lead is
generated in Phase 6) and don't repeat the topic name as a heading.
STORM article stage. For each top-level (#) section of the outline:
storm:storm-writer subagents in parallel
(one per section), passing TOPIC, the SECTION outline fragment, the
relevant globally numbered SOURCES (with facts), and LANGUAGE. If
storm:storm-writer is unavailable, use general-purpose with the writer
instructions from agents/storm-writer.md (or tell it to Read that file).
For quick, write sections inline. Cap concurrency at ~8–10 parallel Task
calls (STORM's max_thread_num); if the outline has more top-level sections,
run them in sequential batches of that size.[n] citations referencing the global indices,
neutral encyclopedic tone, every sentence grounded, and no per-section
References list.### Sources added as
[N1] Title — URL. For each writer, assign every [Nk] a real global index
(de-duplicating by URL against the pool), then rewrite that writer's inline
[Nk] markers to the assigned global numbers before assembly. Each writer's
[Nk] namespace is scoped to itself, so parallel writers never collide.Assemble the sections into the article body in outline order.
(a) Lead section (STORM polishing): write a ## Summary lead of ≤4
well-composed, cited paragraphs that stands alone as an overview (topic, context,
why it's notable, key points and any prominent controversy). Remove obvious
repetition across sections.
(b) Synthesis briefing (Nav Toor's Prompt 3):
(a) Peer review (Nav Toor's Prompt 4) — STORM's known weakness is that it doesn't self-critique, so do it explicitly:
(b) Assemble the final report in the order defined by the template in
reference.md: Title → Summary (lead) → Synthesis briefing → full article body
→ Contradiction map → Peer-review scorecard → numbered References (the global
URL-deduplicated list, as clickable links). Before finalizing, confirm that
every inline citation across the whole document — article body, contradiction
map, synthesis and peer review — uses a global index, and that the References
list contains exactly the globals cited somewhere in the document (drop the
rest).
(c) Save it. Write the report to storm-<kebab-topic>.md in the current
working directory with the Write tool, then give the user a tight chat summary:
the headline finding, the single most important contradiction, the actionable
insight, the overall reliability grade, the source count, and the saved file
path. Offer to also export an HTML/PDF-ready version if they want one.
[unverified]. Never fabricate sources, quotes, numbers, or dates.max_thread_num); batch the rest./storm:storm-brief.--lang (default:
the language of the user's query).Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub hadufer/claude-storm --plugin storm