tailwind-patterns
skill:tailwind-patterns - Production Tailwind CSS Patterns
Version: 1.0.0
Purpose
Provide production-ready Tailwind CSS patterns for common website components. This skill covers responsive layouts, cards, navigation, forms, buttons, typography, spacing, and dark mode with mobile-first approach. It integrates with shadcn/ui, Radix, and Headless UI component libraries. Use when building UI components with Tailwind, setting up a design system, or converting designs to responsive Tailwind markup.
File Structure
skills/tailwind-patterns/
├── SKILL.md (this file)
└── examples.md
Interface References
- Context: Loaded via ContextProvider Interface
- Memory: Accessed via MemoryStore Interface
- Shared Patterns: Shared Loading Patterns
- Schemas: Validated against context_metadata.schema.json and memory_entry.schema.json
Tailwind Pattern Focus Areas
- Responsive Layouts: Flexbox and Grid patterns with mobile-first breakpoints (
sm:,md:,lg:,xl:,2xl:) - Component Patterns: Cards, navigation bars, sidebars, modals, dropdowns, tables, and forms
- Typography System: Font scale, line heights, letter spacing, prose for content
- Spacing & Sizing: Consistent use of the spacing scale (
p-4,m-6,gap-8), avoiding arbitrary values - Color System: Design tokens via CSS custom properties, semantic colors (
primary,muted,destructive) - Dark Mode:
dark:variant with class-based toggling, smooth transitions - State Variants: Hover, focus, active, disabled, group-hover, peer states
- shadcn/ui Integration: Component composition, variant props via
cva,cn()utility
Tailwind Core Rules
- Mobile-first: Write base styles for mobile, then add breakpoint prefixes for larger screens
- Spacing scale: Use Tailwind's spacing scale — avoid arbitrary values (
p-[13px]) unless necessary - Semantic classes: Use
text-foreground,bg-background,border-borderfrom design tokens - No
@applyabuse: Prefer utility classes in markup; use@applyonly for base styles or third-party overrides - Component extraction: Extract repeated patterns into React components, not
@applyclasses - Container queries: Use
@containerfor component-level responsive design - Logical properties: Prefer
ps-4/pe-4overpl-4/pr-4for RTL support
MANDATORY WORKFLOW (MUST FOLLOW EXACTLY)
Step 1: Initial Analysis
YOU MUST:
- Identify the Tailwind version (v3.x or v4.x) and configuration
- Detect the component library (shadcn/ui, Radix, Headless UI, DaisyUI, or custom)
- Determine the scope:
- Single component implementation
- Page layout
- Design system setup
- Responsive refactoring
- Check for existing
tailwind.config.tscustomizations (colors, fonts, breakpoints) - Identify if dark mode is required and the strategy (class-based, media query, or system)
- Ask clarifying questions:
- Design reference or mockup available?
- Breakpoint requirements?
- RTL support needed?
Step 2: Load Memory
Follow Standard Memory Loading with
skill="tailwind-patterns"anddomain="engineering".
YOU MUST:
- Use
memoryStore.getSkillMemory("tailwind-patterns", "{project-name}")to load project patterns - Use
memoryStore.getByProject("{project-name}")for cross-skill context (design tokens, color palette) - Review previously documented component patterns, custom utilities, and design decisions
Step 3: Load Context
Follow Standard Context Loading for the
engineeringdomain. Stay within the file budget declared in frontmatter.
Step 4: Implement Tailwind Patterns
YOU MUST follow these patterns:
Responsive Layout (Mobile-First):
<div className="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3">
{items.map(item => (
<Card key={item.id} className="p-6" />
))}
</div>
Card Component with Variants (cva + cn):
import { cva, type VariantProps } from "class-variance-authority"
import { cn } from "@/lib/utils"
const cardVariants = cva(
"rounded-lg border bg-card text-card-foreground shadow-sm",
{
variants: {
size: {
sm: "p-4",
md: "p-6",
lg: "p-8",
},
},
defaultVariants: { size: "md" },
}
)
interface CardProps extends React.HTMLAttributes<HTMLDivElement>,
VariantProps<typeof cardVariants> {}
export function Card({ className, size, ...props }: CardProps) {
return <div className={cn(cardVariants({ size }), className)} {...props} />
}
Button with States:
<button className="
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
focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2
disabled:pointer-events-none disabled:opacity-50
transition-colors
">
Submit
</button>
Dark Mode:
<div className="bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-50">
<p className="text-gray-600 dark:text-gray-400">Subtitle text</p>
</div>
Form Input:
<div className="space-y-2">
<label htmlFor="email" className="text-sm font-medium leading-none">
Email
</label>
<input
id="email"
type="email"
className="
flex h-10 w-full rounded-md border border-input bg-background
px-3 py-2 text-sm
placeholder:text-muted-foreground
focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2
disabled:cursor-not-allowed disabled:opacity-50
"
placeholder="you@example.com"
/>
</div>
Rules:
- Mobile-first: Base classes for mobile, add
md:,lg:for larger screens - Use design token colors (
primary,muted,destructive) not raw colors in components - Use
focus-visible:notfocus:for keyboard-only focus indicators - Use
transition-colorsortransition-allfor smooth state changes - Group related utility classes logically (layout → spacing → typography → colors → states)
DO NOT use arbitrary values when a Tailwind scale value exists
Step 5: Generate Output
- Save to
/claudedocs/tailwind-patterns_{project}_{YYYY-MM-DD}.md - Follow naming conventions in
../OUTPUT_CONVENTIONS.md - Include component code, Tailwind config changes, and utility setup
Step 6: Update Memory
Follow Standard Memory Update for
skill="tailwind-patterns".
Store design tokens, component patterns, custom utilities, breakpoint decisions, and dark mode strategy.
Compliance Checklist
Before completing, verify:
- Step 1: Tailwind version, component library, and scope identified
- Step 2: Standard Memory Loading pattern followed
- Step 3: Standard Context Loading pattern followed
- Step 4: Tailwind patterns implemented with mobile-first, design tokens, and proper state variants
- Step 5: Output saved with standard naming convention
- Step 6: Standard Memory Update pattern followed
Further Reading
- Tailwind CSS Docs: https://tailwindcss.com/docs
- shadcn/ui: https://ui.shadcn.com/
- Class Variance Authority: https://cva.style/docs
- Tailwind v4: https://tailwindcss.com/blog/tailwindcss-v4
Version History
| Version | Date | Changes |
|---|---|---|
| 1.0.0 | 2026-02-12 | Initial release with interface-based architecture |