agentleFS
gongyijie85gongyijie85/dsh-ecc/skills/make-interfaces-feel-better/SKILL.md

make-interfaces-feel-better

Skill8 starsChanged 3 months agoMITView on GitHub

Apply concrete design-engineering details that make interfaces feel polished. Use when reviewing or improving UI spacing, typography, borders, shadows, motion, hit areas, icons, text wrapping, and interaction states.

40 other projects use a version of this, 4 of them edited.

Adopted by

Most recently taken up by

Used with

Projects with it also use add-block, userinterface-wiki and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • Ame-AlSkill

    add-block

    Create or update a Sim integration block with correct subBlocks, conditions, dependsOn, modes, canonicalParamId usage, outputs, and tool wiring. Use when working on `apps/sim/blocks/blocks/{service}.ts` or aligning a block with its tools.

    Also in 3 projects that use this

  • raphaelsalajaSkill

    userinterface-wiki

    UI/UX best practices for web interfaces. Use when reviewing animations, CSS, audio, typography, UX patterns, prefetching, or icon implementations. Covers 11 categories from animation principles to typography. Outputs file:line findings.

    Also in 3 projects that use this

  • AnasX7Skill

    transitions-dev

    Production-ready CSS transitions for web apps. Use when implementing notification badges, dropdowns, modals, panel reveals, page transitions, card resizes, number pop-ins, text swaps, icon swaps, success checks, avatar group hovers, error state shakes, search/input clear, skeleton loaders, shimmer text, sliding tabs, tooltips, staggered text reveals, card hover tilt, plus-to-menu morph, accordions, toasts, like buttons, learn-more hovers, checkbox checks, spinning counters, toggles, AI thinking states, reasoning streams, streaming text, matrix dot loaders, or banner stacking. Triggers on "add a transition", "animate the dropdown", "make the modal open smoothly", "swap icon", "page slide", "stagger animation", "open / close transition", "make it animate", "fade between", "success animation", "form error", "shake on invalid", "hover lift", "avatar stack hover", "clear the search", "skeleton loader", "loading shimmer", "shimmer text", "sliding tabs", "segmented control", "tooltip", "reveal text", "tilt card", "3D hover tilt", "cursor glare", "plus to menu", "FAB morph", "accordion", "collapsible", "expand / collapse", "disclosure", "toast", "snackbar", "like button", "heart animation", "learn more arrow", "checkbox", "check animation", "spinning counter", "odometer", "slot machine digits", "toggle", "switch", "thinking states", "AI status line", "agent reasoning", "reasoning stream", "streaming text", "stream words in", "matrix loader", "dot loader", "banner stack", "stacked toasts". Also "motion tokens", "scan for ad-hoc transitions", "replace hardcoded durations with motion tokens", "tokenize my animations", and the commands transitions reveal, transitions review, transitions apply, transitions refine.

    Also in 6 projects that use this

  • AnasX7Skill

    better-typography

    Focuses on type scale, spacing, sizing, variable fonts, OpenType features, wrapping, truncation and other details that make typography feel great across your product.

    Also in 5 projects that use this

  • agentset-aiSkill

    fixing-accessibility

    Fix accessibility issues.

    Also in 4 projects that use this

  • VercelSkill

    emil-design-eng

    This skill encodes Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great.

    Also in 15 projects that use this

  • +6 more from AnasX7

The file

We split this skill into the rules it gives an agent

12 rules. 0 are common, 7 are distinctive, and 5 are very specific to this project.

  • 0

    Common

    Most of the 37 edited versions we read keep these.

  • 7

    Distinctive

    This author's own choices. Worth a look.

  • 5

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use this skill for the small design-engineering details that compound into a more polished interface.

    line 10
  2. Distinctive:

    If padding is large, treat layers as separate surfaces instead of forcing the math.

    line 33
  3. Distinctive:

    Use borders for separation and focus rings.

    line 44
  4. Very specific:

    Use text-wrap: balance on headings and short titles.

    line 50
  5. Very specific:

    Use text-wrap: pretty on short-to-medium body text, captions, descriptions, and list items.

    line 51
  6. Distinctive:

    Avoid both on long prose, code, and preformatted content.

    line 53
  7. Very specific:

    Use font-variant-numeric: tabular-nums for counters, timers, prices, tables, and other updating numbers.

    line 54
  8. Distinctive:

    Use neutral black or white alpha outlines.

    line 87
  9. Distinctive:

    Use CSS transitions for interactive state changes because they can retarget when the user changes intent mid-motion.

    line 92
  10. Very specific:

    Never use transition: all.

    line 107
  11. Very specific:

    Use will-change only for first-frame stutter on compositor-friendly properties such as transform, opacity, and filter.

    line 117
  12. Distinctive:

    When reviewing a UI polish pass, report concrete changes in before/after rows:

    line 129

“Common” is measured: kept by at least 6 in 10 of the 37 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

Make Interfaces Feel Better

Use this skill for the small design-engineering details that compound into a more polished interface.

Source: salvaged from stale community PR #1659 by linus707.

When to Use

  • The user says the UI feels off, flat, generic, cramped, jumpy, or unfinished.
  • You are building controls, cards, lists, dashboards, navigation, forms, or toolbars.
  • A component needs hover, active, focus, enter, exit, loading, or empty states.
  • A frontend review needs specific before/after recommendations.

Core Principles

Concentric Radius

For nearby nested rounded surfaces:

outer radius = inner radius + padding

If padding is large, treat layers as separate surfaces instead of forcing the math. The point is optical coherence, not formula worship.

Optical Alignment

Geometric centering is not always visual centering. Icon buttons, play triangles, arrows, stars, and asymmetric icons often need a small offset. Fix the SVG when possible; otherwise adjust with a pixel-level margin or padding change.

Shadows And Borders

Use borders for separation and focus rings. Use layered shadows when a card, button, dropdown, or popover needs depth. Shadows should be transparent and subtle enough to work across backgrounds.

Text Wrapping

  • Use text-wrap: balance on headings and short titles.
  • Use text-wrap: pretty on short-to-medium body text, captions, descriptions, and list items.
  • Avoid both on long prose, code, and preformatted content.
  • Use font-variant-numeric: tabular-nums for counters, timers, prices, tables, and other updating numbers.

Font Smoothing

On macOS, apply antialiased font smoothing at the root layout when the project does not already do so:

html {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

Image Outlines

Images often need a subtle inset outline so their edges do not blur into the surface.

img {
  outline: 1px solid rgba(0, 0, 0, 0.1);
  outline-offset: -1px;
}

@media (prefers-color-scheme: dark) {
  img {
    outline-color: rgba(255, 255, 255, 0.1);
  }
}

Use neutral black or white alpha outlines. Do not tint image outlines with the brand palette.

Motion

Use CSS transitions for interactive state changes because they can retarget when the user changes intent mid-motion. Reserve keyframes for staged one-shot entrances or loading sequences.

Good motion defaults:

  • Enter: combine opacity, small translateY, and optionally blur.
  • Exit: shorter and quieter than enter, usually 150ms.
  • Press: scale(0.96) for tactile buttons, with a way to disable it when the movement distracts.
  • Icon swaps: cross-fade with opacity, scale, and blur instead of instant visibility toggles.

Transition Scope

Never use transition: all. Specify the changed properties:

.button {
  transition-property: transform, background-color, box-shadow;
  transition-duration: 150ms;
  transition-timing-function: ease-out;
}

Use will-change only for first-frame stutter on compositor-friendly properties such as transform, opacity, and filter. Never use will-change: all.

Hit Areas

Interactive controls should have at least a 40x40px hit area, ideally 44x44px where the layout allows it. Expand with a pseudo-element when the visible icon is smaller, but do not let expanded hit areas overlap.

Review Output

When reviewing a UI polish pass, report concrete changes in before/after rows:

PrincipleBeforeAfter
Concentric radiusSame radius on parent and childParent radius accounts for padding
Tabular numbersCounter shifts as digits changeCounter uses tabular-nums
Transition scopetransition: allExplicit transition properties

Include file paths and properties when they are not obvious from the snippets. Omit principles that you checked but did not change.

Checklist

  • Nested rounded elements are optically coherent.
  • Icons are visually centered.
  • Buttons, cards, and popovers use borders or shadows for the right reason.
  • Headings and short text avoid awkward wrapping.
  • Dynamic numbers use tabular numerals.
  • Images have neutral outlines where needed.
  • Enter and exit animations are split, subtle, and interruptible where appropriate.
  • Buttons have tactile active states without exaggerated motion.
  • transition: all and will-change: all are absent.
  • Small controls still have usable hit areas.

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.