
Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.
Data2Story is a skill bundle that turns data into a self-contained HTML article with charts, media, and source links. The main orchestrator is `skills/data2story/SKILL.md`, which runs a fixed sequence of roles from research through verification, and `data2story-pro` offers a larger version of the same idea.
Builders who want their agent to research data, draft the story, generate visuals, and verify every claim in one run.
You can turn a dataset into a publishable story where every sentence and visual is traceable to evidence.
Runs Detective, Analyst, Editor, Designer, Programmer, Auditor, and Inspector in order, each producing its own artifact.
Tags sentences and visuals back to source IDs, then builds `viewer.html` so you can click a claim and inspect the evidence behind it.
Chooses charts, images, video, audio, maps, and interactive elements based on the data, with media generation routed through OpenRouter.
Writes each run to its own project folder and snapshots the skill versions used so the result can be traced and checked later.
Keeps instructions in `SKILL.md` and pushes schemas, field rules, and lookup tables into `references/` folders that load only when needed.
export OPENROUTER_API_KEY=sk-or-...
/data2story data/pick_a_card
Read skills/data2story/SKILL.md and run the Data2Story pipeline on data/pick_a_card
A data-journalist agent skill that turns any dataset into a verifiable, evidence-grounded multimodal story — a self-contained HTML article where every sentence traces back to the data or source that justifies it.
https://github.com/user-attachments/assets/7a2e2b65-3289-431d-b06a-230252df8774
viewer.html inspector where you can click any claim to see the data, code, or citation behind it.SKILL.md holds only its instructions; bulky reference material (output schemas, field rules, lookup tables) lives in that role's references/ folder as JSON and is loaded only when needed.Two versions. The repository ships two peer skills under
skills/— the richer, current build isdata2story-pro; the paper's reproducible version isdata2story.
Skill Invoke What it is data2story-pro/data2story-proImproved version of data2story. See skills/data2story-pro/README.md.data2story/data2storyThe paper's canonical 7-role pipeline.
Data2Story is an agent skill. The orchestrator lives in skills/data2story/SKILL.md — it works first-class with Claude Code, and equally with Codex, Cursor, Gemini CLI, and other agents.
Set your API key. Media generation routes through OpenRouter by default:
export OPENROUTER_API_KEY=sk-or-...
Run the skill on a dataset:
Claude Code — make the skill available (place skills/data2story/ under ~/.claude/skills/, or run from inside this repo), then:
/data2story data/pick_a_card
Codex / other agents — open the repo and ask the agent to follow the orchestrator:
Read skills/data2story/SKILL.md and run the Data2Story pipeline on data/pick_a_card
Open the output: index.html (the finished article) and viewer.html (the evidence inspector).
data2story-skill/
├── skills/
│ ├── data2story/ the paper's canonical 7-role pipeline · /data2story
│ ├── data2story-pro/ the extended 14-agent build · /data2story-pro
│ │ └ self-contained: its own README, package.json, example data/
│ ├── frontend-design/ visual design system used by data2story
│ ├── frontend-design-pro/ extended design system used by data2story-pro
│ ├── dataviz-craft/ chart-craft recipes · data2story-pro helper
│ ├── find-data/ dataset discovery & validation · data2story-pro helper
│ └── sparring-partner/ idea-to-topic ideation · data2story-pro helper
├── .claude-plugin/ marketplace.json · installs either skill
└── assets/ shared images
Inside each orchestrator, a role is a SKILL.md + a references/ folder (JSON schemas & lookup tables) + any scripts/ it runs — e.g. designer/scripts/ (OpenRouter media tools), inspector/scripts/ (the verify.py / generate_viewer.py verifier), detective/scripts/ (media fetch helpers).
Think of it as a small newsroom in a box. Each role reads what the previous one produced, then adds its own artifact — a fixed pipeline that runs once, end to end.
| # | Role | What it does | Produces |
|---|---|---|---|
| 1 | Detective | Researches external context — domain background, history, why the data matters | detective.json |
| 2 | Analyst | Exhaustively profiles the data — distributions, correlations, trends, anomalies | analyst.json, code/*.py |
| 3 | Editor | Decides the narrative — what the article argues and which findings matter | editor.md, editor.json |
| 4 | Designer | Chooses how to show each point — charts, images, video, audio, interactives | designer.json, assets/ |
| 5 | Programmer | Builds the final HTML, tagging every element with its source IDs | index.html |
| 6 | Auditor | Fixes layout issues — overlap, spacing, alignment — without changing content | index.html (fixed), auditor.json |
| 7 | Inspector | Verifies every sentence traces to its evidence; builds an interactive viewer | inspector.json, viewer.html |
flowchart TB
DATA[(dataset)]
subgraph plan [Plan and design]
direction LR
DET[Detective] -->|detective.json| ANA[Analyst]
ANA -->|analyst.json + code| EDT[Editor]
EDT -->|editor.md + editor.json| DES[Designer]
end
subgraph build [Build and verify]
direction LR
PRG[Programmer] -->|index.html| AUD[Auditor]
AUD -->|index.html| INS[Inspector]
end
DATA --> DET
DES -->|designer.json + assets| PRG
INS -->|inspector.json + viewer.html| OUT([article + evidence viewer])
Released under the MIT License.
If you use Data2Story in your research, please kindly cite:
@article{data2story,
title = {Data Journalist Agent: Transforming Data into Verifiable Multimodal Stories},
author = {Lin, Kevin Qinghong and EI, Batu and Shi, Yuhong and Lu, Pan and Torr, Philip and Zou, James},
journal = {arXiv preprint arXiv:2606.11176},
year = {2026}
}
Sign in to join the discussion.
No comments yet. Be the first to say what this is good for.

Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.
Open-source AI job search: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV, track applications — runs locally in your AI coding CLI (Claude Code, Codex, OpenCode, Antigravity…)
A skill to stop your coding agent from burying the answer. ADHD-friendly output.
AI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary
De-AI writing skill for any Agent Skills-compatible agent (77+ via the Skills CLI), with native plugins for Claude Code, Codex, Grok Build, and Antigravity. Narrative-architecture repair for fiction, venue-matched rules for professional prose. Based on StoryScope (arXiv:2604.03136).
Academic Research Skills for Claude Code: research → write → review → revise → finalize