English · 简体中文
A Claude Code Skill that turns your tired React / Vue / Svelte + Tailwind UI into a 2026 SaaS product. Linear · Vercel · Stripe · shadcn — pick a vibe, get the look.
"modernize this UI"
npx ui-modernizer
That's it. The Skill is now available in any project you open with Claude Code.
Then in Claude Code, in any React/Vue/Svelte + Tailwind project:
modernize this UI
Claude takes it from there.
| Before | After | |
|---|---|---|
| Spacing | p-2 m-2 everywhere |
systematic 4 / 6 / 8 rhythm |
| Color | gray-* + blue-500 |
zinc + indigo + brand-aware |
| Radius | rounded |
rounded-md / rounded-xl per element |
| Shadow | shadow |
shadow-sm + ring-1 ring-zinc-200 |
| Hover | none | transition-colors hover:bg-zinc-50 everywhere |
| Focus | invisible | focus-visible:ring-2 ring-indigo-500 |
| Dark mode | doesn't exist | every color has a dark: variant |
| Motion | nope | animate-in fade-in slide-in-from-bottom-2 |
| Typography | font-bold shouting |
font-semibold tracking-tight whispering |
Pick a vibe:
modernize this UI like Linear # ultra-tight, mono-ish, soft purples (dark-first)
modernize this UI like Vercel # monochrome, brutalist, hero gradients
modernize this UI like Stripe # trust + precision, layered gradients, premium
modernize this UI like shadcn # semantic CSS vars, the de-facto modern default
modernize this UI like Notion # warm, calm, generous whitespace
modernize this UI like Raycast # dark, dense, command-bar energy
modernize this UI like Apple # premium pills, soft shadows, glass
Or bring your own profile — point at any local Markdown file matching the spec:
modernize this UI using ./design/our-brand.md
See Pluggable style profiles and the profile format spec.
modernize this UI and use shadcn components
ui-modernizer scans your project for hand-rolled <button> / <input> / <span class="badge-shape"> / card patterns, runs npx shadcn@latest add ... for what it needs, then rewrites them to <Button> / <Input> / <Badge> / <Card> — preserving every event handler, ref, and aria-* along the way.
Read references/component-substitution.md for the full workflow and safety rules.
ui-modernizer only touches your visual layer:
className string contents<div>s (additive only)globals.css, tailwind.configEvery run is:
.ui-modernizer-backup/<timestamp>/.report.md with file-by-file +/- counts.npx ui-modernizer rollback
┌──────────┐ ┌──────────┐ ┌──────────┐
│ DETECT │ → │ PLAN │ → │ BACKUP │
│ stack │ │ files │ │ originals│
└──────────┘ └──────────┘ └──────────┘
↓
┌──────────┐ ┌──────────┐ ┌──────────┐
│ DONE ✨ │ ← │ REPORT │ ← │ APPLY │
│ │ │ .md │ │ rules │
└──────────┘ └──────────┘ └──────────┘
Knowledge is split into Markdown files that Claude reads on demand — so you can:
references/style-references/<your-brand>.md, get a custom modernizer for your design system.references/tailwind-modernization.md.| Status | |
|---|---|
| React + Next.js (App Router) | ✅ |
| React + Next.js (Pages Router) | ✅ |
| Vue 3 + Nuxt 3 | ✅ |
| Vue 3 + Vite | ✅ |
| Svelte 5 + SvelteKit | ✅ |
| Svelte 5 + Vite | ✅ |
| Tailwind CSS v3 | ✅ |
| Tailwind CSS v4 | ✅ |
| styled-components | ❌ out of scope |
| CSS Modules | ❌ out of scope |
git clone https://github.com/Rosalina7515/ui-modernizer
cd ui-modernizer/examples/before && npm install && npm run dev
# → http://localhost:3000 (looks dated on purpose)
cd ../after && npm install && npm run dev
# → http://localhost:3001 (what ui-modernizer produces)
@babel/parser for JSX/TSX; tightened scanners for Vue/Svelte).ui-modernizer.json config + --dry-run modeUMD-NNN error codes, unified JSON output, Vitest tests, "did you mean?" suggestionsFull reasoning, strategic notes, and explicit non-goals → ROADMAP.md.
ui-modernizer is mostly prompt + Markdown rules. Adding a new aesthetic is one PR:
references/style-references/notion.md as a starting template.name must match your filename) and fill in ## Tokens, ## Patterns, ## Don'ts.node scripts/validate-profile.mjs references/style-references/<your>.md — must exit 0.Read the profile format spec before you start. It's short.
npm install
npm test
(Uses Vitest — npm test runs once, npm run test:watch watches.)
Does it call an external API? No. It runs entirely inside your local Claude Code. Your code never leaves your machine.
Will it change my business logic?
By design, no. Hard rules in SKILL.md forbid it, and every run produces an auditable diff.
What if I hate the result?
npx ui-modernizer rollback — every modified file is restored from a timestamped backup.
Does it work without Tailwind?
Not in MVP. CSS Modules and styled-components are on the roadmap (v0.4+).
Why "Skill" and not a CLI? The visual judgement here needs an LLM. A CLI would be doing dumb regex replaces; the Skill leverages Claude's design taste while keeping side effects (backups, diffs, rollback) deterministic.
An open-source project for developers who care about UI craft.