About emilkowalski-motion
A follow-up skill for adding restrained motion to an existing design artifact. It helps designers and developers clarify hierarchy and interface state while preserving the original copy, data, and layout intent.
Key features
- 01Inspect existing artifact first
- 02Choose motion by interface purpose
- 03Prefer transform and opacity
- 04Use consistent timing and easing
- 05Support reduced-motion preferences
- 06Clean up animation resources
Use cases
- 01Add entry reveals to a finished page
- 02Clarify control hover and active states
- 03Animate transitions between UI states
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ nexu-io/ open-design --skill emilkowalski-motionAfter installing, type/emilkowalski-motionin Claude Code to confirm it loaded.
Details
From the project READMEEmil 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
- Inspect the current HTML, component, or selected page element before adding animation.
- 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
- Prefer
transformandopacity. Avoid animating layout properties such astop,left,width, orheight. - Use one motion language across the artifact. Do not mix unrelated easings, durations, or physics.
- Add
prefers-reduced-motionfallbacks for any automatic or scroll-linked motion. - 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, orgsap-scrolltrigger. - Always clean up observers, timers, and animation instances.
Comments
Markdown supported