emil-design-eng

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

3|Updated Jul 28, 2026
One-click install
npx skills add https://github.com/marcmarti9/agentit --skill emil-design-eng-marcmarti9
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: emil-design-eng
Source: https://github.com/marcmarti9/agentit/tree/main/skills/emil-design-eng
Command: npx skills add https://github.com/marcmarti9/agentit --skill emil-design-eng-marcmarti9

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Interfaces often feel sluggish or unpolished because of subtle animation mistakes: wrong easing curves, excessive durations, non-interruptible keyframes, and animations on high-frequency actions. This Skill encodes Emil Kowalski's design engineering philosophy to catch and fix those invisible details. ## Core Features & Use Cases - Animation Decision Framework: Decides whether an element should animate at all based on usage frequency, then selects easing, duration, and spring parameters accordingly. - Structured UI Review: Audits UI code against a checklist (transition: all, scale(0) entries, ease-in misuse, missing hover media queries) and outputs a Before/After/Why markdown table. - Component Craft Guidance: Covers popovers, tooltips, toasts, drawers, drag gestures, clip-path reveals, stagger animations, and performance rules (GPU-only properties, WAAPI, hardware acceleration). - Use Case: Paste a dropdown component with transition: all 300ms ease-in and receive a table of concrete fixes with reasoning, such as switching to a custom ease-out curve at 180ms. ## Quick Start Review my React dropdown component's animation code and suggest improvements to make it feel more responsive.

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 vs CSS transitions for animation?▼

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, and prefer transitions over keyframes for rapidly triggered elements.

Should I animate keyboard shortcuts and command palettes?▼

No. Actions repeated hundreds of times daily, like keyboard shortcuts or command palette toggles, should never animate. Animation makes them feel slow and disconnected; Raycast's instant open/close is the reference experience.

Why do Framer Motion animations drop frames under load?▼

Framer Motion's shorthand x, y, and scale props run via requestAnimationFrame on the main thread, so they drop frames when the browser is busy. Use the full transform string like transform: translateX(100px) or CSS animations for hardware acceleration.

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 center?▼

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