skills/tailwind/SKILL.md
Use when styling with Tailwind CSS, editing tailwind.config.ts, tailwind.config.js, @tailwind directives, utility classes, responsive layouts, @apply, cn(), @theme config, dark mode, or forms.
npx skillsauth add cofin/flow tailwindInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
/* styles.css */
@import "tailwindcss";
@theme {
--color-primary: oklch(0.5 0.2 240);
--radius-lg: 0.5rem;
}
</example>
// Flexbox
<div className="flex items-center justify-between gap-4">
// Grid
<div className="grid grid-cols-3 gap-4">
// Container
<div className="container mx-auto px-4">
</example>
// Padding
<div className="p-4 px-6 py-2">
// Margin
<div className="m-4 mx-auto my-2">
// Gap
<div className="gap-4 gap-x-2 gap-y-4">
</example>
<h1 className="text-4xl font-bold tracking-tight">
<p className="text-muted-foreground text-sm">
<span className="font-medium">
</example>
// Background
<div className="bg-background bg-primary bg-muted">
// Text
<span className="text-foreground text-primary text-muted-foreground">
// Border
<div className="border border-border border-primary">
</example>
// Width/Height
<div className="w-full h-screen w-64 h-12">
// Max/Min
<div className="max-w-md min-h-screen">
</example>
<div className="rounded-lg border border-border shadow-sm">
<div className="rounded-full">
</example>
<button className="hover:bg-primary/90 focus:ring-2 focus:ring-primary disabled:opacity-50">
<a className="hover:underline">
</example>
// Mobile-first breakpoints
<div className="w-full md:w-1/2 lg:w-1/3">
// Hide/show
<div className="hidden md:block">
<div className="block md:hidden">
</example>
// Built-in
<div className="animate-spin animate-pulse animate-bounce">
// Transitions
<div className="transition-colors duration-200 ease-in-out">
</example>
import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"
// Button variants
<Button variant="default">Primary</Button>
<Button variant="secondary">Secondary</Button>
<Button variant="outline">Outline</Button>
<Button variant="ghost">Ghost</Button>
<Button variant="destructive">Destructive</Button>
// Button sizes
<Button size="sm">Small</Button>
<Button size="default">Default</Button>
<Button size="lg">Large</Button>
// Card
<Card>
<CardHeader>
<CardTitle>Title</CardTitle>
</CardHeader>
<CardContent>
Content here
</CardContent>
</Card>
</example>
// Automatic with system preference
<div className="bg-background text-foreground">
// Force dark
<div className="dark">
<div className="bg-background"> {/* Uses dark theme colors */}
</example>
import { cn } from "@/lib/utils"
interface Props {
className?: string
}
function Component({ className }: Props) {
return (
<div className={cn(
"flex items-center p-4 rounded-lg",
"bg-background border border-border",
className
)}>
Content
</div>
)
}
</example>
<form className="space-y-4">
<div className="space-y-2">
<label className="text-sm font-medium">Email</label>
<Input type="email" placeholder="[email protected]" />
</div>
<Button type="submit" className="w-full">
Submit
</Button>
</form>
</example>
<Card>
<CardHeader className="flex flex-row items-center justify-between">
<CardTitle>Title</CardTitle>
<Button variant="ghost" size="sm">Action</Button>
</CardHeader>
<CardContent className="space-y-4">
{/* Content */}
</CardContent>
</Card>
</example>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
{items.map(item => (
<Card key={item.id}>...</Card>
))}
</div>
</example>
<Button disabled={isLoading}>
{isLoading ? (
<>
<Loader2 className="mr-2 h-4 w-4 animate-spin" />
Loading...
</>
) : (
'Submit'
)}
</Button>
</example>
</workflow>
Add guardrails instructions here. </guardrails>
<validation> ## ValidationAdd validation instructions here. </validation>
development
Use when tracing execution paths, mapping dependencies, understanding unfamiliar code, following data flow, investigating end-to-end behavior, debugging call chains, or deciding which files to read next.
development
Use when reviewing authentication, authorization, user input, secrets, API keys, database queries, file uploads, session management, external API calls, OWASP risks, or data handling attack surface.
testing
Use when analyzing tradeoffs, comparing approaches, weighing options, assessing risks, stress-testing conclusions, identifying blind spots, or applying multiple viewpoints to a decision.
development
Use when reviewing hot paths, slow code, database queries, N+1 risks, memory usage, loops, I/O, caching strategy, concurrency, latency-sensitive paths, or resource efficiency.