Agent skill

Copywriter

by QinghongLin in QinghongLin/data2story-skill

Name 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…

MITAuto-check passedWriting & Content

Install Copywriter

skills CLI
$ npx skills add QinghongLin/data2story-skill --skill copywriter -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install QinghongLin/data2story-skill copywriter --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/QinghongLin/data2story-skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/data2story-pro/copywriter .claude/skills/copywriter && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
copywriter
GitHub stars
155
Token cost
~3.7k tokens
SKILL.md length
1,684 words
Files
2 (incl. references)
Skills in repo
31
Repo updated
First seen
Licence
MIT

At a glance

Name 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…

  • Works in 4 steps: Learn the kill-list before you write a… → Re-title the masthead (headline +… → Re-title every section → …
  • Tasks that involve Copywriting
  • SKILL.md covers Setup, Step 0 — Learn the kill-list…, Step 1 — Re-title the masthead… and Step 2 — Re-title every section, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Copywriter is an agent skill from QinghongLin/data2story-skill. Name 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 default falls into. Reads editor.md/json + analyst.json + the resolved topicprofile; writes copywriter.json — STRINGS ONLY (masthead{headline,standfirst,kicker}, items{edtxx:{title}, desxx:{caption}}), each backed by a real ana. Names…

Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/schema.json`).

It sits in Writing & Content, covering Copywriting. The repository describes itself as: Data Journalist Agent: Transforming Data into Verifiable Multimodal Story. The licence is MIT.

When your agent uses it

  • Tasks that involve Copywriting

Example prompts

  • “flat statement. flat counter-statement.”
  • “/copywriter”

Requirements

  • Pre-approved tools (allowed-tools): Read, Write

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Learn the kill-list before you write a word
  2. Re-title the masthead (headline + standfirst + kicker)
  3. Re-title every section
  4. Re-caption every figure, photo and table (takeaway-title rule)

What it can do on your machine

Read from SKILL.md and the folder at commit 63a55c1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Copywriter loads about 3.7k tokens when it runs, and up to ~5.6k if it reads all its reference files. Until then it costs about 195 tokens; SKILL.md has 1,684 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~195
When it runs · the whole SKILL.md, loaded when a task matches
~3.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from QinghongLin/data2story-skill at commit 63a55c1, republished under its MIT licence (© QinghongLin). 1,684 words, ~3,725 tokens.

Download SKILL.mdSave it as .claude/skills/copywriter/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
copywriter
description
Name 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 default falls into. Reads editor.md/json + analyst.json + the resolved topic_profile; writes copywriter.json — STRINGS ONLY (masthead{headline,standfirst,kicker}, items{edt_xx:{title}, des_xx:{caption}}), each backed by a real ana_*. Names, never edits: it touches no finding, no number, no data-* id, no layout — so the Verify layer is untouched and the Programmer renders the masthead + figcaptions from copywriter.json verbatim. Runs at Stage 3.5, after the Editor, before the Designer.
allowed-tools
Read, Write
argument-hint
[PROJECT_DIR]

Copywriter

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.

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.

Setup

  • PROJECT_DIR = first argument.
  • SKILL_DIR = the directory containing this SKILL.md (.../skills/data2story-pro/copywriter).
  • 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.
  • 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.
  • Read PROJECT_DIR/detective.json — for the shared topic_profile (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).
  • 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.
  • Output: PROJECT_DIR/copywriter.json (the strings — schema in references/schema.json).

Step 0 — Learn the kill-list before you write a word

Read the few-shot corpus ../../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 (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.

Step 1 — Re-title the masthead (headline + standfirst + kicker)

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.

Positive headline principles

  • Write the conclusion, not the topic (the so-what). "Women's Pockets Are Inferior" beats "An Analysis of Pocket Sizes."
  • Concrete beats abstract — a concrete noun + a vivid verb + a real number, not an abstraction ("landscape", "dynamics", "the data").
  • Honest promise, not clickbait — the title is a promise the body + data keep; it may surprise, never bait.
  • Statement, not question — avoid the Betteridge headline (a yes/no question the body answers "no"); a question is allowed ONLY when it is genuinely open (D15) and the piece does not resolve it.
  • Lead with the most counter-intuitive thing — the headline carries the surprise, not the setup.
  • Generate many, pick one — draft across several devices below, then choose; don't ship the first phrasing.
  • Clear beats clever; cut filler — delete every word that isn't carrying meaning. The headline is named from the conclusion backward.

AI-tell kill-list (auto-reject or rewrite)

  • AT1 — the two-beat "Flat statement. Flat counter-statement." / "not X, it's Y." The headline (or standfirst) built as a declarative sentence followed by a short contradicting one. This is the headliner病灶 — kill it first, every time. "Argentina is the favourite. No bookmaker agrees." → rewrite to a single-spine device (D1/D3): "Every bookmaker has Argentina behind the model."
  • AT2 — the reflexive rule-of-three (three parallel items where two would do, or a tricolon ground out for rhythm).
  • AT3 — the reflexive colon subtitle ("Topic: A Something of Something").
  • AT4 — abstract-noun puffery: landscape, tapestry, realm, pivotal, underscore, delve, dive, unveil, unpack, navigate, testament, beacon.
  • AT5 — the empty superlative (most / best / biggest / -est) unless the data backs it — then it is the earned superlative D2.
  • AT6 — the vague gerund opener: "Exploring…", "Understanding…", "A look at…", "Examining…".
  • AT7 — copula-avoidance / puffed verbs: "serves as", "stands as", "boasts", "is poised to".
  • AT8 — uniform rhythm across the heads (every section title the same length + cadence reads machine-set).
  • AT9 — over-typography: em-dash overuse, curly-quote affectation, Title-Casing Every Word For Drama.

Device taxonomy (generate ACROSS devices for variety — don't ship four headings of the same shape) D1 flat verdict · D2 earned superlative (data-backed) · D3 surprising number / odds · D4 quantify ("Measuring…", "Mapping…") · D5 container ("An Atlas of…", "The Index of…") · D6 second-person imperative ("Swing the Election") · D7 self-challenge ("How Bad Is Your…?") · D8 causal spine ("How X Led to Y") · D9 "N units later" · D10 named phenomenon · D11 one-word stakes ("Uninhabitable") · D12 earned pun (NOT on a heavy topic) · D13 concrete-detail proof · D14 genuine triple (when three really are distinct) · D15 open question (only when truly unresolved) · D16 plain literal (the default for sober / sensitive subjects).

Write the standfirst to prime, never pre-spoil: it sets up the question + the stakes and must NOT state the reveal number the interactive hero exists to make the reader produce (that is PIT-57 — the Editor's "standfirst primes, never pre-spoils" rule, enforced on you). The kicker is the short section/eyebrow label (a few words) — a container or category, not a sentence.

Show full SKILL.md (673 more words)Show less

Step 2 — Re-title every section

For each edt_xx in editor.json, write a title that states that section's takeaway in the section's own voice — the most surprising thing the section adds, in a device different from its neighbours (vary across D1–D16 so AT8 never fires). A section whose only honest label is a category gets a plain D16/D5 label; never invent a finding to make a title sound punchier. The title backs the ana_xx whose finding it states (or the edt_xx it labels, for a pure category heading).

Step 3 — Re-caption every figure, photo and table (takeaway-title rule)

Captions are titles too — a caption that says "Figure 3: championship probabilities" or "the x-axis shows year" wastes the most-read line under a chart. Write each caption to state the finding, by visual kind:

  • Chart — the caption's title line is the conclusion: ≤10 words, active voice, with the number ("Rents are rising everywhere"); a descriptive subtitle carries the metric / unit / time-window / geography ("Change in rent, Q1'20–Q1'22"); the source goes below. The spike/outlier the chart is about is annotated on the chart (point the reader at it), not left for the caption to describe — coordinate with ../../dataviz-craft/references/annotation_layers.json (the chart's annotation layer) so the caption asserts and the annotation locates.
  • Photo — two sentences: a present-tense sentence (who / what / where + an absolute date, never "recently"), then a past-tense sentence giving the why it matters that the pixels can't show. Caption only what the image actually depicts (PIT-58's sibling — never claim a subject the pixels don't show).
  • Table — the caption sits above the table and adds a "what to look for" line (the column or row the reader should read first), not a restatement of the title.

Forbidden caption openers (the same AI-tells, caption-flavoured): "This chart/figure shows…", "The graph/visualization depicts…", "the x-axis / y-axis shows…", "is pictured / poses / looks on…" (wire-caption cliché), "may suggest a possible…" (hedge-stack). A caption that only labels the axes instead of stating the finding is PIT-58 and caps narrative_pacing at 3.

Every caption backs the real ana_xx it states a number from (a pure-illustration photo with no number backs the des_xx/edt_xx it sits in, and says so in its rationale).

Output — copywriter.json

Write the strings only. Shape (full schema + field notes in references/schema.json):

json
{
  "meta": { "role": "copywriter", "is_computational": true, "is_visual": true },
  "masthead": {
    "headline": "Every bookmaker has Argentina behind the model",
    "standfirst": "We ran the 2026 field 100,000 times. Pick a side and watch the favourite emerge — then see who the money disagrees with.",
    "kicker": "World Cup 2026 · The forecast",
    "headline_device": "D3",
    "headline_backs": "ana_01",
    "rationale": "states the model-vs-market conflict as ONE spine (kills the AT1 two-beat 'Argentina is the favourite. No bookmaker agrees.'); number traces to ana_01"
  },
  "items": {
    "edt_03": { "title": "How ten thousand simulations name a favourite", "device": "D8", "backs": "ana_01",
                "rationale": "states the section's method-as-narrative; different device from its neighbours (no AT8)" },
    "des_07": { "caption": "Argentina lead, but the gap is one upset wide", "subtitle": "Champion probability, 100k Monte-Carlo runs, as of 2026-06-18", "backs": "ana_01",
                "rationale": "takeaway-title (conclusion, <10 words, active) + descriptive subtitle (metric/method/date); not 'championship probabilities'" }
  }
}
  • masthead.headline / standfirst / kicker — the three masthead strings the Programmer renders verbatim. headline_device ∈ D1–D16; headline_backs is the ana_xx whose number the headline states (or null for a number-free verdict that still traces to a finding's direction).
  • items[edt_xx].title — the section title; device ∈ D1–D16; backs the ana_xx/edt_xx.
  • items[des_xx].caption (+ optional subtitle for charts/tables) — the figure/photo/table caption; backs the ana_xx/des_xx.
  • rationale (every entry) — one line: the device used + which AI-tell it avoids + why the number is honest.

Naming, not editing — the boundary (do not cross it). You write masthead.*, items[*].title, items[*].caption/subtitle, and a rationale per entry — strings. You do NOT add a finding, change a number, introduce a data-* id, reorder anything, or write body prose. If a title needs a number the Analyst never computed, you have over-reached — pick a device that states what the data does say (or label the section plainly), never invent the number.

References

Done when copywriter.json carries a re-titled masthead (headline + standfirst + kicker), a title for every edt_xx, and a caption for every figure/photo/table des_xx — each on a real device, each backs-ed to a real ana_xx/edt_xx/des_xx, none tripping an AI-tell — and you have changed not one finding, number, id, or line of body prose.

© QinghongLin, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/data2story-pro/copywriter of QinghongLin/data2story-skill.

  • SKILL.md
  • references/schema.json

Open the folder on GitHubat commit 63a55c1

Compare with similar skills

Copywriter next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Copywriter compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Copywriter this skillQinghongLin/data2story-skill155—~3.7kAutomated safety check: PassMIT
Asd Ste100danyuchn/asd-ste100-skill4.3k—~4.1kAutomated safety check: PassMIT
AI Copywritermikiarlo3/ai-copywriter1.2k—~12kAutomated safety check: PassMIT
Brand Voice Guideluongnv89/claude-howto42k—~609Automated safety check: PassMIT
Ralph Copywritermuratcankoylan/ralph-wiggum-marketer778—~2.4kAutomated safety check: PassNone
Humanities Writing Companiontizzy916/humanities-writing-companion436—~3.4kAutomated safety check: PassCC-BY-NC-4.0

Similar skills

  • Asd Ste100

    danyuchn/asd-ste100-skill

    A skill your agent uses when English text must be parsed without a human to resolve ambiguity — tool descriptions, error messages, inter-agent instructions, system prompts, status reports — and…

    4.3k GitHub stars~4.1k tokensUpdated 6 days ago
    Writing & ContentAuto-check passed
  • AI Copywriter

    mikiarlo3/ai-copywriter

    Write copy that converts and doesn't sound like a robot. An agent skill from mikiarlo3/ai-copywriter.

    1.2k GitHub stars~12k tokensUpdated 2 mo ago
    Writing & ContentAuto-check passed
  • Brand Voice Guide

    luongnv89/claude-howto

    Ensure all communication matches brand voice and tone guidelines. Use when creating marketing copy, customer communications, public-facing content, or when…

    42k GitHub stars~609 tokensUpdated 10 days ago
    Writing & ContentAuto-check passed
  • Ralph Copywriter

    muratcankoylan/ralph-wiggum-marketer

    A skill your agent uses when the user asks to "analyze my content", "learn my writing style", "research competitors", "find content angles", "improve my blog", "write like me", "embody my brand…

    778 GitHub stars~2.4k tokensUpdated 6 mo ago
    Writing & ContentAuto-check passed
  • Humanities Writing Companion

    tizzy916/humanities-writing-companion

    Help with humanities scholarly writing: sharpen research questions, map supplied readings, plan and draft arguments, review chapters, preserve authorial voice, and respond to reviewers.

    436 GitHub stars~3.4k tokensUpdated 18 days ago
    Writing & ContentAuto-check passed
  • Xiaoma Durex Copywriter

    crawfordxx/xiaoma-durex-copywriter

    用杜蕾斯黄金期(2011-2017 环时互动)那套「双层语义 + 留白」的方法产出文案与海报。先识别用户意图并给 3-5 个方案供选,再出短文案(长文案可选)+ 五种比例配图。适用于借势热点、节日节气、产品卖点、课程/知识付费推广、自媒体标题与封面、品牌人格化运营。当用户说「写个文案」「借势热点」「节日海报」「想句…

    584 GitHub stars~1.8k tokensUpdated 2 mo ago
    Writing & ContentAuto-check passed

More from QinghongLin/data2story-skill

All 31 skills in this repo
  • Inspector

    QinghongLin/data2story-skill

    Run sentence-level traceability verification on a Data2Story blog (verify.py - verifier.json), then emit the in-page Inspector panel (the reader-facing runnable verifier) + the verify/ artifacts…

    155 GitHub stars~3.1k tokensUpdated 3 mo ago
    Auto-check: notes
  • Auditor

    QinghongLin/data2story-skill

    Audit a generated Data2Story blog for build correctness across ALL modalities by ACTUALLY RENDERING it in a real headless browser (when available) — catching blank/0-width charts, broken/oversized…

    155 GitHub stars~6.4k tokensUpdated 3 mo ago
    Auto-check: notes
  • Critic

    QinghongLin/data2story-skill

    Review a finished Data2Story blog against the 5 quality rubric dimensions (visualdesign, narrativepacing, datamethodtransparency, claimdataalignment, insightvalue), score each 1-7 with on-page…

    155 GitHub stars~4.7k tokensUpdated 3 mo ago
    Auto-check: notes
  • Detective

    QinghongLin/data2story-skill

    Research external context for a dataset — domain background, history, related studies, and why this data matters.

    155 GitHub stars~2.4k tokensUpdated 3 mo ago
    Auto-check: notes
  • Inspector

    QinghongLin/data2story-skill

    Run sentence-level traceability verification on a blog, then generate viewer.html with interactive evidence panel.

    155 GitHub stars~697 tokensUpdated 3 mo ago
    Auto-check: notes
  • Data2story Pro

    QinghongLin/data2story-skill

    A skill your agent uses to turn a dataset into a verifiable multimedia blog (a data story / data-driven article / interactive dashboard from a dataset).

    155 GitHub stars~14k tokensUpdated 3 mo ago
    Auto-check: notes

Questions about Copywriter

What does Copywriter do?

Name 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…. Copywriter is an agent skill from QinghongLin/data2story-skill. Name 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.

When should I use Copywriter?

Copywriter fits situations like: tasks that involve Copywriting.

How do I install Copywriter in Claude Code?

Run `npx skills add QinghongLin/data2story-skill --skill copywriter -a claude-code`. Or copy the skill folder (skills/data2story-pro/copywriter in QinghongLin/data2story-skill) into .claude/skills/copywriter in your project. Claude Code loads it when a task matches its description.

How do I install Copywriter in Codex?

Run `npx skills add QinghongLin/data2story-skill --skill copywriter -a codex`. Or copy the skill folder (skills/data2story-pro/copywriter in QinghongLin/data2story-skill) into .agents/skills/copywriter in your project. Codex loads it when a task matches its description.

Can I use Copywriter in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add QinghongLin/data2story-skill --skill copywriter -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/copywriter, .gemini/skills/copywriter, .github/skills/copywriter and .opencode/skills/copywriter in your project.

What does Copywriter need to run?

SKILL.md names no scripts, command-line tools or credentials: Copywriter is instructions for the agent only. Its frontmatter pre-approves these tools: Read, Write.

Does Copywriter access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Copywriter safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Copywriter use?

Copywriter is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Copywriter use?

About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.9k tokens, read only when the agent opens those files.

What are the alternatives to Copywriter?

Skills that share tags, products or a category with Copywriter: Asd Ste100 (danyuchn/asd-ste100-skill, 4.3k stars), AI Copywriter (mikiarlo3/ai-copywriter, 1.2k stars), Brand Voice Guide (luongnv89/claude-howto, 42k stars) and Ralph Copywriter (muratcankoylan/ralph-wiggum-marketer, 778 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Copywriter?

QinghongLin (a GitHub user) maintains it in QinghongLin/data2story-skill, which has 155 GitHub stars. The repository holds 31 skills in this directory. The repository was last updated on July 5, 2026.

Source: QinghongLin/data2story-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.