| name | fix-tailwind-canonical |
| description | Fix deprecated Tailwind CSS class names to their v4 canonical equivalents using LSP diagnostics |
Fix Tailwind CSS Canonical Classes
Tailwind CSS v4์์ deprecated๋ ํด๋์ค ์ด๋ฆ์ canonical(์ ์) ์ด๋ฆ์ผ๋ก ์๋ ๋ณํํฉ๋๋ค.
How it works
์ด skill์ ๋ ๊ณ์ธต์ผ๋ก ๋์ํฉ๋๋ค:
Layer 1: Hook (์ ์ ์นํ)
- PostToolUse hook (
.claude/hooks/fix-tailwind-canonical.sh)์ด Edit|Write ํ ์๋ ์คํ
- ์๋ ค์ง ์ ์ ๋งคํ๋ง sed๋ก ์ฆ์ ์นํ (bg-gradientโbg-linear, flex-growโgrow ๋ฑ)
Layer 2: Skill (LSP ์ง๋จ ๊ธฐ๋ฐ โ ์ด ๋ฌธ์)
- Hook์ด ์ก์ง ๋ชปํ๋ ๋์ ๋ณํ์ ์ฒ๋ฆฌ (์:
h-[600px] โ h-150)
- LSP diagnostics์์
suggestCanonicalClasses ๊ฒฝ๊ณ ๋ฅผ ์ฝ์ด ์ ํํ canonical ์ด๋ฆ์ ์ถ์ถ
Instructions
์ด skill์ด ํธ์ถ๋๋ฉด ๋ค์ ์์๋ก ์คํํฉ๋๋ค:
Step 1: IDE ์ง๋จ ์กฐํ
๋์ ํ์ผ์ ๋ํด VSCode IDE diagnostics๋ฅผ ์กฐํํฉ๋๋ค:
mcp__ide__getDiagnostics(uri="file://<absolute_path>")
Step 2: suggestCanonicalClasses ํํฐ๋ง
์ง๋จ ๊ฒฐ๊ณผ์์ suggestCanonicalClasses๋ฅผ ํฌํจํ๋ ๋ฉ์์ง๋ฅผ ํํฐ๋งํฉ๋๋ค.
๊ฐ ์ง๋จ ๋ฉ์์ง๋ ๋ค์ ํ์์
๋๋ค:
The class `<old>` can be written as `<canonical>` (suggestCanonicalClasses)
๋ฉ์์ง์์ old class์ canonical class๋ฅผ ์ถ์ถํฉ๋๋ค.
Step 3: ์๋ ์์
๊ฐ ๊ฒฝ๊ณ ์ ๋ํด:
- ํ์ผ์์ ํด๋น line/column์ old class๋ฅผ ์ฐพ์ต๋๋ค
- canonical class๋ก Edit ๋๊ตฌ๋ฅผ ์ฌ์ฉํด ๊ต์ฒดํฉ๋๋ค
- variant prefix (hover:, focus: ๋ฑ)์
! modifier๋ ๋ณด์กดํฉ๋๋ค
Step 4: ๊ฒ์ฆ
์์ ํ ๋ค์ mcp__ide__getDiagnostics๋ฅผ ํธ์ถํ์ฌ suggestCanonicalClasses ๊ฒฝ๊ณ ๊ฐ 0๊ฐ์ธ์ง ํ์ธํฉ๋๋ค.
Known static mappings (hook์ด ์๋ ์ฒ๋ฆฌ)
| Old | Canonical |
|---|
bg-gradient-to-{dir} | bg-linear-to-{dir} |
flex-grow / flex-grow-0 | grow / grow-0 |
flex-shrink / flex-shrink-0 | shrink / shrink-0 |
overflow-ellipsis | text-ellipsis |
decoration-clone / decoration-slice | box-decoration-clone / box-decoration-slice |
bg-left-top ๋ฑ | bg-top-left ๋ฑ (position order) |
object-left-top ๋ฑ | object-top-left ๋ฑ |
Dynamic canonicalizations (LSP๋ก๋ง ๊ฐ์ง ๊ฐ๋ฅ)
- Arbitrary value โ bare value:
h-[600px] โ h-150 (spacing scale ์์กด)
- Theme to var:
text-[theme(colors.red.500)] โ text-(--tw-color-red-500)
- Calc to spacing:
mt-[calc(var(--spacing)*4)] โ mt-4
- Unnecessary data types:
text-[length:1rem] โ text-[1rem]
Source of Truth
- Tailwind CSS v4 core:
canonicalize-candidates.ts (UTILITY_CANONICALIZATIONS pipeline)
- Tailwind CSS IntelliSense:
suggestCanonicalClasses diagnostic
- Upgrade tool:
migrate-simple-legacy-classes.ts (LEGACY_CLASS_MAP)