Install
$ agentstack add skill-launchstack-dev-storm-research-storm-research ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Storm Research
What this does
Turns one topic into a verified, multi-perspective research outline and an HTML briefing. It is a faithful adaptation of Stanford's STORM method (Shao et al., NAACL 2024; stanford-oval/storm): it discovers the expert perspectives that fit this topic, runs a short simulated interview per persona (each asks its own questions, gets grounded answers, then asks a follow-up), maps where the personas contradict each other, and synthesizes the result into a structured outline — the outline is STORM's core deliverable. It then renders a self-contained HTML report on top of that outline, adversarially peer-reviews its own output, and verifies every citation against its primary source before delivering.
STORM's founding insight: the bottleneck in AI research is the pre-writing, not the writing. The edge lives in perspective breadth and outline structure, so this skill spends its budget there. Run the full pipeline end to end. Do not shortcut a phase. This is heavier than a quick web lookup; that is the point.
Portability
Self-contained. Depends only on built-in Claude Code tools (the Agent tool, Write, and web search/fetch used inside those agents) plus report-template.html in this same folder. No external scripts, APIs, paid services, or other skills. Drop the folder into any .claude/skills/ directory and it works.
Arguments
$ARGUMENTS— the topic. If absent, ask.--panel discover|market— override panel mode (see Phase 0). Default: auto-select.--model-profile fast|balanced|max— shift model tiers together (see Model routing). Default:balanced.
Model routing (persona quality cascades — do not skip)
Bad personas produce bad questions produce bad research. Route the reasoning-heavy phases to a strong model and the mechanical phases to a lighter one. Pass model: explicitly on every Agent call:
| Phase | Work | balanced (default) | fast | max | |---|---|---|---|---| | 1 Discovery | derive personas | opus | sonnet | opus | | 2 Interviews | questions -> answers -> follow-up | sonnet (x5) | sonnet | opus | | 6 Verification | citation check | sonnet (x4-6) | haiku | sonnet |
Phases 3, 4, 5 run inline on the main thread (no agents). Never use a fable/Mythos tier — it exhausts usage limits under multi-agent fan-out.
Phase 0: Scope the topic + select the panel
- If
$ARGUMENTShas the topic, use it. Otherwise ask what to research. - State your interpretation of the topic in one line (
{TOPIC_FRAME}) and proceed. Only ask a clarifying question if the topic is genuinely ambiguous in a way that changes the research. Default to proceeding. - Identify the reader's role so the actionable section can target it. Infer from the topic/context; if unclear, ask in one line, or default to "a practitioner or decision-maker in this field."
- Select the panel mode (this is the STORM perspective-discovery decision):
discover(default) — derive topic-fit personas. Use for decision-support and technical/product/domain topics ("should we build X", "how do we detect Y", "evaluate approach Z", "design a framework for W").market— the fixed hype-check preset (Practitioner, Academic, Skeptic, Economist, Historian). Use for "is [trend] overhyped / real / a bubble", "the future of X", competitive-narrative topics.- Auto-select by topic shape; honor an explicit
--panelflag. State the chosen mode in one line.
- Derive a kebab-case
topic-slugfor filenames. - Tell the user the pipeline is running (discover personas, interview, map, outline, report, verify). One line.
Phase 1: Perspective discovery (single strong-model agent)
market mode: skip this agent. Load the fixed preset personas (see Appendix A) and go to Phase 2.
discover mode: spawn ONE agent (Discovery model tier). Prompt:
Topic: {TOPIC} ({TOPIC_FRAME}). Reader: {ROLE}.
Derive EXACTLY 5 research personas, one per canonical STORM slot. Instantiate each
for THIS topic with a concrete role title — never a generic "expert":
1. DOMAIN EXPERT — deepest technical/subject authority on this topic
2. PRACTITIONER — does it day-to-day; cares what actually ships/works
3. SKEPTIC — builds the strongest steelman for why it fails
4. NEWCOMER — foundational clarity; assumes nothing; asks the "obvious"
5. ADJACENT EXPERT — from a neighboring field; brings transferable frameworks
Anti-homogeneity rule: if any two personas would ask overlapping questions,
replace one with a more distinct role. Distinct lenses are the whole point.
Return a TOON persona table:
personas[5]{slot,name,role,background,stake,bias}:
domain,...,...,...,...,...
...
Keep the persona table; you will pass it into every interview in Phase 2 and cite personas by name in the outline.
Phase 2: Multi-perspective interview loop (five parallel agents)
Spawn five agents in a single message (Interview model tier), one per persona, so they run concurrently. Each agent runs a self-contained three-step interview and separates question-finding from answer-finding (do NOT collapse these — that is STORM's #1 anti-pattern). Prompt each with its persona block substituted:
You are this persona researching {TOPIC} ({TOPIC_FRAME}):
{PERSONA: name, role, background, stake, bias}
Run a 3-step interview. Do REAL web research; every answer must trace to a fetched URL.
STEP A — QUESTIONS: Write 6-8 questions ONLY this persona would ask (unique to its
lens; do not answer them yet).
STEP B — GROUNDED ANSWERS: For each question, web-search and answer in 2-3 sentences
with a concrete data point / case / figure + the primary source URL. If you cannot
find a real source, mark the answer UNVERIFIED — never invent one.
STEP C — FOLLOW-UP: Pick the 1-2 thinnest or most surprising answers, ask a sharper
follow-up question, and re-research it.
Return EXACTLY this TOON, under 550 words total:
persona: {name}
coreClaim: {this persona's 2-sentence position}
theOneThing: {the single insight only this lens would surface}
qa[N]{question,answer,sourceUrl,status}: # status: answered|thin|unverified
{q},{a},{url},answered
...
followUps[M]{question,answer,sourceUrl,status}:
{q},{a},{url},answered
When all five return: dedup the question set inline — merge exact duplicates, keep near-duplicates that probe different aspects. You should land at ~25-35 unique questions. Then post a 2-3 line chat note: which way the personas converge, and the sharpest disagreement. Keep raw briefs out of chat.
Phase 3: Map the contradictions and gaps (inline, no agents)
Working from the five interviews and the deduped question set, determine:
- Direct conflicts — where two+ personas claim opposite things. Name the specific clashing claims.
- Strongest vs weakest evidence — rank by source hierarchy: peer-reviewed causal > official data > single survey > analogy > preprint. Which persona is best-supported, which weakest, why.
- The resolving question — the single empirical question that would settle the biggest contradiction.
- Universal agreement — what every persona confirms, even opponents. The likely-true load-bearing finding.
- The blind spot — what NO persona addressed (the "missing 6th lens").
- Open questions (gap list) — every question tagged
thin,unverified, or unanswered across all interviews. This is a first-class output, not an afterthought.
This map is raw material for the outline (Phase 4) and the report (Phase 5): findings, contradictions, 6th-lens box, frontier question, and the Open Questions section.
Phase 4: Write the structured outline (STORM's core deliverable)
Emit the outline BEFORE the HTML. This is the artifact STORM's research shows carries the edge. Write to storm-reports/{topic-slug}-outline.md (create the folder if needed):
# {Topic}
_STORM outline · panel: {discover|market} · {N} questions · {date}_
## 1. {Theme}
### 1.1 {Question group}
{synthesized answer} — [persona name], src: {url}
> CONTESTED: {Persona A claim} vs {Persona B claim} ← inline where they clash
...
## N. Open Questions
- {question the loop could not close} — why: {no primary source | contested | out of scope}
Group the deduped Q&A into themes (H2/H3), arrange coherently, flag every contradiction inline, and end with the Open Questions section from Phase 3.6. Attribute claims to personas and keep source URLs.
Phase 5: Render the HTML report
- Read
report-template.htmlin this skill folder. Clone it; do not rebuild the CSS. - The report is a render of the Phase 4 outline plus this skill's value-add sections. Fill every token:
{{METHOD_TAG}}/{{METHOD_LINE}}/{{PANEL_DISCLOSURE}}/{{LEDE}}— state the panel mode, the five persona roles actually used, interview depth, deduped question count, and verification.- 60-second summary — decision-maker-grade; settled fact first, then contested interpretation.
- 5 key findings, ranked by reliability — highest reliability first; each a 1-10 confidence score (set in Phase 6) + Supported-by / Challenged-by chips from the contradiction map.
- Hidden connection — the non-obvious link visible only across all personas.
- Missing 6th lens — the Phase 3.5 blind spot, framed as the lens that could invert the conclusions.
- Actionable insight — 3-6 specific moves for the Phase 0 reader role.
- Claim safety guide — assert / caveat / avoid, populated after Phase 6.
- Open Questions — the Phase 3.6 gap list (delete the section only if the loop closed everything).
- Frontier question — select the sharpest item from Open Questions / the resolving question.
- Method & Lineage — leave the STORM citation intact; fill
{{METHOD_LINE}}. - References — every citation with a verification-status tag (set in Phase 6).
- Write to
storm-reports/{topic-slug}-briefing.html.
Phase 6: Adversarial peer review + verification (do not skip)
This is what separates Storm Research from a normal report, and it is a layer the original STORM does not have. Run it before delivering.
6a. Self-review (inline). Score each of the 5 findings 1-10 for reliability and justify on the source hierarchy. Identify the weakest link and what would verify it. Run a bias check (which persona dominated the synthesis, what got underweighted). Name the missing 6th perspective. Assign an honest overall grade.
6b. Verify every citation (parallel agents, Verification model tier). Spawn agents in one message, one per distinct citation cluster (group related claims; ~4-6 agents). Each prompt:
Independently verify a citation against its PRIMARY source. Be skeptical; do not trust
secondary blog summaries. CLAIM: {claim + cited figure + named source}. Find the actual
primary source. Confirm or correct: exact title/authors/venue/year/URL, the real figure
or effect size as published, sample/method and any author-stated limits, and peer-review
status (published vs preprint). For any contested claim, find the strongest credible
counter-source. Return: VERDICT = CONFIRMED / PARTIALLY CONFIRMED (list corrections) /
UNVERIFIED / FALSE, then the corrected one-line citation, then 2-4 bullets of specifics
with the primary URL. Under 280 words.
6c. Apply corrections. Edit the report AND the outline:
- Fix wrong figures, titles, dates, or mischaracterizations.
- Downgrade confidence where evidence turned out thin; demote preprints and contested claims into the "Contested signal" sidebar.
- Re-attribute single-survey or commissioned stats honestly.
- Fill the verification banner (
X fabricated, Y corrected, Z demoted) and per-citation status tags. - Populate the claim safety guide from the verdicts.
Output
- Two deliverables: the STORM outline
storm-reports/{topic-slug}-outline.md(the pre-writing artifact — the core STORM output) and the verifiedstorm-reports/{topic-slug}-briefing.html(the polished render). - Open the HTML for the user with the platform's default opener: macOS
open, Linuxxdg-open, Windowsstart "". If the OS is unclear, just give the paths. - In chat, give: both file paths, the panel mode + deduped question count, the verification tally (
N/N checked, X fabricated, Y corrected, Z demoted), the one universal finding, the top open question, and the claim safety summary. Keep it tight.
Notes & guardrails
- Real research only. Every persona, answer, and citation must trace to a real, fetched source. No invented studies, numbers, or URLs. If a figure can't be verified, mark it
unverified, demote or cut it; never paper over it. - Separate question-finding from answer-finding. Phase 2 asks before it answers. Do not merge them into one pass — that is the STORM anti-pattern that collapses breadth.
- The outline is the point. Do not skip Phase 4. STORM's measured edge (+25 organization, +10 coverage) came from pre-writing structure, not prose polish.
- The panel is author-built. Always disclose it in the report. Agreement across personas is a strong hypothesis, not independent proof or field consensus.
- Verification is mandatory. A report delivered without Phase 6 is not a Storm Research report. The verification banner must be truthful.
- Reliability = evidence quality, not confidence. Score on the source hierarchy: peer-reviewed causal > official policy/financial data > single commissioned survey > analogy > preprint.
- Persona quality cascades. Use the Discovery model tier for Phase 1; do not cheap out. Never fable/Mythos.
- Cost.
discovermode spawns ~14-18 agents per run (1 discovery + 5 interviews + 4-6 verifiers);marketmode ~9-11 (no discovery). That is expected. Do not fan out wider than five personas or one verifier per citation cluster. - Design. Editorial working-paper style (Fraunces display serif, Newsreader body, IBM Plex Mono for data, warm paper + pine accent). Keep the template `
block intact and fill only the content tokens; do not swap in a different visual style. To rebrand, edit the:root` custom properties.
Appendix A: market preset personas
Used only in market mode (hype-check / competitive-narrative topics). Each runs the same Phase 2 interview loop.
- THE PRACTITIONER — works with this daily. Surface the gap between what hands-on operators know and what academics/pundits miss; practical realities (workflow friction, what actually works, where it breaks). Bias: operator-grounded.
- THE ACADEMIC — cares about peer-reviewed evidence and effect sizes, not anecdotes. What does rigorous evidence actually say vs popular belief, and where does it contradict the hype. Flag thin/contested evidence and peer-review status. Bias: rigor over relevance.
- THE SKEPTIC — thinks the mainstream view is overstated. Build the strongest steelman bear case: backlash, failures, contradicting data, regulatory changes, debunkings. Rigorous, not contrarian for sport. Bias: distrusts the narrative.
- THE ECONOMIST — follows the money: revenues, valuations, market size, funding, unit economics, incentives. Who profits from the current narrative and what shapes the hype. Bias: incentives explain everything.
- THE HISTORIAN — has seen disruption cycles before. Genuine historical parallels (prior technologies, manias, market shifts) — who won, who lost, what stabilized. Bias: pattern-matches to the past.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: launchstack-dev
- Source: launchstack-dev/storm-research
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.