claudeers.
// Claude Skills

awesome-html-scrolline-deck

Scrolline Deck — scroll-driven cinematic HTML presentations (scrollytelling decks) as a Claude Code skill: 12 scene techniques, enter/hold/exit choreography,…

// Claude Skills[ cli ][ api ][ web ][ claude ]#claude#claude-code#gsap#lenis#presentation#scrolltrigger#scrollytelling#skill#skills◷ MIT$open-sourceupdated 16 days ago
Actively maintained
100/100
last commit 12 days ago
last release 17 days ago
releases 2
open issues 0

Install with your AI

Paste into Claude Code, Cursor, or any agent — it reads the repo and wires the tool into your project.

Install and set up awesome-html-scrolline-deck (claude-skill project) into my current project.
Found on https://claudeers.com/awesome-html-scrolline-deck
Repo: https://github.com/gongnyang/awesome-html-scrolline-deck
Homepage/docs: —
Detected install method: claude-skill → # copy this skill into .claude/skills/awesome-html-scrolline-deck/
Category: skills. Platforms: cli, api, web.
Read the repo's README for exact setup and env vars, then install it and wire it into my project.

Claudeers Health Verdict:
active; community-verified: false. Confirm the source before running anything.
// or install directly (claude-skill)
# copy the skill dir into your project:
# .claude/skills/awesome-html-scrolline-deck/   (or ~/.claude/skills/awesome-html-scrolline-deck/ for all projects)
// or clone
git clone https://github.com/gongnyang/awesome-html-scrolline-deck

// compatibility

Platformscli, api, web
Operating systems—
AI compatibilityclaude
LicenseMIT
Pricingopen-source
LanguageJavaScript

Get your FREE $2.50 API credits to access TickAtlas financial data ↗

Scrolline Deck

Scroll-driven cinematic HTML presentations — a scrollytelling deck you can present from.

One notch of the wheel is not the next slide. It is the next frame of the scene you are already in.

한국어 README · Skill router · Live examples

City guide deck — a drawn route map dissected into timed rows (anatomy-rows)Product launch deck, light theme — exploded view of the headphone (tilt-card)
Annual report deck — revenue chart taken apart row by row (anatomy-rows)Sample deck — enter, hold, exit as numbered kinetic titles

Every image above is a verify capture, taken by driving a real mouse wheel through a deck. Every picture inside the decks is a vector infographic drawn by a script. Nothing here is a mockup. Click a capture to open the live deck.


One-minute demo

12-second teaser: four scroll-driven decks cut together

Full 59-second trailer: docs/demo.mp4 (1080p). Every shot is a real deck driven by real wheel events; the score is synthesised in ffmpeg. Regenerate with tools/demo/.

Live examples

Four decks, four concepts, all generated and gate-verified by the skill. Open one and scroll, or press →.

deckconceptthemescenesopen
examples/sample-deckthe tool explaining itselfdark, purple6▶ open
examples/product-launch「Nimbus」 headphone launch: 90 drawn rotation frames, exploded view, feature charts, spec odometerlight, cream + coral7▶ open
examples/annual-reportfictional annual results: chart anatomy, six report pages fanning, KPI odometer, structure wipedark, forest + amber6▶ open
examples/city-guideSeoul at dusk: 100 drawn skyline frames, route-map anatomy, postcards, cost/time comparedark, twilight7▶ open

Gallery of all four: https://gongnyang.github.io/awesome-html-scrolline-deck/ — rebuilt by GitHub Pages on every push (scripts/site/build-examples.mjs). Each deck folder has a README with its storyboard and the scripts that draw its assets; all figures are sample data.

What this is

A slide deck cuts. A scrollytelling deck does not — each scene is pinned to the viewport while the wheel drives its progress from 0 to 1, so motion is continuous and the presenter controls the pace by scrolling. Scrolline Deck is:

  • A Claude Code skill (SKILL.md) that takes a topic and an outline and authors the deck for you.
  • A CLI (scripts/cli.mjs) that scaffolds a Vite project, adds scenes from 12 templates, cuts frame sequences, and runs the gates.
  • An engine (engine/) built on GSAP ScrollTrigger and Lenis, copied into each generated project so the deck keeps working after you stop using the tool.
  • Ten gates (G1–G10, plus a schema check) that fail with a non-zero exit code. Six of them drive a real browser with real wheel events.

Output is a static HTML bundle you run locally or host anywhere. Deployment is out of scope on purpose.

Install

git clone https://github.com/gongnyang/awesome-html-scrolline-deck.git
cd awesome-html-scrolline-deck
npm install

To use it as a Claude Code skill, symlink the repo into your skills directory:

ln -s "$(pwd)" ~/.claude/skills/scrolline-deck

Then ask Claude for "a scrollytelling deck about X" and it will follow SKILL.md.

Requirements. Node ≥ 20. qrcode is the only hard dependency. Playwright is optional — without it the browser gates report skipped and exit 0. ffmpeg is needed only for scrolline frames.

Quickstart

# 1. scaffold
node scripts/cli.mjs init my-deck --title "How we ship" --style dark

# 2. add scenes (one per storyboard row; never repeat a technique back to back)
node scripts/cli.mjs add frame-scrub-hero    --id 01-hero    --kicker "2026" --title "How we ship"
node scripts/cli.mjs add horizontal-gallery  --id 02-work    --kicker "Work" --title "Six things we shipped"
node scripts/cli.mjs add closing-qr          --id 03-closing --kicker "Next" --title "Come build with us" --url https://example.com

# 3. run it
cd my-deck && npm install && npm run dev

# 4. gate it
node ../scripts/cli.mjs check .
node ../scripts/cli.mjs verify .     # writes qa/<id>-{30,55,85}.jpg

Read the three captures per scene: 30% should be mid-entrance, 55% should be the finished frame you talk over, 85% should be mid-exit. If 55% is not a frame you would be happy to stand in front of, the choreography is wrong, not the capture.

The twelve techniques

techniquewhat it doesreach for it whenassetsdefault pinVh
frame-scrub-heroan image sequence scrubs behind a standing titleopening the talk on an imageframes + poster260
word-relayan arrowed title hands off word by wordopening the talk on a sentencenone220
kinetic-titlesnumbered titles assemble along a diagonalshowing the shape of the sessionnone240
horizontal-galleryvertical scroll drives a horizontal railshowing many images3–10 images320
anatomy-rowsone artefact splits into annotated rowstaking one thing apart1 image300
frame-scrub-videoa body-copy frame scrubshowing a process that movesframes + poster280
parallax-videoan unpinned parallax pass over videoletting the room breathe (pin: false)video + poster130
paper-assemblysheets converge into one body of workproving there is a body of work3–8 images260
odometer-statsfigures roll up on reels and landlanding a numbernone220
wipe-transformone surface wipes into the nextshowing A becoming B2–5 images, video optional300
tilt-carda portrait held under a slow tiltintroducing a person1 image200
closing-qrQR, URL and a way back to scene onehanding the room a linkqr.svg200

references/techniques.md is the canonical list; the numbers above track it.

deck.json

The whole deck is one data file. Scene folders carry the motion; this carries the meaning.

{
  "title": "Scrolline Deck",
  "lang": "en",
  "presenter": { "name": "gongnyang", "autoDurationSec": 180 },
  "theme": { "style": "dark", "accent": "#5e6ad2" },
  "scenes": [
    {
      "id": "01-hero",                    // must equal the src/scenes/<id>/ folder name
      "order": 1,
      "technique": "frame-scrub-hero",
      "pinVh": 260,                       // pin distance as a % of viewport height
      "pin": true,
      "assets": {
        "frames": "/frames/hero/f_%03d.jpg",
        "count": 120,
        "critical": [1, 30, 60, 90, 120], // decoded before the scene is allowed to start
        "poster": "/frames/hero/poster.jpg"
      },
      "copy": { "kicker": "2026", "title": "How we ship", "lines": ["One line, maybe two."] },
      "notes": "Required. Shown in the N panel while you present.",
      "fallback": "Poster still plus a faded-in title, for reduced motion."
    }
  ]
}

Full schema: references/deck.schema.json.

Gates

check is static and needs no browser. verify drives Chromium with real wheel events — it never calls scrollTo, because a deck that only works when you teleport to a scroll position is a deck that breaks under a real wheel.

gateasserts
checkG1every scene module exports { id, mount, build, unmount } and id equals its folder
G2every timeline sums to ≤ 1.001, and order / pinVh are sane
G3no var( inside a tween string, plus lint L1 (no raw colour in scene.css), L2 (every selector scoped to [data-scene="<id>"]), L3 (pathLength="1" on animated paths)
G4no window.scrollTo or scrollIntoView in scenes or in the verify path
S0deck.json validates and every asset path exists on disk
verifyG5measured pin distance equals pinVh% of the viewport, ±2px
G6≥ 3 visible elements at 55% of each scene, and writes the three captures
G7ArrowRight lands within 4px of 35% into the next pin, with ≥ 3 visible elements there
G8zero console.error and zero page errors across the run
G9zero horizontal overflow at 1440px and at 390px
G10with prefers-reduced-motion, pin distance is 0 and every scene still shows ≥ 3 elements

Without Playwright installed, verify prints how to install it, reports skipped: true, and exits 0 so CI stays honest instead of green-by-accident.

Presenting

keyaction
→ Space / ←next / previous scene, landing 35% into the pin
1–9, 0jump to scene 1–9; 0 is scene 10
Ptoggle auto-advance (presenter.autoDurationSec); any input stops it
Ffullscreen
Hhide the cursor
Nspeaker notes panel

Build with npm run build && npm run preview, and run verify once on the machine that will actually be on stage.

Project structure

awesome-html-scrolline-deck/
├─ SKILL.md              Claude Code router: principles, workflow, technique picker
├─ engine/               runtime copied into every generated deck (no Vite API)
├─ templates/project/    Vite scaffold: index.html, tokens.css, data/deck.json
├─ templates/scenes/     12 technique templates (scene.html/css/js + template.json)
├─ references/           contract, schema, techniques, choreography, design, pitfalls
├─ scripts/              cli.mjs and cmd/ + gates/ + lib/
├─ examples/              four sample decks (sample-deck, product-launch, annual-report, city-guide)
├─ tests/                node --test: gate units, bad-* fixtures, build smoke
└─ book/                 the companion handbook (Korean, PDF in docs/)

Handbook

Cover of the handbook 스크롤로 발표하라

「스크롤로 발표하라」 (Korean, 46 pages, PDF in docs/) — a practical guide for presenters, not developers: what a scrollytelling deck is, the enter/hold/exit grammar, the one-table storyboard, how to ask Claude Code for the deck, presenting keys and rehearsal, and a teardown of a real 12-scene seminar deck.


Contributing

Issues and pull requests are welcome. A new scene technique needs four files under templates/scenes/<technique>/ — scene.html, scene.css, scene.js, template.json — plus a row in references/techniques.md and a passing node --test. Keep colours in tokens, keep every timeline at or under 1, and keep the boxes out.

License

MIT. See LICENSE.

Credits

Extracted from the twelve-scene cinema deck built for the FastCampus "ChatGPT Astra" seminar — https://fc-astra-site.vercel.app/deck/. That deck is where the pin-unit bug, the smooth-scroll prevent exception and the CSS-variable interpolation failure were all found the hard way; the gates in this repo exist so you do not have to find them again.

Built with GSAP ScrollTrigger, Lenis and Vite.

// faq

What is awesome-html-scrolline-deck?

Scrolline Deck — scroll-driven cinematic HTML presentations (scrollytelling decks) as a Claude Code skill: 12 scene techniques, enter/hold/exit choreography, 10 wheel-measured gates. Vite + GSAP ScrollTrigger + Lenis.. It is open-source on GitHub.

Is awesome-html-scrolline-deck free to use?

awesome-html-scrolline-deck is open-source under the MIT license, so it is free to use.

What category does awesome-html-scrolline-deck belong to?

awesome-html-scrolline-deck is listed under skills in the Claudeers registry of Claude-compatible tools.

3 views
★ 28 stars
unclaimed
updated 16 days ago

// embed badge

awesome-html-scrolline-deck on Claudeers
[![Claudeers](https://claudeers.com/api/badge/awesome-html-scrolline-deck.svg)](https://claudeers.com/awesome-html-scrolline-deck)

// retro hit counter

awesome-html-scrolline-deck hit counter
[![Hits](https://claudeers.com/api/counter/awesome-html-scrolline-deck.svg)](https://claudeers.com/awesome-html-scrolline-deck)

// reviews

// guestbook

0/500

// related in Claude Skills

🔓

An agentic skills framework & software development methodology that works.

// skillsobra/⟨Shell⟩★ 292,190◷ MIT[ claude ]
🔓

Public repository for Agent Skills

// skillsanthropics/⟨Python⟩★ 178,324[ claude ]
🔓

💫 Toolkit to help you get started with Spec-Driven Development

// skillsgithub/⟨Python⟩★ 138,919◷ MIT[ claude ]
🔓

AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, and more). Turn any folder of code, SQL schemas, R scripts, shell scripts, docs,…

// skillsGraphify-Labs/⟨Python⟩★ 123,800◷ MIT[ claude ]
→ see how awesome-html-scrolline-deck connects across the ecosystem