How to install tailwind-css
npx skills add https://github.com/paulrberg/agent-skills --skill tailwind-cssFull instructions (SKILL.md)
Source of truth, from paulrberg/agent-skills.
disable-model-invocation: false name: tailwind-css user-invocable: false description: 'Use for Tailwind v4 styling: add/fix classes, configure or migrate Tailwind, use tailwind-variants, or tw-animate-css.'
Tailwind CSS v4
Expert guidance for Tailwind CSS v4, CSS-first configuration, modern utility patterns, and type-safe component styling with tailwind-variants.
CSS-First Configuration
Tailwind CSS v4 eliminates tailwind.config.ts in favor of CSS-only configuration. All configuration lives in CSS files using special directives.
Core Directives:
@import "tailwindcss"- Entry point that loads Tailwind@theme { }- Define or extend design tokens@theme static { }- Define tokens that should not generate utilities@utility- Create custom utilities@custom-variant- Define custom variants
Minimal Example:
@import "tailwindcss";
@theme {
--color-brand: oklch(0.72 0.11 178);
--font-display: "Inter", sans-serif;
--spacing-edge: 1.5rem;
}
All theme tokens defined with @theme automatically become available as utility classes. For example, --color-brand can be used as bg-brand, text-brand, border-brand, etc.
ESLint Integration
Use eslint-plugin-better-tailwindcss for Tailwind CSS v4 class validation and style enforcement.
Correctness Rules (errors):
no-conflicting-classes- Detect classes that override each otherno-unknown-classes- Flag classes not registered with Tailwind
Stylistic Rules (warnings):
enforce-canonical-classes- Use standard v4 class namesenforce-shorthand-classes- Use abbreviated class versionsno-deprecated-classes- Remove outdated class namesno-duplicate-classes- Eliminate redundant declarationsno-unnecessary-whitespace- Clean up extra spacing
Examples:
// ❌ Bad: separate padding
<div className="px-6 py-6">
// ✅ Good: shorthand
<div className="p-6">
// ❌ Bad: separate width/height
<div className="w-6 h-6">
// ✅ Good: size utility
<div className="size-6">
Run the project's ESLint check after modifying Tailwind classes to validate all changes across the codebase.
Coding Preferences
For detailed coding patterns covering layout, spacing, typography, colors, borders, gradients, arbitrary values, class merging, image sizing, z-index, and dark mode, see references/coding-preferences.md.
CSS Modules
Use CSS Modules only as a last resort for complex CSS that cannot be easily written with Tailwind classes.
All .module.css files must include @reference "#tailwind"; at the top to enable Tailwind utilities and theme tokens inside the module.
Example:
/* component.module.css */
@reference "#tailwind";
.component {
/* Complex CSS that can't be expressed with Tailwind utilities */
/* Can still use Tailwind utilities and theme tokens */
}
Common Tasks
Adding a Component with Variants
- Read
references/tailwind-variants.mdfor patterns - Check the project's
@themeconfiguration for available tokens - Use
tv()fromtailwind-variantsfor type-safe variants
Example:
import { tv } from "tailwind-variants";
const button = tv({
base: "rounded-lg px-4 py-2 font-medium",
variants: {
color: {
primary: "bg-blue-600 text-white",
secondary: "bg-gray-600 text-white",
},
size: {
sm: "text-sm",
md: "text-base",
lg: "text-lg",
},
},
});
Debugging Styles
- Check
references/tailwind-v4-rules.mdfor breaking changes - Verify gradient syntax (
bg-linear-*, notbg-gradient-*) - Verify CSS variable syntax (
bg-my-color, notbg-[--var-my-color]) - Check if arbitrary value exists in the project's
@themeconfiguration
Working with Colors
- Check the project's
@themeconfiguration first to see available colors - Use semantic color names when available
- Use opacity modifiers for transparency (
/20,/50, etc.) - Avoid arbitrary colors unless absolutely necessary
Example:
// ✅ Good: theme token with opacity
<div className="bg-brand/20 text-brand">
// ❌ Avoid: arbitrary hex
<div className="bg-[#4f46e5]/20 text-[#4f46e5]">
Adding Animations
- Read
references/tw-animate-css.mdfor available animations - Combine a base class (
animate-inoranimate-out) with effect classes - Note decimal spacing gotcha: use
[0.625rem]syntax, not2.5
Example:
// Enter: fade + slide up
<div className="fade-in slide-in-from-bottom-4 duration-300 animate-in">
// Exit: fade + slide down
<div className="fade-out slide-out-to-bottom-4 duration-200 animate-out">
Quick Reference Table
| Aspect | Pattern |
|---|---|
| Configuration | CSS-only: @theme, @utility, @custom-variant |
| Gradients | bg-linear-*, bg-radial, bg-conic |
| Opacity | Modifier syntax: bg-black/50 |
| Line Height | Modifier syntax: text-base/7 |
| Font Features | font-features-zero, font-features-ss01, etc. |
| CSS Variables | bg-my-color (auto-created from @theme) |
| CSS Modules | @reference "#tailwind"; at top |
| Class Merging | cn() for conditionals; plain string for static |
| Viewport | min-h-dvh (not min-h-screen) |
| Component Variants | references/tailwind-variants.md |
| Animations | references/tw-animate-css.md |
| V4 Rules | references/tailwind-v4-rules.md |
Reference Documentation
- Tailwind v4 Rules & Best Practices:
references/tailwind-v4-rules.md— Breaking changes, removed/renamed utilities, layout rules, typography, gradients, CSS variables, new v4 features, common pitfalls - tailwind-variants Patterns:
references/tailwind-variants.md— Component variants, slots API, composition, TypeScript integration, responsive variants - tw-animate-css Reference:
references/tw-animate-css.md— Enter/exit animations, slide/fade/zoom utilities, spacing gotchas
Related skills
More from paulrberg/agent-skills and the wider catalog.
code-simplify
Use for simplifying recently changed code: clean up, refactor for clarity, reduce complexity, improve readability, or maintainability.
effect-ts
Use for nontrivial Effect-TS work including services/layers, typed errors, Schema/JSONSchema, Config, runtime/concurrency, @effect/vitest, @effect/ai, @effect/sql, or @prb/effect-next.
code-review
Use for code/PR review, audits, bug/security checks, reviewing diffs or changes, and finding issues in code.
cli-gh
Use for GitHub CLI automation: gh commands, repo info, workflow triggers, GitHub search, codespaces, PR status, issues, repo browsing, or command-line GitHub tasks.
code-polish
Use to polish recently changed code: simplify for readability/maintainability and run a risk-profiled review that autonomously applies fixes. Default runs both passes; pass --simplify or --review for one. Covers code/PR review, audits, bug/security checks, reviewing diffs or changes, cleanup, refactoring, and reducing complexity.
bump-release
Use for release versioning: bump/cut/tag a release, bump version, create a release, changelog updates, or version tagging.