Install
openclaw skills install @tseng71/pudding-data-storyPudding-style interactive data storytelling
openclaw skills install @tseng71/pudding-data-storyCreate visual journalism in which the reader experiences an argument through evidence. Treat motion and interaction as explanatory grammar, not decoration.
Base new standalone work on The Pudding's official website starter when its stack fits. In an existing codebase, preserve the stack and port the starter's patterns instead of replacing the application.
Do not begin with a chart type or animation. Establish:
Reject or reframe a concept if it is only “a dashboard about X,” a tour of available metrics, or a generic trend recap. A strong story has an argument, human stakes, and a visual reason to exist.
Write to the reader. Never expose the design brief in published copy. Remove phrases such as “this visualization demonstrates,” “push the data,” “choose a lens,” “same group of particles,” “这里展示,” “推动数据,” or “观察镜头” unless the interface literally requires that instruction.
Read references/editorial-workflow.md before drafting the story structure. For AI model, training-cost, benchmark, or capability stories, also read references/ai-data-evidence.md.
Build a claim-to-source ledger before implementation:
| Claim or scene | Measure | Grain | Time range | Source | Transformation | Caveat |
|---|
For every derived value, preserve units, denominator, missing-value treatment, filters, and calculation. Label estimates and incomplete coverage in the same visual state where they appear. Keep methodology and data downloads accessible without interrupting the main narrative.
If data is missing, stale, contradictory, or too coarse for the proposed claim, stop and narrow the claim. Do not animate uncertainty away.
Use the sequence:
For every beat, specify:
| Beat | Reader-facing copy | Evidence | Visual state | Reader action | Transition meaning |
|---|
One scroll step should make one claim. Scrollytelling is not a slideshow of chart types.
Choose encodings from the comparison the reader must make:
Preserve object constancy only for the same semantic entities. Do not morph unrelated metrics into “the same particles.” Avoid chart carousels, gratuitous 3D, decorative network graphs, and motion that adds no meaning.
Read references/interaction-patterns.md when selecting a visual or interaction.
Every transition must answer one of:
Prefer stable marks that move, sort, aggregate, split, or annotate. Use fades only as support. Avoid ambient loops after the reader has understood the state.
Scrolling backward must restore the prior state. Keep transitions interruptible. Respect prefers-reduced-motion; reduced motion must preserve the explanation through direct state changes, not remove content.
An interaction belongs only if it lets the reader:
Provide a meaningful default state. Label controls in audience language. Do not make readers click merely to continue reading, and do not hijack wheel, trackpad, touch, or keyboard behavior.
Search, filter, scrub, sort, and simulation controls must change real data dimensions. A control that only swaps decorative scenes should be removed or turned into authored scroll progression.
For a new Svelte story, inspect the current state of The Pudding website starter before copying patterns; it is an active Svelte migration. Use its architecture as the default:
Scrolly component;position: sticky for the graphic;For React, Next.js, Sites, or another existing stack, reproduce the same separation of concerns:
Do not reproduce The Pudding's logo, house fonts, or visual identity. The official starter is MIT-licensed, but its README explicitly excludes brand assets.
Read references/technical-template.md before implementation.
100vh scrolly geometry on mobile browser chrome; prefer content-driven sizing and svh/dvh with fallbacks.Before declaring the story complete:
python scripts/audit_story.py <project-or-story-file>.Use references/pudding-examples.md as a pattern library, not a style catalog. Copy the editorial logic, not the surface.
Deliver:
story-brief.md — question, thesis, audience, human opening, visual reason;data-notes.md — sources, transformations, caveats, claim ledger;storyboard.md — beat-by-beat copy, evidence, state, interaction, transition;qa-notes.md — device, accessibility, interaction, and data checks.Use the copy-ready structures in references/deliverable-templates.md. Do not leave a template field blank without explaining why it does not apply.
When revising an existing story, diagnose it against these gates first, then make the smallest structural changes that materially improve the reader's experience.