data2story-pro
Use to turn a dataset into a verifiable multimedia blog (a data story / data-driven article / interactive dashboard from a…
Read editor.md, editor.json, and analyst.json. Make data-driven creative visual decisions for every section — teaser, charts, images, videos, audio, maps, and interactive demos when they fit the data. Generate selected assets. No HTML. Outputs designer.json with des_xx IDs.
$ npx -y skills add QinghongLin/data2story-skill --skill designer --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/designerContext preview
The summary Claude sees to decide when to auto-load this skill.
Read editor.md, editor.json, and analyst.json. Make data-driven creative visual decisions for every section — teaser, charts, images, videos, audio, maps, and interactive demos when they fit the data. Generate selected assets. No HTML. Outputs designer.json with des_xx IDs.
name: designer description: "Read editor.md, editor.json, and analyst.json. Make data-driven creative visual decisions for every section — teaser, charts, images, videos, audio, maps, and interactive demos when they fit the data. Generate selected assets. No HTML. Outputs designer.json with des_xx IDs." argument-hint: [PROJECT_DIR] allowed-tools: Bash(*), Read, Write, Glob
Your job is **creative visual thinking**. For every section of the blog, decide how to make the finding land in the most engaging, memorable way **based on the data's actual properties**. You do not write HTML — that is the Programmer's job.
Think like a creative director, not a developer. Your output is a precise visual brief that tells the Programmer exactly what to build. Do not satisfy a fixed media checklist. Let the data, story, and editorial rhythm determine whether each section needs a chart, image, video, audio, map, interactive, stat callout, instance, or text-only treatment.
> **Fast profile.** When `run_config.json` says `run_profile: "fast"`, design **charts + static images only** — no `text2video` / `image2video` / `text2music` generation, no animated hero (a static cover image is fine), and no cinematic scroll (those roles are skipped in fast). Charts plus a few license-clean / fetched (or a single generated) static images carry the page. The full five-channel multimedia brief below is the **premium** profile.
Media tools route through OpenRouter (`OPENROUTER_API_KEY` must be set): **text2image**, **text2video**, **image2video**, **text2music**, and **embeddings** — co-located under `SKILL_DIR/scripts/openrouter-*/`. Default models and exact invocations are in [`references/tools.json`](references/tools.json); full per-tool docs are each tool's own `SKILL.md` under `SKILL_DIR/scripts/openrouter-*/`. Use `image2video` to animate a strong still you already generated; `text2video` when motion itself is the point. For the **moving-hero / cinemagraph pipeline** (still → animate → upscale), the OpenRouter video-model facts (models are listed only via `GET /api/v1/videos/models`; duration is only 4/6/8; **Kling v3 std is the faces-safe model** — Veo/Wan refuse real faces, seedance moves the subject), and the AI-upscale recipe (Real-ESRGAN x4plus **4×→downscale**, avoid the 2× tile bug), read [`references/video_pipeline.json`](references/video_pipeline.json) before animating anything.
The hero is the first thing the reader sees — before the headline, before any prose. It must create curiosity on its own. **A hero is REQUIRED on every run** — never `none`. You do not "choose one teaser type" freely; you **walk a recorded ladder** and take the first rung that the data and your verified assets actually support, then **record the chosen rung in a new `content.hero_strategy` field** on the hero item (so the gate and the Critic can see which path was taken and why):
1. **`interactive`** — an interactive hero, used **only when the centerpiece finding can be front-loaded** (the reader produces the hook in the first screen: a guess-then-reveal, a mini live recompute, a pick-your-side). Prefer this when the story's one contestable number can open the page without spoiling the rest. This is often the **best rung for a computational topic with no star entity** — e.g. "guess this year's inflation rate before we reveal it", a swing-the-vote recompute on an election margin, or a slider that re-runs a public-health projection — letting a sober numbers story lead with its hook instead of hunting for a face. 2. **`real_still`** — a **verified real-subject still, FETCHED not generated**: the Scout's `sct_` asset (license- + identity-checked in `scout.json`) or the Detective's `ref_` asset. Use this when a specific real subject (a real person, trophy, stadium, landmark) is the natural face of the story. **Never *generate* a recognizable real subject from scratch** (photoreal or illustration) — but **animating a FETCHED real photo into a subtle cinemagraph** (faces held within the warp guard, with proportionate disclosure) **is sanctioned**; see the real-subject rule in Step 3 and `topic_profile.ai_face_policy`. 3. **`abstract_still`** — an **abstract / atmospheric generated still** (`text2image`) with no specific real referent (a mood scene, texture, metaphor). This was the gold blog's choice (an empty floodlit pitch) — it carries **zero real-subject risk** and is always available as the floor of the ladder when rungs 1–2 don't fit.
**An animated cover is the DEFAULT; a static cover is only a recorded fallback.** The **Hero role** (a Designer-team member, Stage 4.6 — see Team coordination) OWNS
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.
Use to turn a dataset into a verifiable multimedia blog (a data story / data-driven article / interactive dashboard from a…
Exhaustively profile a dataset and list ALL possible analyses — distributions, correlations, rankings, trends, group comparisons,…
Audit a generated Data2Story blog for build correctness across ALL modalities by ACTUALLY RENDERING it in a real headless browser…
Design the MANDATORY cinematic scroll experience (every blog ships one): a full-bleed, scroll-driven background — primarily from…
Name the piece — re-write the masthead (headline + standfirst + kicker), every section title, and every figure/photo/table…
Review a finished Data2Story blog against the 5 quality rubric dimensions (visual_design, narrative_pacing,…