skills/use-tailwind-v4/SKILL.md
Tailwind CSS v4 syntax and v3→v4 migration reference. Use when the user mentions 'Tailwind v4', 'upgrade Tailwind', @theme, @utility, or @import 'tailwindcss', or is working in a project whose config indicates v4.
npx skillsauth add nweii/agent-stuff use-tailwind-v4Install 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.
/* v4 import (replaces @tailwind directives) */
@import "tailwindcss";
/* Custom utilities (replaces @layer utilities) */
@utility tab-4 {
tab-size: 4;
}
/* Loading JS config (if still needed) */
@config "../../tailwind.config.js";
v4 exposes all theme values as CSS variables. Prefer these over theme():
background-color: var(--color-red-500);
font-family: var(--font-sans);
| v3 | v4 | Notes |
|----|-----|-------|
| shadow-sm | shadow-xs | Scale shifted |
| shadow | shadow-sm | Scale shifted |
| drop-shadow-sm | drop-shadow-xs | Scale shifted |
| drop-shadow | drop-shadow-sm | Scale shifted |
| blur-sm | blur-xs | Scale shifted |
| blur | blur-sm | Scale shifted |
| backdrop-blur-sm | backdrop-blur-xs | Scale shifted |
| backdrop-blur | backdrop-blur-sm | Scale shifted |
| rounded-sm | rounded-xs | Scale shifted |
| rounded | rounded-sm | Scale shifted |
| outline-none | outline-hidden | outline-none now sets outline-style: none |
| ring | ring-3 | Default changed from 3px to 1px |
<!-- v3: opacity utilities -->
<div class="bg-black bg-opacity-50">
<!-- v4: opacity modifiers -->
<div class="bg-black/50">
Also: flex-shrink-* → shrink-*, flex-grow-* → grow-*, overflow-ellipsis → text-ellipsis
| What | v3 Default | v4 Default |
|------|------------|------------|
| Border color | gray-200 | currentColor |
| Ring width | 3px | 1px |
| Ring color | blue-500 | currentColor |
| Button cursor | pointer | default |
Changed from right-to-left to left-to-right:
<!-- v3 -->
<ul class="first:*:pt-0">
<!-- v4 -->
<ul class="*:first:pt-0">
<!-- v3: square brackets -->
<div class="bg-[--brand-color]">
<!-- v4: parentheses -->
<div class="bg-(--brand-color)">
<!-- v4 prefixes are at the start, like variants -->
<div class="tw:flex tw:bg-red-500 tw:hover:bg-red-600">
For project migrations, run the automated upgrade tool:
npx @tailwindcss/upgrade
Requires Node.js 20+. Run in a new branch and review changes.
For complete migration details (PostCSS/Vite/CLI config, custom utilities, framework-specific issues), see references/upgrade-guide.md.
development
Sync meetings from Granola to Obsidian — pulls notes and transcripts and imports them as formatted meeting/transcript notes. Use when the user says "sync my last granola meeting", "note for my last meeting", or asks to pull in a Granola transcript.
tools
Create a topic note grouping related notes under a common theme, with automatic backlinking to source notes. Triggers: 'group these under a topic', 'create topic note for [[A]], [[B]], [[C]]'.
data-ai
Save an archival summary of an AI conversation to Nathan's Obsidian vault, using the Thinking note template and vault folder conventions to capture intellectual journeys, key insights, and technical logs. Use when archiving a chat session to the vault.
testing
Enrich an existing meeting/interview note from its transcript, or scaffold one when only a transcript exists. Captures granular narrative, exact phrases, mechanics, casual context, and implicit signals. Run on thin auto-summary notes or transcripts that warrant close reading.