emil-design-eng

Reviews and improves UI animations, transitions, and component interactions using CSS and Framer Motion patterns.

Updated Sep 3, 2024
One-click install
npx skills add https://github.com/eminboydak/duckTerm --skill emil-design-eng-eminboydak
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: emil-design-eng
Source: https://github.com/eminboydak/duckTerm/tree/main/.agents/skills/emil-design-eng
Command: npx skills add https://github.com/eminboydak/duckTerm --skill emil-design-eng-eminboydak

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 issues 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 long it should run based on interaction frequency and purpose. - UI Code Review with Before/After Tables: Reviews component code and outputs structured markdown tables showing concrete fixes for transitions, transforms, and transform-origins. - Component Interaction Patterns: Provides implementation guidance for buttons, popovers, tooltips, drawers, toasts, drag gestures, and stagger animations using CSS transitions, springs, clip-path, and Framer Motion. - Use Case: Paste a dropdown component with transition: all 300ms ease-in and receive a table of fixes: switch to ease-out with a custom cubic-bezier curve, reduce duration to 150-250ms, and set transform-origin to the trigger. ## Quick Start Review my Svelte dropdown component's animation code and suggest improvements to its easing, duration, and transform-origin.

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 instead of ease-in, keep durations under 300ms, and add scale(0.97) press feedback on buttons. 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 popover animations?▼

Use ease-out for entering elements since it starts fast and feels responsive. Never use ease-in for UI animations because the slow start makes interfaces feel sluggish. Keep dropdown durations between 150-250ms.

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

Use CSS transitions for predetermined animations since they run off the main thread and stay smooth under load. Use Framer Motion springs for interruptible gestures, but note that x/y shorthand props are not hardware-accelerated; use full transform strings instead.

Why does my popover animation look wrong when opening?▼

The default transform-origin: center makes popovers scale from the middle instead of their trigger. Set transform-origin to the trigger location, and never animate from scale(0); start from scale(0.95) with opacity 0 instead.

When should I not animate a UI element at all?▼

Skip animation for actions performed 100+ times daily, such as keyboard shortcuts and command palette toggles. Animation on keyboard-initiated actions makes them feel slow and disconnected from user input.

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 gentler animation, not zero animation.