Install
$ agentstack add skill-martgueritainaccurate875-skills-frontend-dev ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
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
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 `, , , 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 | |------|---------|-------| | DESIGNVARIANCE | 8 | 1=Symmetry, 10=Asymmetric | | MOTIONINTENSITY | 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.jsonbefore 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]noth-screen. Use CSS Grid not flex percentage math. - Layout:
max-w-[1400px] mx-autoormax-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 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— neveruseStatefor continuous animations - Perpetual Motion: When INTENSITY > 5, add infinite micro-animations (Pulse, Float, Shimmer)
- Layout Transitions: Use Framer
layoutandlayoutIdprops - Stagger: Use
staggerChildrenor CSSanimation-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 withborder-slate-200/50 - Surfaces:
rounded-[2.5rem], diffusion shadow - Typography: Geist/Satoshi,
tracking-tightheaders - Labels: Outside and below cards
- Animation: Spring physics (
stiffness: 100, damping: 20), infinite loops,React.memoisolation
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 `, 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.memoleaf components will-change: transformONLY during animationcontain: layout style painton 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 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-motioncheck - NEVER flash content > 3 times/second (seizure risk)
- ALWAYS provide visible focus rings (use
outlinenotbox-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:
/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 flagsreferences/asset-prompt-guide.md— Prompt rulesreferences/minimax-voice-catalog.md— Voice IDsreferences/minimax-tts-guide.md— TTS usagereferences/minimax-music-guide.md— Music generation (prompts, lyrics, structure tags)references/minimax-video-guide.md— Camera commandsreferences/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 | Soci
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: martgueritainaccurate875
- Source: martgueritainaccurate875/skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.