emil-design-eng

Reviews and improves UI animation, CSS transitions, and component interaction code.

Updated Jul 30, 2026
One-click install
npx skills add https://github.com/j172/bid --skill emil-design-eng-j172
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: emil-design-eng
Source: https://github.com/j172/bid/tree/main/agent/skills/emil-design-eng
Command: npx skills add https://github.com/j172/bid --skill emil-design-eng-j172

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Interfaces often feel sluggish or unpolished because of subtle animation mistakes: wrong easing curves, excessive durations, scale-from-zero entrances, and non-interruptible keyframes. This Skill encodes Emil Kowalski's design engineering philosophy to catch and fix those invisible details in UI code. ## Core Features & Use Cases - UI Code Review: Produces Before/After/Why markdown tables identifying animation and interaction issues such as transition: all, ease-in usage, and missing :active states. - Animation Decision Framework: Guides whether an element should animate at all, which easing curve to use, and how long it should run based on frequency and purpose. - Component Patterns: Covers springs, clip-path reveals, gesture velocity dismissal, stagger delays, tooltips, popovers, and reduced-motion accessibility. - Use Case: Paste a React dropdown component and receive a table of fixes, such as replacing a 400ms ease-in transition with a 200ms custom ease-out curve and an origin-aware transform. ## Quick Start Review my dropdown component's CSS and tell me what animation details to fix.

Frequently Asked Questions about emil-design-eng

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

FAQPage Schema
How do I make CSS animations feel more responsive?

Use ease-out curves for entering elements, keep UI durations under 300ms, and replace built-in easings with custom cubic-bezier curves like cubic-bezier(0.23, 1, 0.32, 1). Avoid ease-in, which delays initial movement and feels sluggish.

When should I use springs vs CSS transitions?

Use springs for drag interactions, interruptible gestures, and elements that should feel alive, since they maintain velocity when interrupted. Use CSS transitions for predetermined UI state changes, since they run off the main thread and stay smooth under load.

Why does my Framer Motion animation drop frames?

Framer Motion's shorthand x, y, and scale props run on the main thread via requestAnimationFrame and are not hardware-accelerated. Use the full transform string like transform: "translateX(100px)" or switch to CSS animations for predetermined motion.

Should popovers scale from center or from their trigger?

Popovers should scale from their trigger element by setting transform-origin to the trigger location, such as Base UI's var(--transform-origin). Modals are the exception and should keep transform-origin: center since they are not anchored to a trigger.

How do I handle animations for prefers-reduced-motion users?

Reduced motion means fewer and gentler animations, not zero. Keep opacity and color transitions that aid comprehension, but remove transform-based movement and position animations using the prefers-reduced-motion media query or a useReducedMotion hook.