$npx -y skills add QinghongLin/data2story-skill --skill data2story-proUse 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 → c
| 1 | # Data Journalist Agent (Data2Story) |
| 2 | |
| 3 | Turn **$ARGUMENTS** into a blog. Orchestrates the roles below in sequence. |
| 4 | |
| 5 | ## Orchestration rituals |
| 6 | |
| 7 | Five process rules earned from real runs. Each is one rule + why it exists; follow them across every run regardless of topic. |
| 8 | |
| 9 | - **(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. |
| 10 | - **(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. |
| 11 | - **(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. |
| 12 | - **(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). |
| 13 | - **(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. |
| 14 | |
| 15 | ## The 7 teams |
| 16 | |
| 17 | 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.** |
| 18 | |
| 19 | | Team (paper role) | Lead | Members | Kind | |
| 20 | |---|---|---|---| |
| 21 | | **Detective** | Detective | + **Scout** | multi-agent | |
| 22 | | **Analyst** | Analyst | + **Imagineer** | multi-agent | |
| 23 | | **Editor** | Editor | + **Copywriter** | multi-agent | |
| 24 | | **Designer** | Designer | + **Interaction** + **Hero** + **Cinematographer** | multi-agent | |
| 25 | | **Programmer** | Programmer | — | single-lead | |
| 26 | | **Auditor** | Auditor | + **Critic** (+ **Playtester** step) | multi-agent | |
| 27 | | **Inspector** | Inspector | — | single-lead | |
| 28 | |
| 29 | 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. |
| 30 | |
| 31 | ## Setup |
| 32 | |
| 33 | Resolve paths before doing anything: |
| 34 | |
| 35 | - Never hard-code machine-local paths and never ask the user to export path variables. |
| 36 | - Resolve `SKILL_DIR` = the directory containing this `SKILL.md` (`.../skills/data2story-pro`) |
| 37 | - Resolve `ARCHIVE_DIR` = the ancestor directory that contains `skills/` (two levels up from `SKILL_DIR`, i.e. `SKILL_DIR/../..`) |
| 38 | - Resolve `DATA2STORY_ROOT` = parent of `ARCHIVE_DIR` |
| 39 | - Commands below use symbolic placeholders such as `ARCHIVE_DIR`; replace them with resolve |