emil-design-eng

Reviews and guides UI animation, CSS transitions, and component polish decisions.

Updated Mar 12, 2026
One-click install
npx skills add https://github.com/RavitejaKarra24/dotfiles --skill emil-design-eng-ravitejakarra24
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: emil-design-eng
Source: https://github.com/RavitejaKarra24/dotfiles/tree/main/agents/.agents/skills/emil-design-eng
Command: npx skills add https://github.com/RavitejaKarra24/dotfiles --skill emil-design-eng-ravitejakarra24

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 help you make correct animation and component decisions. ## Core Features & Use Cases - Animation Decision Framework: Determines whether an element should animate at all, which easing curve to use, and how long it should run based on interaction frequency and purpose. - UI Code Review with Before/After Tables: Reviews UI code and outputs a markdown table showing problematic patterns, corrected code, and the reasoning behind each fix. - Component Polish Patterns: Provides concrete CSS and React patterns for buttons, popovers, tooltips, toasts, drawers, drag gestures, springs, and stagger animations. - Use Case: Paste a dropdown component with transition: all 300ms ease-in and receive a table recommending transition: transform 200ms ease-out with a custom cubic-bezier curve and an explanation of why ease-in feels sluggish. ## Quick Start Ask the assistant to review your UI component's animation code and suggest improvements based on design engineering principles.

Frequently Asked Questions about emil-design-eng

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

FAQPage Schema
How do I choose the right easing curve for UI animations?

Use ease-out for elements entering the screen, ease-in-out for on-screen movement, and linear for constant motion like marquees. Avoid ease-in for UI since it delays initial movement and feels sluggish. Prefer custom cubic-bezier curves over built-in CSS easings for stronger, more intentional motion.

How long should UI animations last?

UI animations should stay under 300ms. Button press feedback works at 100-160ms, tooltips at 125-200ms, dropdowns at 150-250ms, and modals or drawers at 200-500ms. Faster animations make the interface feel more responsive even when actual speed is unchanged.

Should I use CSS transitions or keyframes for dynamic UI?

Use CSS transitions for dynamic, rapidly-triggered UI like toasts and toggles because they can be interrupted and retargeted mid-animation. Keyframes restart from zero when retriggered, causing visual jumps. Reserve keyframes for predetermined, non-interactive animations.

Why does my Framer Motion animation drop frames under load?

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) instead, or switch to CSS animations which run off the main thread.

How do I handle animations for users who prefer reduced motion?

Use the prefers-reduced-motion media query to remove transform-based movement while keeping opacity and color transitions that aid comprehension. Reduced motion means fewer and gentler animations, not zero animation. In React, use a useReducedMotion hook to conditionally disable positional movement.

When should I not animate a UI element at all?

Never animate keyboard-initiated actions or anything users trigger 100+ times per day, such as command palette toggles. Frequent animations make interfaces feel slow and disconnected. Raycast, for example, has no open or close animation because it is used hundreds of times daily.