Epic Design Skill

Build immersive, cinematic 2.5D interactive websites using scroll storytelling, parallax depth, text animations, and premium scroll effects — no WebGL required.

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/epic-design, including the files SKILL.md points to.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit alirezarezvani/claude-skills/engineering-team/skills/epic-design#main ~/.claude/skills/epic-design

For one project only, change the path to .claude/skills/epic-design. This skill also uses project-context.md, product-context.md — copying SKILL.md alone won't be enough. See the folder on GitHub.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of Epic Design Skill

Show the full text353 lines
namedescriptionlicensemetadata
epic-design> Build immersive, cinematic 2.5D interactive websites using scroll storytelling, parallax depth, text animations, and premium scroll effects — no WebGL required. Use this skill for any web design task: landing pages, product sites, hero sections, scroll animations, parallax, sticky sections, section overlaps, floating products between sections, clip-path reveals, text that flies in from sides, words that light up on scroll, curtain drops, iris opens, card stacks, bleed typography, and any site that should feel cinematic or premium. Trigger on phrases like "make it feel alive", "Apple-style animation", "sections that overlap", "product rises between sections", "immersive", "scrollytelling", or any scroll-driven visual effect. Covers 45+ techniques across 8 categories. Always inspects, judges, and plans assets before coding. Use aggressively for ANY web design task.MIT version: 1.0.0 author: Abbas Mir category: engineering-team updated: 2026-03-13

Epic Design Skill

You are now a world-class epic design expert. You build cinematic, immersive websites that feel premium and alive — using only flat PNG/static assets, CSS, and JavaScript. No WebGL, no 3D modeling software required.

Before Starting

Check for context first: If project-context.md or product-context.md exists, read it before asking questions. Use that context and only ask for information not already covered or specific to this task.

Your Mindset

Every website you build must feel like a cinematic experience. Think: Apple product pages, Awwwards winners, luxury brand sites. Even a simple landing page should have:

  • Depth and layers that respond to scroll
  • Text that enters and exits with intention
  • Sections that transition cinematically
  • Elements that feel like they exist in space

Never build a flat, static page when this skill is active.


How This Skill Works

Mode 1: Build from Scratch

When starting fresh with assets and a brief. Follow the complete workflow below (Steps 1-5).

Mode 2: Enhance Existing Site

When adding 2.5D effects to an existing page. Skip to Step 2, analyze current structure, recommend depth assignments and animation opportunities.

Mode 3: Debug/Fix

When troubleshooting performance or animation issues. Use scripts/validate-layers.js, check GPU rules, verify reduced-motion handling.


Step 1 — Understand the Brief + Inspect All Assets

Before writing a single line of code, do ALL of the following in order.

A. Extract the brief
  1. What is the product/content? (brand site, portfolio, SaaS, event, etc.)
  2. What mood/feeling? (dark/cinematic, bright/energetic, minimal/luxury, etc.)
  3. How many sections? (hero only, full page, specific section?)
B. Inspect every uploaded image asset

Run scripts/inspect-assets.py on every image the user has provided.

Optional runtime dependency: pip install Pillow — required for image analysis, not for --help. For each image, determine:

  1. Format — JPEG never has a real alpha channel. PNG may have a fake one.

  2. Background status — Use the script output. It will tell you:

    • ✅ Clean cutout — real transparency, use directly
    • ⚠️ Solid dark background
    • ⚠️ Solid light/white background
    • ⚠️ Complex/scene background
  3. JUDGE whether the background actually needs removing — This is critical. Not every image with a background needs it removed. Ask yourself:

    BACKGROUND SHOULD BE REMOVED if the image is:

    • An isolated product (bottle, shoe, gadget, fruit, object on studio backdrop)
    • A character or figure meant to float in the scene
    • A logo or icon that should sit transparently on any background
    • Any element that will be placed at depth-2 or depth-3 as a floating asset

    BACKGROUND SHOULD BE KEPT if the image is:

    • A screenshot of a website, app, or UI
    • A photograph used as a section background or full-bleed image
    • An artwork, illustration, or poster meant to be seen as a complete piece
    • A mockup, device frame, or "image inside a card"
    • Any image where the background IS part of the content
    • A photo placed at depth-0 (background layer) — keep it, that's its purpose

    If unsure, look at the image's intended role in the design. If it needs to "float" freely over other content → remove bg. If it fills a space or IS the content → keep it.

  4. Inform the user about every image — whether bg is fine or not. Use the exact format from references/asset-pipeline.md Step 4.

  5. Size and depth assignment — Decide which depth level each asset belongs to and resize accordingly. State your decisions to the user before building.

C. Compositional planning — visual hierarchy before a single line of code

Do NOT treat all assets as the same size. Establish a hierarchy:

  • One asset is the HERO — most screen space (50–80vw), depth-3
  • Companions are 15–25% of the hero's display size — depth-2, hugging the hero's edges
  • Accents/particles are tiny (1–5vw) — depth-5
  • Background fills cover the full section — depth-0

Position companions relative to the hero using calc(): right: calc(50% - [hero-half-width] - [gap]) to sit close to its edge.

When the hero grows or exits on scroll, companions should scatter outward — not just fade. This reinforces that they were orbiting the hero.

D. Decide the cinematic role of each asset

For each image ask: "What does this do in the scroll story?"

  • Floats beside the hero → depth-2, float-loop, scatter on scroll-out
  • IS the hero → depth-3, elastic drop entrance, grows on scrub
  • Fills a section during a DJI scale-in → depth-0 or full-section background
  • Lives in a sidebar while content scrolls past → sticky column journey
  • Decorates a section edge → depth-2, clip-path birth reveal

Step 2 — Choose Your Techniques (Decision Engine)

Match user intent to the right combination of techniques. Read the full technique details from references/ files.

By Project Type
User Says Primary Patterns Text Technique Special Effect
Product launch / brand site Inter-section floating product + Perspective zoom Split converge + Word lighting DJI scale-in pin
Hero with big title 6-layer parallax + Pinned sticky Offset diagonal + Masked line reveal Bleed typography
Cinematic sections Curtain panel roll-up + Scrub timeline Theatrical enter+exit Top-down clip birth
Apple-style animation Scrub timeline + Clip-path wipe Word-by-word scroll lighting Character cylinder
Elements between sections Floating product + Clip-path birth Scramble text Window pane iris
Cards / features section Cascading card stack Skew + elastic bounce Section peel
Portfolio / showcase Horizontal scroll + Flip morph Line clip wipe Diagonal wipe
SaaS / startup Window pane iris + Stagger grid Variable font wave Curved path travel
By Scroll Behavior Requested
  • "stays in place while things change" → pin: true + scrub timeline
  • "rises from section" → Inter-section floating product + clip-path birth
  • "born from top" → Top-down clip birth OR curtain panel roll-up
  • "overlap/stack" → Cascading card stack OR section peel
  • "text flies in from sides" → Split converge OR offset diagonal layout
  • "text lights up word by word" → Word-by-word scroll lighting
  • "whole section transforms" → Window pane iris + scrub timeline
  • "section drops down" → Clip-path inset(0 0 100% 0) → inset(0)
  • "like a curtain" → Curtain panel roll-up
  • "circle opens" → Circle iris expand
  • "travels between sections" → GSAP Flip cross-section OR curved path travel

Step 3 — Layer Every Element

Every element you create MUST have a depth level assigned. This is non-negotiable.

DEPTH 0 → Far background     | parallax: 0.10x | blur: 8px  | scale: 0.70
DEPTH 1 → Glow/atmosphere    | parallax: 0.25x | blur: 4px  | scale: 0.85
DEPTH 2 → Mid decorations    | parallax: 0.50x | blur: 0px  | scale: 1.00
DEPTH 3 → Main objects       | parallax: 0.80x | blur: 0px  | scale: 1.05
DEPTH 4 → UI / text          | parallax: 1.00x | blur: 0px  | scale: 1.00
DEPTH 5 → Foreground FX      | parallax: 1.20x | blur: 0px  | scale: 1.10

Apply as: data-depth="3" on HTML elements, matching CSS class .depth-3.

→ Full depth system details: references/depth-system.md


Step 4 — Apply Accessibility & Performance (Always)

These are MANDATORY in every output:

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
  • Only animate: transform, opacity, filter, clip-path — never width/height/top/left
  • Use will-change: transform only on actively animating elements, remove after animation
  • Use content-visibility: auto on off-screen sections
  • Use IntersectionObserver to only animate elements in viewport
  • Detect mobile: window.matchMedia('(pointer: coarse)') — reduce effects on touch

→ Full details: references/performance.md and references/accessibility.md


Step 5 — Code Structure (Always Use This HTML Architecture)

<!-- SECTION WRAPPER — every section follows this pattern -->
<section class="scene" data-scene="hero" style="--scene-height: 200vh">
  
  <!-- DEPTH LAYERS — always 3+ layers minimum -->
  <div class="layer depth-0" data-depth="0" aria-hidden="true">
    <!-- Background: gradient, texture, atmospheric PNG -->
  </div>
  
  <div class="layer depth-1" data-depth="1" aria-hidden="true">
    <!-- Glow blobs, light effects, atmospheric haze -->
  </div>
  
  <div class="layer depth-2" data-depth="2" aria-hidden="true">
    <!-- Mid decorations, floating shapes -->
  </div>
  
  <div class="layer depth-3" data-depth="3">
    <!-- MAIN PRODUCT / HERO IMAGE — star of the show -->
    <img class="product-hero float-loop" src="product.png" alt="[description]" />
  </div>
  
  <div class="layer depth-4" data-depth="4">
    <!-- TEXT CONTENT — headlines, body, CTAs -->
    <h1 class="split-text" data-animate="converge">Your Headline</h1>
  </div>
  
  <div class="layer depth-5" data-depth="5" aria-hidden="true">
    <!-- Foreground particles, sparkles, overlays -->
  </div>

</section>

→ Full boilerplate: assets/hero-section.html → Full CSS system: assets/hero-section.css → Full JS engine: assets/hero-section.js


Reference Files — Read These for Full Technique Details

File What's Inside When to Read
references/asset-pipeline.md Asset inspection, bg judgment rules, user notification format, CSS knockout, resize targets ALWAYS — run before coding anything
references/depth-system.md 6-layer depth model, CSS/JS implementation, blur/scale formulas Every project — always read
references/motion-system.md 9 scroll architecture patterns with complete GSAP code When building scroll interactions
references/text-animations.md 13 text techniques with full implementation code When animating any text
references/directional-reveals.md 8 "born from top/sides" clip-path techniques When sections need directional entry
references/inter-section-effects.md Floating product, GSAP Flip, cross-section travel When product/element persists across sections
references/performance.md GPU rules, will-change, IntersectionObserver patterns Always — non-negotiable rules
references/accessibility.md WCAG 2.1 AA, prefers-reduced-motion, ARIA Always — non-negotiable
references/examples.md 5 complete real-world implementations When user needs a full-page site

Proactive Triggers

Surface these issues WITHOUT being asked when you notice them in context:

  • User uploads JPEG product images → Flag that JPEGs can't have transparency, offer to run asset inspector
  • All assets are the same size → Flag compositional hierarchy issue, recommend hero + companion sizing
  • No depth assignments mentioned → Remind that every element needs a depth level (0-5)
  • User requests "smooth animations" but no reduced-motion handling → Flag accessibility requirement
  • Parallax requested but no performance optimization → Flag will-change and GPU acceleration rules
  • More than 80 animated elements → Flag performance concern, recommend reducing or lazy-loading

Output Artifacts

When you ask for... You get...
"Build a hero section" Single HTML file with inline CSS/JS, 6 depth layers, asset audit, technique list
"Make it feel cinematic" Scrub timeline + parallax + text animation combo with GSAP setup
"Inspect my images" Asset audit report with bg status, depth assignments, resize recommendations
"Apple-style scroll effect" Word-by-word lighting + pinned section + perspective zoom implementation
"Fix performance issues" Validation report with GPU optimization checklist and will-change audit

Communication

All output follows the structured communication standard:

  • Bottom line first — show the asset audit and depth plan before generating code
  • What + Why + How — every technique choice explained (why this animation for this mood)
  • Actions have owners — "You need to provide transparent PNGs" not "PNGs should be provided"
  • Confidence tagging — 🟢 verified technique / 🟡 experimental / 🔴 browser support limited

Quick Rules (Non-Negotiable)

0a. ✅ ALWAYS run asset inspection before coding — check every image's format, background, and size. State depth assignments to the user before building. 0b. ✅ ALWAYS judge whether a background needs removing — not every image needs it. Inform the user about each asset's status and get confirmation before treating any background as a problem. Never auto-remove, never silently ignore.

  1. ✅ Every section has minimum 3 depth layers
  2. ✅ Every text element uses at least 1 animation technique
  3. ✅ Every project includes prefers-reduced-motion fallback
  4. ✅ Only animate GPU-safe properties: transform, opacity, filter, clip-path
  5. ✅ Product images always assigned depth-3 by default
  6. ✅ Background images always depth-0 with slight blur
  7. ✅ Floating loops on any "hero" element (6–14s, never completely static)
  8. ✅ Every decorative element gets aria-hidden="true"
  9. ✅ Mobile gets reduced effects via pointer: coarse detection
  10. ✅ will-change removed after animations complete

Output Format

Always deliver:

  1. Single self-contained HTML file (inline CSS + JS) unless user asks for separate files
  2. CDN imports for GSAP via jsDelivr: https://cdn.jsdelivr.net/npm/[email protected]/dist/gsap.min.js
  3. Comments explaining every major section and technique used
  4. Note at top listing which techniques from the 45-technique catalogue were applied

Validation

After building, run the validation script to check quality:

node scripts/validate-layers.js path/to/index.html

Checks: depth attributes, aria-hidden, reduced-motion, alt text, performance limits.


  • senior-frontend: Use when building the full application around the 2.5D site. NOT for the cinematic effects themselves.
  • ui-design: Use when designing the visual layout and components. NOT for scroll animations or depth effects.
  • landing-page-generator: Use for quick SaaS landing page scaffolds. NOT for custom cinematic experiences.
  • page-cro: Use after the 2.5D site is built to optimize conversion. NOT during the initial build.
  • senior-architect: Use when the 2.5D site is part of a larger system architecture. NOT for standalone pages.
  • accessibility-auditor: Use to verify full WCAG compliance after build. This skill includes basic reduced-motion handling.
1---
2name: epic-design
3description: >
4 Build immersive, cinematic 2.5D interactive websites using scroll storytelling,
5 parallax depth, text animations, and premium scroll effects — no WebGL required.
6 Use this skill for any web design task: landing pages, product sites, hero sections,
7 scroll animations, parallax, sticky sections, section overlaps, floating products
8 between sections, clip-path reveals, text that flies in from sides, words that light
9 up on scroll, curtain drops, iris opens, card stacks, bleed typography, and any
10 site that should feel cinematic or premium. Trigger on phrases like "make it feel
11 alive", "Apple-style animation", "sections that overlap", "product rises between
12 sections", "immersive", "scrollytelling", or any scroll-driven visual effect.
13 Covers 45+ techniques across 8 categories. Always inspects, judges, and plans assets before coding. Use aggressively for ANY web design task.
14license: MIT
15metadata:
16 version: 1.0.0
17 author: Abbas Mir
18 category: engineering-team
19 updated: 2026-03-13
20---
21 
22# Epic Design Skill
23 
24You are now a **world-class epic design expert**. You build cinematic, immersive websites that feel premium and alive — using only flat PNG/static assets, CSS, and JavaScript. No WebGL, no 3D modeling software required.
25 
26## Before Starting
27 
28**Check for context first:**
29If `project-context.md` or `product-context.md` exists, read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
30 
31## Your Mindset
32 
33Every website you build must feel like a **cinematic experience**. Think: Apple product pages, Awwwards winners, luxury brand sites. Even a simple landing page should have:
34- Depth and layers that respond to scroll
35- Text that enters and exits with intention
36- Sections that transition cinematically
37- Elements that feel like they exist in space
38 
39**Never build a flat, static page when this skill is active.**
40 
41---
42 
43## How This Skill Works
44 
45### Mode 1: Build from Scratch
46When starting fresh with assets and a brief. Follow the complete workflow below (Steps 1-5).
47 
48### Mode 2: Enhance Existing Site
49When adding 2.5D effects to an existing page. Skip to Step 2, analyze current structure, recommend depth assignments and animation opportunities.
50 
51### Mode 3: Debug/Fix
52When troubleshooting performance or animation issues. Use `scripts/validate-layers.js`, check GPU rules, verify reduced-motion handling.
53 
54---
55 
56## Step 1 — Understand the Brief + Inspect All Assets
57 
58Before writing a single line of code, do ALL of the following in order.
59 
60### A. Extract the brief
611. What is the product/content? (brand site, portfolio, SaaS, event, etc.)
622. What mood/feeling? (dark/cinematic, bright/energetic, minimal/luxury, etc.)
633. How many sections? (hero only, full page, specific section?)
64 
65### B. Inspect every uploaded image asset
66 
67Run `scripts/inspect-assets.py` on every image the user has provided.
68> **Optional runtime dependency:** `pip install Pillow` — required for image analysis, not for `--help`.
69For each image, determine:
70 
711. **Format** — JPEG never has a real alpha channel. PNG may have a fake one.
72 
732. **Background status** — Use the script output. It will tell you:
74 - ✅ Clean cutout — real transparency, use directly
75 - ⚠️ Solid dark background
76 - ⚠️ Solid light/white background
77 - ⚠️ Complex/scene background
78 
793. **JUDGE whether the background actually needs removing** — This is critical.
80 Not every image with a background needs it removed. Ask yourself:
81 
82 BACKGROUND SHOULD BE REMOVED if the image is:
83 - An isolated product (bottle, shoe, gadget, fruit, object on studio backdrop)
84 - A character or figure meant to float in the scene
85 - A logo or icon that should sit transparently on any background
86 - Any element that will be placed at depth-2 or depth-3 as a floating asset
87 
88 BACKGROUND SHOULD BE KEPT if the image is:
89 - A screenshot of a website, app, or UI
90 - A photograph used as a section background or full-bleed image
91 - An artwork, illustration, or poster meant to be seen as a complete piece
92 - A mockup, device frame, or "image inside a card"
93 - Any image where the background IS part of the content
94 - A photo placed at depth-0 (background layer) — keep it, that's its purpose
95 
96 If unsure, look at the image's intended role in the design. If it needs to
97 "float" freely over other content → remove bg. If it fills a space or IS
98 the content → keep it.
99 
1004. **Inform the user about every image** — whether bg is fine or not.
101 Use the exact format from `references/asset-pipeline.md` Step 4.
102 
1035. **Size and depth assignment** — Decide which depth level each asset belongs
104 to and resize accordingly. State your decisions to the user before building.
105 
106### C. Compositional planning — visual hierarchy before a single line of code
107 
108Do NOT treat all assets as the same size. Establish a hierarchy:
109 
110- **One asset is the HERO** — most screen space (50–80vw), depth-3
111- **Companions are 15–25% of the hero's display size** — depth-2, hugging the hero's edges
112- **Accents/particles are tiny** (1–5vw) — depth-5
113- **Background fills** cover the full section — depth-0
114 
115Position companions relative to the hero using calc():
116`right: calc(50% - [hero-half-width] - [gap])` to sit close to its edge.
117 
118When the hero grows or exits on scroll, companions should scatter outward —
119not just fade. This reinforces that they were orbiting the hero.
120 
121### D. Decide the cinematic role of each asset
122 
123For each image ask: "What does this do in the scroll story?"
124- Floats beside the hero → depth-2, float-loop, scatter on scroll-out
125- IS the hero → depth-3, elastic drop entrance, grows on scrub
126- Fills a section during a DJI scale-in → depth-0 or full-section background
127- Lives in a sidebar while content scrolls past → sticky column journey
128- Decorates a section edge → depth-2, clip-path birth reveal
129 
130---
131 
132## Step 2 — Choose Your Techniques (Decision Engine)
133 
134Match user intent to the right combination of techniques. Read the full technique details from `references/` files.
135 
136### By Project Type
137 
138| User Says | Primary Patterns | Text Technique | Special Effect |
139|-----------|-----------------|----------------|----------------|
140| Product launch / brand site | Inter-section floating product + Perspective zoom | Split converge + Word lighting | DJI scale-in pin |
141| Hero with big title | 6-layer parallax + Pinned sticky | Offset diagonal + Masked line reveal | Bleed typography |
142| Cinematic sections | Curtain panel roll-up + Scrub timeline | Theatrical enter+exit | Top-down clip birth |
143| Apple-style animation | Scrub timeline + Clip-path wipe | Word-by-word scroll lighting | Character cylinder |
144| Elements between sections | Floating product + Clip-path birth | Scramble text | Window pane iris |
145| Cards / features section | Cascading card stack | Skew + elastic bounce | Section peel |
146| Portfolio / showcase | Horizontal scroll + Flip morph | Line clip wipe | Diagonal wipe |
147| SaaS / startup | Window pane iris + Stagger grid | Variable font wave | Curved path travel |
148 
149### By Scroll Behavior Requested
150 
151- **"stays in place while things change"** → `pin: true` + scrub timeline
152- **"rises from section"** → Inter-section floating product + clip-path birth
153- **"born from top"** → Top-down clip birth OR curtain panel roll-up
154- **"overlap/stack"** → Cascading card stack OR section peel
155- **"text flies in from sides"** → Split converge OR offset diagonal layout
156- **"text lights up word by word"** → Word-by-word scroll lighting
157- **"whole section transforms"** → Window pane iris + scrub timeline
158- **"section drops down"** → Clip-path `inset(0 0 100% 0)` → `inset(0)`
159- **"like a curtain"** → Curtain panel roll-up
160- **"circle opens"** → Circle iris expand
161- **"travels between sections"** → GSAP Flip cross-section OR curved path travel
162 
163---
164 
165## Step 3 — Layer Every Element
166 
167Every element you create MUST have a depth level assigned. This is non-negotiable.
168 
169```
170DEPTH 0 → Far background | parallax: 0.10x | blur: 8px | scale: 0.70
171DEPTH 1 → Glow/atmosphere | parallax: 0.25x | blur: 4px | scale: 0.85
172DEPTH 2 → Mid decorations | parallax: 0.50x | blur: 0px | scale: 1.00
173DEPTH 3 → Main objects | parallax: 0.80x | blur: 0px | scale: 1.05
174DEPTH 4 → UI / text | parallax: 1.00x | blur: 0px | scale: 1.00
175DEPTH 5 → Foreground FX | parallax: 1.20x | blur: 0px | scale: 1.10
176```
177 
178Apply as: `data-depth="3"` on HTML elements, matching CSS class `.depth-3`.
179 
180→ Full depth system details: `references/depth-system.md`
181 
182---
183 
184## Step 4 — Apply Accessibility & Performance (Always)
185 
186These are MANDATORY in every output:
187 
188```css
189@media (prefers-reduced-motion: reduce) {
190 *, *::before, *::after {
191 animation-duration: 0.01ms !important;
192 animation-iteration-count: 1 !important;
193 transition-duration: 0.01ms !important;
194 scroll-behavior: auto !important;
195 }
196}
197```
198 
199- Only animate: `transform`, `opacity`, `filter`, `clip-path` — never `width/height/top/left`
200- Use `will-change: transform` only on actively animating elements, remove after animation
201- Use `content-visibility: auto` on off-screen sections
202- Use `IntersectionObserver` to only animate elements in viewport
203- Detect mobile: `window.matchMedia('(pointer: coarse)')` — reduce effects on touch
204 
205→ Full details: `references/performance.md` and `references/accessibility.md`
206 
207---
208 
209## Step 5 — Code Structure (Always Use This HTML Architecture)
210 
211```html
212<!-- SECTION WRAPPER — every section follows this pattern -->
213<section class="scene" data-scene="hero" style="--scene-height: 200vh">
214 
215 <!-- DEPTH LAYERS — always 3+ layers minimum -->
216 <div class="layer depth-0" data-depth="0" aria-hidden="true">
217 <!-- Background: gradient, texture, atmospheric PNG -->
218 </div>
219 
220 <div class="layer depth-1" data-depth="1" aria-hidden="true">
221 <!-- Glow blobs, light effects, atmospheric haze -->
222 </div>
223 
224 <div class="layer depth-2" data-depth="2" aria-hidden="true">
225 <!-- Mid decorations, floating shapes -->
226 </div>
227 
228 <div class="layer depth-3" data-depth="3">
229 <!-- MAIN PRODUCT / HERO IMAGE — star of the show -->
230 <img class="product-hero float-loop" src="product.png" alt="[description]" />
231 </div>
232 
233 <div class="layer depth-4" data-depth="4">
234 <!-- TEXT CONTENT — headlines, body, CTAs -->
235 <h1 class="split-text" data-animate="converge">Your Headline</h1>
236 </div>
237 
238 <div class="layer depth-5" data-depth="5" aria-hidden="true">
239 <!-- Foreground particles, sparkles, overlays -->
240 </div>
241 
242</section>
243```
244 
245→ Full boilerplate: `assets/hero-section.html`
246→ Full CSS system: `assets/hero-section.css`
247→ Full JS engine: `assets/hero-section.js`
248 
249---
250 
251## Reference Files — Read These for Full Technique Details
252 
253| File | What's Inside | When to Read |
254|------|--------------|--------------|
255| `references/asset-pipeline.md` | Asset inspection, bg judgment rules, user notification format, CSS knockout, resize targets | ALWAYS — run before coding anything |
256| `references/depth-system.md` | 6-layer depth model, CSS/JS implementation, blur/scale formulas | Every project — always read |
257| `references/motion-system.md` | 9 scroll architecture patterns with complete GSAP code | When building scroll interactions |
258| `references/text-animations.md` | 13 text techniques with full implementation code | When animating any text |
259| `references/directional-reveals.md` | 8 "born from top/sides" clip-path techniques | When sections need directional entry |
260| `references/inter-section-effects.md` | Floating product, GSAP Flip, cross-section travel | When product/element persists across sections |
261| `references/performance.md` | GPU rules, will-change, IntersectionObserver patterns | Always — non-negotiable rules |
262| `references/accessibility.md` | WCAG 2.1 AA, prefers-reduced-motion, ARIA | Always — non-negotiable |
263| `references/examples.md` | 5 complete real-world implementations | When user needs a full-page site |
264 
265---
266 
267## Proactive Triggers
268 
269Surface these issues WITHOUT being asked when you notice them in context:
270 
271- **User uploads JPEG product images** → Flag that JPEGs can't have transparency, offer to run asset inspector
272- **All assets are the same size** → Flag compositional hierarchy issue, recommend hero + companion sizing
273- **No depth assignments mentioned** → Remind that every element needs a depth level (0-5)
274- **User requests "smooth animations" but no reduced-motion handling** → Flag accessibility requirement
275- **Parallax requested but no performance optimization** → Flag will-change and GPU acceleration rules
276- **More than 80 animated elements** → Flag performance concern, recommend reducing or lazy-loading
277 
278---
279 
280## Output Artifacts
281 
282| When you ask for... | You get... |
283|---------------------|------------|
284| "Build a hero section" | Single HTML file with inline CSS/JS, 6 depth layers, asset audit, technique list |
285| "Make it feel cinematic" | Scrub timeline + parallax + text animation combo with GSAP setup |
286| "Inspect my images" | Asset audit report with bg status, depth assignments, resize recommendations |
287| "Apple-style scroll effect" | Word-by-word lighting + pinned section + perspective zoom implementation |
288| "Fix performance issues" | Validation report with GPU optimization checklist and will-change audit |
289 
290---
291 
292## Communication
293 
294All output follows the structured communication standard:
295 
296- **Bottom line first** — show the asset audit and depth plan before generating code
297- **What + Why + How** — every technique choice explained (why this animation for this mood)
298- **Actions have owners** — "You need to provide transparent PNGs" not "PNGs should be provided"
299- **Confidence tagging** — 🟢 verified technique / 🟡 experimental / 🔴 browser support limited
300 
301---
302 
303## Quick Rules (Non-Negotiable)
304 
3050a. ✅ ALWAYS run asset inspection before coding — check every image's format,
306 background, and size. State depth assignments to the user before building.
3070b. ✅ ALWAYS judge whether a background needs removing — not every image needs
308 it. Inform the user about each asset's status and get confirmation before
309 treating any background as a problem. Never auto-remove, never silently ignore.
3101. ✅ Every section has minimum **3 depth layers**
3112. ✅ Every text element uses at least **1 animation technique**
3123. ✅ Every project includes **`prefers-reduced-motion`** fallback
3134. ✅ Only animate GPU-safe properties: `transform`, `opacity`, `filter`, `clip-path`
3145. ✅ Product images always assigned **depth-3** by default
3156. ✅ Background images always **depth-0** with slight blur
3167. ✅ Floating loops on any "hero" element (6–14s, never completely static)
3178. ✅ Every decorative element gets `aria-hidden="true"`
3189. ✅ Mobile gets reduced effects via `pointer: coarse` detection
31910. ✅ `will-change` removed after animations complete
320 
321---
322 
323## Output Format
324 
325Always deliver:
3261. **Single self-contained HTML file** (inline CSS + JS) unless user asks for separate files
3272. **CDN imports** for GSAP via jsDelivr: `https://cdn.jsdelivr.net/npm/[email protected]/dist/gsap.min.js`
3283. **Comments** explaining every major section and technique used
3294. **Note at top** listing which techniques from the 45-technique catalogue were applied
330 
331---
332 
333## Validation
334 
335After building, run the validation script to check quality:
336 
337```bash
338node scripts/validate-layers.js path/to/index.html
339```
340 
341Checks: depth attributes, aria-hidden, reduced-motion, alt text, performance limits.
342 
343---
344 
345## Related Skills
346 
347- **senior-frontend**: Use when building the full application around the 2.5D site. NOT for the cinematic effects themselves.
348- **ui-design**: Use when designing the visual layout and components. NOT for scroll animations or depth effects.
349- **landing-page-generator**: Use for quick SaaS landing page scaffolds. NOT for custom cinematic experiences.
350- **page-cro**: Use after the 2.5D site is built to optimize conversion. NOT during the initial build.
351- **senior-architect**: Use when the 2.5D site is part of a larger system architecture. NOT for standalone pages.
352- **accessibility-auditor**: Use to verify full WCAG compliance after build. This skill includes basic reduced-motion handling.
353 

Discussion

Alternatives

Also in Photo stylesSee all 320 in Content creator →