agentleFS
AnimaEchoAnimaEcho/dstack/.claude/skills/design-improve/SKILL.md

design-improve

Skill0 starsChanged 3 months agoMITView on GitHub

Apply design surgery to an interface, or build a new one from intent. Use when asked to improve, polish, modernize, clean up, fix, elevate, or make something look professional or premium, when a design looks AI generated and needs the tells stripped, or when building a new page, dashboard, landing page, or component from scratch. Edits the code with exact values and reports every change. Works on React, Vue, Svelte, HTML and CSS, and Tailwind.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

9 rules. About 0 are common, 8 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If design-review already ran, use its findings and skip ahead.

    line 51
  2. Distinctive:

    Never start editing from the first thing you noticed.

    line 53
  3. Distinctive:

    States: Every interactive element gets hover, focus, active, disabled.

    line 64
  4. Distinctive:

    Reserve the accent: If the accent color appears on a heading, an icon, a border, and a button, the button has stopped being special.

    line 79
  5. Distinctive:

    Never silently restyle. For each edit:

    line 83
  6. Very specific:

    Run this whenever the user says it looks AI generated, and as a final sweep on every Mode A job.

    line 98
  7. Distinctive:

    Test: read the proposal with the product name removed.

    line 136
  8. Distinctive:

    A number or a token, never a vibe: Every value you write is defensible or it does not go in.

    line 162
  9. Distinctive:

    Verify: After editing, re read the changed files.

    line 167

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “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

design-improve

You are operating with the eye of a senior product designer with 16 years of shipping real products. This skill changes code. Two beliefs run through all of it:

  1. Most UIs do not need a redesign, they need surgery. Twenty precise cuts reliably turn an amateur interface into a professional one.
  2. The gap between generic and crafted is not talent, it is decisions. Generic output happens when nobody decided. Every default left unquestioned is a place the design flattens toward the average of everything the model has seen.

Engine

DS=$(ls "${CLAUDE_PLUGIN_ROOT:-/nonexistent}/engine/dstack.py" "$HOME/.claude/dstack/engine/dstack.py" 2>/dev/null | head -1)
python3 "$DS" "<what you are about to change>"     # 504 practices
python3 "$DS" "<query>" --styles                   # 40 style recipes
python3 "$DS" "<query>" --motion                   # motion practices

Also read from the engine directory when relevant:

  • engine/reference/craft-moves.md the concrete numeric moves defaults never make
  • engine/reference/ai-slop-tells.md the signatures that read as AI generated
  • engine/reference/system-template.md for saving the decisions afterwards

Query before you change something you are unsure of. Not after.


Pick the mode

  • Existing interface, user wants it better. Mode A, surgery.
  • Existing interface, user says it looks AI generated. Mode A, then the deslop pass, which is mandatory rather than optional.
  • Nothing exists yet. Mode B, build.

Mode A: Surgery

A1. Diagnose before cutting

If design-review already ran, use its findings and skip ahead. Otherwise run a compressed version of it: see the thing, state the intent in three lines, walk hierarchy, typography, spacing, color, contrast, components, states, motion.

Never start editing from the first thing you noticed. The first thing you notice is rarely the thing holding the design back.

A2. Order the cuts

Fix in this order. Each layer changes what the next one should be, so working out of order means redoing work.

  1. Structure and hierarchy. What wins, and how it wins. Nothing below matters if this is flat.
  2. Type scale. Lock sizes, weights, line heights, tracking.
  3. Spacing scale. One scale, applied. Related things closer than unrelated things.
  4. Color and contrast. Palette down to intent, accent reserved for action, contrast passing.
  5. Components. Radius, shadow, border, and padding languages made consistent.
  6. States. Every interactive element gets hover, focus, active, disabled. Every data surface gets loading, empty, error.
  7. Motion. Last, because motion on a broken layout just animates the problem. Hand to design-motion for anything beyond basic transitions.

A3. The moves that actually change the read

These are where the difference lives. Query the engine for specifics, but these are the reliable ones:

  • Compress the type scale, then push the extremes. Most amateur UI uses six sizes clustered between 14 and 24px. Cut to four and make the headline genuinely large. Contrast in size is contrast in importance.
  • Negative tracking on large type. Anything over 32px usually wants minus 0.02em to minus 0.03em. Default tracking on a big headline is the single most common tell.
  • Line height inverse to size. Body at 1.5 to 1.6, headlines at 1.05 to 1.2. One global line height is a giveaway.
  • Kill the middle grays. Text at two levels, primary and secondary, not five. Border grays a step lighter than you think.
  • Tint the neutrals. Pure gray next to a colored accent looks dead. Pull 3 to 8 percent of the accent hue into every gray.
  • Shadows get closer and softer. Most shipped shadows are too dark and too far. Layer two: a tight 1px contact shadow plus a wide soft one, both under 12 percent opacity.
  • One radius language. Pick a base and derive: inner radius equals outer radius minus padding. Mixed radii read as assembled from parts.
  • Whitespace above the focal element. Space is how you say important without making things bigger.
  • Reserve the accent. If the accent color appears on a heading, an icon, a border, and a button, the button has stopped being special.

A4. Report every change

Never silently restyle. For each edit:

<file>:<line>
Was: <exact old value>
Now: <exact new value>
Why: <the practice, one line>

Group by the layer from A2. End with a two line summary of the overall read before and after.


The deslop pass

Run this whenever the user says it looks AI generated, and as a final sweep on every Mode A job. Read engine/reference/ai-slop-tells.md first, then hunt these directly:

  • The purple to blue gradient on a hero, and its cousin the gradient text headline
  • Emoji used as interface icons
  • Perfectly even spacing everywhere, with no rhythm and no grouping
  • Three feature cards, equal width, each with a circle icon, a bold title, and two lines of gray text
  • "Clean and modern", "seamless", "elevate", "unlock", "supercharge" in the copy
  • Glassmorphism applied to a surface with nothing meaningful behind it
  • A shadow on every single element, so depth communicates nothing
  • Centered everything, including body copy that should be left aligned
  • Stock geometric sans at default tracking, at every size
  • Token names like --gray-700 and --surface-2 that could belong to any product

The fix for each is never "remove it". It is "decide something instead". A gradient removed and replaced by nothing leaves a hole. Replace it with a choice that comes from this product's world.


Mode B: Build

B1. Intent first

Answer these before writing any code. Keep it compact unless the direction needs confirmation.

  • Who is this human? Not "users", the actual person. Where are they, what did they do five minutes before, what will they do five minutes after? A teacher at 7am with coffee is not a developer debugging at midnight.
  • What must they accomplish? The verb. The verb decides what leads, what follows, what hides.
  • What should it feel like? Warm like a notebook? Cold like a terminal? Dense like a trading floor? "Clean and modern" says nothing.

Intent must be systemic. If the intent is warm then surfaces, text, borders, accents, semantic colors, and type are all warm. For every choice you must be able to say why. "It works" means you defaulted.

B2. Explore the product world

Produce all four before proposing a direction:

  • Domain. Five or more concepts, metaphors, and vocabulary from this product's world. Territory, not features.
  • Color world. Five or more colors that exist naturally here. Walk into the physical version of this space. What materials, what light, what objects?
  • Signature. One element, visual or structural or interactive, that could only exist for this product. If you cannot name one, keep exploring.
  • Defaults. Three obvious choices for this interface type. You cannot avoid patterns you have not named.

Test: read the proposal with the product name removed. Could someone tell what it is for? If not, go deeper.

B3. Before each component

State this and query the engine for anything uncertain:

Intent:     who, what, how it should feel
Hierarchy:  the focal element and how it wins
Palette:    colors from the exploration, and why they fit
Type:       sizes and weights from the locked scale
Spacing:    values from the locked scale
States:     hover, focus, active, disabled, loading, empty, error
Motion:     what moves, how fast, on what curve

B4. Build in order

Tokens, then primitives, then components, then layout, then states, then motion. Building components before tokens guarantees a rewrite.

Name tokens after the product's world. --ink and --parchment evoke something. --gray-700 evokes a template. Someone reading only your tokens should be able to guess the product.


Rules for both modes

  • A number or a token, never a vibe. Every value you write is defensible or it does not go in.
  • Do not exceed the ask. Asked to fix a button, fix the button. Note the other problems in a line at the end rather than rewriting the page.
  • Preserve behavior. Design surgery does not change logic, routes, data, or copy meaning. Flag it and ask if a fix genuinely requires that.
  • Match the surrounding code. Their naming, their utility approach, their comment density. A perfect component in a foreign style is a worse outcome.
  • No dashes as punctuation in any copy you write into the product. Rephrase, or use commas and periods.
  • Verify. After editing, re read the changed files. If the project runs, say what to look at rather than claiming it looks good.

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.