emilkowalski-motion — Claude Code skill: what it does, how to install
Adds micro-interactions, state transitions and motion to an existing interface. Use it after the layout or component is already built.
npx skills add nexu-io/open-design --skill emilkowalski-motion -a claude-codeWhat emilkowalski-motion does
The skill inspects the current HTML or component and picks the smallest set of motion moments that clarify state or hierarchy. Entry reveal for primary content, hover and active feedback for controls, transitions between UI states, scroll reveal when it helps the story. Animates via transform and opacity, avoids width, height or left.
UI transitions feel quick: 140–220ms for most controls. Larger page reveals can be slower but must not block reading. One motion language across the artifact—no mixing unrelated easings, durations or physics. Adds prefers-reduced-motion fallbacks for any automatic or scroll-linked motion.
Works with plain HTML, CSS keyframes and small JavaScript observers. For React or framework code, uses the local stack already present in the repo. If GSAP is available and the motion needs sequencing, pair with gsap-core, gsap-timeline or gsap-scrolltrigger. Always cleans up observers, timers and animation instances.
What it helps with
- add hover feedback to buttons and controls
- animate state transitions without layout shift
- reveal content on scroll with accessibility fallbacks
- polish existing UI with micro-interactions
- add entry animations to page sections
Example prompts for the agent
- Use emilkowalski-motion on the current HTML artifact: add restrained micro-interactions and state transitions without changing the core layout
- Polish the animation of this component with emilkowalski-motion, keep the prefers-reduced-motion fallback
- Apply emilkowalski-motion: add entry reveal for the main content and hover feedback for buttons
How to install emilkowalski-motion
1Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill emilkowalski-motion -a claude-code2Manually: put the files in place
~/.claude/skills/emilkowalski-motion/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/emilkowalski-motion/
1Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill emilkowalski-motion -a codex2Manually: put the files in place
.agents/skills/emilkowalski-motion/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill emilkowalski-motion -a cursor2Manually: put the files in place
.cursor/skills/emilkowalski-motion/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install nexu-io/open-design emilkowalski-motion2Manually: put the files in place
.github/skills/emilkowalski-motion/SKILL.md1Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill emilkowalski-motion -a gemini-cli2Platform CLI
gemini skills install https://github.com/nexu-io/open-design --path skills/emilkowalski-motionManually: put the files in place
.devin/skills/emilkowalski-motion/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill emilkowalski-motion -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set106
The whole set →Similar
Questions about emilkowalski-motion
How to install emilkowalski-motion in Claude Code?
Run npx skills add nexu-io/open-design --skill emilkowalski-motion -a claude-code, the skill will appear in ~/.claude/skills/emilkowalski-motion/SKILL.md.
What does emilkowalski-motion do?
Adds micro-interactions, state transitions and motion to an interface that already exists. Inspects the HTML or component, picks the smallest set of motion moments and applies one consistent motion language with prefers-reduced-motion support.
When to use emilkowalski-motion?
After the interface or component is ready. The skill does not change layout or data—it adds motion to what already exists.
Source text
SKILL.md · Apache-2.0
---
name: emilkowalski-motion
description: |
Motion-design follow-up skill inspired by Emil Kowalski's animation guidance. Use after an interface exists to add tasteful micro-interactions, state transitions, and page motion with product-grade restraint.
triggers:
- "emil kowalski"
- "motion polish"
- "micro interaction"
- "interaction animation"
- "tasteful animation"
- "动效润色"
od:
mode: prototype
surface: web
platform: desktop
category: animation-motion
upstream: "https://emilkowal.ski/skill"
preview:
type: html
design_system:
requires: true
craft:
requires:
- animation-discipline
- accessibility-baseline
example_prompt: |
Use emilkowalski-motion on the current HTML artifact: add restrained micro-interactions, state transitions, and reduced-motion fallbacks without changing the core layout.
---
# Emil Kowalski Motion Follow-Up
Use this skill after a design artifact already exists. The goal is to make the interface feel alive without turning it into a motion demo.
## Workflow
1. Inspect the current HTML, component, or selected page element before adding animation.
2. Pick the smallest set of motion moments that clarify state or hierarchy:
- entry reveal for the primary content
- hover / active feedback for important controls
- transition between UI states
- scroll reveal only when it helps the story
3. Prefer `transform` and `opacity`. Avoid animating layout properties such as `top`, `left`, `width`, or `height`.
4. Use one motion language across the artifact. Do not mix unrelated easings, durations, or physics.
5. Add `prefers-reduced-motion` fallbacks for any automatic or scroll-linked motion.
6. Keep copy, data, and layout intent intact unless the user explicitly asks for a redesign.
## Motion Rules
- Default UI transitions should feel quick and useful: 140-220ms for most controls.
- Larger page reveals can be slower, but must not block reading.
- Avoid endless decorative loops unless they communicate status or progress.
- Do not add custom cursors, noisy particle effects, or motion that competes with content.
- Stagger only small groups. Long staggered lists make interfaces feel slow.
## Implementation Notes
- For plain HTML, CSS keyframes and small JavaScript observers are enough.
- For React or framework code, use the local stack already present in the repo.
- If GSAP is available and the motion needs sequencing, pair this with `gsap-core`, `gsap-timeline`, or `gsap-scrolltrigger`.
- Always clean up observers, timers, and animation instances.
© nexu-io · Apache-2.0 · nexu-io/open-design