AgentSkillsCN

frontend-design-system

全面掌握 UI/UX 设计技能,使用 Tailwind CSS、shadcn/ui、Material UI、Chakra UI、Ant Design 与 Mantine 构建现代、响应式网页应用。适用于用户需要:(1) 为项目选择设计系统;(2) 构建响应式布局与组件;(3) 实现带验证的表单;(4) 创建无障碍用户界面;(5) 设计任务管理 UI(待办事项应用、仪表板);(6) 应用响应式设计模式;(7) 实现暗黑模式;或 (8) 构建组件库。可通过诸如“设计待办事项应用”、“创建响应式布局”、“我该用哪个 UI 库?”、“实现暗黑模式”、“构建带验证的表单”、“让这个应用更适配移动端”等短语进行触发。

SKILL.md
--- frontmatter
name: frontend-design-system
description: "Comprehensive UI/UX design skill for building modern, responsive web applications with Tailwind CSS, shadcn/ui, Material UI, Chakra UI, Ant Design, and Mantine. Use when users need to - (1) Choose a design system for their project, (2) Build responsive layouts and components, (3) Implement forms with validation, (4) Create accessible user interfaces, (5) Design task management UIs (todo apps, dashboards), (6) Apply responsive design patterns, (7) Implement dark mode, or (8) Build component libraries. Triggers include requests like 'design a todo app', 'create responsive layout', 'which UI library should I use', 'implement dark mode', 'build a form with validation', or 'make this mobile-friendly'."

Frontend Design System

Build modern, accessible, responsive web applications using industry-leading design systems and best practices.

Core Capabilities

1. Design System Selection

When users ask "which UI library should I use" or need design system guidance:

Read the comparison guide:

code
references/design-system-comparison.md

Decision workflow:

  1. Identify project requirements (bundle size, customization, speed)
  2. Review comparison table for best match
  3. Provide installation commands
  4. Recommend component set for the use case

Quick recommendations:

  • Todo apps / Modern SaaS: shadcn/ui + Tailwind
  • Quick prototypes: Chakra UI or Mantine
  • Enterprise dashboards: Material UI or Ant Design
  • Custom designs: Headless UI + Tailwind
  • TypeScript-heavy: Mantine

2. Responsive Layout Design

When users need mobile-friendly layouts or responsive components:

Read the patterns guide:

code
references/responsive-design-patterns.md

Core principles:

  • Always use mobile-first approach
  • Follow standard breakpoints: sm (640px), md (768px), lg (1024px), xl (1280px)
  • Use grid for card layouts: grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3
  • Use flexbox for navigation: flex flex-col md:flex-row
  • Scale typography: text-sm md:text-base lg:text-lg

3. Tailwind CSS Patterns

When building with Tailwind CSS:

Read Tailwind patterns:

code
references/tailwind-patterns.md

Common patterns to apply:

  • Cards: rounded-lg border bg-card text-card-foreground shadow-sm p-6
  • Buttons: inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90
  • Inputs: flex h-10 w-full rounded-md border border-input bg-background px-3 py-2
  • Dark mode: bg-white dark:bg-slate-950 text-slate-900 dark:text-slate-50

4. shadcn/ui Components

When using shadcn/ui (recommended for most projects):

Read component reference:

code
references/shadcn-components.md

Essential components for todo apps:

bash
npx shadcn-ui@latest add button card input form dialog badge tabs checkbox

Use provided templates:

  • Task card: assets/todo-card-template.tsx
  • Task form: assets/task-form-template.tsx

Pattern: Compose components

tsx
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"
import { Button } from "@/components/ui/button"

<Card>
  <CardHeader>
    <CardTitle>Title</CardTitle>
  </CardHeader>
  <CardContent>
    <p>Content</p>
    <Button>Action</Button>
  </CardContent>
</Card>

5. Material UI Implementation

When users choose Material UI:

Read MUI patterns:

code
references/material-ui-patterns.md

Setup theme first:

tsx
import { ThemeProvider, createTheme } from '@mui/material/styles'

const theme = createTheme({
  palette: {
    primary: { main: '#1976d2' },
  },
})

<ThemeProvider theme={theme}>
  <App />
</ThemeProvider>

Use sx prop for styling:

tsx
<Box sx={{ p: 2, mt: 4, borderRadius: 2 }}>

6. Chakra UI Implementation

When users choose Chakra UI:

Read Chakra patterns:

code
references/chakra-ui-patterns.md

Key advantages:

  • Style props: <Box bg="blue.500" p={4} borderRadius="md">
  • Dark mode built-in: useColorMode(), useColorModeValue()
  • Responsive arrays: <Box w={['100%', '50%', '33%']}>

Layout with Stack:

tsx
<VStack spacing={4} align="stretch">
  <Card>Item 1</Card>
  <Card>Item 2</Card>
</VStack>

7. Form Design & Validation

When building forms with validation:

Use template:

code
assets/task-form-template.tsx

Pattern: React Hook Form + Zod

tsx
import { useForm } from "react-hook-form"
import { zodResolver } from "@hookform/resolvers/zod"
import * as z from "zod"

const schema = z.object({
  title: z.string().min(3),
})

const form = useForm({
  resolver: zodResolver(schema),
})

Always include:

  • Field labels (<FormLabel>)
  • Error messages (<FormMessage>)
  • Helper text (<FormDescription>)
  • Disabled states for loading
  • Proper accessibility attributes

8. Accessibility Patterns

Always apply:

  • Semantic HTML: <button> not <div onClick>
  • ARIA labels: aria-label="Delete task"
  • Screen reader text: <span className="sr-only">Hidden</span>
  • Keyboard navigation: Focus states, tab order
  • Color contrast: WCAG AA minimum (4.5:1)
  • Touch targets: Minimum 44x44px

9. Dark Mode Implementation

Tailwind approach:

tsx
<div className="bg-white dark:bg-slate-950">
<p className="text-slate-900 dark:text-slate-50">

// Theme toggle
import { useTheme } from "next-themes"
const { theme, setTheme } = useTheme()

Chakra UI approach:

tsx
const { colorMode, toggleColorMode } = useColorMode()
const bg = useColorModeValue('white', 'gray.800')

Material UI approach:

tsx
const theme = createTheme({
  palette: {
    mode: prefersDarkMode ? 'dark' : 'light',
  },
})

10. Component Templates

When building todo apps or similar UIs:

Available templates:

  1. Task Card (assets/todo-card-template.tsx)

    • Includes: Checkbox, priority badges, tags, due dates, dropdown menu
    • Variants: Card view, list item view
    • Features: Hover states, accessibility
  2. Task Form (assets/task-form-template.tsx)

    • Includes: Title, description, priority, due date, tags
    • Validation: React Hook Form + Zod
    • Variants: Dialog form, inline form

Usage:

bash
# Read template
Read: assets/todo-card-template.tsx

# Adapt to project's design system
# Modify imports and styling as needed

Workflow Guide

For New Projects

  1. Select Design System

    • Read: references/design-system-comparison.md
    • Consider: Bundle size, customization needs, team experience
    • Provide recommendation with rationale
  2. Setup Theme/Config

    • Install dependencies
    • Configure theme (colors, typography, spacing)
    • Setup dark mode if needed
  3. Build Core Components

    • Start with layout (Container, Grid)
    • Add navigation
    • Implement forms
    • Create card/list components
  4. Apply Responsive Patterns

    • Read: references/responsive-design-patterns.md
    • Mobile-first breakpoints
    • Test at key viewports
  5. Add Accessibility

    • Semantic HTML
    • ARIA labels
    • Keyboard navigation
    • Screen reader support

For Todo App Specifically

  1. Choose design system (recommend shadcn/ui)
  2. Install core components:
    bash
    npx shadcn-ui@latest add button card input form dialog badge tabs checkbox
    
  3. Use templates:
    • Copy assets/todo-card-template.tsx
    • Copy assets/task-form-template.tsx
  4. Customize colors/spacing to match brand
  5. Add responsive layouts from references/responsive-design-patterns.md
  6. Implement dark mode

For Existing Projects

  1. Audit current design system
  2. Identify pain points (bundle size, customization limits, etc.)
  3. If migrating:
    • Read comparison guide for alternatives
    • Plan incremental migration
    • Start with new components
  4. If optimizing:
    • Apply patterns from references
    • Improve responsiveness
    • Add accessibility features

Quick Reference

Common Tasks

"Make this responsive" → Read: references/responsive-design-patterns.md → Apply mobile-first breakpoints → Use grid/flexbox patterns

"Add dark mode" → For Tailwind: Use dark: prefix → For Chakra: Use useColorMode() → For MUI: Configure theme palette mode

"Which UI library?" → Read: references/design-system-comparison.md → Provide recommendation based on requirements

"Build a form with validation" → Use: assets/task-form-template.tsx → Adapt to project's design system → Add custom fields as needed

"Create task card" → Use: assets/todo-card-template.tsx → Modify for specific features

Design Tokens Reference

Spacing scale: 2, 4, 6, 8, 12, 16, 24, 32, 48, 64 (px in 4px increments)

Typography scale: xs (12px), sm (14px), base (16px), lg (18px), xl (20px), 2xl (24px), 3xl (30px)

Breakpoints: sm (640px), md (768px), lg (1024px), xl (1280px), 2xl (1536px)

Border radius: sm (4px), md (8px), lg (16px), full (9999px)

Anti-Patterns to Avoid

❌ Desktop-first responsive design (always start mobile) ❌ Hardcoded colors (use design tokens/theme) ❌ Div soup (use semantic HTML) ❌ Missing accessibility (always include ARIA, focus states) ❌ Inconsistent spacing (use design system scale) ❌ Non-interactive elements with onClick (use button/a) ❌ Tiny touch targets on mobile (<44px)

Resources Summary

  • Tailwind patterns: references/tailwind-patterns.md
  • shadcn/ui components: references/shadcn-components.md
  • Material UI patterns: references/material-ui-patterns.md
  • Chakra UI patterns: references/chakra-ui-patterns.md
  • Design system comparison: references/design-system-comparison.md
  • Responsive patterns: references/responsive-design-patterns.md
  • Task card template: assets/todo-card-template.tsx
  • Task form template: assets/task-form-template.tsx