Narrative Scrollytelling
Announce at start: "I'm using the humane:narrative-scrollytelling skill to turn this sequence into a scroll story that remains a readable document."
Scrollytelling is a document before it is choreography. The ordered ideas,
headings, prose and media alternatives form a complete canonical reading order;
scroll position may change their presentation, never their existence or meaning.
Quick reference
| Need |
Read |
| Story shapes, drivers, sticky stages and pacing |
references/patterns.md |
| The story-map fields and fallback invariants |
references/contract.md |
Build the story map
- Establish the ordered beats outside the visual treatment. Each beat carries
one claim or change in understanding and a stable id.
- Choose the least demanding driver that expresses the relationship:
discrete-intersection for prose steps, view-progress for a visual whose
change follows its visibility, and scroll-progress only when intermediate
states themselves communicate meaning.
- Decide what remains in normal document flow and what may be sticky. A sticky
visual stage is normally non-focusable; interactive content stays in logical
source order.
- Specify navigation and fallbacks before transition polish: anchors,
previous/next where useful, skip-story, no-JavaScript, reduced-motion,
no-motion and unsupported-driver behavior.
- Only then name transition intents and token references.
Write the result using references/contract.md. When the user wants a saved
artifact, resolve artifact_path(name, "narrative-scrollytelling", "json");
never assemble a .design path at the call site. Validate a saved map with
python3 scripts/validate_map.py <map.json>.
Hard boundaries
steps[] order is canonical DOM and reading order. Every essential fact is
present as semantic content outside canvas frames, keyframes and transition
labels.
- Native page scrolling remains in control. Do not hijack wheel/touch input,
lock the reader into a scene, require scroll speed/direction, or turn the
document into an inaccessible slide deck.
- Scrolling does not move focus or announce every step. Sticky authored content
cannot obscure focused controls; reserve safe offsets and scroll padding.
- Default snap is
none; proximity is optional. mandatory requires an
explicit audited exception proving all content remains reachable at zoom,
reflow, large text and short viewports.
- Reduced motion removes parallax, scrubbed spatial travel, smooth scrolling
and long pinning. The fallback uses discrete static states or the linear
document; meaning never depends on an exact progress fraction.
- No-JavaScript and unsupported-feature modes expose the whole story. Native
CSS scroll timelines are progressive enhancement, not a prerequisite.
- Continuous automatically started movement is absent by default. If an
essential presentation exceeds five seconds alongside other content, provide
pause, stop or hide controls and name the reason.
Embedded interactions and sound
This skill owns chapter activation and presentation, not feedback for buttons,
toggles, maps or other controls inside a chapter. Hand those bounded transitions
to humane:semantic-micro-interactions.
Passive scroll crossings do not play sound. If the experience has opted into
audio, explicit chapter navigation or a genuinely committed milestone may emit
a semantic soundEvent through its micro-interaction map; sound-effects then
owns the audio asset and playback layer. Narrative ambience, scoring and
narration are outside this skill.
Verification and handoff
Read the complete story with CSS and JavaScript disabled, then with reduced and
no motion. Test forward and reverse keyboard traversal, anchors, previous/next,
skip-story, zoom/reflow, short and narrow viewports, touch scrolling, back/forward
navigation, refresh at a deep anchor, and fast bidirectional scrolling. Confirm
that every visual state resolves and that no focused control is hidden.
Record observed coverage and mark the rest Not verified. Hand the operable
story to humane:walkthrough; this skill owns the narrative mechanism, while
walkthrough determines whether a reader can actually understand and complete
the intended path.
What this skill does not own
| Concern |
Owner |
| The source wording of headings and prose |
ux-writing |
| Duration, dimension, color and typography values |
design-tokens |
| Bounded component feedback inside a chapter |
semantic-micro-interactions |
| Sound generation, assets and playback |
sound-effects, reached through the micro-interaction hook |
| Task success and contextual verification |
walkthrough |
| Framework-specific scroll-animation craft and accessibility engineering depth |
interfaces when installed; otherwise mark the implementation depth Not reviewed |
1---2name: narrative-scrollytelling3description: Turn an ordered sequence of ideas into a readable scroll-based story with canonical document order, deliberate step or progress transitions, native scrolling, and static, reduced-motion, keyboard, touch, and no-JavaScript fallbacks. Use when a method, argument, timeline, process, or visual explanation should unfold as the reader scrolls rather than behave like a slide deck. Triggers on scrollytelling, scroll story, narrative scroll, sticky story, scroll-driven narrative, scroll animation, step story, chapter reveal, pinned visual, interactive article.4---56# Narrative Scrollytelling78**Announce at start:** "I'm using the humane:narrative-scrollytelling skill to turn this sequence into a scroll story that remains a readable document."910Scrollytelling is a document before it is choreography. The ordered ideas,11headings, prose and media alternatives form a complete canonical reading order;12scroll position may change their presentation, never their existence or meaning.1314## Quick reference1516| Need | Read |17| --- | --- |18| Story shapes, drivers, sticky stages and pacing | `references/patterns.md` |19| The story-map fields and fallback invariants | `references/contract.md` |2021## Build the story map22231. Establish the ordered beats outside the visual treatment. Each beat carries24 one claim or change in understanding and a stable id.252. Choose the least demanding driver that expresses the relationship:26 `discrete-intersection` for prose steps, `view-progress` for a visual whose27 change follows its visibility, and `scroll-progress` only when intermediate28 states themselves communicate meaning.293. Decide what remains in normal document flow and what may be sticky. A sticky30 visual stage is normally non-focusable; interactive content stays in logical31 source order.324. Specify navigation and fallbacks before transition polish: anchors,33 previous/next where useful, skip-story, no-JavaScript, reduced-motion,34 no-motion and unsupported-driver behavior.355. Only then name transition intents and token references.3637Write the result using `references/contract.md`. When the user wants a saved38artifact, resolve `artifact_path(name, "narrative-scrollytelling", "json")`;39never assemble a `.design` path at the call site. Validate a saved map with40`python3 scripts/validate_map.py <map.json>`.4142## Hard boundaries4344- `steps[]` order is canonical DOM and reading order. Every essential fact is45 present as semantic content outside canvas frames, keyframes and transition46 labels.47- Native page scrolling remains in control. Do not hijack wheel/touch input,48 lock the reader into a scene, require scroll speed/direction, or turn the49 document into an inaccessible slide deck.50- Scrolling does not move focus or announce every step. Sticky authored content51 cannot obscure focused controls; reserve safe offsets and scroll padding.52- Default snap is `none`; `proximity` is optional. `mandatory` requires an53 explicit audited exception proving all content remains reachable at zoom,54 reflow, large text and short viewports.55- Reduced motion removes parallax, scrubbed spatial travel, smooth scrolling56 and long pinning. The fallback uses discrete static states or the linear57 document; meaning never depends on an exact progress fraction.58- No-JavaScript and unsupported-feature modes expose the whole story. Native59 CSS scroll timelines are progressive enhancement, not a prerequisite.60- Continuous automatically started movement is absent by default. If an61 essential presentation exceeds five seconds alongside other content, provide62 pause, stop or hide controls and name the reason.6364## Embedded interactions and sound6566This skill owns chapter activation and presentation, not feedback for buttons,67toggles, maps or other controls inside a chapter. Hand those bounded transitions68to `humane:semantic-micro-interactions`.6970Passive scroll crossings do not play sound. If the experience has opted into71audio, explicit chapter navigation or a genuinely committed milestone may emit72a semantic `soundEvent` through its micro-interaction map; `sound-effects` then73owns the audio asset and playback layer. Narrative ambience, scoring and74narration are outside this skill.7576## Verification and handoff7778Read the complete story with CSS and JavaScript disabled, then with reduced and79no motion. Test forward and reverse keyboard traversal, anchors, previous/next,80skip-story, zoom/reflow, short and narrow viewports, touch scrolling, back/forward81navigation, refresh at a deep anchor, and fast bidirectional scrolling. Confirm82that every visual state resolves and that no focused control is hidden.8384Record observed coverage and mark the rest **Not verified**. Hand the operable85story to `humane:walkthrough`; this skill owns the narrative mechanism, while86`walkthrough` determines whether a reader can actually understand and complete87the intended path.8889## What this skill does not own9091| Concern | Owner |92| --- | --- |93| The source wording of headings and prose | `ux-writing` |94| Duration, dimension, color and typography values | `design-tokens` |95| Bounded component feedback inside a chapter | `semantic-micro-interactions` |96| Sound generation, assets and playback | `sound-effects`, reached through the micro-interaction hook |97| Task success and contextual verification | `walkthrough` |98| Framework-specific scroll-animation craft and accessibility engineering depth | `interfaces` when installed; otherwise mark the implementation depth Not reviewed |