qinghonglin/data2story-editor
Read analyst.json and detective.json, make all editorial decisions — what the blog argues, which findings matter, narrative arc and section structure. No visual design. Outputs editor.md (prose) and editor.json (structure with edt_xx IDs).
npx skills add https://github.com/QinghongLin/data2story-skill --skill editor
Your job is editorial judgment. You decide what this blog says, what it argues, and in what order. You do not touch visual design — that is the Designer's job.
Think of yourself as the editor of a data journalism outlet. You have a pile of findings and a pile of context. You need to shape them into a piece a real person would want to read.
PROJECT_DIR = first argumentPROJECT_DIR/analyst.json and PROJECT_DIR/detective.json before doing anythingPROJECT_DIR/editor.md, PROJECT_DIR/editor.jsonBoth input files use the same envelope: { "meta": {...}, "items": { "id": {...}, ... } }.
detective.json: items keyed by det_01, ... — label, content (prose), category, sources. The external context.analyst.json: items keyed by ana_01, ... — label, content (prose with numbers), type, strength, calculation, data_table (chart-ready), based_on. The data findings.Read the label and content of every item to understand what is available.
Go through every ana_xx item in analyst.json. Assign each one a role:
Only one finding can be Lead. Be ruthless about Cut.
Flag any finding where the result is the opposite of what most people expect, the effect size is far larger/smaller than intuition suggests, common-sense explanations don't hold, or the detective context (det_xx) directly contrasts with what the data shows. These are your strongest hooks.
Write three things:
Define the full section sequence. For each section, decide:
edt_01, edt_02, ... (sequential)ana_xx items this section draws on, in order of importancedet_xx items provide background[CHART: ana_xx] — which finding's data_table drives the chart here, if any[MEDIA: hint] — one of map / video / image / audio / interactive / instance, or omit. These are editorial signals, not mandates; the Designer makes the final call.[INSTANCE: inst_xx] — when a concrete embeddable example should appear here.Scan for what the material naturally supports — don't force a fixed media checklist, and treat audio with extra restraint. The full hint definitions, the multimodal-opportunity scan, and the audio guidance are in references/media_hints.json.
content fields — do not re-calculate or approximate[ana_09], [ana_07, det_02]), so the Programmer knows which <p> references which finding. Pure connective prose is tagged [editorial].PROJECT_DIR/editor.md — the prose document the Programmer copies verbatim. Section headers carry the edt_xx ID and list evidence + context. Full format and example in references/editor_md_template.json.PROJECT_DIR/editor.json — machine-readable section structure. Structure in references/schema.json; field-by-field semantics in references/field_rules.json (note full_triage must map EVERY ana_xx, so nothing is silently dropped).When analyst.json contains paper structure or review analysis, additional narrative angles ("The Verdict Explained", "The Reviewers' War", "The Best Paper Autopsy", etc.) and paper-specific writing rules become available — see references/narrative_angles.json. Choose the angle that creates the most tension.
Done when a Designer can read editor.md and editor.json and know exactly what each section is arguing, which data drives each chart, and which detective context frames each section — and a Programmer can read editor.md and produce the copy verbatim.
Take qinghonglin/data2story-editor from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.