Skill: dev-tool-ui
When to Use This Skill
Use this skill when:
- Designing or building a new web dashboard, landing page, or SaaS interface
- Creating React UI components for a developer tool or internal application
- User says "build a UI" or "design this interface"
- Building admin panels, data dashboards, or configuration pages
- Prototyping a new product interface
The Workflow
Follow this exact workflow as a professional frontend developer would:
1. Requirements & Planning
- Clarify the UI purpose, user needs, and feature set
- Identify which components are needed (forms, tables, modals, dashboards, cards, etc.)
- Define the information hierarchy and user flow
- Gather any specific design references or brand guidelines
- Do not start coding yet — planning prevents rework
2. Design System & Architecture
- Define a reusable color palette (dark mode first)
- Establish typography hierarchy and font pairings
- Create consistent spacing and sizing rules
- Plan component composition (atoms → molecules → organisms)
- Sketch layout patterns (sidebar + main, top nav + grid, etc.)
3. Project Setup (Next.js)
- Initialize:
npx create-next-app@latest --typescript
- Install:
npm install tailwindcss shadcn-ui lucide-react framer-motion clsx tailwind-merge
- Configure Tailwind for dark mode (
class strategy in tailwind.config.ts)
- Create folder structure:
app/, components/, lib/, hooks/, public/
- Set up
lib/cn.ts for class name merging
4. Build in Layers
- Layer 1 (Primitives): Base components first — buttons, inputs, cards, badges (use shadcn/ui)
- Layer 2 (Containers): Layout components — grids, flex containers, sections
- Layer 3 (Features): Compose feature components — forms, tables, navigation, modals
- Layer 4 (Pages): Wire features into full pages
- Layer 5 (Polish): Animations, transitions, micro-interactions
5. Test & Refine
- Test responsive behavior (mobile 320px, tablet 768px, desktop 1440px+)
- Verify accessibility (keyboard nav, screen readers, ARIA labels, contrast)
- Check performance (Lighthouse score, animation smoothness, no jank)
- Test on real devices if possible, not just browser DevTools
6. Document & Deliver
- Document component props with TypeDoc comments
- Provide usage examples in code
- Create a visual component guide or Storybook
- Hand off with clear structure and naming conventions
Design System Rules
Color & Atmosphere
- Dark Mode First: Default background
bg-zinc-950
- Borders: Thin, subtle using
border-zinc-800 or border-zinc-700
- Glassmorphic Cards:
bg-zinc-900/40 backdrop-blur-md border border-zinc-800 rounded-xl
- Accent Colors: White/neutral for primary actions, subtle grays for secondary
- Glows: Use radial CSS gradients for ambient lighting effects
Typography
- Sans-serif (Inter, Geist, SF Pro): UI text, labels, body copy
- Monospace (JetBrains Mono, Fira Code): Code blocks, technical content
- Contrast: Maintain WCAG AA+ ratios (4.5:1 minimum for text)
- Line Height: 1.5-1.6 for body text, tighter (1.2-1.3) for headings
Spacing & Layout
- Scale: Use Tailwind's default scale (4px baseline: 4, 8, 12, 16, 24, 32, 40, 48, 64...)
- Grid System: 12-column grid for dashboards, flex for flexible components
- Consistency: All padding/margins should follow the scale
- Gaps: Use
gap-* utilities between flex/grid children
Component Specifications
Buttons
Primary (Action-oriented, highest contrast):
bg-white text-black hover:bg-gray-100 active:bg-gray-200
focus:outline-none focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-zinc-950
font-medium px-4 py-2 rounded-lg transition-colors
Secondary (Subtle, less prominent):
bg-zinc-800 text-white hover:bg-zinc-700 active:bg-zinc-600
focus:outline-none focus:ring-2 focus:ring-zinc-500
font-medium px-4 py-2 rounded-lg transition-colors
Sizes: sm (px-3 py-1.5 text-sm) | md (px-4 py-2) | lg (px-6 py-3 text-lg)
States:
- Disabled:
opacity-50 cursor-not-allowed
- Loading: Show spinner icon, disable interaction
Inputs & Forms
bg-zinc-900 border border-zinc-800 text-white placeholder-zinc-500
focus:border-zinc-600 focus:ring-2 focus:ring-white/20 focus:outline-none
rounded-lg px-3 py-2 transition-all
Labels: text-sm font-medium text-zinc-200
Error States: border-red-500 focus:ring-red-500/20 + error message below input
Success States: border-green-500/50 focus:ring-green-500/20
Cards & Containers
Standard Card (Default for most content):
bg-zinc-900/40 backdrop-blur-md border border-zinc-800 rounded-xl p-6
hover:border-zinc-700 transition-all duration-200
Elevated Card (For emphasis, featured content):
bg-zinc-900/60 border border-zinc-700 shadow-lg rounded-xl p-6
hover:shadow-xl transition-all duration-200
Container Spacing: Consistent padding and margins, no hardcoded pixels
Layout Patterns
- Header + Sidebar: Fixed header (h-16), sidebar (w-64, fixed left), main content area (flex-1)
- Dashboard Grid: Responsive grid (1 col mobile, 2 cols tablet, 3 cols desktop)
- Modal: Dark overlay (
bg-black/50), centered dialog, focus trap
- Data Table: Striped rows (
hover:bg-zinc-800/50), sticky headers, sortable columns
- Form: Vertical stacking, labels above inputs, error messages inline
Animation & Motion Rules
Framer Motion (Complex animations):
- Page entrance: fade-in + slide-up (150-300ms)
- Modal entrance: scale + fade (200ms)
- List items: staggered entrance (50ms between items)
Tailwind Transitions (Simple state changes):
- Default:
transition-all duration-200
- Hover/focus: Use for button, card, input interactions
- Never use durations > 300ms for UI feedback
Performance:
- Use
will-change on animated elements
- Respect
prefers-reduced-motion media query
- Test 60fps on real devices (not just dev machine)
Micro-interactions:
- Button click: Subtle scale (0.98) or brightness shift
- Icon swap: Fade transition between states
- Loading: Spinning icon with subtle rotation
Accessibility Checklist
- ✅ Semantic HTML:
<button>, <input>, <nav>, <main>, <section> used correctly
- ✅ ARIA Labels: Add
aria-label, aria-describedby on interactive elements
- ✅ Keyboard Navigation: Tab order logical, all actions keyboard-accessible
- ✅ Focus Visible: Always show focus state with
focus:ring-* or focus:outline-*
- ✅ Color Contrast**: 4.5:1 for text, 3:1 for UI components (use WebAIM checker)
- ✅ Form Labels: Every input has a label, error messages linked with
aria-describedby
- ✅ Image Alt Text: All images and icons have alt text or aria-labels
- ✅ Focus Management: Modal focus trap, focus restoration on close
- ✅ Testing: Test with keyboard only, test with screen reader (VoiceOver/NVDA)
Tech Stack Rules
- Framework: Next.js App Router (latest, TypeScript always)
- Styling: Tailwind CSS (never inline styles, use utility classes)
- UI Components: shadcn/ui (Radix primitives + Tailwind)
- Icons: lucide-react (100+ icon options)
- Animation: framer-motion (for complex animations only)
- Utilities:
clsx + tailwind-merge for safe class composition
File Structure Template
project/
├── app/
│ ├── layout.tsx # Root layout, metadata
│ ├── page.tsx # Home page
│ ├── globals.css # Tailwind directives
│ └── (routes)/
│ ├── dashboard/
│ │ └── page.tsx
│ └── settings/
│ └── page.tsx
├── components/
│ ├── ui/ # shadcn/ui components (button, input, card, etc.)
│ ├── layout/ # Header, Sidebar, Footer
│ ├── sections/ # Page sections (Hero, Features, etc.)
│ └── dashboard/ # Dashboard-specific components
├── lib/
│ ├── cn.ts # Class name utility
│ └── constants.ts # Colors, strings, config
├── hooks/ # Custom React hooks
├── public/ # Static assets
├── tailwind.config.ts
├── tsconfig.json
└── next.config.js
Common Pitfalls to Avoid
- ❌ No planning: Jumping to code without wireframes or hierarchy
- ❌ Hardcoded colors: Using hex/rgb instead of Tailwind classes
- ❌ Missing mobile design: Desktop-first instead of mobile-first
- ❌ No focus states: Keyboard users get lost
- ❌ Over-animation: Smooth ≠ good, excessive motion hurts performance
- ❌ Inconsistent spacing: Random px values instead of following the scale
- ❌ No semantic HTML: Using
<div> for everything
- ❌ Skipping accessibility: ARIA labels take 30 seconds, pay off big
- ❌ No testing on real devices: Browser DevTools lie about responsiveness
Delivery Checklist
Before shipping:
- ✅ Responsive: Works on 320px (phone), 768px (tablet), 1440px+ (desktop)
- ✅ Accessible: Passes keyboard navigation test, ARIA labels present
- ✅ Performant: Lighthouse score > 90, animations smooth (60fps)
- ✅ Type-Safe: Full TypeScript, no
any types
- ✅ Documented: Component props documented, usage examples provided
- ✅ Tested: Tested on real browsers (Chrome, Safari, Firefox)
- ✅ Themeable: Design system tokens defined, easy to customize
- ✅ Maintainable: Clean folder structure, reusable components, clear naming
1---2name: dev-tool-ui-23description: Generates clean, modern, dark-mode-first developer tool and SaaS interfaces inspired by bypass.tools using Next.js, Tailwind CSS, shadcn/ui, Lucide Icons, and Framer Motion. Use when designing or building web pages, dashboards, landing sections, or React UI components.4---56# Skill: dev-tool-ui78## When to Use This Skill910Use this skill when:11- Designing or building a new web dashboard, landing page, or SaaS interface12- Creating React UI components for a developer tool or internal application13- User says "build a UI" or "design this interface"14- Building admin panels, data dashboards, or configuration pages15- Prototyping a new product interface1617## The Workflow1819Follow this exact workflow as a professional frontend developer would:2021### 1. Requirements & Planning22- Clarify the UI purpose, user needs, and feature set23- Identify which components are needed (forms, tables, modals, dashboards, cards, etc.)24- Define the information hierarchy and user flow25- Gather any specific design references or brand guidelines26- **Do not start coding yet** — planning prevents rework2728### 2. Design System & Architecture29- Define a reusable color palette (dark mode first)30- Establish typography hierarchy and font pairings31- Create consistent spacing and sizing rules32- Plan component composition (atoms → molecules → organisms)33- Sketch layout patterns (sidebar + main, top nav + grid, etc.)3435### 3. Project Setup (Next.js)36- Initialize: `npx create-next-app@latest --typescript`37- Install: `npm install tailwindcss shadcn-ui lucide-react framer-motion clsx tailwind-merge`38- Configure Tailwind for dark mode (`class` strategy in `tailwind.config.ts`)39- Create folder structure: `app/`, `components/`, `lib/`, `hooks/`, `public/`40- Set up `lib/cn.ts` for class name merging4142### 4. Build in Layers43- **Layer 1 (Primitives)**: Base components first — buttons, inputs, cards, badges (use shadcn/ui)44- **Layer 2 (Containers)**: Layout components — grids, flex containers, sections45- **Layer 3 (Features)**: Compose feature components — forms, tables, navigation, modals46- **Layer 4 (Pages)**: Wire features into full pages47- **Layer 5 (Polish)**: Animations, transitions, micro-interactions4849### 5. Test & Refine50- Test responsive behavior (mobile 320px, tablet 768px, desktop 1440px+)51- Verify accessibility (keyboard nav, screen readers, ARIA labels, contrast)52- Check performance (Lighthouse score, animation smoothness, no jank)53- Test on real devices if possible, not just browser DevTools5455### 6. Document & Deliver56- Document component props with TypeDoc comments57- Provide usage examples in code58- Create a visual component guide or Storybook59- Hand off with clear structure and naming conventions6061## Design System Rules6263### Color & Atmosphere64- **Dark Mode First**: Default background `bg-zinc-950`65- **Borders**: Thin, subtle using `border-zinc-800` or `border-zinc-700`66- **Glassmorphic Cards**: `bg-zinc-900/40 backdrop-blur-md border border-zinc-800 rounded-xl`67- **Accent Colors**: White/neutral for primary actions, subtle grays for secondary68- **Glows**: Use radial CSS gradients for ambient lighting effects6970### Typography71- **Sans-serif** (Inter, Geist, SF Pro): UI text, labels, body copy72- **Monospace** (JetBrains Mono, Fira Code): Code blocks, technical content73- **Contrast**: Maintain WCAG AA+ ratios (4.5:1 minimum for text)74- **Line Height**: 1.5-1.6 for body text, tighter (1.2-1.3) for headings7576### Spacing & Layout77- **Scale**: Use Tailwind's default scale (4px baseline: 4, 8, 12, 16, 24, 32, 40, 48, 64...)78- **Grid System**: 12-column grid for dashboards, flex for flexible components79- **Consistency**: All padding/margins should follow the scale80- **Gaps**: Use `gap-*` utilities between flex/grid children8182## Component Specifications8384### Buttons8586**Primary** (Action-oriented, highest contrast):87```88bg-white text-black hover:bg-gray-100 active:bg-gray-20089focus:outline-none focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-zinc-95090font-medium px-4 py-2 rounded-lg transition-colors91```9293**Secondary** (Subtle, less prominent):94```95bg-zinc-800 text-white hover:bg-zinc-700 active:bg-zinc-60096focus:outline-none focus:ring-2 focus:ring-zinc-50097font-medium px-4 py-2 rounded-lg transition-colors98```99100**Sizes**: `sm` (px-3 py-1.5 text-sm) | `md` (px-4 py-2) | `lg` (px-6 py-3 text-lg)101102**States**: 103- Disabled: `opacity-50 cursor-not-allowed`104- Loading: Show spinner icon, disable interaction105106### Inputs & Forms107108```109bg-zinc-900 border border-zinc-800 text-white placeholder-zinc-500110focus:border-zinc-600 focus:ring-2 focus:ring-white/20 focus:outline-none111rounded-lg px-3 py-2 transition-all112```113114**Labels**: `text-sm font-medium text-zinc-200`115116**Error States**: `border-red-500 focus:ring-red-500/20` + error message below input117118**Success States**: `border-green-500/50 focus:ring-green-500/20`119120### Cards & Containers121122**Standard Card** (Default for most content):123```124bg-zinc-900/40 backdrop-blur-md border border-zinc-800 rounded-xl p-6125hover:border-zinc-700 transition-all duration-200126```127128**Elevated Card** (For emphasis, featured content):129```130bg-zinc-900/60 border border-zinc-700 shadow-lg rounded-xl p-6131hover:shadow-xl transition-all duration-200132```133134**Container Spacing**: Consistent padding and margins, no hardcoded pixels135136### Layout Patterns137138- **Header + Sidebar**: Fixed header (h-16), sidebar (w-64, fixed left), main content area (flex-1)139- **Dashboard Grid**: Responsive grid (1 col mobile, 2 cols tablet, 3 cols desktop)140- **Modal**: Dark overlay (`bg-black/50`), centered dialog, focus trap141- **Data Table**: Striped rows (`hover:bg-zinc-800/50`), sticky headers, sortable columns142- **Form**: Vertical stacking, labels above inputs, error messages inline143144## Animation & Motion Rules145146**Framer Motion** (Complex animations):147- Page entrance: fade-in + slide-up (150-300ms)148- Modal entrance: scale + fade (200ms)149- List items: staggered entrance (50ms between items)150151**Tailwind Transitions** (Simple state changes):152- Default: `transition-all duration-200`153- Hover/focus: Use for button, card, input interactions154- Never use durations > 300ms for UI feedback155156**Performance**:157- Use `will-change` on animated elements158- Respect `prefers-reduced-motion` media query159- Test 60fps on real devices (not just dev machine)160161**Micro-interactions**:162- Button click: Subtle scale (0.98) or brightness shift163- Icon swap: Fade transition between states164- Loading: Spinning icon with subtle rotation165166## Accessibility Checklist167168- ✅ Semantic HTML: `<button>`, `<input>`, `<nav>`, `<main>`, `<section>` used correctly169- ✅ ARIA Labels: Add `aria-label`, `aria-describedby` on interactive elements170- ✅ Keyboard Navigation: Tab order logical, all actions keyboard-accessible171- ✅ Focus Visible: Always show focus state with `focus:ring-*` or `focus:outline-*`172- ✅ Color Contrast**: 4.5:1 for text, 3:1 for UI components (use WebAIM checker)173- ✅ Form Labels: Every input has a label, error messages linked with `aria-describedby`174- ✅ Image Alt Text: All images and icons have alt text or aria-labels175- ✅ Focus Management: Modal focus trap, focus restoration on close176- ✅ Testing: Test with keyboard only, test with screen reader (VoiceOver/NVDA)177178## Tech Stack Rules179180- **Framework**: Next.js App Router (latest, TypeScript always)181- **Styling**: Tailwind CSS (never inline styles, use utility classes)182- **UI Components**: shadcn/ui (Radix primitives + Tailwind)183- **Icons**: lucide-react (100+ icon options)184- **Animation**: framer-motion (for complex animations only)185- **Utilities**: `clsx` + `tailwind-merge` for safe class composition186187## File Structure Template188189```190project/191├── app/192│ ├── layout.tsx # Root layout, metadata193│ ├── page.tsx # Home page194│ ├── globals.css # Tailwind directives195│ └── (routes)/196│ ├── dashboard/197│ │ └── page.tsx198│ └── settings/199│ └── page.tsx200├── components/201│ ├── ui/ # shadcn/ui components (button, input, card, etc.)202│ ├── layout/ # Header, Sidebar, Footer203│ ├── sections/ # Page sections (Hero, Features, etc.)204│ └── dashboard/ # Dashboard-specific components205├── lib/206│ ├── cn.ts # Class name utility207│ └── constants.ts # Colors, strings, config208├── hooks/ # Custom React hooks209├── public/ # Static assets210├── tailwind.config.ts211├── tsconfig.json212└── next.config.js213```214215## Common Pitfalls to Avoid216217- ❌ **No planning**: Jumping to code without wireframes or hierarchy218- ❌ **Hardcoded colors**: Using hex/rgb instead of Tailwind classes219- ❌ **Missing mobile design**: Desktop-first instead of mobile-first220- ❌ **No focus states**: Keyboard users get lost221- ❌ **Over-animation**: Smooth ≠ good, excessive motion hurts performance222- ❌ **Inconsistent spacing**: Random px values instead of following the scale223- ❌ **No semantic HTML**: Using `<div>` for everything224- ❌ **Skipping accessibility**: ARIA labels take 30 seconds, pay off big225- ❌ **No testing on real devices**: Browser DevTools lie about responsiveness226227## Delivery Checklist228229Before shipping:230231- ✅ Responsive: Works on 320px (phone), 768px (tablet), 1440px+ (desktop)232- ✅ Accessible: Passes keyboard navigation test, ARIA labels present233- ✅ Performant: Lighthouse score > 90, animations smooth (60fps)234- ✅ Type-Safe: Full TypeScript, no `any` types235- ✅ Documented: Component props documented, usage examples provided236- ✅ Tested: Tested on real browsers (Chrome, Safari, Firefox)237- ✅ Themeable: Design system tokens defined, easy to customize238- ✅ Maintainable: Clean folder structure, reusable components, clear naming