tailwind-best-practices
npx skills add https://github.com/gopherguides/gopher-ai --skill tailwind-best-practices
Agent 安装分布
Skill 文档
Tailwind CSS v4 Best Practices
You have access to up-to-date Tailwind CSS documentation via MCP tools. Use these tools to provide accurate, current information.
Available MCP Tools
Use these tools for dynamic, up-to-date Tailwind information:
mcp__tailwindcss__search_tailwind_docs
Use when user asks about any Tailwind feature, utility, or concept.
Examples:
- “How do I use dark mode in Tailwind?”
- “What are container queries?”
- “How do responsive breakpoints work?”
mcp__tailwindcss__get_tailwind_utilities
Use when user needs utility classes for a specific CSS property.
Examples:
- “What utilities are available for flexbox?”
- “Show me spacing utilities”
- “What text alignment classes exist?”
mcp__tailwindcss__get_tailwind_colors
Use when user asks about colors, palettes, or color-related utilities.
Examples:
- “What colors are available?”
- “Show me the blue palette shades”
- “How do I use custom colors?”
mcp__tailwindcss__convert_css_to_tailwind
Use when user has CSS they want to convert to Tailwind utility classes.
Examples:
- “Convert this CSS to Tailwind: display: flex; justify-content: center;”
- “What’s the Tailwind equivalent of margin: 0 auto?”
mcp__tailwindcss__generate_component_template
Use when user needs a component template with Tailwind styling.
Examples:
- “Generate a button component”
- “Create a card template”
- “Show me a navbar example”
Official Documentation URLs
When MCP tools are unavailable, use WebFetch with these URLs to get current documentation:
Getting Started
| Topic | URL |
|---|---|
| Installation | https://tailwindcss.com/docs/installation |
| Using Vite | https://tailwindcss.com/docs/installation/using-vite |
| Using PostCSS | https://tailwindcss.com/docs/installation/using-postcss |
| Tailwind CLI | https://tailwindcss.com/docs/installation/tailwind-cli |
| Editor Setup | https://tailwindcss.com/docs/editor-setup |
| Upgrade Guide | https://tailwindcss.com/docs/upgrade-guide |
Core Concepts
| Topic | URL |
|---|---|
| Utility Classes | https://tailwindcss.com/docs/styling-with-utility-classes |
| Hover, Focus, States | https://tailwindcss.com/docs/hover-focus-and-other-states |
| Responsive Design | https://tailwindcss.com/docs/responsive-design |
| Dark Mode | https://tailwindcss.com/docs/dark-mode |
| Theme Variables | https://tailwindcss.com/docs/theme |
| Colors | https://tailwindcss.com/docs/colors |
| Custom Styles | https://tailwindcss.com/docs/adding-custom-styles |
| Functions & Directives | https://tailwindcss.com/docs/functions-and-directives |
Layout
| Topic | URL |
|---|---|
| Display | https://tailwindcss.com/docs/display |
| Flexbox | https://tailwindcss.com/docs/flex |
| Grid | https://tailwindcss.com/docs/grid-template-columns |
| Gap | https://tailwindcss.com/docs/gap |
| Container | https://tailwindcss.com/docs/container |
| Position | https://tailwindcss.com/docs/position |
| Z-Index | https://tailwindcss.com/docs/z-index |
Spacing
| Topic | URL |
|---|---|
| Padding | https://tailwindcss.com/docs/padding |
| Margin | https://tailwindcss.com/docs/margin |
| Space Between | https://tailwindcss.com/docs/space |
Sizing
| Topic | URL |
|---|---|
| Width | https://tailwindcss.com/docs/width |
| Height | https://tailwindcss.com/docs/height |
| Min/Max Width | https://tailwindcss.com/docs/min-width |
| Min/Max Height | https://tailwindcss.com/docs/min-height |
Typography
| Topic | URL |
|---|---|
| Font Family | https://tailwindcss.com/docs/font-family |
| Font Size | https://tailwindcss.com/docs/font-size |
| Font Weight | https://tailwindcss.com/docs/font-weight |
| Line Height | https://tailwindcss.com/docs/line-height |
| Text Color | https://tailwindcss.com/docs/text-color |
| Text Align | https://tailwindcss.com/docs/text-align |
Backgrounds & Borders
| Topic | URL |
|---|---|
| Background Color | https://tailwindcss.com/docs/background-color |
| Background Image | https://tailwindcss.com/docs/background-image |
| Border Radius | https://tailwindcss.com/docs/border-radius |
| Border Width | https://tailwindcss.com/docs/border-width |
| Border Color | https://tailwindcss.com/docs/border-color |
| Box Shadow | https://tailwindcss.com/docs/box-shadow |
Effects
| Topic | URL |
|---|---|
| Opacity | https://tailwindcss.com/docs/opacity |
| Shadow | https://tailwindcss.com/docs/box-shadow |
| Blur | https://tailwindcss.com/docs/blur |
Transforms & Animation
| Topic | URL |
|---|---|
| Transform | https://tailwindcss.com/docs/transform |
| Scale | https://tailwindcss.com/docs/scale |
| Rotate | https://tailwindcss.com/docs/rotate |
| Translate | https://tailwindcss.com/docs/translate |
| Transition | https://tailwindcss.com/docs/transition-property |
| Animation | https://tailwindcss.com/docs/animation |
Interactivity
| Topic | URL |
|---|---|
| Cursor | https://tailwindcss.com/docs/cursor |
| User Select | https://tailwindcss.com/docs/user-select |
| Scroll Behavior | https://tailwindcss.com/docs/scroll-behavior |
Tailwind CSS v4 Core Syntax
CRITICAL: Tailwind v4 changed significantly from v3. Always use v4 syntax.
CSS Entry Point
@import "tailwindcss";
This single import replaces the old @tailwind base; @tailwind components; @tailwind utilities; directives.
Theme Configuration (@theme directive)
All theme customization is done in CSS, not JavaScript:
@theme {
/* Colors - use oklch for better color manipulation */
--color-primary: oklch(0.6 0.2 250);
--color-primary-foreground: oklch(1 0 0);
--color-secondary: oklch(0.5 0.02 250);
--color-secondary-foreground: oklch(1 0 0);
/* Semantic colors */
--color-background: oklch(1 0 0);
--color-foreground: oklch(0.145 0 0);
--color-muted: oklch(0.95 0 0);
--color-muted-foreground: oklch(0.4 0 0);
--color-border: oklch(0.9 0 0);
--color-destructive: oklch(0.55 0.25 25);
/* Font families */
--font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
--font-mono: "Fira Code", ui-monospace, monospace;
/* Custom spacing (extends default scale) */
--spacing-18: 4.5rem;
--spacing-22: 5.5rem;
/* Custom border radius */
--radius-4xl: 2rem;
}
Source Detection (@source directive)
Tailwind auto-detects most template files. Use @source for custom paths:
@source "./templates/**/*.templ";
@source "./components/**/*.html";
@source "./src/**/*.{js,jsx,ts,tsx,vue,svelte}";
Dark Mode (@variant directive)
@variant dark {
--color-background: oklch(0.145 0 0);
--color-foreground: oklch(0.985 0 0);
--color-muted: oklch(0.25 0 0);
--color-muted-foreground: oklch(0.6 0 0);
--color-border: oklch(0.3 0 0);
--color-card: oklch(0.205 0 0);
}
Component Layer (@layer components)
Extract repeated patterns:
@layer components {
.btn {
@apply px-4 py-2 rounded-lg font-medium transition-colors;
}
.btn-primary {
@apply btn bg-primary text-primary-foreground hover:bg-primary/90;
}
.btn-secondary {
@apply btn bg-secondary text-secondary-foreground hover:bg-secondary/90;
}
.card {
@apply p-6 bg-card rounded-xl border border-border shadow-sm;
}
}
Plugins (@plugin directive)
@plugin "@tailwindcss/typography";
Best Practices
Class Ordering Convention
Order utilities consistently for readability:
Order: layout â spacing â sizing â typography â colors â effects â interactive
<!-- Good: Logical order -->
<div class="flex items-center gap-4 p-4 w-full text-sm text-gray-700 bg-white shadow-sm hover:bg-gray-50 transition-colors">
<!-- Bad: Random order -->
<div class="hover:bg-gray-50 flex bg-white p-4 text-sm shadow-sm w-full gap-4 items-center text-gray-700 transition-colors">
Responsive Design
Mobile-first: base styles for mobile, add breakpoints for larger screens.
<!-- Mobile first -->
<div class="w-full md:w-1/2 lg:w-1/3">
<!-- Breakpoints -->
sm: 640px <!-- Small devices -->
md: 768px <!-- Medium devices -->
lg: 1024px <!-- Large devices -->
xl: 1280px <!-- Extra large -->
2xl: 1536px <!-- 2X large -->
Component Extraction Rule
Extract when a class combination appears 3+ times:
/* Instead of repeating in HTML */
@layer components {
.flex-center {
@apply flex items-center justify-center;
}
.text-muted {
@apply text-sm text-muted-foreground;
}
}
Use Theme Variables
Always prefer theme variables over hardcoded values:
<!-- Good: Uses theme variable -->
<div class="bg-primary text-primary-foreground">
<!-- Bad: Hardcoded color -->
<div class="bg-[#3b82f6] text-white">
Accessibility
<!-- Focus states -->
<button class="focus-visible:ring-2 focus-visible:ring-primary focus-visible:outline-none">
<!-- Screen reader only -->
<span class="sr-only">Close menu</span>
<!-- Ensure contrast -->
<!-- Use oklch colors with sufficient lightness difference -->
v4 Anti-Patterns to Avoid
DO NOT USE (v3 patterns):
| Wrong (v3) | Correct (v4) |
|---|---|
tailwind.config.js |
CSS @theme { } directive |
@tailwind base; |
@import "tailwindcss"; |
@tailwind components; |
(included in import) |
@tailwind utilities; |
(included in import) |
darkMode: 'class' in config |
@variant dark { } in CSS |
theme.extend.colors in JS |
--color-* in @theme |
content: [...] in JS |
@source "..." in CSS |
Common Mistakes
<!-- Wrong: Inline styles when utility exists -->
<div style="display: flex; gap: 1rem;">
<!-- Correct -->
<div class="flex gap-4">
<!-- Wrong: px values when scale exists -->
<div class="p-[16px]">
<!-- Correct -->
<div class="p-4">
<!-- Wrong: Duplicate utilities -->
<div class="p-4 p-6">
<!-- Correct -->
<div class="p-6">
<!-- Wrong: Conflicting utilities -->
<div class="flex block">
<!-- Correct: Choose one -->
<div class="flex">
Response Guidelines
When helping with Tailwind CSS:
- Always use v4 syntax – No tailwind.config.js, use @theme in CSS
- Use MCP tools first – Get current documentation before answering
- Prefer theme variables –
bg-primarynotbg-blue-500 - Include accessibility – Add focus-visible, sr-only where appropriate
- Show complete examples – Include all necessary classes
- Explain class choices – Help users understand why
Example Response Flow
User: “How do I create a button with hover effect?”
Response:
- Use
mcp__tailwindcss__get_tailwind_utilitiesfor button-related utilities - Provide example with proper class ordering:
<button class="px-4 py-2 rounded-lg font-medium bg-primary text-primary-foreground hover:bg-primary/90 focus-visible:ring-2 focus-visible:ring-primary focus-visible:outline-none transition-colors">
Click me
</button>
- Explain the classes used
- Suggest extracting to component if used multiple times
Quick Reference
Spacing Scale
| Class | Size |
|---|---|
| 1 | 0.25rem (4px) |
| 2 | 0.5rem (8px) |
| 3 | 0.75rem (12px) |
| 4 | 1rem (16px) |
| 5 | 1.25rem (20px) |
| 6 | 1.5rem (24px) |
| 8 | 2rem (32px) |
| 10 | 2.5rem (40px) |
| 12 | 3rem (48px) |
| 16 | 4rem (64px) |
Common Patterns
<!-- Centered content -->
<div class="flex items-center justify-center">
<!-- Card -->
<div class="p-6 bg-card rounded-xl border border-border shadow-sm">
<!-- Responsive grid -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<!-- Truncated text -->
<p class="truncate">Long text that will be truncated...</p>
<!-- Gradient background -->
<div class="bg-gradient-to-r from-primary to-secondary">
<!-- Fixed header -->
<header class="fixed top-0 left-0 right-0 z-50 bg-background/80 backdrop-blur-sm">
For the latest documentation, always refer to https://tailwindcss.com/docs