For designers and engineers to help them build better user interfaces.
Knowing whether you made a right choice when it comes to animations, or design in general, is hard. These skills aim to help you get to those right decisions faster.
They are based on my years of experience working at companies like Vercel and Linear.
All the skills here are a side-effect of domain-expertise. AI doesn’t replace such expertise, it amplifies what you can get out of it and makes you way better relative to others.
So learn to code, design, or develop expertise in any other field. It’s extremely valuable.
I have seen plenty of times that agents don’t pick the right ingredients for an animation. An ease-in easing for an enter animation when it’s supposed to be ease-out (here’s why (opens in a new tab)). Or they choose a solid border instead of a semi-transparent shadow for your UIs.
All these small things compound and make your interface either amazing, or just… not that great.
As explained in Agents with Taste (opens in a new tab), these skills list all the little mistakes agents can potentially make and explain how to fix them.
This is your shortcut to great interfaces. A shortcut to stand out in a sea of slop.
emil-design-eng — The main skill that consists of mostly animation, but also some design advice.
animate — Builds an animation from scratch while choosing the correct curve, duration, properties, and so on.
animate-expo — The same bar, for React Native and Expo: gestures, sheets, haptics, screen transitions, and keeping motion off the JS thread.
review-animations — Review your animations in a strict way, based on my rules.
improve-animations — Audit all the animations in your codebase and get prioritized, self-contained plans that any agent can execute.
find-animation-opportunities — Search your UI for places that would genuinely benefit from motion, while also telling you what not to animate.
remove-animations — The opposite of finding opportunities: remove the animations your app doesn’t need, think of motion on keyboard shortcuts, fade-ins on every section, and delay on every tooltip in a group.
choreograph — Coordinate several elements that animate together: what leads, what follows, what runs in parallel, and what shouldn’t move at all.
animation-performance — Fix animations that drop frames. It includes lots of subtle issues that most agents miss.
animation-vocabulary — Get better animations from an AI by telling it exactly what you want by using the right words.
apple-design — Apple’s principles for interface design and fluid motion, distilled from their WWDC design talks and translated for the web.
gestures — Build drag, swipe, and sheet interactions that track the finger 1:1, carry the speed of the release, and can be caught mid-animation.
write-swift — Write modern Swift. Includes: value types, Swift 6 concurrency, generics, performance, and Swift Testing.
pick-ui-library — Have your agent pick the right library for the task based on libraries I use and trust, instead of letting AI hand-roll a toast component or install an abandoned package.
prototype — Build multiple different versions of a UI piece you describe and go through them using a switcher.
mobile-native — Make your web app feel native on a phone: sticky hover states, tap highlight flashes, the 100vh bug, inputs that zoom the page, laggy taps, safe areas, and the rest of the small fixes that separate a website from an app.
break-ui — Try to break the UI you built with worst-case data: long names, unusual emails, one-letter names, huge counts, empty lists, long labels.
ask-sonner — Your guide to working with Sonner (opens in a new tab), my toast library. Contains setup, styling, recipes, and fixes for the most common issues.
MIT — the text of every skill is reproduced unmodified, frontmatter included, under the upstream licence.
Discovery
18 skills found by walking the repository tree for SKILL.md, not by matching a directory convention. One layout observed: skills/*/SKILL.md.
Issue colours
Resolved from a deterministic hash of the owner name. Two accent tones are generated per issue and each is proven against its own ground before it ships: a single accent that passes AA on both light and dark paper is arithmetically impossible.
Heading repairs
1 repair applied to the front matter so the document has one h1 and no skipped levels:
Shifted “4 headings” from h1 to h2 so the skill title is the only h1.
Images inside a skill come from the upstream repository. Where the author gave no alternative text we mark the image decorative rather than inventing a description — a plausible caption we made up is worse than none for the reader who depends on it.
Signal
Install counts come from skills.sh. They measure downloads, not quality, and an unranked repository is not an unread one.
Agent surfaces
The whole issue is available as one markdown document at /emilkowalski/skills.md, and each skill at its own .md URL.
Publication
Set by Skills Docs from the source repository. Body text is Literata at the reader’s chosen size and measure; code is Geist Mono. Nothing on this page was written by us except this paragraph.