emil-design-eng

Reviews and improves UI animation, easing, and interaction code using design engineering principles.

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

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 diagnose and fix those invisible details in UI code. ## Core Features & Use Cases - Animation Decision Framework: Determines whether an element should animate at all, which easing curve to use, and how fast it should run based on interaction frequency and purpose. - Structured UI Code Review: Produces Before/After/Why markdown tables identifying issues like transition: all, ease-in on UI elements, missing :active states, and incorrect transform-origin on popovers. - Component & Gesture Guidance: Covers springs, clip-path animations, drag momentum, damping at boundaries, hardware acceleration, and reduced-motion accessibility. - Use Case: Paste a dropdown or toast component's CSS and receive a table of concrete fixes, such as replacing a 400ms ease-in transition with a 200ms custom ease-out curve. ## Quick Start Ask the assistant to review your UI animation code, for example: review this modal's CSS transitions 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 make UI animations feel more responsive?▼

Use ease-out curves for entering elements so movement starts immediately, keep UI animations under 300ms, and add transform: scale(0.97) on :active for press feedback. Custom cubic-bezier curves like cubic-bezier(0.23, 1, 0.32, 1) feel stronger than built-in CSS easings.

What easing should I use for dropdown and modal animations?▼

Use ease-out for elements entering the screen and ease-in-out for elements moving on screen. Never use ease-in for UI animations because the slow start makes interfaces feel sluggish. Keep dropdowns at 150-250ms and modals at 200-500ms.

Should I use CSS transitions or Framer Motion for animations?▼

Use CSS transitions for predetermined animations and rapidly triggered UI since they run off the main thread and are interruptible. Use Framer Motion springs for drag interactions and gestures that can be interrupted mid-animation, but use full transform strings instead of x/y props for hardware acceleration.

Why does my popover animation look wrong when it opens?▼

The default transform-origin: center makes popovers scale from the middle instead of their trigger. Set transform-origin to the trigger location, such as var(--radix-popover-content-transform-origin) in Radix UI. Modals are the exception and should stay centered.

When should I not animate a UI element?▼

Skip animation for actions users perform 100+ times per day, such as keyboard shortcuts and command palette toggles, since animation makes repeated actions feel slow. Also avoid animating keyboard-initiated actions entirely, as Raycast demonstrates with its instant open and close.

How do I support prefers-reduced-motion in animations?▼

Wrap movement animations in a @media (prefers-reduced-motion: reduce) block and remove transform-based motion while keeping opacity and color transitions that aid comprehension. In React, use the useReducedMotion hook to conditionally disable positional animation values.