[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KBHKNV2MP79NCCY75W1Y1N":3,"skill-same:01M6KBHKNV2MP79NCCY75W1Y1N":481},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":34,"publishedAt":55,"linkOnly":56,"markdownContent":57,"markdownBody":58,"frontMatter":59,"refName":73,"commitSha":74,"skillDirectory":75,"forksCount":76,"repositoryHtmlUrl":77,"repositoryHomepageUrl":6,"ownerHtmlUrl":78,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":79,"install":80,"resources":93},"01M6KBHKNV2MP79NCCY75W1Y1N","frontend-dev",null,"Full-stack frontend development combining premium UI design, cinematic animations,\nAI-generated media assets, persuasive copywriting, and visual art. Builds complete,\nvisually striking web pages with real media, advanced motion, and compelling copy.\nUse when: building landing pages, marketing sites, product pages, dashboards,\ngenerating media assets (image\u002Fvideo\u002Faudio\u002Fmusic), writing conversion copy,\ncreating generative art, or implementing cinematic scroll animations.","zhizhunbao\u002Fworkbuddy","zhizhunbao","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7111063?v=4","01M6K6S4GJ0HA544MFAKAB913B","王鹏","01M6K6S4MEC7KW1Z6SCQ3FA876",9,"MIT","https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002FSKILL.md",[18,23,26,29],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":30,"categoryName":31,"taxonomyType":32,"taxonomyTypeDesc":33},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],"frontend dev","dev","frontend","Audio","framer","implementing","full","framer motion","aida","music","stack","Tailwind","Media","Video","ui","react","css","image","writing","design","2026-11-10 10:12:30",false,"---\nname: frontend-dev\ndescription: |\n  Full-stack frontend development combining premium UI design, cinematic animations,\n  AI-generated media assets, persuasive copywriting, and visual art. Builds complete,\n  visually striking web pages with real media, advanced motion, and compelling copy.\n  Use when: building landing pages, marketing sites, product pages, dashboards,\n  generating media assets (image\u002Fvideo\u002Faudio\u002Fmusic), writing conversion copy,\n  creating generative art, or implementing cinematic scroll animations.\ndescription_zh: \"前端开发与 AI 媒体生成\"\ndescription_en: \"Frontend dev with AI media, animations & persuasive copy\"\nlicense: MIT\nmetadata:\n  version: \"1.0.0\"\n  category: frontend\n  sources:\n    - Framer Motion documentation\n    - GSAP \u002F GreenSock documentation\n    - Three.js documentation\n    - Tailwind CSS documentation\n    - React \u002F Next.js documentation\n    - AIDA Framework (Elmo Lewis)\n    - p5.js documentation\n---\n\n# Frontend Studio\n\nBuild complete, production-ready frontend pages by orchestrating 5 specialized capabilities: design engineering, motion systems, AI-generated assets, persuasive copy, and generative art.\n\n## Invocation\n\n```\n\u002Ffrontend-dev \u003Crequest>\n```\n\nThe user provides their request as natural language (e.g. \"build a landing page for a music streaming app\").\n\n## Skill Structure\n\n```\nfrontend-dev\u002F\n├── SKILL.md                      # Core skill (this file)\n├── scripts\u002F                      # Asset generation scripts\n│   ├── minimax_tts.py            # Text-to-speech\n│   ├── minimax_music.py          # Music generation\n│   ├── minimax_video.py          # Video generation (async)\n│   └── minimax_image.py          # Image generation\n├── references\u002F                   # Detailed guides (read as needed)\n│   ├── minimax-cli-reference.md  # CLI flags quick reference\n│   ├── asset-prompt-guide.md     # Asset prompt engineering rules\n│   ├── minimax-tts-guide.md      # TTS usage & voices\n│   ├── minimax-music-guide.md    # Music prompts & lyrics format\n│   ├── minimax-video-guide.md    # Camera commands & models\n│   ├── minimax-image-guide.md    # Ratios & batch generation\n│   ├── minimax-voice-catalog.md  # All voice IDs\n│   ├── motion-recipes.md         # Animation code snippets\n│   ├── env-setup.md              # Environment setup\n│   └── troubleshooting.md        # Common issues\n├── templates\u002F                    # Visual art templates\n│   ├── viewer.html               # p5.js interactive art base\n│   └── generator_template.js     # p5.js code reference\n└── canvas-fonts\u002F                 # Static art fonts (TTF + licenses)\n```\n\n## Project Structure\n\n### Assets (Universal)\n\nAll frameworks use the same asset organization:\n\n```\nassets\u002F\n├── images\u002F\n│   ├── hero-landing-1710xxx.webp\n│   ├── icon-feature-01.webp\n│   └── bg-pattern.svg\n├── videos\u002F\n│   ├── hero-bg-1710xxx.mp4\n│   └── demo-preview.mp4\n└── audio\u002F\n    ├── bgm-ambient-1710xxx.mp3\n    └── tts-intro-1710xxx.mp3\n```\n\n**Asset naming:** `{type}-{descriptor}-{timestamp}.{ext}`\n\n### By Framework\n\n| Framework | Asset Location | Component Location |\n|-----------|---------------|-------------------|\n| **Pure HTML** | `.\u002Fassets\u002F` | N\u002FA (inline or `.\u002Fjs\u002F`) |\n| **React\u002FNext.js** | `public\u002Fassets\u002F` | `src\u002Fcomponents\u002F` |\n| **Vue\u002FNuxt** | `public\u002Fassets\u002F` | `src\u002Fcomponents\u002F` |\n| **Svelte\u002FSvelteKit** | `static\u002Fassets\u002F` | `src\u002Flib\u002Fcomponents\u002F` |\n| **Astro** | `public\u002Fassets\u002F` | `src\u002Fcomponents\u002F` |\n\n### Pure HTML\n\n```\nproject\u002F\n├── index.html\n├── assets\u002F\n│   ├── images\u002F\n│   ├── videos\u002F\n│   └── audio\u002F\n├── css\u002F\n│   └── styles.css\n└── js\u002F\n    └── main.js           # Animations (GSAP\u002Fvanilla)\n```\n\n### React \u002F Next.js\n\n```\nproject\u002F\n├── public\u002Fassets\u002F        # Static assets\n├── src\u002F\n│   ├── components\u002F\n│   │   ├── ui\u002F           # Button, Card, Input\n│   │   ├── sections\u002F     # Hero, Features, CTA\n│   │   └── motion\u002F       # RevealSection, StaggerGrid\n│   ├── lib\u002F\n│   ├── styles\u002F\n│   └── app\u002F              # Pages\n└── package.json\n```\n\n### Vue \u002F Nuxt\n\n```\nproject\u002F\n├── public\u002Fassets\u002F\n├── src\u002F                  # or root for Nuxt\n│   ├── components\u002F\n│   │   ├── ui\u002F\n│   │   ├── sections\u002F\n│   │   └── motion\u002F\n│   ├── composables\u002F      # Shared logic\n│   ├── pages\u002F\n│   └── assets\u002F           # Processed assets (optional)\n└── package.json\n```\n\n### Astro\n\n```\nproject\u002F\n├── public\u002Fassets\u002F\n├── src\u002F\n│   ├── components\u002F       # .astro, .tsx, .vue, .svelte\n│   ├── layouts\u002F\n│   ├── pages\u002F\n│   └── styles\u002F\n└── package.json\n```\n\n**Component naming:** PascalCase (`HeroSection.tsx`, `HeroSection.vue`, `HeroSection.astro`)\n\n---\n\n## Compliance\n\n**All rules in this skill are mandatory. Violating any rule is a blocking error — fix before proceeding or delivering.**\n\n---\n\n## Workflow\n### Phase 1: Design Architecture\n1. Analyze the request — determine page type and context\n2. Set design dials based on page type\n3. Plan layout sections and identify asset needs\n\n### Phase 2: Motion Architecture\n1. Select animation tools per section (see Tool Selection Matrix)\n2. Plan motion sequences following performance guardrails\n\n### Phase 3: Asset Generation\nGenerate all image\u002Fvideo\u002Faudio assets using `scripts\u002F`. NEVER use placeholder URLs (unsplash, picsum, placeholder.com, via.placeholder, placehold.co, etc.) or external URLs.\n\n1. Parse asset requirements (type, style, spec, usage)\n2. Craft optimized prompts, show to user, confirm before generating\n3. Execute via scripts, save to project — do NOT proceed to Phase 5 until all assets are saved locally\n\n### Phase 4: Copywriting & Content\nFollow copywriting frameworks (AIDA, PAS, FAB) to craft all text content. Do NOT use \"Lorem ipsum\" — write real copy.\n\n### Phase 5: Build UI\nScaffold the project and build each section following Design and Motion rules. Integrate generated assets and copy. All `\u003Cimg>`, `\u003Cvideo>`, `\u003Csource>`, and CSS `background-image` MUST reference local assets from Phase 3.\n\n### Phase 6: Quality Gates\nRun final checklist (see Quality Gates section).\n\n---\n\n# 1. Design Engineering\n\n## 1.1 Baseline Configuration\n\n| Dial | Default | Range |\n|------|---------|-------|\n| DESIGN_VARIANCE | 8 | 1=Symmetry, 10=Asymmetric |\n| MOTION_INTENSITY | 6 | 1=Static, 10=Cinematic |\n| VISUAL_DENSITY | 4 | 1=Airy, 10=Packed |\n\nAdapt dynamically based on user requests.\n\n## 1.2 Architecture Conventions\n- **DEPENDENCY VERIFICATION:** Check `package.json` before importing any library. Output install command if missing.\n- **Framework:** React\u002FNext.js. Default to Server Components. Interactive components must be isolated `\"use client\"` leaf components.\n- **Styling:** Tailwind CSS. Check version in `package.json` — NEVER mix v3\u002Fv4 syntax.\n- **ANTI-EMOJI POLICY:** NEVER use emojis anywhere. Use Phosphor or Radix icons only.\n- **Viewport:** Use `min-h-[100dvh]` not `h-screen`. Use CSS Grid not flex percentage math.\n- **Layout:** `max-w-[1400px] mx-auto` or `max-w-7xl`.\n\n## 1.3 Design Rules\n| Rule | Directive |\n|------|-----------|\n| Typography | Headlines: `text-4xl md:text-6xl tracking-tighter`. Body: `text-base leading-relaxed max-w-[65ch]`. **NEVER** use Inter — use Geist\u002FOutfit\u002FSatoshi. **NEVER** use Serif on dashboards. |\n| Color | Max 1 accent, saturation \u003C 80%. **NEVER** use AI purple\u002Fblue. Stick to one palette. |\n| Layout | **NEVER** use centered heroes when VARIANCE > 4. Force split-screen or asymmetric layouts. |\n| Cards | **NEVER** use generic cards when DENSITY > 7. Use `border-t`, `divide-y`, or spacing. |\n| States | **ALWAYS** implement: Loading (skeleton), Empty, Error, Tactile feedback (`scale-[0.98]`). |\n| Forms | Label above input. Error below. `gap-2` for input blocks. |\n\n## 1.4 Anti-Slop Techniques\n\n- **Liquid Glass:** `backdrop-blur` + `border-white\u002F10` + `shadow-[inset_0_1px_0_rgba(255,255,255,0.1)]`\n- **Magnetic Buttons:** Use `useMotionValue`\u002F`useTransform` — never `useState` for continuous animations\n- **Perpetual Motion:** When INTENSITY > 5, add infinite micro-animations (Pulse, Float, Shimmer)\n- **Layout Transitions:** Use Framer `layout` and `layoutId` props\n- **Stagger:** Use `staggerChildren` or CSS `animation-delay: calc(var(--index) * 100ms)`\n\n## 1.5 Forbidden Patterns\n| Category | Banned |\n|----------|--------|\n| Visual | Neon glows, pure black (#000), oversaturated accents, gradient text on headers, custom cursors |\n| Typography | Inter font, oversized H1s, Serif on dashboards |\n| Layout | 3-column equal card rows, floating elements with awkward gaps |\n| Components | Default shadcn\u002Fui without customization |\n\n## 1.6 Creative Arsenal\n\n| Category | Patterns |\n|----------|----------|\n| Navigation | Dock magnification, Magnetic button, Gooey menu, Dynamic island, Radial menu, Speed dial, Mega menu |\n| Layout | Bento grid, Masonry, Chroma grid, Split-screen scroll, Curtain reveal |\n| Cards | Parallax tilt, Spotlight border, Glassmorphism, Holographic foil, Swipe stack, Morphing modal |\n| Scroll | Sticky stack, Horizontal hijack, Locomotive sequence, Zoom parallax, Progress path, Liquid swipe |\n| Gallery | Dome gallery, Coverflow, Drag-to-pan, Accordion slider, Hover trail, Glitch effect |\n| Text | Kinetic marquee, Text mask reveal, Scramble effect, Circular path, Gradient stroke, Kinetic grid |\n| Micro | Particle explosion, Pull-to-refresh, Skeleton shimmer, Directional hover, Ripple click, SVG draw, Mesh gradient, Lens blur |\n\n## 1.7 Bento Paradigm\n\n- **Palette:** Background `#f9fafb`, cards pure white with `border-slate-200\u002F50`\n- **Surfaces:** `rounded-[2.5rem]`, diffusion shadow\n- **Typography:** Geist\u002FSatoshi, `tracking-tight` headers\n- **Labels:** Outside and below cards\n- **Animation:** Spring physics (`stiffness: 100, damping: 20`), infinite loops, `React.memo` isolation\n\n**5-Card Archetypes:**\n1. Intelligent List — auto-sorting with `layoutId`\n2. Command Input — typewriter + blinking cursor\n3. Live Status — breathing indicators\n4. Wide Data Stream — infinite horizontal carousel\n5. Contextual UI — staggered highlight + float-in toolbar\n\n## 1.8 Brand Override\n\nWhen brand styling is active:\n- Dark: `#141413`, Light: `#faf9f5`, Mid: `#b0aea5`, Subtle: `#e8e6dc`\n- Accents: Orange `#d97757`, Blue `#6a9bcc`, Green `#788c5d`\n- Fonts: Poppins (headings), Lora (body)\n\n---\n\n# 2. Motion Engine\n\n## 2.1 Tool Selection Matrix\n\n| Need | Tool |\n|------|------|\n| UI enter\u002Fexit\u002Flayout | **Framer Motion** — `AnimatePresence`, `layoutId`, springs |\n| Scroll storytelling (pin, scrub) | **GSAP + ScrollTrigger** — frame-accurate control |\n| Looping icons | **Lottie** — lazy-load (~50KB) |\n| 3D\u002FWebGL | **Three.js \u002F R3F** — isolated `\u003CCanvas>`, own `\"use client\"` boundary |\n| Hover\u002Ffocus states | **CSS only** — zero JS cost |\n| Native scroll-driven | **CSS** — `animation-timeline: scroll()` |\n\n**Conflict Rules [MANDATORY]:**\n- NEVER mix GSAP + Framer Motion in same component\n- R3F MUST live in isolated Canvas wrapper\n- ALWAYS lazy-load Lottie, GSAP, Three.js\n\n## 2.2 Intensity Scale\n\n| Level | Techniques |\n|-------|------------|\n| 1-2 Subtle | CSS transitions only, 150-300ms |\n| 3-4 Smooth | CSS keyframes + Framer animate, stagger ≤3 items |\n| 5-6 Fluid | `whileInView`, magnetic hover, parallax tilt |\n| 7-8 Cinematic | GSAP ScrollTrigger, pinned sections, horizontal hijack |\n| 9-10 Immersive | Full scroll sequences, Three.js particles, WebGL shaders |\n\n## 2.3 Animation Recipes\n\nSee `references\u002Fmotion-recipes.md` for full code. Summary:\n\n| Recipe | Tool | Use For |\n|--------|------|---------|\n| Scroll Reveal | Framer | Fade+slide on viewport entry |\n| Stagger Grid | Framer | Sequential list animations |\n| Pinned Timeline | GSAP | Horizontal scroll with pinning |\n| Tilt Card | Framer | Mouse-tracking 3D perspective |\n| Magnetic Button | Framer | Cursor-attracted buttons |\n| Text Scramble | Vanilla | Matrix-style decode effect |\n| SVG Path Draw | CSS | Scroll-linked path animation |\n| Horizontal Scroll | GSAP | Vertical-to-horizontal hijack |\n| Particle Background | R3F | Decorative WebGL particles |\n| Layout Morph | Framer | Card-to-modal expansion |\n\n## 2.4 Performance Rules\n**GPU-only properties (ONLY animate these):** `transform`, `opacity`, `filter`, `clip-path`\n\n**NEVER animate:** `width`, `height`, `top`, `left`, `margin`, `padding`, `font-size` — if you need these effects, use `transform: scale()` or `clip-path` instead.\n\n**Isolation:**\n- Perpetual animations MUST be in `React.memo` leaf components\n- `will-change: transform` ONLY during animation\n- `contain: layout style paint` on heavy containers\n\n**Mobile:**\n- ALWAYS respect `prefers-reduced-motion`\n- ALWAYS disable parallax\u002F3D on `pointer: coarse`\n- Cap particles: desktop 800, tablet 300, mobile 100\n- Disable GSAP pin on mobile \u003C 768px\n\n**Cleanup:** Every `useEffect` with GSAP\u002Fobservers MUST `return () => ctx.revert()`\n\n## 2.5 Springs & Easings\n\n| Feel | Framer Config |\n|------|---------------|\n| Snappy | `stiffness: 300, damping: 30` |\n| Smooth | `stiffness: 150, damping: 20` |\n| Bouncy | `stiffness: 100, damping: 10` |\n| Heavy | `stiffness: 60, damping: 20` |\n\n| CSS Easing | Value |\n|------------|-------|\n| Smooth decel | `cubic-bezier(0.16, 1, 0.3, 1)` |\n| Smooth accel | `cubic-bezier(0.7, 0, 0.84, 0)` |\n| Elastic | `cubic-bezier(0.34, 1.56, 0.64, 1)` |\n\n## 2.6 Accessibility\n- ALWAYS wrap motion in `prefers-reduced-motion` check\n- NEVER flash content > 3 times\u002Fsecond (seizure risk)\n- ALWAYS provide visible focus rings (use `outline` not `box-shadow`)\n- ALWAYS add `aria-live=\"polite\"` for dynamically revealed content\n- ALWAYS include pause button for auto-playing animations\n\n## 2.7 Dependencies\n\n```bash\nnpm install framer-motion           # UI (keep at top level)\nnpm install gsap                    # Scroll (lazy-load)\nnpm install lottie-react            # Icons (lazy-load)\nnpm install three @react-three\u002Ffiber @react-three\u002Fdrei  # 3D (lazy-load)\n```\n\n---\n\n# 3. Asset Generation\n\n## 3.1 Scripts\n\n| Type | Script | Pattern |\n|------|--------|---------|\n| TTS | `scripts\u002Fminimax_tts.py` | Sync |\n| Music | `scripts\u002Fminimax_music.py` | Sync |\n| Video | `scripts\u002Fminimax_video.py` | Async (create → poll → download) |\n| Image | `scripts\u002Fminimax_image.py` | Sync |\n\nEnv: `MINIMAX_API_KEY` (required).\n\n## 3.2 Workflow\n1. **Parse:** type, quantity, style, spec, usage\n2. **Craft prompt:** Be specific (composition, lighting, style). **NEVER** include text in image prompts.\n3. **Execute:** Show prompt to user, **MUST confirm before generating**, then run script\n4. **Save:** `\u003Cproject>\u002Fpublic\u002Fassets\u002F{images,videos,audio}\u002F` as `{type}-{descriptor}-{timestamp}.{ext}` — **MUST save locally**\n5. **Post-process:** Images → WebP, Videos → ffmpeg compress, Audio → normalize\n6. **Deliver:** File path + code snippet + CSS suggestion\n\n## 3.3 Preset Shortcuts\n\n| Shortcut | Spec |\n|----------|------|\n| `hero` | 16:9, cinematic, text-safe |\n| `thumb` | 1:1, centered subject |\n| `icon` | 1:1, flat, clean background |\n| `avatar` | 1:1, portrait, circular crop ready |\n| `banner` | 21:9, OG\u002Fsocial |\n| `bg-video` | 768P, 6s, `[Static shot]` |\n| `video-hd` | 1080P, 6s |\n| `bgm` | 30s, no vocals, loopable |\n| `tts` | MiniMax HD, MP3 |\n\n## 3.4 Reference\n\n- `references\u002Fminimax-cli-reference.md` — CLI flags\n- `references\u002Fasset-prompt-guide.md` — Prompt rules\n- `references\u002Fminimax-voice-catalog.md` — Voice IDs\n- `references\u002Fminimax-tts-guide.md` — TTS usage\n- `references\u002Fminimax-music-guide.md` — Music generation (prompts, lyrics, structure tags)\n- `references\u002Fminimax-video-guide.md` — Camera commands\n- `references\u002Fminimax-image-guide.md` — Ratios, batch\n\n---\n\n# 4. Copywriting\n\n## 4.1 Core Job\n\n1. Grab attention → 2. Create desire → 3. Remove friction → 4. Prompt action\n\n## 4.2 Frameworks\n\n**AIDA** (landing pages, emails):\n```\nATTENTION:  Bold headline (promise or pain)\nINTEREST:   Elaborate problem (\"yes, that's me\")\nDESIRE:     Show transformation\nACTION:     Clear CTA\n```\n\n**PAS** (pain-driven products):\n```\nPROBLEM:    State clearly\nAGITATE:    Make urgent\nSOLUTION:   Your product\n```\n\n**FAB** (product differentiation):\n```\nFEATURE:    What it does\nADVANTAGE:  Why it matters\nBENEFIT:    What customer gains\n```\n\n## 4.3 Headlines\n\n| Formula | Example |\n|---------|---------|\n| Promise | \"Double open rates in 30 days\" |\n| Question | \"Still wasting 10 hours\u002Fweek?\" |\n| How-To | \"How to automate your pipeline\" |\n| Number | \"7 mistakes killing conversions\" |\n| Negative | \"Stop losing leads\" |\n| Curiosity | \"The one change that tripled bookings\" |\n| Transformation | \"From 50 to 500 leads\" |\n\nBe specific. Lead with outcome, not method.\n\n## 4.4 CTAs\n\n**Bad:** Submit, Click here, Learn more\n\n**Good:** \"Start my free trial\", \"Get the template now\", \"Book my strategy call\"\n\n**Formula:** [Action Verb] + [What They Get] + [Urgency\u002FEase]\n\nPlace: above fold, after value, multiple on long pages.\n\n## 4.5 Emotional Triggers\n\n| Trigger | Example |\n|---------|---------|\n| FOMO | \"Only 3 spots left\" |\n| Fear of loss | \"Every day without this, you're losing $X\" |\n| Status | \"Join 10,000+ top agencies\" |\n| Ease | \"Set it up once. Forget forever.\" |\n| Frustration | \"Tired of tools that deliver nothing?\" |\n| Hope | \"Yes, you CAN hit $10K MRR\" |\n\n## 4.6 Objection Handling\n\n| Objection | Response |\n|-----------|----------|\n| Too expensive | Show ROI: \"Pays for itself in 2 weeks\" |\n| Won't work for me | Social proof from similar customer |\n| No time | \"Setup takes 10 minutes\" |\n| What if it fails | \"30-day money-back guarantee\" |\n| Need to think | Urgency\u002Fscarcity |\n\nPlace in FAQ, testimonials, near CTA.\n\n## 4.7 Proof Types\n\nTestimonials (with name\u002Ftitle), Case studies, Data\u002Fmetrics, Social proof, Certifications\n\n---\n\n# 5. Visual Art\n\nPhilosophy-first workflow. Two output modes.\n\n## 5.1 Output Modes\n\n| Mode | Output | When |\n|------|--------|------|\n| Static | PDF\u002FPNG | Posters, print, design assets |\n| Interactive | HTML (p5.js) | Generative art, explorable variations |\n\n## 5.2 Workflow\n\n### Step 1: Philosophy Creation\nName the movement (1-2 words). Articulate philosophy (4-6 paragraphs) covering:\n- Static: space, form, color, scale, rhythm, hierarchy\n- Interactive: computation, emergence, noise, parametric variation\n\n### Step 2: Conceptual Seed\nIdentify subtle, niche reference — sophisticated, not literal. Jazz musician quoting another song.\n\n### Step 3: Creation\n\n**Static Mode:**\n- Single page, highly visual, design-forward\n- Repeating patterns, perfect shapes\n- Sparse typography from `canvas-fonts\u002F`\n- Nothing overlaps, proper margins\n- Output: `.pdf` or `.png` + philosophy `.md`\n\n**Interactive Mode:**\n1. Read `templates\u002Fviewer.html` first\n2. Keep FIXED sections (header, sidebar, seed controls)\n3. Replace VARIABLE sections (algorithm, parameters)\n4. Seeded randomness: `randomSeed(seed); noiseSeed(seed);`\n5. Output: single self-contained HTML\n\n### Step 4: Refinement\nRefine, don't add. Make it crisp. Polish into masterpiece.\n\n---\n\n# Quality Gates\n**Design:**\n- [ ] Mobile layout collapse (`w-full`, `px-4`) for high-variance designs\n- [ ] `min-h-[100dvh]` not `h-screen`\n- [ ] Empty, loading, error states provided\n- [ ] Cards omitted where spacing suffices\n\n**Motion:**\n- [ ] Correct tool per selection matrix\n- [ ] No GSAP + Framer mixed in same component\n- [ ] All `useEffect` have cleanup returns\n- [ ] `prefers-reduced-motion` respected\n- [ ] Perpetual animations in `React.memo` leaf components\n- [ ] Only GPU properties animated\n- [ ] Heavy libraries lazy-loaded\n\n**General:**\n- [ ] Dependencies verified in `package.json`\n- [ ] **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.\n- [ ] **All media assets exist as local files** in the project's assets directory\n- [ ] Asset prompts confirmed with user before generation\n\n---\n\n*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\u002FGreenSock is a trademark of GreenSock Inc. Three.js, Framer Motion, Lottie, Astro, and all other product names are trademarks of their respective owners.*\n","# Frontend Studio\n\nBuild complete, production-ready frontend pages by orchestrating 5 specialized capabilities: design engineering, motion systems, AI-generated assets, persuasive copy, and generative art.\n\n## Invocation\n\n```\n\u002Ffrontend-dev \u003Crequest>\n```\n\nThe user provides their request as natural language (e.g. \"build a landing page for a music streaming app\").\n\n## Skill Structure\n\n```\nfrontend-dev\u002F\n├── SKILL.md                      # Core skill (this file)\n├── scripts\u002F                      # Asset generation scripts\n│   ├── minimax_tts.py            # Text-to-speech\n│   ├── minimax_music.py          # Music generation\n│   ├── minimax_video.py          # Video generation (async)\n│   └── minimax_image.py          # Image generation\n├── references\u002F                   # Detailed guides (read as needed)\n│   ├── minimax-cli-reference.md  # CLI flags quick reference\n│   ├── asset-prompt-guide.md     # Asset prompt engineering rules\n│   ├── minimax-tts-guide.md      # TTS usage & voices\n│   ├── minimax-music-guide.md    # Music prompts & lyrics format\n│   ├── minimax-video-guide.md    # Camera commands & models\n│   ├── minimax-image-guide.md    # Ratios & batch generation\n│   ├── minimax-voice-catalog.md  # All voice IDs\n│   ├── motion-recipes.md         # Animation code snippets\n│   ├── env-setup.md              # Environment setup\n│   └── troubleshooting.md        # Common issues\n├── templates\u002F                    # Visual art templates\n│   ├── viewer.html               # p5.js interactive art base\n│   └── generator_template.js     # p5.js code reference\n└── canvas-fonts\u002F                 # Static art fonts (TTF + licenses)\n```\n\n## Project Structure\n\n### Assets (Universal)\n\nAll frameworks use the same asset organization:\n\n```\nassets\u002F\n├── images\u002F\n│   ├── hero-landing-1710xxx.webp\n│   ├── icon-feature-01.webp\n│   └── bg-pattern.svg\n├── videos\u002F\n│   ├── hero-bg-1710xxx.mp4\n│   └── demo-preview.mp4\n└── audio\u002F\n    ├── bgm-ambient-1710xxx.mp3\n    └── tts-intro-1710xxx.mp3\n```\n\n**Asset naming:** `{type}-{descriptor}-{timestamp}.{ext}`\n\n### By Framework\n\n| Framework | Asset Location | Component Location |\n|-----------|---------------|-------------------|\n| **Pure HTML** | `.\u002Fassets\u002F` | N\u002FA (inline or `.\u002Fjs\u002F`) |\n| **React\u002FNext.js** | `public\u002Fassets\u002F` | `src\u002Fcomponents\u002F` |\n| **Vue\u002FNuxt** | `public\u002Fassets\u002F` | `src\u002Fcomponents\u002F` |\n| **Svelte\u002FSvelteKit** | `static\u002Fassets\u002F` | `src\u002Flib\u002Fcomponents\u002F` |\n| **Astro** | `public\u002Fassets\u002F` | `src\u002Fcomponents\u002F` |\n\n### Pure HTML\n\n```\nproject\u002F\n├── index.html\n├── assets\u002F\n│   ├── images\u002F\n│   ├── videos\u002F\n│   └── audio\u002F\n├── css\u002F\n│   └── styles.css\n└── js\u002F\n    └── main.js           # Animations (GSAP\u002Fvanilla)\n```\n\n### React \u002F Next.js\n\n```\nproject\u002F\n├── public\u002Fassets\u002F        # Static assets\n├── src\u002F\n│   ├── components\u002F\n│   │   ├── ui\u002F           # Button, Card, Input\n│   │   ├── sections\u002F     # Hero, Features, CTA\n│   │   └── motion\u002F       # RevealSection, StaggerGrid\n│   ├── lib\u002F\n│   ├── styles\u002F\n│   └── app\u002F              # Pages\n└── package.json\n```\n\n### Vue \u002F Nuxt\n\n```\nproject\u002F\n├── public\u002Fassets\u002F\n├── src\u002F                  # or root for Nuxt\n│   ├── components\u002F\n│   │   ├── ui\u002F\n│   │   ├── sections\u002F\n│   │   └── motion\u002F\n│   ├── composables\u002F      # Shared logic\n│   ├── pages\u002F\n│   └── assets\u002F           # Processed assets (optional)\n└── package.json\n```\n\n### Astro\n\n```\nproject\u002F\n├── public\u002Fassets\u002F\n├── src\u002F\n│   ├── components\u002F       # .astro, .tsx, .vue, .svelte\n│   ├── layouts\u002F\n│   ├── pages\u002F\n│   └── styles\u002F\n└── package.json\n```\n\n**Component naming:** PascalCase (`HeroSection.tsx`, `HeroSection.vue`, `HeroSection.astro`)\n\n---\n\n## Compliance\n\n**All rules in this skill are mandatory. Violating any rule is a blocking error — fix before proceeding or delivering.**\n\n---\n\n## Workflow\n### Phase 1: Design Architecture\n1. Analyze the request — determine page type and context\n2. Set design dials based on page type\n3. Plan layout sections and identify asset needs\n\n### Phase 2: Motion Architecture\n1. Select animation tools per section (see Tool Selection Matrix)\n2. Plan motion sequences following performance guardrails\n\n### Phase 3: Asset Generation\nGenerate all image\u002Fvideo\u002Faudio assets using `scripts\u002F`. NEVER use placeholder URLs (unsplash, picsum, placeholder.com, via.placeholder, placehold.co, etc.) or external URLs.\n\n1. Parse asset requirements (type, style, spec, usage)\n2. Craft optimized prompts, show to user, confirm before generating\n3. Execute via scripts, save to project — do NOT proceed to Phase 5 until all assets are saved locally\n\n### Phase 4: Copywriting & Content\nFollow copywriting frameworks (AIDA, PAS, FAB) to craft all text content. Do NOT use \"Lorem ipsum\" — write real copy.\n\n### Phase 5: Build UI\nScaffold the project and build each section following Design and Motion rules. Integrate generated assets and copy. All `\u003Cimg>`, `\u003Cvideo>`, `\u003Csource>`, and CSS `background-image` MUST reference local assets from Phase 3.\n\n### Phase 6: Quality Gates\nRun final checklist (see Quality Gates section).\n\n---\n\n# 1. Design Engineering\n\n## 1.1 Baseline Configuration\n\n| Dial | Default | Range |\n|------|---------|-------|\n| DESIGN_VARIANCE | 8 | 1=Symmetry, 10=Asymmetric |\n| MOTION_INTENSITY | 6 | 1=Static, 10=Cinematic |\n| VISUAL_DENSITY | 4 | 1=Airy, 10=Packed |\n\nAdapt dynamically based on user requests.\n\n## 1.2 Architecture Conventions\n- **DEPENDENCY VERIFICATION:** Check `package.json` before importing any library. Output install command if missing.\n- **Framework:** React\u002FNext.js. Default to Server Components. Interactive components must be isolated `\"use client\"` leaf components.\n- **Styling:** Tailwind CSS. Check version in `package.json` — NEVER mix v3\u002Fv4 syntax.\n- **ANTI-EMOJI POLICY:** NEVER use emojis anywhere. Use Phosphor or Radix icons only.\n- **Viewport:** Use `min-h-[100dvh]` not `h-screen`. Use CSS Grid not flex percentage math.\n- **Layout:** `max-w-[1400px] mx-auto` or `max-w-7xl`.\n\n## 1.3 Design Rules\n| Rule | Directive |\n|------|-----------|\n| Typography | Headlines: `text-4xl md:text-6xl tracking-tighter`. Body: `text-base leading-relaxed max-w-[65ch]`. **NEVER** use Inter — use Geist\u002FOutfit\u002FSatoshi. **NEVER** use Serif on dashboards. |\n| Color | Max 1 accent, saturation \u003C 80%. **NEVER** use AI purple\u002Fblue. Stick to one palette. |\n| Layout | **NEVER** use centered heroes when VARIANCE > 4. Force split-screen or asymmetric layouts. |\n| Cards | **NEVER** use generic cards when DENSITY > 7. Use `border-t`, `divide-y`, or spacing. |\n| States | **ALWAYS** implement: Loading (skeleton), Empty, Error, Tactile feedback (`scale-[0.98]`). |\n| Forms | Label above input. Error below. `gap-2` for input blocks. |\n\n## 1.4 Anti-Slop Techniques\n\n- **Liquid Glass:** `backdrop-blur` + `border-white\u002F10` + `shadow-[inset_0_1px_0_rgba(255,255,255,0.1)]`\n- **Magnetic Buttons:** Use `useMotionValue`\u002F`useTransform` — never `useState` for continuous animations\n- **Perpetual Motion:** When INTENSITY > 5, add infinite micro-animations (Pulse, Float, Shimmer)\n- **Layout Transitions:** Use Framer `layout` and `layoutId` props\n- **Stagger:** Use `staggerChildren` or CSS `animation-delay: calc(var(--index) * 100ms)`\n\n## 1.5 Forbidden Patterns\n| Category | Banned |\n|----------|--------|\n| Visual | Neon glows, pure black (#000), oversaturated accents, gradient text on headers, custom cursors |\n| Typography | Inter font, oversized H1s, Serif on dashboards |\n| Layout | 3-column equal card rows, floating elements with awkward gaps |\n| Components | Default shadcn\u002Fui without customization |\n\n## 1.6 Creative Arsenal\n\n| Category | Patterns |\n|----------|----------|\n| Navigation | Dock magnification, Magnetic button, Gooey menu, Dynamic island, Radial menu, Speed dial, Mega menu |\n| Layout | Bento grid, Masonry, Chroma grid, Split-screen scroll, Curtain reveal |\n| Cards | Parallax tilt, Spotlight border, Glassmorphism, Holographic foil, Swipe stack, Morphing modal |\n| Scroll | Sticky stack, Horizontal hijack, Locomotive sequence, Zoom parallax, Progress path, Liquid swipe |\n| Gallery | Dome gallery, Coverflow, Drag-to-pan, Accordion slider, Hover trail, Glitch effect |\n| Text | Kinetic marquee, Text mask reveal, Scramble effect, Circular path, Gradient stroke, Kinetic grid |\n| Micro | Particle explosion, Pull-to-refresh, Skeleton shimmer, Directional hover, Ripple click, SVG draw, Mesh gradient, Lens blur |\n\n## 1.7 Bento Paradigm\n\n- **Palette:** Background `#f9fafb`, cards pure white with `border-slate-200\u002F50`\n- **Surfaces:** `rounded-[2.5rem]`, diffusion shadow\n- **Typography:** Geist\u002FSatoshi, `tracking-tight` headers\n- **Labels:** Outside and below cards\n- **Animation:** Spring physics (`stiffness: 100, damping: 20`), infinite loops, `React.memo` isolation\n\n**5-Card Archetypes:**\n1. Intelligent List — auto-sorting with `layoutId`\n2. Command Input — typewriter + blinking cursor\n3. Live Status — breathing indicators\n4. Wide Data Stream — infinite horizontal carousel\n5. Contextual UI — staggered highlight + float-in toolbar\n\n## 1.8 Brand Override\n\nWhen brand styling is active:\n- Dark: `#141413`, Light: `#faf9f5`, Mid: `#b0aea5`, Subtle: `#e8e6dc`\n- Accents: Orange `#d97757`, Blue `#6a9bcc`, Green `#788c5d`\n- Fonts: Poppins (headings), Lora (body)\n\n---\n\n# 2. Motion Engine\n\n## 2.1 Tool Selection Matrix\n\n| Need | Tool |\n|------|------|\n| UI enter\u002Fexit\u002Flayout | **Framer Motion** — `AnimatePresence`, `layoutId`, springs |\n| Scroll storytelling (pin, scrub) | **GSAP + ScrollTrigger** — frame-accurate control |\n| Looping icons | **Lottie** — lazy-load (~50KB) |\n| 3D\u002FWebGL | **Three.js \u002F R3F** — isolated `\u003CCanvas>`, own `\"use client\"` boundary |\n| Hover\u002Ffocus states | **CSS only** — zero JS cost |\n| Native scroll-driven | **CSS** — `animation-timeline: scroll()` |\n\n**Conflict Rules [MANDATORY]:**\n- NEVER mix GSAP + Framer Motion in same component\n- R3F MUST live in isolated Canvas wrapper\n- ALWAYS lazy-load Lottie, GSAP, Three.js\n\n## 2.2 Intensity Scale\n\n| Level | Techniques |\n|-------|------------|\n| 1-2 Subtle | CSS transitions only, 150-300ms |\n| 3-4 Smooth | CSS keyframes + Framer animate, stagger ≤3 items |\n| 5-6 Fluid | `whileInView`, magnetic hover, parallax tilt |\n| 7-8 Cinematic | GSAP ScrollTrigger, pinned sections, horizontal hijack |\n| 9-10 Immersive | Full scroll sequences, Three.js particles, WebGL shaders |\n\n## 2.3 Animation Recipes\n\nSee `references\u002Fmotion-recipes.md` for full code. Summary:\n\n| Recipe | Tool | Use For |\n|--------|------|---------|\n| Scroll Reveal | Framer | Fade+slide on viewport entry |\n| Stagger Grid | Framer | Sequential list animations |\n| Pinned Timeline | GSAP | Horizontal scroll with pinning |\n| Tilt Card | Framer | Mouse-tracking 3D perspective |\n| Magnetic Button | Framer | Cursor-attracted buttons |\n| Text Scramble | Vanilla | Matrix-style decode effect |\n| SVG Path Draw | CSS | Scroll-linked path animation |\n| Horizontal Scroll | GSAP | Vertical-to-horizontal hijack |\n| Particle Background | R3F | Decorative WebGL particles |\n| Layout Morph | Framer | Card-to-modal expansion |\n\n## 2.4 Performance Rules\n**GPU-only properties (ONLY animate these):** `transform`, `opacity`, `filter`, `clip-path`\n\n**NEVER animate:** `width`, `height`, `top`, `left`, `margin`, `padding`, `font-size` — if you need these effects, use `transform: scale()` or `clip-path` instead.\n\n**Isolation:**\n- Perpetual animations MUST be in `React.memo` leaf components\n- `will-change: transform` ONLY during animation\n- `contain: layout style paint` on heavy containers\n\n**Mobile:**\n- ALWAYS respect `prefers-reduced-motion`\n- ALWAYS disable parallax\u002F3D on `pointer: coarse`\n- Cap particles: desktop 800, tablet 300, mobile 100\n- Disable GSAP pin on mobile \u003C 768px\n\n**Cleanup:** Every `useEffect` with GSAP\u002Fobservers MUST `return () => ctx.revert()`\n\n## 2.5 Springs & Easings\n\n| Feel | Framer Config |\n|------|---------------|\n| Snappy | `stiffness: 300, damping: 30` |\n| Smooth | `stiffness: 150, damping: 20` |\n| Bouncy | `stiffness: 100, damping: 10` |\n| Heavy | `stiffness: 60, damping: 20` |\n\n| CSS Easing | Value |\n|------------|-------|\n| Smooth decel | `cubic-bezier(0.16, 1, 0.3, 1)` |\n| Smooth accel | `cubic-bezier(0.7, 0, 0.84, 0)` |\n| Elastic | `cubic-bezier(0.34, 1.56, 0.64, 1)` |\n\n## 2.6 Accessibility\n- ALWAYS wrap motion in `prefers-reduced-motion` check\n- NEVER flash content > 3 times\u002Fsecond (seizure risk)\n- ALWAYS provide visible focus rings (use `outline` not `box-shadow`)\n- ALWAYS add `aria-live=\"polite\"` for dynamically revealed content\n- ALWAYS include pause button for auto-playing animations\n\n## 2.7 Dependencies\n\n```bash\nnpm install framer-motion           # UI (keep at top level)\nnpm install gsap                    # Scroll (lazy-load)\nnpm install lottie-react            # Icons (lazy-load)\nnpm install three @react-three\u002Ffiber @react-three\u002Fdrei  # 3D (lazy-load)\n```\n\n---\n\n# 3. Asset Generation\n\n## 3.1 Scripts\n\n| Type | Script | Pattern |\n|------|--------|---------|\n| TTS | `scripts\u002Fminimax_tts.py` | Sync |\n| Music | `scripts\u002Fminimax_music.py` | Sync |\n| Video | `scripts\u002Fminimax_video.py` | Async (create → poll → download) |\n| Image | `scripts\u002Fminimax_image.py` | Sync |\n\nEnv: `MINIMAX_API_KEY` (required).\n\n## 3.2 Workflow\n1. **Parse:** type, quantity, style, spec, usage\n2. **Craft prompt:** Be specific (composition, lighting, style). **NEVER** include text in image prompts.\n3. **Execute:** Show prompt to user, **MUST confirm before generating**, then run script\n4. **Save:** `\u003Cproject>\u002Fpublic\u002Fassets\u002F{images,videos,audio}\u002F` as `{type}-{descriptor}-{timestamp}.{ext}` — **MUST save locally**\n5. **Post-process:** Images → WebP, Videos → ffmpeg compress, Audio → normalize\n6. **Deliver:** File path + code snippet + CSS suggestion\n\n## 3.3 Preset Shortcuts\n\n| Shortcut | Spec |\n|----------|------|\n| `hero` | 16:9, cinematic, text-safe |\n| `thumb` | 1:1, centered subject |\n| `icon` | 1:1, flat, clean background |\n| `avatar` | 1:1, portrait, circular crop ready |\n| `banner` | 21:9, OG\u002Fsocial |\n| `bg-video` | 768P, 6s, `[Static shot]` |\n| `video-hd` | 1080P, 6s |\n| `bgm` | 30s, no vocals, loopable |\n| `tts` | MiniMax HD, MP3 |\n\n## 3.4 Reference\n\n- `references\u002Fminimax-cli-reference.md` — CLI flags\n- `references\u002Fasset-prompt-guide.md` — Prompt rules\n- `references\u002Fminimax-voice-catalog.md` — Voice IDs\n- `references\u002Fminimax-tts-guide.md` — TTS usage\n- `references\u002Fminimax-music-guide.md` — Music generation (prompts, lyrics, structure tags)\n- `references\u002Fminimax-video-guide.md` — Camera commands\n- `references\u002Fminimax-image-guide.md` — Ratios, batch\n\n---\n\n# 4. Copywriting\n\n## 4.1 Core Job\n\n1. Grab attention → 2. Create desire → 3. Remove friction → 4. Prompt action\n\n## 4.2 Frameworks\n\n**AIDA** (landing pages, emails):\n```\nATTENTION:  Bold headline (promise or pain)\nINTEREST:   Elaborate problem (\"yes, that's me\")\nDESIRE:     Show transformation\nACTION:     Clear CTA\n```\n\n**PAS** (pain-driven products):\n```\nPROBLEM:    State clearly\nAGITATE:    Make urgent\nSOLUTION:   Your product\n```\n\n**FAB** (product differentiation):\n```\nFEATURE:    What it does\nADVANTAGE:  Why it matters\nBENEFIT:    What customer gains\n```\n\n## 4.3 Headlines\n\n| Formula | Example |\n|---------|---------|\n| Promise | \"Double open rates in 30 days\" |\n| Question | \"Still wasting 10 hours\u002Fweek?\" |\n| How-To | \"How to automate your pipeline\" |\n| Number | \"7 mistakes killing conversions\" |\n| Negative | \"Stop losing leads\" |\n| Curiosity | \"The one change that tripled bookings\" |\n| Transformation | \"From 50 to 500 leads\" |\n\nBe specific. Lead with outcome, not method.\n\n## 4.4 CTAs\n\n**Bad:** Submit, Click here, Learn more\n\n**Good:** \"Start my free trial\", \"Get the template now\", \"Book my strategy call\"\n\n**Formula:** [Action Verb] + [What They Get] + [Urgency\u002FEase]\n\nPlace: above fold, after value, multiple on long pages.\n\n## 4.5 Emotional Triggers\n\n| Trigger | Example |\n|---------|---------|\n| FOMO | \"Only 3 spots left\" |\n| Fear of loss | \"Every day without this, you're losing $X\" |\n| Status | \"Join 10,000+ top agencies\" |\n| Ease | \"Set it up once. Forget forever.\" |\n| Frustration | \"Tired of tools that deliver nothing?\" |\n| Hope | \"Yes, you CAN hit $10K MRR\" |\n\n## 4.6 Objection Handling\n\n| Objection | Response |\n|-----------|----------|\n| Too expensive | Show ROI: \"Pays for itself in 2 weeks\" |\n| Won't work for me | Social proof from similar customer |\n| No time | \"Setup takes 10 minutes\" |\n| What if it fails | \"30-day money-back guarantee\" |\n| Need to think | Urgency\u002Fscarcity |\n\nPlace in FAQ, testimonials, near CTA.\n\n## 4.7 Proof Types\n\nTestimonials (with name\u002Ftitle), Case studies, Data\u002Fmetrics, Social proof, Certifications\n\n---\n\n# 5. Visual Art\n\nPhilosophy-first workflow. Two output modes.\n\n## 5.1 Output Modes\n\n| Mode | Output | When |\n|------|--------|------|\n| Static | PDF\u002FPNG | Posters, print, design assets |\n| Interactive | HTML (p5.js) | Generative art, explorable variations |\n\n## 5.2 Workflow\n\n### Step 1: Philosophy Creation\nName the movement (1-2 words). Articulate philosophy (4-6 paragraphs) covering:\n- Static: space, form, color, scale, rhythm, hierarchy\n- Interactive: computation, emergence, noise, parametric variation\n\n### Step 2: Conceptual Seed\nIdentify subtle, niche reference — sophisticated, not literal. Jazz musician quoting another song.\n\n### Step 3: Creation\n\n**Static Mode:**\n- Single page, highly visual, design-forward\n- Repeating patterns, perfect shapes\n- Sparse typography from `canvas-fonts\u002F`\n- Nothing overlaps, proper margins\n- Output: `.pdf` or `.png` + philosophy `.md`\n\n**Interactive Mode:**\n1. Read `templates\u002Fviewer.html` first\n2. Keep FIXED sections (header, sidebar, seed controls)\n3. Replace VARIABLE sections (algorithm, parameters)\n4. Seeded randomness: `randomSeed(seed); noiseSeed(seed);`\n5. Output: single self-contained HTML\n\n### Step 4: Refinement\nRefine, don't add. Make it crisp. Polish into masterpiece.\n\n---\n\n# Quality Gates\n**Design:**\n- [ ] Mobile layout collapse (`w-full`, `px-4`) for high-variance designs\n- [ ] `min-h-[100dvh]` not `h-screen`\n- [ ] Empty, loading, error states provided\n- [ ] Cards omitted where spacing suffices\n\n**Motion:**\n- [ ] Correct tool per selection matrix\n- [ ] No GSAP + Framer mixed in same component\n- [ ] All `useEffect` have cleanup returns\n- [ ] `prefers-reduced-motion` respected\n- [ ] Perpetual animations in `React.memo` leaf components\n- [ ] Only GPU properties animated\n- [ ] Heavy libraries lazy-loaded\n\n**General:**\n- [ ] Dependencies verified in `package.json`\n- [ ] **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.\n- [ ] **All media assets exist as local files** in the project's assets directory\n- [ ] Asset prompts confirmed with user before generation\n\n---\n\n*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\u002FGreenSock is a trademark of GreenSock Inc. Three.js, Framer Motion, Lottie, Astro, and all other product names are trademarks of their respective owners.*\n",{"name":5,"license":15,"metadata":60,"description":70,"description_en":71,"description_zh":72},{"sources":61,"version":69,"category":37},[62,63,64,65,66,67,68],"Framer Motion documentation","GSAP \u002F GreenSock documentation","Three.js documentation","Tailwind CSS documentation","React \u002F Next.js documentation","AIDA Framework (Elmo Lewis)","p5.js documentation","1.0.0","Full-stack frontend development combining premium UI design, cinematic animations,\nAI-generated media assets, persuasive copywriting, and visual art. Builds complete,\nvisually striking web pages with real media, advanced motion, and compelling copy.\nUse when: building landing pages, marketing sites, product pages, dashboards,\ngenerating media assets (image\u002Fvideo\u002Faudio\u002Fmusic), writing conversion copy,\ncreating generative art, or implementing cinematic scroll animations.\n","Frontend dev with AI media, animations & persuasive copy","前端开发与 AI 媒体生成","main","469e430d8b1f61ccc1bf502e5448161944831c41","skills-marketplace\u002Fskills\u002Ffrontend-dev",4,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy","https:\u002F\u002Fgithub.com\u002Fzhizhunbao","2026-04-01 01:41:45",{"source":8,"skillName":5,"commands":81,"prompt":91,"zipAvailable":92},[82,85,88],{"tool":83,"command":84},"npx","npx skills add zhizhunbao\u002Fworkbuddy --skill frontend-dev",{"tool":86,"command":87},"bunx","bunx skills add zhizhunbao\u002Fworkbuddy --skill frontend-dev",{"tool":89,"command":90},"pnpm","pnpm dlx skills add zhizhunbao\u002Fworkbuddy --skill frontend-dev","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002FSKILL.md",true,[94,100,106,110,114,118,122,126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222,226,230,233,237,241,245,248,252,256,260,264,268,272,276,280,284,288,292,296,300,304,308,311,315,318,322,326,330,334,338,342,346,350,354,357,361,364,368,372,376,380,384,388,392,396,400,403,407,411,415,419,423,427,431,435,439,443,447,451,455,461,465,469,473,477],{"path":95,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":98,"sourceHtmlUrl":99},"canvas-fonts\u002FArsenalSC-OFL.txt","REFERENCE","参考文档",4373,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FArsenalSC-OFL.txt",{"path":101,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":104,"sourceHtmlUrl":105},"canvas-fonts\u002FArsenalSC-Regular.ttf","ASSET","资产文件",165848,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FArsenalSC-Regular.ttf",{"path":107,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":108,"sourceHtmlUrl":109},"canvas-fonts\u002FBigShoulders-Bold.ttf",94528,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FBigShoulders-Bold.ttf",{"path":111,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":112,"sourceHtmlUrl":113},"canvas-fonts\u002FBigShoulders-OFL.txt",4397,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FBigShoulders-OFL.txt",{"path":115,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":116,"sourceHtmlUrl":117},"canvas-fonts\u002FBigShoulders-Regular.ttf",94396,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FBigShoulders-Regular.ttf",{"path":119,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":120,"sourceHtmlUrl":121},"canvas-fonts\u002FBoldonse-OFL.txt",4390,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FBoldonse-OFL.txt",{"path":123,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":124,"sourceHtmlUrl":125},"canvas-fonts\u002FBoldonse-Regular.ttf",77168,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FBoldonse-Regular.ttf",{"path":127,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":128,"sourceHtmlUrl":129},"canvas-fonts\u002FBricolageGrotesque-Bold.ttf",90952,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FBricolageGrotesque-Bold.ttf",{"path":131,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":132,"sourceHtmlUrl":133},"canvas-fonts\u002FBricolageGrotesque-OFL.txt",4403,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FBricolageGrotesque-OFL.txt",{"path":135,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":136,"sourceHtmlUrl":137},"canvas-fonts\u002FBricolageGrotesque-Regular.ttf",90920,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FBricolageGrotesque-Regular.ttf",{"path":139,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":140,"sourceHtmlUrl":141},"canvas-fonts\u002FCrimsonPro-Bold.ttf",107352,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FCrimsonPro-Bold.ttf",{"path":143,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":144,"sourceHtmlUrl":145},"canvas-fonts\u002FCrimsonPro-Italic.ttf",108828,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FCrimsonPro-Italic.ttf",{"path":147,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":148,"sourceHtmlUrl":149},"canvas-fonts\u002FCrimsonPro-OFL.txt",4394,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FCrimsonPro-OFL.txt",{"path":151,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":152,"sourceHtmlUrl":153},"canvas-fonts\u002FCrimsonPro-Regular.ttf",106696,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FCrimsonPro-Regular.ttf",{"path":155,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":156,"sourceHtmlUrl":157},"canvas-fonts\u002FDMMono-OFL.txt",4392,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FDMMono-OFL.txt",{"path":159,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":160,"sourceHtmlUrl":161},"canvas-fonts\u002FDMMono-Regular.ttf",48852,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FDMMono-Regular.ttf",{"path":163,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":164,"sourceHtmlUrl":165},"canvas-fonts\u002FEricaOne-OFL.txt",4410,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FEricaOne-OFL.txt",{"path":167,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":168,"sourceHtmlUrl":169},"canvas-fonts\u002FEricaOne-Regular.ttf",24872,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FEricaOne-Regular.ttf",{"path":171,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":172,"sourceHtmlUrl":173},"canvas-fonts\u002FGeistMono-Bold.ttf",78304,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FGeistMono-Bold.ttf",{"path":175,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":176,"sourceHtmlUrl":177},"canvas-fonts\u002FGeistMono-OFL.txt",4388,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FGeistMono-OFL.txt",{"path":179,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":180,"sourceHtmlUrl":181},"canvas-fonts\u002FGeistMono-Regular.ttf",78232,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FGeistMono-Regular.ttf",{"path":183,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":184,"sourceHtmlUrl":185},"canvas-fonts\u002FGloock-OFL.txt",4381,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FGloock-OFL.txt",{"path":187,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":188,"sourceHtmlUrl":189},"canvas-fonts\u002FGloock-Regular.ttf",95156,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FGloock-Regular.ttf",{"path":191,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":192,"sourceHtmlUrl":193},"canvas-fonts\u002FIBMPlexMono-Bold.ttf",136008,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FIBMPlexMono-Bold.ttf",{"path":195,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":196,"sourceHtmlUrl":197},"canvas-fonts\u002FIBMPlexMono-OFL.txt",4363,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FIBMPlexMono-OFL.txt",{"path":199,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":200,"sourceHtmlUrl":201},"canvas-fonts\u002FIBMPlexMono-Regular.ttf",133796,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FIBMPlexMono-Regular.ttf",{"path":203,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":204,"sourceHtmlUrl":205},"canvas-fonts\u002FIBMPlexSerif-Bold.ttf",161000,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FIBMPlexSerif-Bold.ttf",{"path":207,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":208,"sourceHtmlUrl":209},"canvas-fonts\u002FIBMPlexSerif-BoldItalic.ttf",169840,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FIBMPlexSerif-BoldItalic.ttf",{"path":211,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":212,"sourceHtmlUrl":213},"canvas-fonts\u002FIBMPlexSerif-Italic.ttf",170004,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FIBMPlexSerif-Italic.ttf",{"path":215,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":216,"sourceHtmlUrl":217},"canvas-fonts\u002FIBMPlexSerif-Regular.ttf",160380,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FIBMPlexSerif-Regular.ttf",{"path":219,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":220,"sourceHtmlUrl":221},"canvas-fonts\u002FInstrumentSans-Bold.ttf",68084,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FInstrumentSans-Bold.ttf",{"path":223,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":224,"sourceHtmlUrl":225},"canvas-fonts\u002FInstrumentSans-BoldItalic.ttf",70004,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FInstrumentSans-BoldItalic.ttf",{"path":227,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":228,"sourceHtmlUrl":229},"canvas-fonts\u002FInstrumentSans-Italic.ttf",69900,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FInstrumentSans-Italic.ttf",{"path":231,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":132,"sourceHtmlUrl":232},"canvas-fonts\u002FInstrumentSans-OFL.txt","https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FInstrumentSans-OFL.txt",{"path":234,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":235,"sourceHtmlUrl":236},"canvas-fonts\u002FInstrumentSans-Regular.ttf",68028,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FInstrumentSans-Regular.ttf",{"path":238,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":239,"sourceHtmlUrl":240},"canvas-fonts\u002FInstrumentSerif-Italic.ttf",70868,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FInstrumentSerif-Italic.ttf",{"path":242,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":243,"sourceHtmlUrl":244},"canvas-fonts\u002FInstrumentSerif-Regular.ttf",69312,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FInstrumentSerif-Regular.ttf",{"path":246,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":148,"sourceHtmlUrl":247},"canvas-fonts\u002FItaliana-OFL.txt","https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FItaliana-OFL.txt",{"path":249,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":250,"sourceHtmlUrl":251},"canvas-fonts\u002FItaliana-Regular.ttf",27184,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FItaliana-Regular.ttf",{"path":253,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":254,"sourceHtmlUrl":255},"canvas-fonts\u002FJetBrainsMono-Bold.ttf",114828,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FJetBrainsMono-Bold.ttf",{"path":257,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":258,"sourceHtmlUrl":259},"canvas-fonts\u002FJetBrainsMono-OFL.txt",4399,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FJetBrainsMono-OFL.txt",{"path":261,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":262,"sourceHtmlUrl":263},"canvas-fonts\u002FJetBrainsMono-Regular.ttf",114904,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FJetBrainsMono-Regular.ttf",{"path":265,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":266,"sourceHtmlUrl":267},"canvas-fonts\u002FJura-Light.ttf",154308,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FJura-Light.ttf",{"path":269,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":270,"sourceHtmlUrl":271},"canvas-fonts\u002FJura-Medium.ttf",154488,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FJura-Medium.ttf",{"path":273,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":274,"sourceHtmlUrl":275},"canvas-fonts\u002FJura-OFL.txt",4380,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FJura-OFL.txt",{"path":277,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":278,"sourceHtmlUrl":279},"canvas-fonts\u002FLibreBaskerville-OFL.txt",4449,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FLibreBaskerville-OFL.txt",{"path":281,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":282,"sourceHtmlUrl":283},"canvas-fonts\u002FLibreBaskerville-Regular.ttf",147584,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FLibreBaskerville-Regular.ttf",{"path":285,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":286,"sourceHtmlUrl":287},"canvas-fonts\u002FLora-Bold.ttf",133828,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FLora-Bold.ttf",{"path":289,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":290,"sourceHtmlUrl":291},"canvas-fonts\u002FLora-BoldItalic.ttf",140332,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FLora-BoldItalic.ttf",{"path":293,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":294,"sourceHtmlUrl":295},"canvas-fonts\u002FLora-Italic.ttf",139328,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FLora-Italic.ttf",{"path":297,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":298,"sourceHtmlUrl":299},"canvas-fonts\u002FLora-OFL.txt",4423,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FLora-OFL.txt",{"path":301,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":302,"sourceHtmlUrl":303},"canvas-fonts\u002FLora-Regular.ttf",133888,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FLora-Regular.ttf",{"path":305,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":306,"sourceHtmlUrl":307},"canvas-fonts\u002FNationalPark-Bold.ttf",79208,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FNationalPark-Bold.ttf",{"path":309,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":258,"sourceHtmlUrl":310},"canvas-fonts\u002FNationalPark-OFL.txt","https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FNationalPark-OFL.txt",{"path":312,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":313,"sourceHtmlUrl":314},"canvas-fonts\u002FNationalPark-Regular.ttf",76424,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FNationalPark-Regular.ttf",{"path":316,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":196,"sourceHtmlUrl":317},"canvas-fonts\u002FNothingYouCouldDo-OFL.txt","https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FNothingYouCouldDo-OFL.txt",{"path":319,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":320,"sourceHtmlUrl":321},"canvas-fonts\u002FNothingYouCouldDo-Regular.ttf",32020,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FNothingYouCouldDo-Regular.ttf",{"path":323,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":324,"sourceHtmlUrl":325},"canvas-fonts\u002FOutfit-Bold.ttf",55392,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FOutfit-Bold.ttf",{"path":327,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":328,"sourceHtmlUrl":329},"canvas-fonts\u002FOutfit-OFL.txt",4389,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FOutfit-OFL.txt",{"path":331,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":332,"sourceHtmlUrl":333},"canvas-fonts\u002FOutfit-Regular.ttf",54912,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FOutfit-Regular.ttf",{"path":335,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":336,"sourceHtmlUrl":337},"canvas-fonts\u002FPixelifySans-Medium.ttf",51072,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FPixelifySans-Medium.ttf",{"path":339,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":340,"sourceHtmlUrl":341},"canvas-fonts\u002FPixelifySans-OFL.txt",4395,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FPixelifySans-OFL.txt",{"path":343,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":344,"sourceHtmlUrl":345},"canvas-fonts\u002FPoiretOne-OFL.txt",4366,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FPoiretOne-OFL.txt",{"path":347,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":348,"sourceHtmlUrl":349},"canvas-fonts\u002FPoiretOne-Regular.ttf",45244,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FPoiretOne-Regular.ttf",{"path":351,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":352,"sourceHtmlUrl":353},"canvas-fonts\u002FRedHatMono-Bold.ttf",34420,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FRedHatMono-Bold.ttf",{"path":355,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":148,"sourceHtmlUrl":356},"canvas-fonts\u002FRedHatMono-OFL.txt","https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FRedHatMono-OFL.txt",{"path":358,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":359,"sourceHtmlUrl":360},"canvas-fonts\u002FRedHatMono-Regular.ttf",34488,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FRedHatMono-Regular.ttf",{"path":362,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":148,"sourceHtmlUrl":363},"canvas-fonts\u002FSilkscreen-OFL.txt","https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FSilkscreen-OFL.txt",{"path":365,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":366,"sourceHtmlUrl":367},"canvas-fonts\u002FSilkscreen-Regular.ttf",31960,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FSilkscreen-Regular.ttf",{"path":369,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":370,"sourceHtmlUrl":371},"canvas-fonts\u002FSmoochSans-Medium.ttf",59704,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FSmoochSans-Medium.ttf",{"path":373,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":374,"sourceHtmlUrl":375},"canvas-fonts\u002FSmoochSans-OFL.txt",4396,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FSmoochSans-OFL.txt",{"path":377,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":378,"sourceHtmlUrl":379},"canvas-fonts\u002FTektur-Medium.ttf",76248,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FTektur-Medium.ttf",{"path":381,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":382,"sourceHtmlUrl":383},"canvas-fonts\u002FTektur-OFL.txt",4385,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FTektur-OFL.txt",{"path":385,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":386,"sourceHtmlUrl":387},"canvas-fonts\u002FTektur-Regular.ttf",75604,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FTektur-Regular.ttf",{"path":389,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":390,"sourceHtmlUrl":391},"canvas-fonts\u002FWorkSans-Bold.ttf",191304,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FWorkSans-Bold.ttf",{"path":393,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":394,"sourceHtmlUrl":395},"canvas-fonts\u002FWorkSans-BoldItalic.ttf",175772,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FWorkSans-BoldItalic.ttf",{"path":397,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":398,"sourceHtmlUrl":399},"canvas-fonts\u002FWorkSans-Italic.ttf",174280,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FWorkSans-Italic.ttf",{"path":401,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":112,"sourceHtmlUrl":402},"canvas-fonts\u002FWorkSans-OFL.txt","https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FWorkSans-OFL.txt",{"path":404,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":405,"sourceHtmlUrl":406},"canvas-fonts\u002FWorkSans-Regular.ttf",188916,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FWorkSans-Regular.ttf",{"path":408,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":409,"sourceHtmlUrl":410},"canvas-fonts\u002FYoungSerif-OFL.txt",4398,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FYoungSerif-OFL.txt",{"path":412,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":413,"sourceHtmlUrl":414},"canvas-fonts\u002FYoungSerif-Regular.ttf",105136,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fcanvas-fonts\u002FYoungSerif-Regular.ttf",{"path":416,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":417,"sourceHtmlUrl":418},"references\u002Fasset-prompt-guide.md",2020,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Freferences\u002Fasset-prompt-guide.md",{"path":420,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":421,"sourceHtmlUrl":422},"references\u002Fenv-setup.md",649,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Freferences\u002Fenv-setup.md",{"path":424,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":425,"sourceHtmlUrl":426},"references\u002Fminimax-cli-reference.md",5166,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Freferences\u002Fminimax-cli-reference.md",{"path":428,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":429,"sourceHtmlUrl":430},"references\u002Fminimax-image-guide.md",1913,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Freferences\u002Fminimax-image-guide.md",{"path":432,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":433,"sourceHtmlUrl":434},"references\u002Fminimax-music-guide.md",6644,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Freferences\u002Fminimax-music-guide.md",{"path":436,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":437,"sourceHtmlUrl":438},"references\u002Fminimax-tts-guide.md",2192,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Freferences\u002Fminimax-tts-guide.md",{"path":440,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":441,"sourceHtmlUrl":442},"references\u002Fminimax-video-guide.md",2754,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Freferences\u002Fminimax-video-guide.md",{"path":444,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":445,"sourceHtmlUrl":446},"references\u002Fminimax-voice-catalog.md",47494,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Freferences\u002Fminimax-voice-catalog.md",{"path":448,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":449,"sourceHtmlUrl":450},"references\u002Fmotion-recipes.md",10302,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Freferences\u002Fmotion-recipes.md",{"path":452,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":453,"sourceHtmlUrl":454},"references\u002Ftroubleshooting.md",1789,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Freferences\u002Ftroubleshooting.md",{"path":456,"resourceType":457,"resourceTypeDesc":458,"sizeBytes":459,"sourceHtmlUrl":460},"scripts\u002Fminimax_image.py","SCRIPT","脚本",4474,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fscripts\u002Fminimax_image.py",{"path":462,"resourceType":457,"resourceTypeDesc":458,"sizeBytes":463,"sourceHtmlUrl":464},"scripts\u002Fminimax_music.py",5451,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fscripts\u002Fminimax_music.py",{"path":466,"resourceType":457,"resourceTypeDesc":458,"sizeBytes":467,"sourceHtmlUrl":468},"scripts\u002Fminimax_tts.py",3995,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fscripts\u002Fminimax_tts.py",{"path":470,"resourceType":457,"resourceTypeDesc":458,"sizeBytes":471,"sourceHtmlUrl":472},"scripts\u002Fminimax_video.py",6162,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Fscripts\u002Fminimax_video.py",{"path":474,"resourceType":457,"resourceTypeDesc":458,"sizeBytes":475,"sourceHtmlUrl":476},"templates\u002Fgenerator_template.js",7822,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Ftemplates\u002Fgenerator_template.js",{"path":478,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":479,"sourceHtmlUrl":480},"templates\u002Fviewer.html",20714,"https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Ffrontend-dev\u002Ftemplates\u002Fviewer.html",[482,512,538,563,596,622],{"skillNo":483,"name":484,"nameZh":6,"description":485,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":486,"categories":487,"keywords":491,"publishedAt":55},"01M6KBS51KPHYV6GXA7KEH7MMX","skill-scanner","Scan any agent skill for security risks before you install or use it. Powered by Tencent Zhuque Lab A.I.G (AI-Infra-Guard). 100% local static analysis — no file contents or credentials leave your device. Compatible with CodeBuddy, Cursor, Windsurf, Claude Code, OpenClaw and more. Triggers on: 这个 skill 安全吗, skill 安全扫描, 检查 skill 安全, audit skill, scan skill, check skill safety, analyze skill, inspect skill, verify skill, skill security, skill supply chain. Do NOT trigger for general agent usage, full system health checks, project debugging, or normal development.","https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Fskill-scanner\u002FSKILL.md",[488],{"categoryNo":489,"categoryName":490,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511],"skill scanner","scanner","security scanner","debugging","code","analysis","credentials","vulnerability","analyze","only","windsurf","local","project","chain","skill audit","tencent","you","inspect","static","skill security",{"skillNo":513,"name":514,"nameZh":6,"description":515,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":516,"categories":517,"keywords":518,"publishedAt":55},"01M6KBRQP7C41T5SQ72SJXZWP6","shader-dev","Comprehensive GLSL shader techniques for creating stunning visual effects — ray marching, SDF modeling, fluid simulation, particle systems, procedural generation, lighting, post-processing, and more.","https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Fshader-dev\u002FSKILL.md",[],[36,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537],"shader","shader dev","graphics","fluid","Ray","simulation","lighting","visual","generation","modeling","post","processing","GLSL","procedural","post-processing","more","techniques","for","effects",{"skillNo":539,"name":540,"nameZh":6,"description":541,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":542,"categories":543,"keywords":548,"publishedAt":55},"01M6KBRAQBPFT9HRKNPCC7EJZP","react-native-dev","React Native and Expo development guide covering components, styling, animations, navigation,\nstate management, forms, networking, performance optimization, testing, native capabilities,\nand engineering (project structure, deployment, SDK upgrades, CI\u002FCD).\nUse when: building React Native or Expo apps, implementing animations or native UI, managing\nstate, fetching data, writing tests, optimizing performance, deploying to App Store\u002FPlay Store,\nsetting up CI\u002FCD, upgrading Expo SDK, or configuring Tailwind\u002FNativeWind.","https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Freact-native-dev\u002FSKILL.md",[544,547],{"categoryNo":545,"categoryName":546,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[50,36,549,550,551,552,53,553,554,555,556,557,46,558,559,504,560,561,40,562],"react native","native","react native dev","testing","performance","components","documentation","capabilities","ci","up","structure","app","apps","app store",{"skillNo":564,"name":565,"nameZh":6,"description":566,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":567,"categories":568,"keywords":575,"publishedAt":55},"01M6KBQM1S3B60WHYE0JN5ZFGB","pptx-generator","Generate, edit, and read PowerPoint presentations. Create from scratch with PptxGenJS (cover, TOC, content, section divider, summary slides), edit existing PPTX via XML workflows, or extract text with markitdown. Triggers: PPT, PPTX, PowerPoint, presentation, slide, deck, slides.","https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Fpptx-generator\u002FSKILL.md",[569,572],{"categoryNo":570,"categoryName":571,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":573,"categoryName":574,"taxonomyType":32,"taxonomyTypeDesc":33},"01JBSEEDCAT000000000000034","行政与办公人员",[576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595],"pptx","generator","pptx generator","workflows","presentations","powerpoint","create","generate","slides","生成","text","演示","read","edit","toc","deck","triggers","io","presentation","cover",{"skillNo":597,"name":598,"nameZh":6,"description":599,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":600,"categories":601,"keywords":606,"publishedAt":55},"01M6KBP6H9EGBC7P4N0ZF2NPDZ","minimax-xlsx","Open, create, read, analyze, edit, or validate Excel\u002Fspreadsheet files (.xlsx, .xlsm, .csv, .tsv). Use when the user asks to create, build, modify, analyze, read, validate, or format any Excel spreadsheet, financial model, pivot table, or tabular data file. Covers: creating new xlsx from scratch, reading and analyzing existing files, editing existing xlsx with zero format loss, formula recalculation and validation, and applying professional financial formatting standards. Triggers on 'spreadsheet', 'Excel', '.xlsx', '.csv', 'pivot table', 'financial model', 'formula', or any request to produce tabular data in Excel format.","https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Fminimax-xlsx\u002FSKILL.md",[602,605],{"categoryNo":603,"categoryName":604,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000004","电子表格",{"categoryNo":573,"categoryName":574,"taxonomyType":32,"taxonomyTypeDesc":33},[607,608,609,555,610,582,611,612,613,614,500,615,588,589,616,617,618,619,620,621],"xlsx","minimax","minimax xlsx","spreadsheets","analyzing","data","spreadsheet","open","model","files","formula","excel spreadsheets","professional","reading","request",{"skillNo":623,"name":624,"nameZh":6,"description":625,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":626,"categories":627,"keywords":633,"publishedAt":55},"01M6KBP08N725KPCCF3BWRV47Y","minimax-pdf","Use this skill when visual quality and design identity matter for a PDF. CREATE (generate from scratch): \"make a PDF\", \"generate a report\", \"write a proposal\", \"create a resume\", \"beautiful PDF\", \"professional document\", \"cover page\", \"polished PDF\", \"client-ready document\". FILL (complete form fields): \"fill in the form\", \"fill out this PDF\", \"complete the form fields\", \"write values into PDF\", \"what fields does this PDF have\". REFORMAT (apply design to an existing doc): \"reformat this document\", \"apply our style\", \"convert this Markdown\u002Ftext to PDF\", \"make this doc look good\", \"re-style this PDF\". This skill uses a token-based design system: color, typography, and spacing are derived from the document type and flow through every page. The output is print-ready. Prefer this skill when appearance matters, not just when any PDF output is needed.","https:\u002F\u002Fgithub.com\u002Fzhizhunbao\u002Fworkbuddy\u002Fblob\u002Fmain\u002Fskills-marketplace\u002Fskills\u002Fminimax-pdf\u002FSKILL.md",[628,631,632],{"categoryNo":629,"categoryName":630,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":30,"categoryName":31,"taxonomyType":32,"taxonomyTypeDesc":33},[634,608,635,54,636,582,583,637,638,639,586,640,641,642,643,644,619,645,646,647],"PDF","minimax pdf","documents","flow","doc","markdown","write","good","ready","token","proposal","re","spacing","document-generation"]