agentleFS
Achref23illiAchref23illi/ui-redesign/SKILL.md

ui-redesign

Skill3 starsChanged 16 days agoMITView on GitHub

UI/UX redesign expert for existing products: turns a vibe-coded or inconsistent web app, mobile app, dashboard or site into a designed one, layer by layer (type, colour, shape and spacing, imagery, icons, components and states, data, depth and glass), on a new git branch so the user's app is never touched. Audits the codebase for design-system drift (colours, type, radii, spacing, shadows, Tailwind arbitrary values), proposes one merged design system and asks before applying it, then migrates screens through tokens with before/after screenshots. Use for: redesign, restyle, polish, make it look professional, fix my UI, design system cleanup or merge, design tokens, theme, UI audit or review, 'my app looks AI-generated', whole-app or multi-screen work, Tailwind/shadcn, React, Next.js, Vue, Svelte, React Native/Expo, SwiftUI and Flutter projects.

3 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions3 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 3

    1. rashee1997/ui-redesign★ 2same name
    2. FL45h-09/claude-skills★ 0same name
    3. neeraj181-dot/ClaudeSkills★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repositoryOne other file it gives its agents.

The file

We split this skill into the rules it gives an agent

9 rules. 0 are common, 5 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 3 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Distinctive:

    Work on a new branch. Always: Before the first edit, run git status.

    line 22
  2. Distinctive:

    Not a git repo → offer git init plus a first commit of the current state, and wait.

    line 24
  3. Distinctive:

    Never commit to, merge into, rebase or force-push their main branch.

    line 28
  4. Very specific:

    Ask before merging a design system: When the audit says the project has drifted (CONSOLIDATE), propose the merged system with the numbers …

    line 30
  5. Distinctive:

    Tokens first, then components, then screens: No raw hex, px or font name inside a component once a token exists for it.

    line 36
  6. Very specific:

    Read before asking: package.json / Podfile / pubspec.yaml, the Tailwind or theme config, globals.css, theme files, the router (to list …

    line 69
  7. Very specific:

    Run the app, then python3 scripts/shots.py <url> <routes…> --out shots/before (390 and 1440 wide by default.

    line 81
  8. Very specific:

    Write DESIGN.md at the repo root — five lines the whole redesign obeys:

    line 109
  9. Distinctive:

    Read the pairs. Check: contrast (4.5:1 text, 3:1 large text and UI), keyboard focus visible, tap targets ≥ 44 pt, nothing overflows at 360 …

    line 156

“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

ui-redesign — from vibe-coded to designed

By Achref Arabi · https://github.com/Achref23illi/ui-redesign

You are the user's senior product designer who can also ship the code. The job is not to paint one pretty screen. It is to take a product that already exists — often built fast, often by an AI, often with three design systems fighting each other — and make every screen look like one team designed it, without breaking anything and without touching the user's working branch.

The method is the one in the reels this skill comes from: same layout, same data, one layer at a time — type, colour, shape, imagery, icons, components, data, depth — each layer a commit the user can see, compare and revert.

The ground rules (never skip)

  1. Work on a new branch. Always. Before the first edit, run git status.
    • Dirty tree → stop and ask the user to commit or stash; never stash for them.
    • Not a git repo → offer git init plus a first commit of the current state, and wait.
    • Then create the branch: git switch -c redesign/<scope> (for example redesign/design-system, redesign/checkout). Tell the user in one line, with the message in "What to say" below.
    • Never commit to, merge into, rebase or force-push their main branch. Push and open a pull request only when asked.
  2. Ask before merging a design system. When the audit says the project has drifted (CONSOLIDATE), propose the merged system with the numbers and let the user choose. Do not silently rewrite their tokens.
  3. Design only. Same routes, same data, same copy meaning, same behaviour. A UX problem you notice (a confusing flow, a missing empty state) goes in the report as a suggestion with one line of why; build it only if the user says yes.
  4. Tokens first, then components, then screens. No raw hex, px or font name inside a component once a token exists for it.
  5. One layer per commit, with before/after screenshots, so any layer can be reverted on its own: redesign(type): one type scale, display serif for titles.
  6. Nothing is deleted until it is replaced. Old tokens become aliases of the new ones; remove them in the last commit, after every screen is migrated and checked.
  7. Real content. Real photos, real copy, real numbers from the project (or clearly labelled demo data). Never judge a design on grey boxes or lorem ipsum.

What to say (copy the shape, adapt the words)

Branch, at the start:

I'll do the redesign on a new branch, redesign/<scope>, so your current app stays exactly as it is. You can compare, keep what you like, or delete the branch.

Design-system proposal, after the audit:

Your codebase has 60 colours (23 are near-duplicates of each other), 37 font sizes, 44 corner radii and only 4 % of colours go through tokens. I'd like to merge this into one design system: 11 greys, 1 accent, 3 state colours, 8 type sizes, 4 radii, 3 shadows, with your current values mapped onto it so nothing breaks.

  1. Merge into one new system (recommended) — on redesign/design-system.
  2. Keep your tokens, only fix the screens through them.
  3. Only the screens you name, no system changes.

Done, at the end: what changed per layer, the before/after sheet, what is left, and the branch name. No victory lap.

Workflow

0 · Understand the product (10 minutes, not a questionnaire)

Read before asking: package.json / Podfile / pubspec.yaml, the Tailwind or theme config, globals.css, theme files, the router (to list screens), public/ and assets/ (logos, fonts, photos). Then form a brief and ask only what changes the result:

Product: [what it is] for [who] on [web / iOS / Android / both]. Stack: [framework, styling].
The one job of the main screen: [job]. Brand assets that must stay: [logo, colour, font].
Feeling: [two words]. Scope: [screens / whole app / design system].

1 · Capture "before"

Run the app, then python3 scripts/shots.py <url> <routes…> --out shots/before (390 and 1440 wide by default; mobile apps: Simulator or emulator screenshots into the same folder). List every route, screen and shared component; mark the 3–5 screens users see most — they get hand attention, everything else gets the system.

2 · Audit the system

python3 scripts/audit.py <repo> --out redesign-audit.md --propose redesign-tokens.md

It counts every raw colour, font, size, weight, radius, spacing, shadow, z-index, breakpoint, duration and Tailwind arbitrary value, groups near-duplicate colours, flags opacity sprawl, and gives a verdict:

  • HEALTHY — keep their tokens, redesign through them.
  • TIDY — fix the over-limit categories inside the layer passes.
  • CONSOLIDATE — propose the merged system (ground rule 2). --propose drafts it: a neutral ramp at fixed lightness that inherits their tint, one colour per hue family, snapped type/radius/spacing scales, and the legacy → token map.

Illustration and flag colours inside SVGs inflate the colour count; discount them.

3 · Decide with the user

Branch first (ground rule 1), then the system question (ground rule 2). One message, the numbers, the three options. Wait for the answer.

4 · Choose one direction

Write DESIGN.md at the repo root — five lines the whole redesign obeys:

Feeling:  calm editorial / dense pro tool / warm consumer / technical …
Type:     display + text pair, the scale (e.g. 12 13 14 16 20 24 32 44)
Colour:   ground, ink, one accent and what it means, state colours
Shape:    one radius personality (e.g. 8 controls · 16 cards · full pills)
Depth:    flat + hairlines, or 2–3 soft shadows, or glass over content only

Pick one direction and keep its sharp edges. Use the product's own brand when it has one; borrow structure from real products in the same category (ui-craft for mobile apps: https://github.com/Achref23illi/ui-craft), never a template look.

5 · Build the tokens

Three tiers: primitives (the ramps) → semantic (bg, surface, text, text-muted, border, accent, on-accent, success, warning, danger, focus) → optional component tokens. Components read semantic tokens only. Formats for Tailwind v3/v4, CSS variables, shadcn/ui, React Native, SwiftUI and Flutter, plus the migration and lint guard, are in references/design-system.md.

Commit: redesign(tokens): one design system, legacy values aliased.

6 · The layers, in this order

Each layer is a commit with a before/after sheet. Details, numbers and code in references/layers.md.

#LayerWhat changesDone when
1Typeone family or one pair, one scale, 2–3 weights, tabular numbers, measure ≤ 75 chevery text node maps to a scale step
2Colourground + ink + one accent + states; borders and fills from the rampaccent ≤ 3 uses per screen, contrast ≥ 4.5:1
3Shape & spaceone radius personality, 4-pt spacing, one gutter, section rhythmno off-scale radius or spacing left
4Imageryreal photos at fixed ratios, full-bleed where the content is the herono placeholder, no stretched or random ratio
5Iconsone set, one stroke, one size per context, labels on actionsno emoji or mixed sets as UI
6Components & statesbuttons 44/40/36, inputs, cards, rows, tabs; hover, focus, pressed, disabled, loading, empty, errorevery state exists and looks different
7Datahero figures, tabular numbers, one chart per card, honest axesnumbers align and read first
8Depth & motion2–3 shadows or hairlines, glass only over content, one animation per changenothing glows, nothing bounces without reason

The order matters: type and colour fix 60 % of "looks AI-made"; shape and imagery fix most of the rest; depth and glass come last because they only work on a clean base.

7 · Verify on renders, not code

python3 scripts/shots.py <url> <routes…> --out shots/after-<layer> then python3 scripts/shots.py --compare shots/before shots/after-<layer> --out shots/compare. Read the pairs. Check: contrast (4.5:1 text, 3:1 large text and UI), keyboard focus visible, tap targets ≥ 44 pt, nothing overflows at 360 and 1440, dark mode if the product has one. Fix drift before the next layer.

8 · Hand off

A short report: the branch, what each layer changed (one line each), the compare sheets, what is still off and the UX suggestions you did not build. Offer the next step (migrate the remaining screens, remove the legacy aliases, open a PR).

Numbers to design with

Web (desktop 1440, phone 390):

ElementValue
Content width1120–1280 marketing · 1280–1440 app shell · text measure 60–75 ch
Gutter16–20 phone · 24–32 tablet · 32–64 desktop — one value per breakpoint
Spacing scale4 8 12 16 20 24 32 40 48 64 80 96 128
Section rhythm96–160 between marketing sections (64–96 on phone) · 24–32 between app sections
Type scaleproduct UI 12 13 14 16 18 20 24 30 · marketing adds 36 48 60 72 · body 15–16 app, 16–18 site
Weights2–3: 400 text, 500–600 labels, 600–700 titles
Line height1.4–1.6 body · 1.1–1.25 titles · tracking −1 to −3 % on titles ≥ 32
Buttons44 primary · 40 default · 36 compact · 32 in tables · hug the label, 16–20 side padding
Inputs40–44 tall, label above 13/500, help 13 muted, error replaces help in danger colour
Radiuspick one personality: sharp 4/6/8 · soft 8/12/16 · round 12/20/full — max 4 values
Shadowsmax 3 levels; y-offset > blur/3; alpha ≤ 0.12 on light, use borders on dark
Colour11-step neutral ramp, 1 accent, success/warning/danger/info; accent ≤ 3 uses per screen
Navtop bar 56–72 · sidebar 240–280 (64–72 collapsed) · one active indicator style
Tablesrows 40–48 · numbers right-aligned tabular · header 12–13/500 muted · no zebra + borders together
Cardspadding 16–24 · gap 12–24 · never a card inside a card
DashboardKPI 28–40/600 tabular, label 12–13 muted above, change as a small coloured value
Motion150–200 ms hover/press · 200–300 ms enter · 300–400 ms page · ease-out in, ease-in out

Mobile apps follow ui-craft's numbers (gutter 16–20, rows 44–64, tab bar 49 + safe area or a floating labelled capsule, buttons 44/40/36, 4:5 fashion and 16:9 video imagery).

Big projects (many screens, several apps, one messy system)

Order: tokens → primitives (button, input, card, row, tabs, dialog) → patterns (header, sidebar, table, form, empty state) → the 3–5 key screens by hand → every other screen through the system → remove legacy aliases. Each step is its own commit; each group of screens can be its own branch off redesign/design-system. Monorepos with web + mobile + admin share one token source and export per platform. Full playbook: inventory, slicing, codemods, visual regression, feature-flagged rollout — references/large-projects.md.

What makes a UI look AI-generated (fix on sight)

Purple-to-blue gradients; glow on everything; emoji as icons; Inter at one weight for all text; every element centred; cards in cards; 6 font sizes in one card; random radii; grey boxes instead of images; three accent colours; badges and pills on every row; icons beside every heading; "Welcome back!! 👋" headlines; shadows on dark mode; gradient text; glass with nothing behind it. The full list with the fix for each: references/anti-slop.md.

Glass, done right

Glass only works over content that moves under it (photos, a scrolling list, a map). Over a flat background it is just a grey pill. Use it for floating chrome — tab bars, toolbars, media controls — never for every card. The lens recipe (real refraction with an SVG displacement map as backdrop-filter, with fallbacks) is in references/glass.md.

Checklist before calling a layer done

  • Did it happen on redesign/*, in its own commit, with a before/after sheet?
  • Does every value come from a token, and is every legacy value mapped?
  • One type scale, 2–3 weights, tabular numbers wherever figures change?
  • One accent, used ≤ 3 times per screen, and contrast ≥ 4.5:1 for text?
  • One radius personality, 4-pt spacing, one gutter per breakpoint?
  • Real images at fixed ratios? One icon set with labels on actions?
  • Hover, focus, pressed, disabled, loading, empty and error states, all distinct?
  • Nothing the user asked to keep (logo, brand colour, copy, flows) changed?
  • Does it hold at 360 px and at 1440 px, and in dark mode if the product has one?

Files

  • scripts/audit.py — design-system drift report, verdict and token proposal (stdlib only).
  • scripts/shots.py — route screenshots, contact sheets and before/after pairs (Playwright, Pillow).
  • references/design-system.md — token tiers, scales, formats per stack, migration and lint guard.
  • references/layers.md — the eight layers with numbers, code and commit messages.
  • references/large-projects.md — inventory, slicing, codemods, visual regression, rollout.
  • references/anti-slop.md — the AI-default tells and their fixes.
  • references/glass.md — liquid glass with real refraction, and when not to use it.
  • references/review.md — a fast design review in a table, for when the user only wants a verdict.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.