Scroll Storyteller
Create immersive, interactive storytelling experiences using Anthropic's authentic design language: strict duotone palette, organic Bézier SVG paths, custom cursors, and chapter-based narratives.
Workflow
Use AskUserQuestion to gather preferences, then generate:
| Step | Question | Options | |------|----------|---------| | 1 | Animation? | GSAP (rich) vs CSS-only (lightweight) | | 2 | Mood? | Warm vs Cool vs Creative | | 3 | Palette? | (show 3-4 based on mood) | | 4 | Topic? | Biblical/Tech/Business/Personal/Custom | | 5 | Chapters? | 3, 4, or 5 | | 6 | Content per chapter | Title, description, keywords |
Generate:
bash ~/.claude/skills/scroll-storyteller/scripts/generate.sh my-story <palette> [--gsap] [--chapters N]
Post-generation: Customize content, create SVGs (see references/structure-templates.md)
SVG Illustration Workflow
Each chapter needs a topic-relevant SVG that matches the narrative position:
| Position | Purpose | Composition | Example | |----------|---------|-------------|---------| | Hero | Set scene, show contrast | Wide (1000x1000), 2 silhouettes | David vs Goliath distant | | Chapter 1 | Introduce protagonist | Centered figure + context | Shepherd with sheep | | Chapter 2 | Show conflict/obstacle | Imposing, fills frame | Giant warrior | | Chapter 3 | Resolution/triumph | Dynamic, radiating | Victor + fallen + rays | | Chapter 4 | Deepening conflict (optional) | Crowded, escalating | Army masses, threats multiply | | Chapter 5 | Final climax (optional) | Action, decisive | Stone flying, impact moment | | Finale | Symbolic summary | Centered symbol | Crown + light |
Light/Dark Pattern by Chapter Count:
- 3 chapters: Ch1=Light → Ch2=Dark → Ch3=Light
- 4 chapters: Ch1=Light → Ch2=Dark → Ch3=Light → Ch4=Dark
- 5 chapters: Ch1=Light → Ch2=Dark → Ch3=Light → Ch4=Dark → Ch5=Light
Process:
- Load
references/svg-illustration-guide.mdfor theme → element mapping - Identify chapter position (hero/ch1/ch2/ch3/ch4/ch5/finale)
- Extract topic keywords from chapter content
- Select SVG elements from element library:
- Characters: figure-small, figure-large, figure-triumphant, figure-action
- Nature: hills, sun, tree, path, clouds, lightning, wind
- Objects: staff, crown, shield, weapon, stone, obstacle
- Abstract: radiate, rings, trajectory, converge, impact
- Compose using position template
- Apply palette mood style (see
references/design-harmony.md→ Palette Mood → SVG Style) - Add animation classes:
organic-path,fade-path,scale-path
SVG Checklist:
- [ ] Uses only
var(--deep)andvar(--foam)colors - [ ] All paths are organic Bézier curves (Q/C commands)
- [ ] No geometric primitives (circle, rect, ellipse)
- [ ] Opacity range matches palette mood
- [ ] Composition matches chapter position
- [ ] Symbolically represents chapter content
Animation Styles
| Style | Library | Size | Best For | |-------|---------|------|----------| | GSAP | GSAP 3.x + ScrollTrigger | ~45KB | Rich interactions, SVG draw, orbits, timelines | | CSS-only | None (IntersectionObserver) | 0KB | Lightweight, fast load, simple reveals |
GSAP Features
- SVG path draw animations (strokeDasharray)
- Continuous orbit/rotation effects
- Scroll-linked timeline control
- Parallax with scrub
- Staggered animations with precise timing
CSS-only Features
- IntersectionObserver reveals
- CSS transitions with delays
- Transform-based animations
- No external dependencies
- Smaller bundle size
Duotone Palettes
| # | Theme | Light | Dark | Mood |
|---|-------|-------|------|------|
| 1 | Anthropic | #FAF9F5 cream | #141413 charcoal | Warm |
| 2 | Midnight | #E8F4F8 ice | #0D1B2A navy | Cool |
| 3 | Sepia | #F5F0E6 parchment | #2C1810 espresso | Warm |
| 4 | Forest | #F0F4F0 mist | #1A2E1A evergreen | Creative |
| 5 | Dusk | #F4F0F8 lavender | #1E1A2E violet | Creative |
| 6 | Ember | #FFF5F0 blush | #2A1A14 ember | Warm |
| 7 | Steel | #F0F2F5 silver | #1A1C20 graphite | Cool |
| 8 | Ocean | #F0F8F8 foam | #0A1A1A deep | Cool |
Mood → Palette mapping:
- Warm: 1 (Anthropic), 3 (Sepia), 6 (Ember)
- Cool: 2 (Midnight), 7 (Steel), 8 (Ocean)
- Creative: 4 (Forest), 5 (Dusk)
Design Modes
| Mode | Description | When to Use | |------|-------------|-------------| | Authentic (default) | Strict duotone, organic paths | Editorial, brand storytelling | | Expressive | Multi-color accents allowed | Product showcases, demos |
Core Features
| Feature | Description | |---------|-------------| | Custom Cursor | Dual-layer cursor with smooth easing, mix-blend-mode | | Hero Section | GSAP: Flowing organic lines (1000x1000 background). CSS-only: Desk lamp with animated light cone reveal | | Spotlight Layer | Radial gradient follows cursor on dark sections | | Staggered Reveals | Title words animate in sequence on load | | Chapter Structure | Alternating light/dark sections with transitions | | Organic SVGs | Hand-drawn Bézier paths, fill-only (no strokes) | | Parallax | Subtle depth movement on scroll |
Anthropic Design Language
Strict Duotone Palette
| Element | Hex | CSS Variable |
|---------|-----|--------------|
| Cream (light) | #FAF9F5 | --cream |
| Charcoal (dark) | #141413 | --charcoal |
Rule: No other colors. All illustrations use exactly these two.
Typography
| Role | Font | Fallback | |------|------|----------| | Display/Headings | Instrument Serif | Georgia, serif | | Body/UI | Inter | -apple-system, sans-serif |
Characteristics:
- Large, editorial headings (clamp 3rem - 7rem)
- Light weight (300-400)
- Negative letter-spacing on display (-0.02em)
- Generous line-height (1.5-1.8)
SVG Design Rules
| Rule | Description | |------|-------------| | Fills only | Never use strokes for main shapes | | Organic paths | Complex Bézier curves, hand-drawn feel | | viewBox | Always 1000x1000 or 500x500 (square) | | 2-4 paths | Keep compositions simple | | Layered | Light shapes behind, dark in front |
Anti-patterns:
❌ <circle>, <rect>, <ellipse> (geometric)
❌ stroke="..." on main elements
❌ Multiple colors
✅ <path d="M... Q... C..."> with organic curves
Topic-Driven SVG Generation
The svg-generator.sh helper automatically selects appropriate SVG templates based on chapter content:
| Keywords | Template | Best For | |----------|----------|----------| | identity, profile, self, unique | Fingerprint + Verification | Personal identity concepts | | network, connect, distributed, system | Central Hub + Network | System architecture concepts | | protect, secure, vault, lock | Protected Vault + Links | Security concepts | | growth, learn, knowledge, tree | Knowledge Tree | Learning/growth concepts | | enforce, filter, gate, barrier | Gateway Arches | Enforcement/validation | | trust, hand, collaboration | Hand Holding + Connection | Partnership concepts | | unify, finale, complete | Concentric Symbol | Conclusion/unity |
Usage:
# Source the generator in your script
source scripts/svg-generator.sh
# Generate SVG for a chapter (position: hero/ch1/ch2/ch3/ch4/ch5/finale)
generate_svg_for_chapter \
"ch1" \
"Digital Identity" \
"Your unique identity on the blockchain" \
"var(--foam)" \
"var(--deep)" \
"fade-path"
Positions: hero | ch1 | ch2 | ch3 | ch4 | ch5 | finale
Animation Patterns
For detailed GSAP and CSS animation patterns, see references/animation-patterns.md
Animation Classes:
| Class | Description | Usage |
|-------|-------------|-------|
| organic-path | Base class for all SVG paths | Always applied |
| fade-path | Fade in animation | Default for most paths |
| scale-path | Scale up animation | Combined with fade-path |
| draw-path | Stroke draw animation (GSAP only) | For line/path drawing effects |
Narrative Structure
For narrative structure and HTML templates, see references/structure-templates.md
Resources
| File | Purpose | Load When |
|------|---------|-----------|
| scripts/generate.sh | Creates HTML (CSS-only or GSAP with --gsap) | Starting new project |
| scripts/svg-generator.sh | Topic-driven SVG generation helper | Creating custom illustrations |
| references/animation-patterns.md | GSAP + CSS animation patterns | Implementing animations |
| references/structure-templates.md | Narrative structure + HTML templates | Building sections |
| references/svg-illustration-guide.md | Theme → SVG element mapping, templates | Creating topic-relevant illustrations |
| references/example-david-goliath.md | Complete worked example with all 5 SVGs | Learning SVG composition patterns |
| references/anthropic-design.md | Full design system reference | Deep customization |
| references/gsap-patterns.md | GSAP + ScrollTrigger recipes | Using GSAP animation style |
| references/css-only-patterns.md | IntersectionObserver recipes | Using CSS-only animation style |
| references/design-harmony.md | Visual cohesion + palette-mood SVG styling | Ensuring consistent design quality |
Example Files
| File | Animation | Description |
|------|-----------|-------------|
| agent-harness-gsap.html | GSAP | Full experience with orbit SVGs, draw animations, parallax |
| agent-harness-anthropic.html | CSS-only | Lightweight with IntersectionObserver reveals |
Usage Workflow
- Choose Animation Style: GSAP (rich) or CSS-only (lightweight)
- Choose Palette: Select mood → pick specific palette
- Select Chapter Count: Choose 3, 4, or 5 chapters
- Plan Narrative: Hero + selected chapters + finale
- Generate:
bash scripts/generate.sh project-name <palette> [--gsap] - Customize Content: Replace placeholder text
- Add Illustrations: Use organic path templates from assets/
- Test: Verify animations, cursor, scroll behavior
- Ship: Single self-contained HTML file
Accessibility
prefers-reduced-motionsupport (disables animations)- Touch device detection (hides custom cursor)
- Semantic HTML structure
- High contrast duotone
Token Efficiency
- Scripts execute without loading context (0 tokens)
- SVG templates are copy-paste patterns
- Single HTML output, no build step
- CSS custom properties for easy theming