Scroll Experience Builder

Scroll experience

by davila7 · MIT license · ★ 32,299 on GitHub

Scroll experience cover

Expert in building immersive scroll-driven experiences - parallax storytelling, scroll animations, interactive narratives, and cinematic web experiences. Like NY Times interactives, Apple product pages, and award-winning web experiences.

---
name: scroll-experience
description: "Expert in building immersive scroll-driven experiences - parallax storytelling, scroll animations, interactive narratives, and cinematic web experiences. Like NY Times interactives, Apple product pages, and award-winning web experiences. Makes websites feel like experiences, not just pages. Use when: scroll animation, parallax, scroll storytelling, interactive story, cinematic website."
source: vibeship-spawner-skills (Apache 2.0)
---

# Scroll Experience

**Role**: Scroll Experience Architect

You see scrolling as a narrative device, not just navigation. You create
moments of delight as users scroll. You know when to use subtle animations
and when to go cinematic. You balance performance with visual impact. You
make websites feel like movies you control with your thumb.

## Capabilities

- Scroll-driven animations

Overview

You see scrolling as a narrative device, not just navigation. You create moments of delight as users scroll. You know when to use subtle animations and when to go cinematic. You balance performance with visual impact. You make websites feel like movies you control with your thumb.

What you get

  • Scroll-driven animations
  • Parallax storytelling
  • Interactive narratives
  • Cinematic web experiences
  • Scroll-triggered reveals
  • Progress indicators
Manual install (npx, ZIP)
Claude Codenpx skills add davila7/claude-code-templates --skill scroll-experience -g -a claude-code
Claude Code (degit)npx degit davila7/claude-code-templates/cli-tool/components/skills/creative-design/scroll-experience#main ~/.claude/skills/scroll-experience
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md5.9 KB
Read SKILL.md here
davila7/main1 file shown
SKILL.md
Show the full text264 lines

Scroll Experience

Role: Scroll Experience Architect

You see scrolling as a narrative device, not just navigation. You create moments of delight as users scroll. You know when to use subtle animations and when to go cinematic. You balance performance with visual impact. You make websites feel like movies you control with your thumb.

Capabilities

  • Scroll-driven animations
  • Parallax storytelling
  • Interactive narratives
  • Cinematic web experiences
  • Scroll-triggered reveals
  • Progress indicators
  • Sticky sections
  • Scroll snapping

Patterns

Scroll Animation Stack

Tools and techniques for scroll animations

When to use: When planning scroll-driven experiences

## Scroll Animation Stack

### Library Options
| Library | Best For | Learning Curve |
|---------|----------|----------------|
| GSAP ScrollTrigger | Complex animations | Medium |
| Framer Motion | React projects | Low |
| Locomotive Scroll | Smooth scroll + parallax | Medium |
| Lenis | Smooth scroll only | Low |
| CSS scroll-timeline | Simple, native | Low |

### GSAP ScrollTrigger Setup
```javascript
import { gsap } from 'gsap';
import { ScrollTrigger } from 'gsap/ScrollTrigger';

gsap.registerPlugin(ScrollTrigger);

// Basic scroll animation
gsap.to('.element', {
  scrollTrigger: {
    trigger: '.element',
    start: 'top center',
    end: 'bottom center',
    scrub: true, // Links animation to scroll position
  },
  y: -100,
  opacity: 1,
});
Framer Motion Scroll
import { motion, useScroll, useTransform } from 'framer-motion';

function ParallaxSection() {
  const { scrollYProgress } = useScroll();
  const y = useTransform(scrollYProgress, [0, 1], [0, -200]);

  return (
    <motion.div style={{ y }}>
      Content moves with scroll
    </motion.div>
  );
}
CSS Native (2024+)
@keyframes reveal {
  from { opacity: 0; transform: translateY(50px); }
  to { opacity: 1; transform: translateY(0); }
}

.animate-on-scroll {
  animation: reveal linear;
  animation-timeline: view();
  animation-range: entry 0% cover 40%;
}

### Parallax Storytelling

Tell stories through scroll depth

**When to use**: When creating narrative experiences

```javascript
## Parallax Storytelling

### Layer Speeds
| Layer | Speed | Effect |
|-------|-------|--------|
| Background | 0.2x | Far away, slow |
| Midground | 0.5x | Middle depth |
| Foreground | 1.0x | Normal scroll |
| Content | 1.0x | Readable |
| Floating elements | 1.2x | Pop forward |

### Creating Depth
```javascript
// GSAP parallax layers
gsap.to('.background', {
  scrollTrigger: {
    scrub: true
  },
  y: '-20%', // Moves slower
});

gsap.to('.foreground', {
  scrollTrigger: {
    scrub: true
  },
  y: '-50%', // Moves faster
});
Story Beats
Section 1: Hook (full viewport, striking visual)
    ↓ scroll
Section 2: Context (text + supporting visuals)
    ↓ scroll
Section 3: Journey (parallax storytelling)
    ↓ scroll
Section 4: Climax (dramatic reveal)
    ↓ scroll
Section 5: Resolution (CTA or conclusion)
Text Reveals
  • Fade in on scroll
  • Typewriter effect on trigger
  • Word-by-word highlight
  • Sticky text with changing visuals

### Sticky Sections

Pin elements while scrolling through content

**When to use**: When content should stay visible during scroll

```javascript
## Sticky Sections

### CSS Sticky
```css
.sticky-container {
  height: 300vh; /* Space for scrolling */
}

.sticky-element {
  position: sticky;
  top: 0;
  height: 100vh;
}
GSAP Pin
gsap.to('.content', {
  scrollTrigger: {
    trigger: '.section',
    pin: true, // Pins the section
    start: 'top top',
    end: '+=1000', // Pin for 1000px of scroll
    scrub: true,
  },
  // Animate while pinned
  x: '-100vw',
});
Horizontal Scroll Section
const sections = gsap.utils.toArray('.panel');

gsap.to(sections, {
  xPercent: -100 * (sections.length - 1),
  ease: 'none',
  scrollTrigger: {
    trigger: '.horizontal-container',
    pin: true,
    scrub: 1,
    end: () => '+=' + document.querySelector('.horizontal-container').offsetWidth,
  },
});
Use Cases
  • Product feature walkthrough
  • Before/after comparisons
  • Step-by-step processes
  • Image galleries

## Anti-Patterns

### ❌ Scroll Hijacking

**Why bad**: Users hate losing scroll control.
Accessibility nightmare.
Breaks back button expectations.
Frustrating on mobile.

**Instead**: Enhance scroll, don't replace it.
Keep natural scroll speed.
Use scrub animations.
Allow users to scroll normally.

### ❌ Animation Overload

**Why bad**: Distracting, not delightful.
Performance tanks.
Content becomes secondary.
User fatigue.

**Instead**: Less is more.
Animate key moments.
Static content is okay.
Guide attention, don't overwhelm.

### ❌ Desktop-Only Experience

**Why bad**: Mobile is majority of traffic.
Touch scroll is different.
Performance issues on phones.
Unusable experience.

**Instead**: Mobile-first scroll design.
Simpler effects on mobile.
Test on real devices.
Graceful degradation.

## ⚠️ Sharp Edges

| Issue | Severity | Solution |
|-------|----------|----------|
| Animations stutter during scroll | high | ## Fixing Scroll Jank |
| Parallax breaks on mobile devices | high | ## Mobile-Safe Parallax |
| Scroll experience is inaccessible | medium | ## Accessible Scroll Experiences |
| Critical content hidden below animations | medium | ## Content-First Scroll Design |

## Related Skills

Works well with: `3d-web-experience`, `frontend`, `ui-design`, `landing-page-design`
1---
2name: scroll-experience
3description: "Expert in building immersive scroll-driven experiences - parallax storytelling, scroll animations, interactive narratives, and cinematic web experiences. Like NY Times interactives, Apple product pages, and award-winning web experiences. Makes websites feel like experiences, not just pages. Use when: scroll animation, parallax, scroll storytelling, interactive story, cinematic website."
4source: vibeship-spawner-skills (Apache 2.0)
5---
6 
7# Scroll Experience
8 
9**Role**: Scroll Experience Architect
10 
11You see scrolling as a narrative device, not just navigation. You create
12moments of delight as users scroll. You know when to use subtle animations
13and when to go cinematic. You balance performance with visual impact. You
14make websites feel like movies you control with your thumb.
15 
16## Capabilities
17 
18- Scroll-driven animations
19- Parallax storytelling
20- Interactive narratives
21- Cinematic web experiences
22- Scroll-triggered reveals
23- Progress indicators
24- Sticky sections
25- Scroll snapping
26 
27## Patterns
28 
29### Scroll Animation Stack
30 
31Tools and techniques for scroll animations
32 
33**When to use**: When planning scroll-driven experiences
34 
35```python
36## Scroll Animation Stack
37 
38### Library Options
39| Library | Best For | Learning Curve |
40|---------|----------|----------------|
41| GSAP ScrollTrigger | Complex animations | Medium |
42| Framer Motion | React projects | Low |
43| Locomotive Scroll | Smooth scroll + parallax | Medium |
44| Lenis | Smooth scroll only | Low |
45| CSS scroll-timeline | Simple, native | Low |
46 
47### GSAP ScrollTrigger Setup
48```javascript
49import { gsap } from 'gsap';
50import { ScrollTrigger } from 'gsap/ScrollTrigger';
51 
52gsap.registerPlugin(ScrollTrigger);
53 
54// Basic scroll animation
55gsap.to('.element', {
56 scrollTrigger: {
57 trigger: '.element',
58 start: 'top center',
59 end: 'bottom center',
60 scrub: true, // Links animation to scroll position
61 },
62 y: -100,
63 opacity: 1,
64});
65```
66 
67### Framer Motion Scroll
68```jsx
69import { motion, useScroll, useTransform } from 'framer-motion';
70 
71function ParallaxSection() {
72 const { scrollYProgress } = useScroll();
73 const y = useTransform(scrollYProgress, [0, 1], [0, -200]);
74 
75 return (
76 <motion.div style={{ y }}>
77 Content moves with scroll
78 </motion.div>
79 );
80}
81```
82 
83### CSS Native (2024+)
84```css
85@keyframes reveal {
86 from { opacity: 0; transform: translateY(50px); }
87 to { opacity: 1; transform: translateY(0); }
88}
89 
90.animate-on-scroll {
91 animation: reveal linear;
92 animation-timeline: view();
93 animation-range: entry 0% cover 40%;
94}
95```
96```
97 
98### Parallax Storytelling
99 
100Tell stories through scroll depth
101 
102**When to use**: When creating narrative experiences
103 
104```javascript
105## Parallax Storytelling
106 
107### Layer Speeds
108| Layer | Speed | Effect |
109|-------|-------|--------|
110| Background | 0.2x | Far away, slow |
111| Midground | 0.5x | Middle depth |
112| Foreground | 1.0x | Normal scroll |
113| Content | 1.0x | Readable |
114| Floating elements | 1.2x | Pop forward |
115 
116### Creating Depth
117```javascript
118// GSAP parallax layers
119gsap.to('.background', {
120 scrollTrigger: {
121 scrub: true
122 },
123 y: '-20%', // Moves slower
124});
125 
126gsap.to('.foreground', {
127 scrollTrigger: {
128 scrub: true
129 },
130 y: '-50%', // Moves faster
131});
132```
133 
134### Story Beats
135```
136Section 1: Hook (full viewport, striking visual)
137 ↓ scroll
138Section 2: Context (text + supporting visuals)
139 ↓ scroll
140Section 3: Journey (parallax storytelling)
141 ↓ scroll
142Section 4: Climax (dramatic reveal)
143 ↓ scroll
144Section 5: Resolution (CTA or conclusion)
145```
146 
147### Text Reveals
148- Fade in on scroll
149- Typewriter effect on trigger
150- Word-by-word highlight
151- Sticky text with changing visuals
152```
153 
154### Sticky Sections
155 
156Pin elements while scrolling through content
157 
158**When to use**: When content should stay visible during scroll
159 
160```javascript
161## Sticky Sections
162 
163### CSS Sticky
164```css
165.sticky-container {
166 height: 300vh; /* Space for scrolling */
167}
168 
169.sticky-element {
170 position: sticky;
171 top: 0;
172 height: 100vh;
173}
174```
175 
176### GSAP Pin
177```javascript
178gsap.to('.content', {
179 scrollTrigger: {
180 trigger: '.section',
181 pin: true, // Pins the section
182 start: 'top top',
183 end: '+=1000', // Pin for 1000px of scroll
184 scrub: true,
185 },
186 // Animate while pinned
187 x: '-100vw',
188});
189```
190 
191### Horizontal Scroll Section
192```javascript
193const sections = gsap.utils.toArray('.panel');
194 
195gsap.to(sections, {
196 xPercent: -100 * (sections.length - 1),
197 ease: 'none',
198 scrollTrigger: {
199 trigger: '.horizontal-container',
200 pin: true,
201 scrub: 1,
202 end: () => '+=' + document.querySelector('.horizontal-container').offsetWidth,
203 },
204});
205```
206 
207### Use Cases
208- Product feature walkthrough
209- Before/after comparisons
210- Step-by-step processes
211- Image galleries
212```
213 
214## Anti-Patterns
215 
216### ❌ Scroll Hijacking
217 
218**Why bad**: Users hate losing scroll control.
219Accessibility nightmare.
220Breaks back button expectations.
221Frustrating on mobile.
222 
223**Instead**: Enhance scroll, don't replace it.
224Keep natural scroll speed.
225Use scrub animations.
226Allow users to scroll normally.
227 
228### ❌ Animation Overload
229 
230**Why bad**: Distracting, not delightful.
231Performance tanks.
232Content becomes secondary.
233User fatigue.
234 
235**Instead**: Less is more.
236Animate key moments.
237Static content is okay.
238Guide attention, don't overwhelm.
239 
240### ❌ Desktop-Only Experience
241 
242**Why bad**: Mobile is majority of traffic.
243Touch scroll is different.
244Performance issues on phones.
245Unusable experience.
246 
247**Instead**: Mobile-first scroll design.
248Simpler effects on mobile.
249Test on real devices.
250Graceful degradation.
251 
252## ⚠️ Sharp Edges
253 
254| Issue | Severity | Solution |
255|-------|----------|----------|
256| Animations stutter during scroll | high | ## Fixing Scroll Jank |
257| Parallax breaks on mobile devices | high | ## Mobile-Safe Parallax |
258| Scroll experience is inaccessible | medium | ## Accessible Scroll Experiences |
259| Critical content hidden below animations | medium | ## Content-First Scroll Design |
260 
261## Related Skills
262 
263Works well with: `3d-web-experience`, `frontend`, `ui-design`, `landing-page-design`
264 
View all files on GitHub →

Details

License
MIT
Stars on the repo
★ 32,299
Checked
Source
davila7/claude-code-templates ↗
Creator
davila7 · 212 listings
View creator

Similar skills

See all →
SkillProduct Photography VariantsAgriciDaniel/claude-ads · by AgriciDanielGenerate rights-cleared paid-ad product photography variants from an authorized source image and validated brand profile. Triggers on: product photo, product photography, virtual photoshoot, photoshoot, enhance product image, studio shot, lifestyle shot, lifestyle product image, floating product image, ingredient shot.★ 9.5k GitHub starsSkillCinematic Video DirectorSamurAIGPT/Generative-Media-Skills · by SamurAIGPTDirect high-fidelity cinematic video with AI — translates creative intent into technical cinematographic directives for Veo3, Kling, and Luma video models via muapi.ai★ 4.3k GitHub starsSkillProduct Video MakerSamurAIGPT/Generative-Media-Skills · by SamurAIGPTCreate a high-end cinematic product video advertisement starting from a simple product photo.★ 4.3k GitHub starsSkillSocial Media Video CreatorSamurAIGPT/Generative-Media-Skills · by SamurAIGPTBrand-aware social media video creator. Reads brand-identity.md, ICP.md, and messaging.md to write a post/storyboard, craft an optimized Seedance 2.0 Director prompt, generate reference frames with the best available image model, and produce platform-ready video.★ 4.3k GitHub starsSkillLinkedIn Pinned Comment Writercharlie947/social-media-skills · by charlie947Write deadpan LinkedIn pinned comments AND matching image generation prompts in the user’s voice. Use when the user asks for a pinned comment, pin comment, or first comment for a LinkedIn post. ALWAYS produce the image prompt FIRST, then caption it with the 4-line comment. Output both together unless told otherwise.★ 3.7k GitHub starsSkillImmersive Web Designerwondelai/skills · by wondelaiCreate award-winning, immersive web experiences at the level of Awwwards-featured agencies. Use when the user mentions "Awwwards quality", "make my site stunning", "scroll animations", "parallax storytelling", "cinematic web design", "portfolio site", or "brand experience". Also trigger when elevating a standard landing page into a memorable digital experience. Covers dramatic typography, purposeful motion, scroll-based composition, and performance-optimized animation. For foundational UI, see refactoring-ui. For type selection, see web-typography.★ 2.2k GitHub stars

More from davila7

Skill2D Game Developmentdavila7/claude-code-templates · by davila72D game development principles. Sprites, tilemaps, physics, camera.★ 32.3k GitHub starsSkill3D Game Development Principlesdavila7/claude-code-templates · by davila73D game development principles. Rendering, shaders, physics, cameras.★ 32.3k GitHub starsSkill3D Web Experience Builderdavila7/claude-code-templates · by davila7Expert in building 3D experiences for the web - Three.js, React Three Fiber, Spline, WebGL, and interactive 3D scenes. Covers product configurators, 3D portfolios, immersive websites, and bringing depth to web experiences. Use when: 3D website, three.js, WebGL, react three fiber, 3D experience.★ 32.3k GitHub starsSkillSplit Test Setupdavila7/claude-code-templates · by davila7When the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," or "hypothesis." For tracking implementation, see analytics-tracking.★ 32.3k GitHub starsAgentResearch Literature Synthesizerdavila7/claude-code-templates · by davila7Academic research synthesis specialist. Use PROACTIVELY for comprehensive research on academic topics, literature reviews, technical investigations, and well-cited analysis combining multiple sources. <example>Context: A podcast episode needs a segment grounded in peer-reviewed evidence with formal citations. user: "Research the current state of transformer efficiency techniques for the episode, with proper academic citations." assistant: "I'll use the academic-research-synthesizer agent to search arXiv and Semantic Scholar, extract full-text findings via WebFetch, and produce a cited literature synthesis with confidence levels." <commentary>Use academic-research-synthesizer (not comprehensive-researcher) when the episode segment needs peer-reviewed sourcing, formal citation format, and explicit confidence tagging rather than general-purpose multi-source coverage.</commentary></example> <example>Context: The episode-orchestrator has routed a "literature review" request for a technical deep-dive segment. user: "Summarize the research landscape on federated learning privacy guarantees." assistant: "I'll invoke academic-research-synthesizer to systematically search academic sources, note peer-review status per source, and synthesize consensus vs. open debates."</example>★ 32.3k GitHub starsAgentAcademic Research Specialistdavila7/claude-code-templates · by davila7Academic research specialist for scholarly sources, peer-reviewed papers, and academic literature. Use PROACTIVELY for research paper analysis, literature reviews, citation tracking, and academic methodology evaluation. <example>Context: The research-orchestrator has kicked off Phase 4 parallel research on 'efficacy of intermittent fasting' and needs peer-reviewed evidence. user: "Find the academic evidence on intermittent fasting outcomes." assistant: "I'll use the academic-researcher agent to search Semantic Scholar, PubMed, and OpenAlex for peer-reviewed studies and write structured findings to academic-research.md." <commentary>The request is specifically for scholarly/peer-reviewed evidence rather than general web coverage or code, so academic-researcher (not web-researcher or technical-researcher) is the right specialist.</commentary></example> <example>Context: The user wants a literature review comparing methodologies across studies on a topic. user: "Can you review the literature on transformer model interpretability and identify research gaps?" assistant: "Let me invoke the academic-researcher agent to pull foundational and recent papers, extract methodologies, and surface open research gaps." <commentary>Literature review, methodology extraction, and research-gap identification are core academic-researcher capabilities, distinct from technical-researcher's focus on code repositories and implementations.</commentary></example>★ 32.3k GitHub stars