better-ui

Applies design engineering principles to polish UI surfaces, animations, and icons.

Updated Aug 23, 2026
One-click install
npx skills add https://github.com/chhpt/skills --skill better-ui-chhpt
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: better-ui
Source: https://github.com/chhpt/skills/tree/main/skills/better-ui
Command: npx skills add https://github.com/chhpt/skills --skill better-ui-chhpt

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Interfaces often feel off due to small compounding details like mismatched border radii, jarring animations, or inconsistent icon weights. This Skill provides concrete principles and code patterns for reviewing and fixing these visual and motion details in frontend code. ## Core Features & Use Cases - Surface Polish: Enforces concentric border radius, optical alignment, layered box-shadows instead of decorative borders, and pure black/white image outlines. - Animation Guidance: Prescribes interruptible CSS transitions, staggered enter animations, subtle exits, contextual icon cross-fades, and exact values like scale(0.96) on press. - Icon Consistency: Matches icon stroke weight to text weight, uses one currentColor SVG recolored per state, and handles RTL flipping rules. - Structured Reviews: Produces severity-ranked findings tables with before/after code, verification steps, and an Approve/Needs changes/Block verdict. - Use Case: When a user says a settings page "feels off", the Skill walks every hover, focus, and loading state, replays motion at 10% speed, and returns a table of fixes such as correcting nested radii or replacing transition: all. ## Quick Start Review my Button and Card components for UI polish issues and suggest concrete fixes.

Frequently Asked Questions about better-ui

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I make nested border radius look right in CSS?

Use concentric border radius: outer radius equals inner radius plus padding. For example, a card with 8px padding and a 12px inner radius needs a 20px outer radius. If padding exceeds 24px, treat the layers as separate surfaces instead.

How to animate icon state changes with Framer Motion?

Use AnimatePresence with a keyed motion element, animating scale from 0.25 to 1, opacity from 0 to 1, and blur from 4px to 0px. Set transition to type spring, duration 0.3, and bounce 0, and add initial={false} to skip animation on page load.

Should I use CSS transitions or keyframes for interactive elements?

Use CSS transitions for interactive state changes like hover, toggle, and open/close because they can be interrupted mid-animation and retarget smoothly. Reserve keyframes for one-shot staged sequences such as enter animations or loading states.

Can I use these animation patterns without Framer Motion installed?

Yes. Keep both icons in the DOM with one absolutely positioned, and cross-fade them using CSS transitions with cubic-bezier(0.2, 0, 0, 1). This gives both enter and exit animations without adding any dependency.

Why does transition: all cause animation problems?

transition: all forces the browser to watch every property, causing unintended transitions on colors, padding, or shadows and blocking optimizations. Always specify exact properties like transition-property: scale, opacity, or use Tailwind's transition-transform for transform-only changes.

When should I use will-change in CSS animations?

Only add will-change when you notice first-frame stutter, and only for GPU-compositable properties: transform, opacity, and filter. Never use will-change: all, and avoid it for properties like background-color or padding that cannot be composited.