emil-design-eng

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

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

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 these invisible details in UI code. ## Core Features & Use Cases - Animation Decision Framework: Decide whether an element should animate at all, which easing curve to use, and how long it should run based on usage frequency and purpose. - Structured UI Code Reviews: Get Before/After/Why markdown tables identifying issues like transition: all, ease-in on UI elements, missing :active states, and wrong transform-origin on popovers. - Concrete Implementation Patterns: Apply ready-made CSS and React patterns for springs, clip-path reveals, gesture damping, stagger animations, tooltips, and hardware-accelerated transforms. - Use Case: Paste a dropdown component's CSS and receive a review table recommending a custom ease-out curve, 150-250ms duration, origin-aware scaling from scale(0.95), and interruptible transitions instead of keyframes. ## Quick Start Review my dropdown component's CSS and suggest animation improvements following design engineering best practices.

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 so movement starts immediately, keep durations under 300ms, and add press feedback like transform: scale(0.97) on :active. Custom cubic-bezier curves such as cubic-bezier(0.23, 1, 0.32, 1) feel stronger than built-in CSS easings.

When should I use springs instead of CSS transitions?

Use springs for drag interactions with momentum, interruptible gestures, and elements that should feel alive, since springs maintain velocity when interrupted. Use CSS transitions for predetermined UI state changes that need to run off the main thread.

Should I animate keyboard-triggered actions like command palettes?

No. Actions repeated hundreds of times daily, like command palette toggles or keyboard shortcuts, should have no animation. Animation makes frequent actions feel slow and disconnected from user input, which is why tools like Raycast skip open/close 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)" or switch to CSS animations, which stay smooth when the browser is busy.

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

Use the prefers-reduced-motion media query to remove movement and position animations while keeping opacity and color transitions that aid comprehension. Reduced motion means fewer and gentler animations, not zero animation.

Why should popovers not scale from the center?

Popovers are anchored to a trigger element, so scaling from center looks disconnected. Set transform-origin to the trigger location, for example via var(--transform-origin) in Base UI. Modals are the exception and should stay centered.