Frontend Development
全栈前端开发,结合高级UI设计、电影动画、AI生成的媒体资产、有说服力的文案和视觉艺术。
name: frontend-dev
description: |
Full-stack frontend development combining premium UI design, cinematic animations,
AI-generated media assets, persuasive copywriting, and visual art. Builds complete,
visually striking web pages with real media, advanced motion, and compelling copy.
Use when: building landing pages, marketing sites, product pages, dashboards,
generating media assets (image/video/audio/music), writing conversion copy,
creating generative art, or implementing cinematic scroll animations.
description_zh: "前端开发与 AI 媒体生成"
description_en: "Frontend dev with AI media, animations & persuasive copy"
license: MIT
metadata:
version: "1.0.0"
category: frontend
sources:
- Framer Motion documentation
- GSAP / GreenSock documentation
- Three.js documentation
- Tailwind CSS documentation
- React / Next.js documentation
- AIDA Framework (Elmo Lewis)
- p5.js documentation
Frontend Studio
Build complete, production-ready frontend pages by orchestrating 5 specialized capabilities: design engineering, motion systems, AI-generated assets, persuasive copy, and generative art.
Invocation
/frontend-dev <request>
The user provides their request as natural language (e.g. "build a landing page for a music streaming app").
Skill Structure
frontend-dev/
├── SKILL.md # Core skill (this file)
├── scripts/ # Asset generation scripts
│ ├── minimax_tts.py # Text-to-speech
│ ├── minimax_music.py # Music generation
│ ├── minimax_video.py # Video generation (async)
│ └── minimax_image.py # Image generation
├── references/ # Detailed guides (read as needed)
│ ├── minimax-cli-reference.md # CLI flags quick reference
│ ├── asset-prompt-guide.md # Asset prompt engineering rules
│ ├── minimax-tts-guide.md # TTS usage & voices
│ ├── minimax-music-guide.md # Music prompts & lyrics format
│ ├── minimax-video-guide.md # Camera commands & models
│ ├── minimax-image-guide.md # Ratios & batch generation
│ ├── minimax-voice-catalog.md # All voice IDs
│ ├── motion-recipes.md # Animation code snippets
│ ├── env-setup.md # Environment setup
│ └── troubleshooting.md # Common issues
├── templates/ # Visual art templates
│ ├── viewer.html # p5.js interactive art base
│ └── generator_template.js # p5.js code reference
└── canvas-fonts/ # Static art fonts (TTF + licenses)
Project Structure
Assets (Universal)
All frameworks use the same asset organization:
assets/
├── images/
│ ├── hero-landing-1710xxx.webp
│ ├── icon-feature-01.webp
│ └── bg-pattern.svg
├── videos/
│ ├── hero-bg-1710xxx.mp4
│ └── demo-preview.mp4
└── audio/
├── bgm-ambient-1710xxx.mp3
└── tts-intro-1710xxx.mp3
Asset naming: {type}-{descriptor}-{timestamp}.{ext}
By Framework
| Framework |
Asset Location |
Component Location |
| Pure HTML |
./assets/ |
N/A (inline or ./js/) |
| React/Next.js |
public/assets/ |
src/components/ |
| Vue/Nuxt |
public/assets/ |
src/components/ |
| Svelte/SvelteKit |
static/assets/ |
src/lib/components/ |
| Astro |
public/assets/ |
src/components/ |
Pure HTML
project/
├── index.html
├── assets/
│ ├── images/
│ ├── videos/
│ └── audio/
├── css/
│ └── styles.css
└── js/
└── main.js # Animations (GSAP/vanilla)
React / Next.js
project/
├── public/assets/ # Static assets
├── src/
│ ├── components/
│ │ ├── ui/ # Button, Card, Input
│ │ ├── sections/ # Hero, Features, CTA
│ │ └── motion/ # RevealSection, StaggerGrid
│ ├── lib/
│ ├── styles/
│ └── app/ # Pages
└── package.json
Vue / Nuxt
project/
├── public/assets/
├── src/ # or root for Nuxt
│ ├── components/
│ │ ├── ui/
│ │ ├── sections/
│ │ └── motion/
│ ├── composables/ # Shared logic
│ ├── pages/
│ └── assets/ # Processed assets (optional)
└── package.json
Astro
project/
├── public/assets/
├── src/
│ ├── components/ # .astro, .tsx, .vue, .svelte
│ ├── layouts/
│ ├── pages/
│ └── styles/
└── package.json
Component naming: PascalCase (HeroSection.tsx, HeroSection.vue, HeroSection.astro)
Compliance
All rules in this skill are mandatory. Violating any rule is a blocking error — fix before proceeding or delivering.
Workflow
Phase 1: Design Architecture
- Analyze the request — determine page type and context
- Set design dials based on page type
- Plan layout sections and identify asset needs
Phase 2: Motion Architecture
- Select animation tools per section (see Tool Selection Matrix)
- Plan motion sequences following performance guardrails
Phase 3: Asset Generation
Generate all image/video/audio assets using scripts/. NEVER use placeholder URLs (unsplash, picsum, placeholder.com, via.placeholder, placehold.co, etc.) or external URLs.
- Parse asset requirements (type, style, spec, usage)
- Craft optimized prompts, show to user, confirm before generating
- Execute via scripts, save to project — do NOT proceed to Phase 5 until all assets are saved locally
Phase 4: Copywriting & Content
Follow copywriting frameworks (AIDA, PAS, FAB) to craft all text content. Do NOT use "Lorem ipsum" — write real copy.
Phase 5: Build UI
Scaffold the project and build each section following Design and Motion rules. Integrate generated assets and copy. All <img>, <video>, <source>, and CSS background-image MUST reference local assets from Phase 3.
Phase 6: Quality Gates
Run final checklist (see Quality Gates section).
1. Design Engineering
1.1 Baseline Configuration
| Dial |
Default |
Range |
| DESIGN_VARIANCE |
8 |
1=Symmetry, 10=Asymmetric |
| MOTION_INTENSITY |
6 |
1=Static, 10=Cinematic |
| VISUAL_DENSITY |
4 |
1=Airy, 10=Packed |
Adapt dynamically based on user requests.
1.2 Architecture Conventions
- DEPENDENCY VERIFICATION: Check
package.json before importing any library. Output install command if missing.
- Framework: React/Next.js. Default to Server Components. Interactive components must be isolated
"use client" leaf components.
- Styling: Tailwind CSS. Check version in
package.json — NEVER mix v3/v4 syntax.
- ANTI-EMOJI POLICY: NEVER use emojis anywhere. Use Phosphor or Radix icons only.
- Viewport: Use
min-h-[100dvh] not h-screen. Use CSS Grid not flex percentage math.
- Layout:
max-w-[1400px] mx-auto or max-w-7xl.
1.3 Design Rules
| Rule |
Directive |
| Typography |
Headlines: text-4xl md:text-6xl tracking-tighter. Body: text-base leading-relaxed max-w-[65ch]. NEVER use Inter — use Geist/Outfit/Satoshi. NEVER use Serif on dashboards. |
| Color |
Max 1 accent, saturation < 80%. NEVER use AI purple/blue. Stick to one palette. |
| Layout |
NEVER use centered heroes when VARIANCE > 4. Force split-screen or asymmetric layouts. |
| Cards |
NEVER use generic cards when DENSITY > 7. Use border-t, divide-y, or spacing. |
| States |
ALWAYS implement: Loading (skeleton), Empty, Error, Tactile feedback (scale-[0.98]). |
| Forms |
Label above input. Error below. gap-2 for input blocks. |
1.4 Anti-Slop Techniques
- Liquid Glass:
backdrop-blur + border-white/10 + shadow-[inset_0_1px_0_rgba(255,255,255,0.1)]
- Magnetic Buttons: Use
useMotionValue/useTransform — never useState for continuous animations
- Perpetual Motion: When INTENSITY > 5, add infinite micro-animations (Pulse, Float, Shimmer)
- Layout Transitions: Use Framer
layout and layoutId props
- Stagger: Use
staggerChildren or CSS animation-delay: calc(var(--index) * 100ms)
1.5 Forbidden Patterns
| Category |
Banned |
| Visual |
Neon glows, pure black (#000), oversaturated accents, gradient text on headers, custom cursors |
| Typography |
Inter font, oversized H1s, Serif on dashboards |
| Layout |
3-column equal card rows, floating elements with awkward gaps |
| Components |
Default shadcn/ui without customization |
1.6 Creative Arsenal
| Category |
Patterns |
| Navigation |
Dock magnification, Magnetic button, Gooey menu, Dynamic island, Radial menu, Speed dial, Mega menu |
| Layout |
Bento grid, Masonry, Chroma grid, Split-screen scroll, Curtain reveal |
| Cards |
Parallax tilt, Spotlight border, Glassmorphism, Holographic foil, Swipe stack, Morphing modal |
| Scroll |
Sticky stack, Horizontal hijack, Locomotive sequence, Zoom parallax, Progress path, Liquid swipe |
| Gallery |
Dome gallery, Coverflow, Drag-to-pan, Accordion slider, Hover trail, Glitch effect |
| Text |
Kinetic marquee, Text mask reveal, Scramble effect, Circular path, Gradient stroke, Kinetic grid |
| Micro |
Particle explosion, Pull-to-refresh, Skeleton shimmer, Directional hover, Ripple click, SVG draw, Mesh gradient, Lens blur |
1.7 Bento Paradigm
- Palette: Background
#f9fafb, cards pure white with border-slate-200/50
- Surfaces:
rounded-[2.5rem], diffusion shadow
- Typography: Geist/Satoshi,
tracking-tight headers
- Labels: Outside and below cards
- Animation: Spring physics (
stiffness: 100, damping: 20), infinite loops, React.memo isolation
5-Card Archetypes:
- Intelligent List — auto-sorting with
layoutId
- Command Input — typewriter + blinking cursor
- Live Status — breathing indicators
- Wide Data Stream — infinite horizontal carousel
- Contextual UI — staggered highlight + float-in toolbar
1.8 Brand Override
When brand styling is active:
- Dark:
#141413, Light: #faf9f5, Mid: #b0aea5, Subtle: #e8e6dc
- Accents: Orange
#d97757, Blue #6a9bcc, Green #788c5d
- Fonts: Poppins (headings), Lora (body)
2. Motion Engine
2.1 Tool Selection Matrix
| Need |
Tool |
| UI enter/exit/layout |
Framer Motion — AnimatePresence, layoutId, springs |
| Scroll storytelling (pin, scrub) |
GSAP + ScrollTrigger — frame-accurate control |
| Looping icons |
Lottie — lazy-load (~50KB) |
| 3D/WebGL |
Three.js / R3F — isolated <Canvas>, own "use client" boundary |
| Hover/focus states |
CSS only — zero JS cost |
| Native scroll-driven |
CSS — animation-timeline: scroll() |
Conflict Rules [MANDATORY]:
- NEVER mix GSAP + Framer Motion in same component
- R3F MUST live in isolated Canvas wrapper
- ALWAYS lazy-load Lottie, GSAP, Three.js
2.2 Intensity Scale
| Level |
Techniques |
| 1-2 Subtle |
CSS transitions only, 150-300ms |
| 3-4 Smooth |
CSS keyframes + Framer animate, stagger ≤3 items |
| 5-6 Fluid |
whileInView, magnetic hover, parallax tilt |
| 7-8 Cinematic |
GSAP ScrollTrigger, pinned sections, horizontal hijack |
| 9-10 Immersive |
Full scroll sequences, Three.js particles, WebGL shaders |
2.3 Animation Recipes
See references/motion-recipes.md for full code. Summary:
| Recipe |
Tool |
Use For |
| Scroll Reveal |
Framer |
Fade+slide on viewport entry |
| Stagger Grid |
Framer |
Sequential list animations |
| Pinned Timeline |
GSAP |
Horizontal scroll with pinning |
| Tilt Card |
Framer |
Mouse-tracking 3D perspective |
| Magnetic Button |
Framer |
Cursor-attracted buttons |
| Text Scramble |
Vanilla |
Matrix-style decode effect |
| SVG Path Draw |
CSS |
Scroll-linked path animation |
| Horizontal Scroll |
GSAP |
Vertical-to-horizontal hijack |
| Particle Background |
R3F |
Decorative WebGL particles |
| Layout Morph |
Framer |
Card-to-modal expansion |
2.4 Performance Rules
GPU-only properties (ONLY animate these): transform, opacity, filter, clip-path
NEVER animate: width, height, top, left, margin, padding, font-size — if you need these effects, use transform: scale() or clip-path instead.
Isolation:
- Perpetual animations MUST be in
React.memo leaf components
will-change: transform ONLY during animation
contain: layout style paint on heavy containers
Mobile:
- ALWAYS respect
prefers-reduced-motion
- ALWAYS disable parallax/3D on
pointer: coarse
- Cap particles: desktop 800, tablet 300, mobile 100
- Disable GSAP pin on mobile < 768px
Cleanup: Every useEffect with GSAP/observers MUST return () => ctx.revert()
2.5 Springs & Easings
| Feel |
Framer Config |
| Snappy |
stiffness: 300, damping: 30 |
| Smooth |
stiffness: 150, damping: 20 |
| Bouncy |
stiffness: 100, damping: 10 |
| Heavy |
stiffness: 60, damping: 20 |
| CSS Easing |
Value |
| Smooth decel |
cubic-bezier(0.16, 1, 0.3, 1) |
| Smooth accel |
cubic-bezier(0.7, 0, 0.84, 0) |
| Elastic |
cubic-bezier(0.34, 1.56, 0.64, 1) |
2.6 Accessibility
- ALWAYS wrap motion in
prefers-reduced-motion check
- NEVER flash content > 3 times/second (seizure risk)
- ALWAYS provide visible focus rings (use
outline not box-shadow)
- ALWAYS add
aria-live="polite" for dynamically revealed content
- ALWAYS include pause button for auto-playing animations
2.7 Dependencies
npm install framer-motion # UI (keep at top level)
npm install gsap # Scroll (lazy-load)
npm install lottie-react # Icons (lazy-load)
npm install three @react-three/fiber @react-three/drei # 3D (lazy-load)
3. Asset Generation
3.1 Scripts
| Type |
Script |
Pattern |
| TTS |
scripts/minimax_tts.py |
Sync |
| Music |
scripts/minimax_music.py |
Sync |
| Video |
scripts/minimax_video.py |
Async (create → poll → download) |
| Image |
scripts/minimax_image.py |
Sync |
Env: MINIMAX_API_KEY (required).
3.2 Workflow
- Parse: type, quantity, style, spec, usage
- Craft prompt: Be specific (composition, lighting, style). NEVER include text in image prompts.
- Execute: Show prompt to user, MUST confirm before generating, then run script
- Save:
<project>/public/assets/{images,videos,audio}/ as {type}-{descriptor}-{timestamp}.{ext} — MUST save locally
- Post-process: Images → WebP, Videos → ffmpeg compress, Audio → normalize
- Deliver: File path + code snippet + CSS suggestion
3.3 Preset Shortcuts
| Shortcut |
Spec |
hero |
16:9, cinematic, text-safe |
thumb |
1:1, centered subject |
icon |
1:1, flat, clean background |
avatar |
1:1, portrait, circular crop ready |
banner |
21:9, OG/social |
bg-video |
768P, 6s, [Static shot] |
video-hd |
1080P, 6s |
bgm |
30s, no vocals, loopable |
tts |
MiniMax HD, MP3 |
3.4 Reference
references/minimax-cli-reference.md — CLI flags
references/asset-prompt-guide.md — Prompt rules
references/minimax-voice-catalog.md — Voice IDs
references/minimax-tts-guide.md — TTS usage
references/minimax-music-guide.md — Music generation (prompts, lyrics, structure tags)
references/minimax-video-guide.md — Camera commands
references/minimax-image-guide.md — Ratios, batch
4. Copywriting
4.1 Core Job
- Grab attention → 2. Create desire → 3. Remove friction → 4. Prompt action
4.2 Frameworks
AIDA (landing pages, emails):
ATTENTION: Bold headline (promise or pain)
INTEREST: Elaborate problem ("yes, that's me")
DESIRE: Show transformation
ACTION: Clear CTA
PAS (pain-driven products):
PROBLEM: State clearly
AGITATE: Make urgent
SOLUTION: Your product
FAB (product differentiation):
FEATURE: What it does
ADVANTAGE: Why it matters
BENEFIT: What customer gains
4.3 Headlines
| Formula |
Example |
| Promise |
"Double open rates in 30 days" |
| Question |
"Still wasting 10 hours/week?" |
| How-To |
"How to automate your pipeline" |
| Number |
"7 mistakes killing conversions" |
| Negative |
"Stop losing leads" |
| Curiosity |
"The one change that tripled bookings" |
| Transformation |
"From 50 to 500 leads" |
Be specific. Lead with outcome, not method.
4.4 CTAs
Bad: Submit, Click here, Learn more
Good: "Start my free trial", "Get the template now", "Book my strategy call"
Formula: [Action Verb] + [What They Get] + [Urgency/Ease]
Place: above fold, after value, multiple on long pages.
4.5 Emotional Triggers
| Trigger |
Example |
| FOMO |
"Only 3 spots left" |
| Fear of loss |
"Every day without this, you're losing $X" |
| Status |
"Join 10,000+ top agencies" |
| Ease |
"Set it up once. Forget forever." |
| Frustration |
"Tired of tools that deliver nothing?" |
| Hope |
"Yes, you CAN hit $10K MRR" |
4.6 Objection Handling
| Objection |
Response |
| Too expensive |
Show ROI: "Pays for itself in 2 weeks" |
| Won't work for me |
Social proof from similar customer |
| No time |
"Setup takes 10 minutes" |
| What if it fails |
"30-day money-back guarantee" |
| Need to think |
Urgency/scarcity |
Place in FAQ, testimonials, near CTA.
4.7 Proof Types
Testimonials (with name/title), Case studies, Data/metrics, Social proof, Certifications
5. Visual Art
Philosophy-first workflow. Two output modes.
5.1 Output Modes
| Mode |
Output |
When |
| Static |
PDF/PNG |
Posters, print, design assets |
| Interactive |
HTML (p5.js) |
Generative art, explorable variations |
5.2 Workflow
Step 1: Philosophy Creation
Name the movement (1-2 words). Articulate philosophy (4-6 paragraphs) covering:
- Static: space, form, color, scale, rhythm, hierarchy
- Interactive: computation, emergence, noise, parametric variation
Step 2: Conceptual Seed
Identify subtle, niche reference — sophisticated, not literal. Jazz musician quoting another song.
Step 3: Creation
Static Mode:
- Single page, highly visual, design-forward
- Repeating patterns, perfect shapes
- Sparse typography from
canvas-fonts/
- Nothing overlaps, proper margins
- Output:
.pdf or .png + philosophy .md
Interactive Mode:
- Read
templates/viewer.html first
- Keep FIXED sections (header, sidebar, seed controls)
- Replace VARIABLE sections (algorithm, parameters)
- Seeded randomness:
randomSeed(seed); noiseSeed(seed);
- Output: single self-contained HTML
Step 4: Refinement
Refine, don't add. Make it crisp. Polish into masterpiece.
Quality Gates
Design:
Motion:
General:
React and Next.js are trademarks of Meta Platforms, Inc. and Vercel, Inc., respectively. Vue.js is a trademark of Evan You. Tailwind CSS is a trademark of Tailwind Labs Inc. Svelte and SvelteKit are trademarks of their respective owners. GSAP/GreenSock is a trademark of GreenSock Inc. Three.js, Framer Motion, Lottie, Astro, and all other product names are trademarks of their respective owners.
1---2name: frontend-dev3description: Frontend Development4---5# Frontend Development67全栈前端开发,结合高级UI设计、电影动画、AI生成的媒体资产、有说服力的文案和视觉艺术。89---10name: frontend-dev11description: |12 Full-stack frontend development combining premium UI design, cinematic animations,13 AI-generated media assets, persuasive copywriting, and visual art. Builds complete,14 visually striking web pages with real media, advanced motion, and compelling copy.15 Use when: building landing pages, marketing sites, product pages, dashboards,16 generating media assets (image/video/audio/music), writing conversion copy,17 creating generative art, or implementing cinematic scroll animations.18description_zh: "前端开发与 AI 媒体生成"19description_en: "Frontend dev with AI media, animations & persuasive copy"20license: MIT21metadata:22 version: "1.0.0"23 category: frontend24 sources:25 - Framer Motion documentation26 - GSAP / GreenSock documentation27 - Three.js documentation28 - Tailwind CSS documentation29 - React / Next.js documentation30 - AIDA Framework (Elmo Lewis)31 - p5.js documentation32---3334# Frontend Studio3536Build complete, production-ready frontend pages by orchestrating 5 specialized capabilities: design engineering, motion systems, AI-generated assets, persuasive copy, and generative art.3738## Invocation3940```41/frontend-dev <request>42```4344The user provides their request as natural language (e.g. "build a landing page for a music streaming app").4546## Skill Structure4748```49frontend-dev/50├── SKILL.md # Core skill (this file)51├── scripts/ # Asset generation scripts52│ ├── minimax_tts.py # Text-to-speech53│ ├── minimax_music.py # Music generation54│ ├── minimax_video.py # Video generation (async)55│ └── minimax_image.py # Image generation56├── references/ # Detailed guides (read as needed)57│ ├── minimax-cli-reference.md # CLI flags quick reference58│ ├── asset-prompt-guide.md # Asset prompt engineering rules59│ ├── minimax-tts-guide.md # TTS usage & voices60│ ├── minimax-music-guide.md # Music prompts & lyrics format61│ ├── minimax-video-guide.md # Camera commands & models62│ ├── minimax-image-guide.md # Ratios & batch generation63│ ├── minimax-voice-catalog.md # All voice IDs64│ ├── motion-recipes.md # Animation code snippets65│ ├── env-setup.md # Environment setup66│ └── troubleshooting.md # Common issues67├── templates/ # Visual art templates68│ ├── viewer.html # p5.js interactive art base69│ └── generator_template.js # p5.js code reference70└── canvas-fonts/ # Static art fonts (TTF + licenses)71```7273## Project Structure7475### Assets (Universal)7677All frameworks use the same asset organization:7879```80assets/81├── images/82│ ├── hero-landing-1710xxx.webp83│ ├── icon-feature-01.webp84│ └── bg-pattern.svg85├── videos/86│ ├── hero-bg-1710xxx.mp487│ └── demo-preview.mp488└── audio/89 ├── bgm-ambient-1710xxx.mp390 └── tts-intro-1710xxx.mp391```9293**Asset naming:** `{type}-{descriptor}-{timestamp}.{ext}`9495### By Framework9697| Framework | Asset Location | Component Location |98|-----------|---------------|-------------------|99| **Pure HTML** | `./assets/` | N/A (inline or `./js/`) |100| **React/Next.js** | `public/assets/` | `src/components/` |101| **Vue/Nuxt** | `public/assets/` | `src/components/` |102| **Svelte/SvelteKit** | `static/assets/` | `src/lib/components/` |103| **Astro** | `public/assets/` | `src/components/` |104105### Pure HTML106107```108project/109├── index.html110├── assets/111│ ├── images/112│ ├── videos/113│ └── audio/114├── css/115│ └── styles.css116└── js/117 └── main.js # Animations (GSAP/vanilla)118```119120### React / Next.js121122```123project/124├── public/assets/ # Static assets125├── src/126│ ├── components/127│ │ ├── ui/ # Button, Card, Input128│ │ ├── sections/ # Hero, Features, CTA129│ │ └── motion/ # RevealSection, StaggerGrid130│ ├── lib/131│ ├── styles/132│ └── app/ # Pages133└── package.json134```135136### Vue / Nuxt137138```139project/140├── public/assets/141├── src/ # or root for Nuxt142│ ├── components/143│ │ ├── ui/144│ │ ├── sections/145│ │ └── motion/146│ ├── composables/ # Shared logic147│ ├── pages/148│ └── assets/ # Processed assets (optional)149└── package.json150```151152### Astro153154```155project/156├── public/assets/157├── src/158│ ├── components/ # .astro, .tsx, .vue, .svelte159│ ├── layouts/160│ ├── pages/161│ └── styles/162└── package.json163```164165**Component naming:** PascalCase (`HeroSection.tsx`, `HeroSection.vue`, `HeroSection.astro`)166167---168169## Compliance170171**All rules in this skill are mandatory. Violating any rule is a blocking error — fix before proceeding or delivering.**172173---174175## Workflow176### Phase 1: Design Architecture1771. Analyze the request — determine page type and context1782. Set design dials based on page type1793. Plan layout sections and identify asset needs180181### Phase 2: Motion Architecture1821. Select animation tools per section (see Tool Selection Matrix)1832. Plan motion sequences following performance guardrails184185### Phase 3: Asset Generation186Generate all image/video/audio assets using `scripts/`. NEVER use placeholder URLs (unsplash, picsum, placeholder.com, via.placeholder, placehold.co, etc.) or external URLs.1871881. Parse asset requirements (type, style, spec, usage)1892. Craft optimized prompts, show to user, confirm before generating1903. Execute via scripts, save to project — do NOT proceed to Phase 5 until all assets are saved locally191192### Phase 4: Copywriting & Content193Follow copywriting frameworks (AIDA, PAS, FAB) to craft all text content. Do NOT use "Lorem ipsum" — write real copy.194195### Phase 5: Build UI196Scaffold the project and build each section following Design and Motion rules. Integrate generated assets and copy. All `<img>`, `<video>`, `<source>`, and CSS `background-image` MUST reference local assets from Phase 3.197198### Phase 6: Quality Gates199Run final checklist (see Quality Gates section).200201---202203# 1. Design Engineering204205## 1.1 Baseline Configuration206207| Dial | Default | Range |208|------|---------|-------|209| DESIGN_VARIANCE | 8 | 1=Symmetry, 10=Asymmetric |210| MOTION_INTENSITY | 6 | 1=Static, 10=Cinematic |211| VISUAL_DENSITY | 4 | 1=Airy, 10=Packed |212213Adapt dynamically based on user requests.214215## 1.2 Architecture Conventions216- **DEPENDENCY VERIFICATION:** Check `package.json` before importing any library. Output install command if missing.217- **Framework:** React/Next.js. Default to Server Components. Interactive components must be isolated `"use client"` leaf components.218- **Styling:** Tailwind CSS. Check version in `package.json` — NEVER mix v3/v4 syntax.219- **ANTI-EMOJI POLICY:** NEVER use emojis anywhere. Use Phosphor or Radix icons only.220- **Viewport:** Use `min-h-[100dvh]` not `h-screen`. Use CSS Grid not flex percentage math.221- **Layout:** `max-w-[1400px] mx-auto` or `max-w-7xl`.222223## 1.3 Design Rules224| Rule | Directive |225|------|-----------|226| Typography | Headlines: `text-4xl md:text-6xl tracking-tighter`. Body: `text-base leading-relaxed max-w-[65ch]`. **NEVER** use Inter — use Geist/Outfit/Satoshi. **NEVER** use Serif on dashboards. |227| Color | Max 1 accent, saturation < 80%. **NEVER** use AI purple/blue. Stick to one palette. |228| Layout | **NEVER** use centered heroes when VARIANCE > 4. Force split-screen or asymmetric layouts. |229| Cards | **NEVER** use generic cards when DENSITY > 7. Use `border-t`, `divide-y`, or spacing. |230| States | **ALWAYS** implement: Loading (skeleton), Empty, Error, Tactile feedback (`scale-[0.98]`). |231| Forms | Label above input. Error below. `gap-2` for input blocks. |232233## 1.4 Anti-Slop Techniques234235- **Liquid Glass:** `backdrop-blur` + `border-white/10` + `shadow-[inset_0_1px_0_rgba(255,255,255,0.1)]`236- **Magnetic Buttons:** Use `useMotionValue`/`useTransform` — never `useState` for continuous animations237- **Perpetual Motion:** When INTENSITY > 5, add infinite micro-animations (Pulse, Float, Shimmer)238- **Layout Transitions:** Use Framer `layout` and `layoutId` props239- **Stagger:** Use `staggerChildren` or CSS `animation-delay: calc(var(--index) * 100ms)`240241## 1.5 Forbidden Patterns242| Category | Banned |243|----------|--------|244| Visual | Neon glows, pure black (#000), oversaturated accents, gradient text on headers, custom cursors |245| Typography | Inter font, oversized H1s, Serif on dashboards |246| Layout | 3-column equal card rows, floating elements with awkward gaps |247| Components | Default shadcn/ui without customization |248249## 1.6 Creative Arsenal250251| Category | Patterns |252|----------|----------|253| Navigation | Dock magnification, Magnetic button, Gooey menu, Dynamic island, Radial menu, Speed dial, Mega menu |254| Layout | Bento grid, Masonry, Chroma grid, Split-screen scroll, Curtain reveal |255| Cards | Parallax tilt, Spotlight border, Glassmorphism, Holographic foil, Swipe stack, Morphing modal |256| Scroll | Sticky stack, Horizontal hijack, Locomotive sequence, Zoom parallax, Progress path, Liquid swipe |257| Gallery | Dome gallery, Coverflow, Drag-to-pan, Accordion slider, Hover trail, Glitch effect |258| Text | Kinetic marquee, Text mask reveal, Scramble effect, Circular path, Gradient stroke, Kinetic grid |259| Micro | Particle explosion, Pull-to-refresh, Skeleton shimmer, Directional hover, Ripple click, SVG draw, Mesh gradient, Lens blur |260261## 1.7 Bento Paradigm262263- **Palette:** Background `#f9fafb`, cards pure white with `border-slate-200/50`264- **Surfaces:** `rounded-[2.5rem]`, diffusion shadow265- **Typography:** Geist/Satoshi, `tracking-tight` headers266- **Labels:** Outside and below cards267- **Animation:** Spring physics (`stiffness: 100, damping: 20`), infinite loops, `React.memo` isolation268269**5-Card Archetypes:**2701. Intelligent List — auto-sorting with `layoutId`2712. Command Input — typewriter + blinking cursor2723. Live Status — breathing indicators2734. Wide Data Stream — infinite horizontal carousel2745. Contextual UI — staggered highlight + float-in toolbar275276## 1.8 Brand Override277278When brand styling is active:279- Dark: `#141413`, Light: `#faf9f5`, Mid: `#b0aea5`, Subtle: `#e8e6dc`280- Accents: Orange `#d97757`, Blue `#6a9bcc`, Green `#788c5d`281- Fonts: Poppins (headings), Lora (body)282283---284285# 2. Motion Engine286287## 2.1 Tool Selection Matrix288289| Need | Tool |290|------|------|291| UI enter/exit/layout | **Framer Motion** — `AnimatePresence`, `layoutId`, springs |292| Scroll storytelling (pin, scrub) | **GSAP + ScrollTrigger** — frame-accurate control |293| Looping icons | **Lottie** — lazy-load (~50KB) |294| 3D/WebGL | **Three.js / R3F** — isolated `<Canvas>`, own `"use client"` boundary |295| Hover/focus states | **CSS only** — zero JS cost |296| Native scroll-driven | **CSS** — `animation-timeline: scroll()` |297298**Conflict Rules [MANDATORY]:**299- NEVER mix GSAP + Framer Motion in same component300- R3F MUST live in isolated Canvas wrapper301- ALWAYS lazy-load Lottie, GSAP, Three.js302303## 2.2 Intensity Scale304305| Level | Techniques |306|-------|------------|307| 1-2 Subtle | CSS transitions only, 150-300ms |308| 3-4 Smooth | CSS keyframes + Framer animate, stagger ≤3 items |309| 5-6 Fluid | `whileInView`, magnetic hover, parallax tilt |310| 7-8 Cinematic | GSAP ScrollTrigger, pinned sections, horizontal hijack |311| 9-10 Immersive | Full scroll sequences, Three.js particles, WebGL shaders |312313## 2.3 Animation Recipes314315See `references/motion-recipes.md` for full code. Summary:316317| Recipe | Tool | Use For |318|--------|------|---------|319| Scroll Reveal | Framer | Fade+slide on viewport entry |320| Stagger Grid | Framer | Sequential list animations |321| Pinned Timeline | GSAP | Horizontal scroll with pinning |322| Tilt Card | Framer | Mouse-tracking 3D perspective |323| Magnetic Button | Framer | Cursor-attracted buttons |324| Text Scramble | Vanilla | Matrix-style decode effect |325| SVG Path Draw | CSS | Scroll-linked path animation |326| Horizontal Scroll | GSAP | Vertical-to-horizontal hijack |327| Particle Background | R3F | Decorative WebGL particles |328| Layout Morph | Framer | Card-to-modal expansion |329330## 2.4 Performance Rules331**GPU-only properties (ONLY animate these):** `transform`, `opacity`, `filter`, `clip-path`332333**NEVER animate:** `width`, `height`, `top`, `left`, `margin`, `padding`, `font-size` — if you need these effects, use `transform: scale()` or `clip-path` instead.334335**Isolation:**336- Perpetual animations MUST be in `React.memo` leaf components337- `will-change: transform` ONLY during animation338- `contain: layout style paint` on heavy containers339340**Mobile:**341- ALWAYS respect `prefers-reduced-motion`342- ALWAYS disable parallax/3D on `pointer: coarse`343- Cap particles: desktop 800, tablet 300, mobile 100344- Disable GSAP pin on mobile < 768px345346**Cleanup:** Every `useEffect` with GSAP/observers MUST `return () => ctx.revert()`347348## 2.5 Springs & Easings349350| Feel | Framer Config |351|------|---------------|352| Snappy | `stiffness: 300, damping: 30` |353| Smooth | `stiffness: 150, damping: 20` |354| Bouncy | `stiffness: 100, damping: 10` |355| Heavy | `stiffness: 60, damping: 20` |356357| CSS Easing | Value |358|------------|-------|359| Smooth decel | `cubic-bezier(0.16, 1, 0.3, 1)` |360| Smooth accel | `cubic-bezier(0.7, 0, 0.84, 0)` |361| Elastic | `cubic-bezier(0.34, 1.56, 0.64, 1)` |362363## 2.6 Accessibility364- ALWAYS wrap motion in `prefers-reduced-motion` check365- NEVER flash content > 3 times/second (seizure risk)366- ALWAYS provide visible focus rings (use `outline` not `box-shadow`)367- ALWAYS add `aria-live="polite"` for dynamically revealed content368- ALWAYS include pause button for auto-playing animations369370## 2.7 Dependencies371372```bash373npm install framer-motion # UI (keep at top level)374npm install gsap # Scroll (lazy-load)375npm install lottie-react # Icons (lazy-load)376npm install three @react-three/fiber @react-three/drei # 3D (lazy-load)377```378379---380381# 3. Asset Generation382383## 3.1 Scripts384385| Type | Script | Pattern |386|------|--------|---------|387| TTS | `scripts/minimax_tts.py` | Sync |388| Music | `scripts/minimax_music.py` | Sync |389| Video | `scripts/minimax_video.py` | Async (create → poll → download) |390| Image | `scripts/minimax_image.py` | Sync |391392Env: `MINIMAX_API_KEY` (required).393394## 3.2 Workflow3951. **Parse:** type, quantity, style, spec, usage3962. **Craft prompt:** Be specific (composition, lighting, style). **NEVER** include text in image prompts.3973. **Execute:** Show prompt to user, **MUST confirm before generating**, then run script3984. **Save:** `<project>/public/assets/{images,videos,audio}/` as `{type}-{descriptor}-{timestamp}.{ext}` — **MUST save locally**3995. **Post-process:** Images → WebP, Videos → ffmpeg compress, Audio → normalize4006. **Deliver:** File path + code snippet + CSS suggestion401402## 3.3 Preset Shortcuts403404| Shortcut | Spec |405|----------|------|406| `hero` | 16:9, cinematic, text-safe |407| `thumb` | 1:1, centered subject |408| `icon` | 1:1, flat, clean background |409| `avatar` | 1:1, portrait, circular crop ready |410| `banner` | 21:9, OG/social |411| `bg-video` | 768P, 6s, `[Static shot]` |412| `video-hd` | 1080P, 6s |413| `bgm` | 30s, no vocals, loopable |414| `tts` | MiniMax HD, MP3 |415416## 3.4 Reference417418- `references/minimax-cli-reference.md` — CLI flags419- `references/asset-prompt-guide.md` — Prompt rules420- `references/minimax-voice-catalog.md` — Voice IDs421- `references/minimax-tts-guide.md` — TTS usage422- `references/minimax-music-guide.md` — Music generation (prompts, lyrics, structure tags)423- `references/minimax-video-guide.md` — Camera commands424- `references/minimax-image-guide.md` — Ratios, batch425426---427428# 4. Copywriting429430## 4.1 Core Job4314321. Grab attention → 2. Create desire → 3. Remove friction → 4. Prompt action433434## 4.2 Frameworks435436**AIDA** (landing pages, emails):437```438ATTENTION: Bold headline (promise or pain)439INTEREST: Elaborate problem ("yes, that's me")440DESIRE: Show transformation441ACTION: Clear CTA442```443444**PAS** (pain-driven products):445```446PROBLEM: State clearly447AGITATE: Make urgent448SOLUTION: Your product449```450451**FAB** (product differentiation):452```453FEATURE: What it does454ADVANTAGE: Why it matters455BENEFIT: What customer gains456```457458## 4.3 Headlines459460| Formula | Example |461|---------|---------|462| Promise | "Double open rates in 30 days" |463| Question | "Still wasting 10 hours/week?" |464| How-To | "How to automate your pipeline" |465| Number | "7 mistakes killing conversions" |466| Negative | "Stop losing leads" |467| Curiosity | "The one change that tripled bookings" |468| Transformation | "From 50 to 500 leads" |469470Be specific. Lead with outcome, not method.471472## 4.4 CTAs473474**Bad:** Submit, Click here, Learn more475476**Good:** "Start my free trial", "Get the template now", "Book my strategy call"477478**Formula:** [Action Verb] + [What They Get] + [Urgency/Ease]479480Place: above fold, after value, multiple on long pages.481482## 4.5 Emotional Triggers483484| Trigger | Example |485|---------|---------|486| FOMO | "Only 3 spots left" |487| Fear of loss | "Every day without this, you're losing $X" |488| Status | "Join 10,000+ top agencies" |489| Ease | "Set it up once. Forget forever." |490| Frustration | "Tired of tools that deliver nothing?" |491| Hope | "Yes, you CAN hit $10K MRR" |492493## 4.6 Objection Handling494495| Objection | Response |496|-----------|----------|497| Too expensive | Show ROI: "Pays for itself in 2 weeks" |498| Won't work for me | Social proof from similar customer |499| No time | "Setup takes 10 minutes" |500| What if it fails | "30-day money-back guarantee" |501| Need to think | Urgency/scarcity |502503Place in FAQ, testimonials, near CTA.504505## 4.7 Proof Types506507Testimonials (with name/title), Case studies, Data/metrics, Social proof, Certifications508509---510511# 5. Visual Art512513Philosophy-first workflow. Two output modes.514515## 5.1 Output Modes516517| Mode | Output | When |518|------|--------|------|519| Static | PDF/PNG | Posters, print, design assets |520| Interactive | HTML (p5.js) | Generative art, explorable variations |521522## 5.2 Workflow523524### Step 1: Philosophy Creation525Name the movement (1-2 words). Articulate philosophy (4-6 paragraphs) covering:526- Static: space, form, color, scale, rhythm, hierarchy527- Interactive: computation, emergence, noise, parametric variation528529### Step 2: Conceptual Seed530Identify subtle, niche reference — sophisticated, not literal. Jazz musician quoting another song.531532### Step 3: Creation533534**Static Mode:**535- Single page, highly visual, design-forward536- Repeating patterns, perfect shapes537- Sparse typography from `canvas-fonts/`538- Nothing overlaps, proper margins539- Output: `.pdf` or `.png` + philosophy `.md`540541**Interactive Mode:**5421. Read `templates/viewer.html` first5432. Keep FIXED sections (header, sidebar, seed controls)5443. Replace VARIABLE sections (algorithm, parameters)5454. Seeded randomness: `randomSeed(seed); noiseSeed(seed);`5465. Output: single self-contained HTML547548### Step 4: Refinement549Refine, don't add. Make it crisp. Polish into masterpiece.550551---552553# Quality Gates554**Design:**555- [ ] Mobile layout collapse (`w-full`, `px-4`) for high-variance designs556- [ ] `min-h-[100dvh]` not `h-screen`557- [ ] Empty, loading, error states provided558- [ ] Cards omitted where spacing suffices559560**Motion:**561- [ ] Correct tool per selection matrix562- [ ] No GSAP + Framer mixed in same component563- [ ] All `useEffect` have cleanup returns564- [ ] `prefers-reduced-motion` respected565- [ ] Perpetual animations in `React.memo` leaf components566- [ ] Only GPU properties animated567- [ ] Heavy libraries lazy-loaded568569**General:**570- [ ] Dependencies verified in `package.json`571- [ ] **No placeholder URLs** — grep the output for `unsplash`, `picsum`, `placeholder`, `placehold`, `via.placeholder`, `lorem.space`, `dummyimage`. If ANY found, STOP and replace with generated assets before delivering.572- [ ] **All media assets exist as local files** in the project's assets directory573- [ ] Asset prompts confirmed with user before generation574575---576577*React and Next.js are trademarks of Meta Platforms, Inc. and Vercel, Inc., respectively. Vue.js is a trademark of Evan You. Tailwind CSS is a trademark of Tailwind Labs Inc. Svelte and SvelteKit are trademarks of their respective owners. GSAP/GreenSock is a trademark of GreenSock Inc. Three.js, Framer Motion, Lottie, Astro, and all other product names are trademarks of their respective owners.*