Skip to content

frontend-pimp

Active router for ALL frontend, UI, styling, and component testing requests — classifies and routes to the correct frontend skill before any response. Use when anything involves styling, components, design systems, visual testing, UI patterns, or frontend frameworks.

ModelSource
sonnetpack: frontend
Full Reference If the request involves frontend in ANY way — styling, CSS, components, UI, layouts, design tokens, theming, animations, responsive design, accessibility, visual testing, Storybook, component testing, UI modernization, style guides, or anything else frontend/UI-related — you MUST route through this skill FIRST.

This is not optional. This is not negotiable. You cannot skip this.

The orchestration layer for all frontend expertise. Not documentation — an active router. Every frontend request flows through this routing table before any response.

Mandatory Announcement — FIRST OUTPUT before anything else:

┏━ 🎨 frontend-pimp ━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ [one-line description of what request/routing] ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

No exceptions. Box frame first, then route.

The frontend pack is armadillo’s UI ecosystem — 16 skills covering frameworks, styling, design systems, animations, accessibility, component development, and visual testing. Takes a project from raw UI to a polished, tested, accessible frontend.

Classify the request. Invoke the matching skill. No response before invocation.

Request PatternSkill
UI vibes, “make it look modern”, style guide, aesthetic direction, UI auditui-craft
Design tokens, CSS architecture, theming, token layers, CSS debuggingdesign-system
Tailwind classes, utility CSS, @theme config, dark modetailwind-css
shadcn/ui components, Radix primitives, component library setupshadcn-ui
React animations, mount/unmount, layout transitions, gesturesframer-motion
Scroll animations, timelines, SplitText, GSAP pluginsgsap
Responsive layout, mobile-first, viewport units, container queriesresponsive-design
Accessibility, WCAG, ARIA, keyboard nav, screen readers, contrastaccessibility
Next.js pages, App Router, RSC, API routes, middlewarenextjs
Astro pages, content collections, islands, static sitesastro
React SPA, Vite config, client-side routingreact-vite
SvelteKit routes, form actions, load functionssveltekit
Storybook setup, component stories, CSF, visual devstorybook
Visual regression, screenshot testing, Chromatic, Argosvisual-regression
Component testing, @testing-library, DOM queries, render teststesting-library
MDX content, remark/rehype plugins, MDX componentsmdx

Before generating ANY custom component, utility, or UI element:

  1. Check shadcn/ui registrynpx shadcn@latest add [component] or search at ui.shadcn.com
  2. Check npm — search for existing, well-maintained packages (10k+ weekly downloads, recent updates)
  3. Check project deps — is something already installed that handles this?
  4. Only then generate custom code — when nothing suitable exists or needs heavy customization

This applies to ALL routed skills. The system should LEVERAGE existing packages, not recreate them.

Examples:

  • Need a date picker? → npx shadcn@latest add calendar (not custom)
  • Need a toast? → npx shadcn@latest add sonner (not custom)
  • Need charts? → recharts or tremor (not custom SVG)
  • Need a carousel? → embla-carousel (not custom)
  • Need form validation? → zod + react-hook-form (not custom)
  • Need icons? → lucide-react (not custom SVG)
  • If a request spans multiple skills, invoke the PRIMARY skill first (closest to the core question)
  • Creative/aesthetic requests → ui-craft first, then implementation skills
  • Technical CSS questions → design-system or tailwind-css (check if architectural or utility-level)
  • “Make it look better” is ALWAYS ui-craft first, never jump straight to Tailwind
  • Framework-specific questions → route to the framework skill directly
  • If unclear which skill fits, default to ui-craft — it covers the broadest creative surface

Before routing, check project state to inform the recommendation:

  • stack.json → read framework, styling, testing choices
  • package.json deps → detect Storybook, testing-library, Playwright, Tailwind
  • brand.json → if exists, ui-craft should integrate brand guidelines
  • tailwind.config.* or @import "tailwindcss" → Tailwind is in use
  • .storybook/ directory → Storybook is configured
StateRecommendation
No styling system detectedSuggest starting with design-system for token architecture
Tailwind present, no design tokensRoute to design-system for token layer setup
Components exist, no storiesSuggest storybook for component development
No visual testingSuggest visual-regression after Storybook is set up
Everything configuredRoute directly to the requested skill
User SaysChain
”Make this look modern”ui-crafttailwind-css / shadcn-ui
”Set up our design system”design-systemtailwind-css
”Build this component”shadcn-uistorybook (for dev + testing)
“Set up component testing”storybook + testing-library + visual-regression
”Add animation to this”framer-motion or gsap (based on stack/complexity)
“This UI looks dated”ui-craft (audit mode) → implementation skills
”Generate a style guide”ui-craft (style guide mode) → design-system (tokens)
SignalRoute To
React component animation, mount/unmount, layoutframer-motion
Scroll-triggered, timeline, complex sequencinggsap
Simple CSS transitions, hover statestailwind-css (built-in transitions)
Both present in stack.jsonAsk which, or recommend based on complexity

Priority Order (when multiple skills apply)

Section titled “Priority Order (when multiple skills apply)”
  1. ui-craft — aesthetics, vibes, creative direction
  2. design-system — architecture, tokens, CSS structure
  3. Framework skill — framework-specific questions
  4. Tool skill — specific tool (Tailwind, shadcn, etc.)
  5. Testing skill — testing components
  • General coding (even if frontend project) → shepherd handles
  • Backend API questions → not frontend-specific
  • Database/ORM questions → not frontend-specific
  • Non-UI testing (unit tests for utils) → vitest/playwright directly
  • Never respond about frontend/UI before invoking the target skill
  • No summarizing, planning to invoke, or explaining what you’re about to do
  • If unclear, ask ONE clarifying question, then route
  • The skill’s content has the verified facts — always defer to it
  • “Make it look good” is ui-craft territory — NEVER jump straight to Tailwind classes
  • ALWAYS check Package-First Principle before generating custom components