make-interfaces-feel-better
affaan-m/ecc
Apply design-engineering details that make interfaces feel polished and refined.
What is make-interfaces-feel-better?
This skill guides you through concrete UI refinements—spacing, typography, shadows, motion, and interaction states—that compound into a more finished interface. Use it when reviewing or improving components, or when a UI feels off, flat, or unfinished.
- Apply concentric radius rules to nested rounded surfaces for optical coherence
- Optically center icons and asymmetric elements with pixel-level adjustments
- Use borders for separation and layered shadows for depth on cards and popovers
- Apply text-wrap strategies (balance, pretty) and tabular numerals for dynamic numbers
- Implement enter/exit animations and tactile press states with interruptible transitions
- Ensure interactive controls meet 40×44px hit-area minimums
How to install make-interfaces-feel-better
npx skills add null --skill make-interfaces-feel-betterHow to use make-interfaces-feel-better
- 1.Identify the UI element or interaction that needs refinement (button, card, form, etc.)
- 2.Check the relevant principle: concentric radius, optical alignment, shadows, text wrapping, motion, or hit areas
- 3.Apply the concrete CSS or layout change recommended in the skill (e.g., adjust border-radius, add transition-property, use text-wrap: balance)
- 4.Test the change across states (hover, active, focus, loading) and color schemes (light/dark)
- 5.Review the before/after using the provided checklist to ensure no regressions
Use cases
- Reviewing a component library or design system for polish inconsistencies
- Refining button, card, dropdown, and form states (hover, active, focus, loading, empty)
- Improving dashboard, navigation, or toolbar layouts that feel cramped or generic
- Adding motion and feedback to interactive elements without distracting movement
- Fixing image edges and text wrapping in headings and body copy
- Frontend engineers building or reviewing UI components
- Design engineers working on design systems and component libraries
- Product developers improving interface feel and polish
- Teams conducting UI refinement passes before release
make-interfaces-feel-better FAQ
`text-wrap: balance` is for headings and short titles to avoid awkward line breaks. Use `text-wrap: pretty` on short-to-medium body text, captions, and list items. Avoid both on long prose and preformatted content.
Interactive controls should have at least a 40×40px hit area, ideally 44×44px. Expand with a pseudo-element if the visible icon is smaller, but ensure expanded hit areas do not overlap.
No. Never use `transition: all`. Instead, explicitly specify the properties that change (e.g., `transition-property: transform, background-color, box-shadow`) so transitions can retarget if the user changes intent mid-motion.
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 different backgrounds.
Enter animations combine opacity, small translateY, and optionally blur. Exit is shorter and quieter (usually 150ms). Press uses `scale(0.96)` for tactile feedback. Use CSS transitions for interactive states, not keyframes.
Full instructions (SKILL.md)
Source of truth, from affaan-m/ecc.
name: make-interfaces-feel-better description: 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. metadata: origin: community
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: balanceon headings and short titles. - Use
text-wrap: prettyon short-to-medium body text, captions, descriptions, and list items. - Avoid both on long prose, code, and preformatted content.
- Use
font-variant-numeric: tabular-numsfor 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:
| Principle | Before | After |
|---|---|---|
| Concentric radius | Same radius on parent and child | Parent radius accounts for padding |
| Tabular numbers | Counter shifts as digits change | Counter uses tabular-nums |
| Transition scope | transition: all | Explicit 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: allandwill-change: allare absent.- Small controls still have usable hit areas.
Related skills
More from affaan-m/ecc and the wider catalog.
manim-video
Build animated technical explainers with Manim for graphs, diagrams, and system walkthroughs.
market-research
Conduct market research, competitive analysis, and investor due diligence with sourced findings and decision-oriented summaries.
marketing-campaign
End-to-end marketing campaign planning and execution across all channels.
mcp-server-patterns
Build MCP servers with Node/TypeScript SDK—tools, resources, prompts, and transport patterns.
messages-ops
Evidence-first live messaging workflow for reading texts, DMs, codes, and thread inspection.
ml-adoption-playbook
Agent skill from affaan-m/ecc.