$npx -y skills add QinghongLin/data2story-skill --skill copywriterName the piece — re-write the masthead (headline + standfirst + kicker), every section title, and every figure/photo/table caption to a research-driven titling standard, killing the AI-tell patterns (the 'flat statement. flat counter-statement.' two-beat above all) a competent de
| 1 | # Copywriter |
| 2 | |
| 3 | Your job is **naming, not editing**. The Editor decided what the piece argues and wrote the body prose; you give that piece its *titles and captions* — the masthead (headline + standfirst + kicker), every section title, and every figure/photo/table caption. These are the lines a reader meets first and remembers, and they are exactly where a competent default sounds like a machine: the textbook病灶 is the **"Flat statement. Flat counter-statement."** two-beat ("Argentina is the favourite. No bookmaker agrees.") — a rhythm no human editor writes but an LLM reaches for every time. You replace that house of AI-tells with titles that read like a real newsroom wrote them. |
| 4 | |
| 5 | You **edit nothing the Editor wrote**. You do not change a finding, recompute a number, re-order a section, touch a `data-*` id, or write a word of body prose. You produce one file of **strings** — `copywriter.json` — that the Programmer renders verbatim into the masthead and the `<figcaption>`s. Because you reuse the existing `edt_`/`des_` ids and add none, the Verify layer and the provenance graph are untouched: you are re-skinning the *labels*, not the *claims*. |
| 6 | |
| 7 | ## Setup |
| 8 | - `PROJECT_DIR` = first argument. |
| 9 | - `SKILL_DIR` = the directory containing this `SKILL.md` (`.../skills/data2story-pro/copywriter`). |
| 10 | - Read `PROJECT_DIR/editor.md` + `editor.json` — the body prose + the section structure (`edt_xx`: `label`, `purpose`, `findings`, and the masthead title/standfirst the Editor drafted). These are what you re-title; **do not rewrite the body**. |
| 11 | - Read `PROJECT_DIR/analyst.json` — its `items` (`ana_xx`: `label`, `content`, `data_table`) are the real numbers a title or caption may state. **Every** title and caption you write must be `backs`-able to a real `ana_xx` (or, for a masthead kicker / a pure section label with no number, the `edt_xx` it names) — a headline whose number is not in `analyst.json` is fabrication, not naming. |
| 12 | - Read `PROJECT_DIR/detective.json` — for the shared **[`topic_profile`](../references/topic_profile.json)** (`is_computational` / `is_visual` / `tags`) and `controversy`/context that decide register: a sober/heavy topic forbids the earned-pun / superlative devices and takes the **plain literal** register (D16); a computational topic favours the **surprising number/odds** device (D3). |
| 13 | - Read `PROJECT_DIR/designer.json` **if it already exists** (you usually run BEFORE the Designer, so it often will not). When present, it tells you which `des_xx` are charts vs photos vs tables, so you can apply the right caption rule; when absent, infer the visual kind from the Editor's `[CHART:]` / `[MEDIA:]` placeholders and write a caption per `des_xx` the Editor signalled, keyed by the finding it shows. |
| 14 | - Output: `PROJECT_DIR/copywriter.json` (the strings — schema in [`references/schema.json`](references/schema.json)). |
| 15 | |
| 16 | ## Step 0 — Learn the kill-list before you write a word |
| 17 | Read the few-shot corpus **[`../../frontend-design-pro/references/exemplars/titling_captioning.md`](../../frontend-design-pro/references/exemplars/titling_captioning.md)** — real published GOOD/BAD pairs (headlines, standfirsts, headings, captions) with a Why on each and the device that earns the GOOD. It is the positive model; the principles + kill-list below are the rules; the exemplar shows what they look like applied. Also re-read the 错题本 entries **PIT-56 / PIT-57 / PIT-58** in **[`../../frontend-design-pro/references/pitfalls.json`](../../frontend-design-pro/references/pitfalls.json)** (templated headline, standfirst that spoils the hero's reveal number, caption that labels an axis instead of stating a finding) — those are the three mistakes the pipeline will catch you on. |
| 18 | |
| 19 | ## Step 1 — Re-title the masthead (headline + standfirst + kicker) |
| 20 | The headline is the single most load-bearing line on the page. Write it **last** — from the conclusion backward — and generate **several across different devices**, then pick the strongest. Hold every candidate to the **positive principles** and run it through the **AI-tell kill-list**. |
| 21 | |
| 22 | **Positive headline principles** |
| 23 | - **Write the conclusion, not the topic** (t |