Skip to content
Content
Skill

/data2story-pro

Use to turn a dataset into a verifiable multimedia blog (a data story / data-driven article / interactive dashboard from a dataset). Orchestrator for the Data Journalist Agent (Data2Story): a 7-team newsroom (14 agents) running detective → scout → analyst → imagineer → editor →

BOOST
From plugin
data2story-skill
15827 skills
Install
$ npx -y skills add QinghongLin/data2story-skill --skill data2story-pro --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/data2story-pro

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use to turn a dataset into a verifiable multimedia blog (a data story / data-driven article / interactive dashboard from a dataset). Orchestrator for the Data Journalist Agent (Data2Story): a 7-team newsroom (14 agents) running detective → scout → analyst → imagineer → editor →

SKILL.md

data2story-pro.SKILL.md
name: data2story-pro
description: "Use to turn a dataset into a verifiable multimedia blog (a data story / data-driven article / interactive dashboard from a dataset). Orchestrator for the Data Journalist Agent (Data2Story): a 7-team newsroom (14 agents) running detective → scout → analyst → imagineer → editor → copywriter → designer → interaction → hero → cinematographer → programmer → auditor → critic → inspector in sequence. Trigger when the user hands over a dataset (CSV/JSON/folder/path) and wants a published story, blog post, or interactive report built from it. Creates a versioned project folder per run."
argument-hint: [data path | URL | idea]
allowed-tools: Bash(*), Read, Write, Glob, Grep, Skill, Agent, WebSearch, WebFetch

Data Journalist Agent (Data2Story)

Turn **$ARGUMENTS** into a blog. Orchestrates the roles below in sequence.

Orchestration rituals

Five process rules earned from real runs. Each is one rule + why it exists; follow them across every run regardless of topic.

  • **(D1) Candidate-image review loop.** For any hero/cover image of a named person or specific real object, generate **N candidates**, then run a VLM (or human) review and **select** one — never ship the first render. *Why:* text2image of named people intermittently refuses outright and quality varies shot-to-shot, so a single render is a coin-flip; a small candidate pool plus a review step is the only reliable way to land a usable, correctly-identified image.
  • **(D2) Audit-before-finalize.** Run the read-only multi-agent audit (provenance / repro / assets / IP lenses) to **find** every defect FIRST, collect them, and only THEN make one editing pass to **fix** them. *Why:* interleaving find-and-fix makes agents edit the same file against a moving target and re-introduce each other's defects; separating the finding phase from the fixing phase prevents that churn.
  • **(D3) Single owner of one big file.** Parallel agents may produce data and assets concurrently, but exactly **ONE** agent writes `index.html`. *Why:* the HTML is one indivisible artifact; concurrent edits to it interleave and corrupt it, so it must have a single writer even when everything feeding it is parallel.
  • **(D4) Headless-verify-then-defer-render.** Prove everything you can **without** a browser — `node --check` the scripts, recompute a known model output and compare, byte-compare each inline JSON island to its `verify/` file — then hand the final visual/browser sign-off to the **user**. *Why:* deterministic checks catch the failures that don't need eyes cheaply and early, while genuine render correctness needs a real browser this harness can't drive, so the human does that last mile (see also the chart-width-0 class of bug, invisible to node shims).
  • **(D5) Verify-coexistence-with-zero-engine-edits.** New interactive features layer **on top of** the frozen Verify engine (the in-page Inspector panel + `verify/` artifacts); never edit the engine to make a feature fit. *Why:* the Verify layer is the paper's coding verifier and a hard gate — editing it to accommodate a feature risks silently breaking provenance, so features adapt to it, not the reverse.

The 7 teams

The newsroom is **7 teams** (the paper's 7 canonical roles), staffed by **14 agents**. Two teams are a single agent; five are a small team with a **lead** who coordinates one or more members. The folders stay flat and every `Skill <name>` call resolves by the member's frontmatter `name:` — the teams are a coordination overlay, not a folder move. **You (this orchestrator) are the top coordinator across all 7 teams.**

| Team (paper role) | Lead | Members | Kind | |---|---|---|---| | **Detective** | Detective | + **Scout** | multi-agent | | **Analyst** | Analyst | + **Imagineer** | multi-agent | | **Editor** | Editor | + **Copywriter** | multi-agent | | **Designer** | Designer | + **Interaction** + **Hero** + **Cinematographer** | multi-agent | | **Programmer** | Programmer | — | single-lead | | **Auditor** | Auditor | + **Critic** (+ **Playtester** step) | multi-agent | | **Inspector** | Inspector | — | single-lead |

Each lead's `SKILL.md` carries a "Team coordination" section describing how it briefs and integrates its members; the member `Skill <name>` calls below are **mirrored** in those sections so a member is never silently skipped. The cross-team checkpoints (the two gates and the Critic revision loop) are **owned by this top orchestrator**, not delegated into any team.

Setup

Resolve paths before doing anything:

  • Never hard-code machine-local paths and never ask the user to export path variables.
  • Resolve `SKILL_DIR` = the directory containing this `SKILL.md` (`.../skills/data2story-pro`)
  • Resolve `ARCHIVE_DIR` = the ancestor directory that contains `skills/` (two levels up from `SKILL_DIR`, i.e. `SKILL_DIR/../..`)
  • Resolve `DATA2STORY_ROOT` = parent of `ARCHIVE_DIR`
  • Commands below use symbolic placeholders such as `ARCHIVE_DIR`; replace them with resolved, quoted paths before running Bash.
  • `DATA_NAME` = the dataset folder name (e.g. `pick_a_card`). In URL / IDEA mode it is taken from the `DATA_DIR` that **Stage 0 — Input dispatch (below)** resolves, so run Stage 0 before resolving `PROJECT_DIR`.
  • `DATA_DIR` = the validated dataset folder, resolved by **Stage 0 — Input dispatch** below. It originates from one of: the existing path in `$ARGUMENTS` (DATA MODE, path); `find-data`'s output folder (DATA MODE, URL); or `ideation`'s output folder (IDEA MODE). For a bare dataset name with no Stage-0 acquisition, fall back to `DATA2STORY_ROOT/data/{DATA_NAME}`.
  • `TIMESTAMP` = current time formatted as `MMDD_HHMM` (e.g. `0401_1618`): `date +%m%d_%H%M` (run in bash)
  • `PROJECT_DIR` = `DATA2STORY_ROOT/project/{DATA_NAME}/blog_{MODEL}_{TIMESTAMP}`
  • Create `PROJECT_DIR/`, `PROJECT_DIR/assets/`, `PROJECT_DIR/code/` — **after Stage 0 has resolved `DATA_DIR`/`DATA_NAME`** (immediate in path mode; after the Stage-0 acquisition in URL / IDEA mode).
Read more
Ships withdata2story-skill

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.

Get the whole plugin
Stats
158
Stars
23
Forks
Maintained
Maintenance
Python
Language
MIT
License
3mo ago
Last commit
5mo ago
Created
6d ago
Added

Repo: QinghongLin/data2story-skill

Other skills on data2story-skill.