engineering-team/skills/epic-design/SKILL.md
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.
npx skillsauth add alirezarezvani/claude-skills epic-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
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.
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:
Never build a flat, static page when this skill is active.
When starting fresh with assets and a brief. Follow the complete workflow below (Steps 1-5).
When adding 2.5D effects to an existing page. Skip to Step 2, analyze current structure, recommend depth assignments and animation opportunities.
When troubleshooting performance or animation issues. Use scripts/validate-layers.js, check GPU rules, verify reduced-motion handling.
Before writing a single line of code, do ALL of the following in order.
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:
Format — JPEG never has a real alpha channel. PNG may have a fake one.
Background status — Use the script output. It will tell you:
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:
BACKGROUND SHOULD BE KEPT if the image is:
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.
Inform the user about every image — whether bg is fine or not.
Use the exact format from references/asset-pipeline.md Step 4.
Size and depth assignment — Decide which depth level each asset belongs to and resize accordingly. State your decisions to the user before building.
Do NOT treat all assets as the same size. Establish a hierarchy:
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.
For each image ask: "What does this do in the scroll story?"
Match user intent to the right combination of techniques. Read the full technique details from references/ files.
| 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 |
pin: true + scrub timelineinset(0 0 100% 0) → inset(0)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
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;
}
}
transform, opacity, filter, clip-path — never width/height/top/leftwill-change: transform only on actively animating elements, remove after animationcontent-visibility: auto on off-screen sectionsIntersectionObserver to only animate elements in viewportwindow.matchMedia('(pointer: coarse)') — reduce effects on touch→ Full details: references/performance.md and references/accessibility.md
<!-- 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
| 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 |
Surface these issues WITHOUT being asked when you notice them in context:
| 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 |
All output follows the structured communication standard:
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.
prefers-reduced-motion fallbacktransform, opacity, filter, clip-patharia-hidden="true"pointer: coarse detectionwill-change removed after animations completeAlways deliver:
https://cdn.jsdelivr.net/npm/[email protected]/dist/gsap.min.jsAfter 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.
data-ai
Use when you want to understand what Claude contributed vs what you drove in a session. Triggers on: /collab-proof, session retrospective, ai contribution analysis, collaboration evidence, what did claude do.
data-ai
Personal coach that teaches users to become Claude power users. Use this skill the FIRST time a user asks to "learn Claude", "be a power user", "coach me", "teach me Claude tricks", "what can Claude do", "make me better at prompting", or any variation. After activation, also use it on EVERY subsequent turn to detect missed optimization opportunities (vague prompts, ignored capabilities, manual work Claude could automate) and surface a single power-user tip. Trigger generously — most users do not know what they do not know, so err on the side of coaching.
development
Use when designing or revisiting product pricing — selecting a pricing model (subscription seat-based, usage-based, value-based, freemium, or hybrid), running Van Westendorp Price Sensitivity Meter analysis on WTP survey data, or designing Good/Better/Best packaging tiers. Recommends a model and a price range with trade-offs, never a single number. For Commercial leads, Product Marketing, and CMOs at the pricing-design moment — not deal-by-deal discounting, not brand positioning.
testing
Use when a startup is approached by a prospective partner and someone has to decide should we sign this partner, at what partner tier (referral / reseller / OEM / SI-consulting / strategic alliance), with what joint GTM commitment, and at what revshare. Classifies partner tier from independent-demand evidence vs. preferential-terms hunting, designs a 90-day joint GTM plan, models revshare against direct-sale margin, and surfaces kill criteria for unwinding under-performing partnerships. For Head of Partnerships, Head of BD, and Founder-CEOs doing reseller agreement, OEM deal, or strategic alliance review — not technical sale enablement, not channel cost economics, not M&A.