Making a drawing move is easy. Making it feel alive is hard: it has to breathe, look around, blink, shift its weight and act, without ever freezing or jumping. This skill helps your agent get there.
The project's README from github.com/rossark0/rossark-motion-skill. As one markdown file: README.md.
For designers and engineers who want to bring their apps and drawings to life.
Making a drawing move is easy. Making it feel alive is hard: it has to breathe, look around, blink, shift its weight and act, without ever freezing or jumping. This skill helps your agent get there.
It started as the method I used to bring the illustrations in my app to life, and grew into a way to animate anything drawn: characters and creatures, plants, cloth, fire, smoke, water, weather, lights, machines, icons, logos, charts and whole scenes.
The animation above is drawn and animated entirely in code, with the templates in this repo.
npx skills@latest add rossark0/rossark-motion-skill
Agents don't animate like animators.
Ask an agent to bring a character to life and it will often swap one drawing for another, so the face teleports from one expression to the next. It moves through each pose with its own eased tween, so the body stops dead at every pose. Everything moves in sync, like a machine. Blinks are so short they flicker, everything bounces, and a thin line shows across the face where two shapes meet.
All these small things add up, and the result looks like a slideshow instead of something alive.
This skill lists those mistakes and how to fix them: one clock for the whole scene, parts that turn around their real pivots, trailing parts that follow a beat later, idle life that never stops, smooth paths through key poses, small amplitudes and strong curves. When you have a reference video, it measures the motion frame by frame before building, because what makes a reference feel alive is often too small to see.
For motion in an interface, it follows Emil Kowalski's rules and Benji Taylor's Family values.
track, flow (smooth acting through key poses), seg, wave, loop, bell, seeded and the curves.Reveal (source, MP4), at the top of this page. Full-body acting in a phone frame, on one clock, in a 9-second loop at 60 fps:
flow, idle life never stops, and the head and forearms follow through;Garden (source, MP4), a 10-second loop:
Chef (source, MP4), a 9.6-second loop:
To render them again on macOS 14+:
swiftc -parse-as-library -target arm64-apple-macos14 \
templates/swiftui/Motion.swift templates/swiftui/LiveFace.swift demo/*.swift -o /tmp/render-demo
/tmp/render-demo reveal /tmp/frames phone fps=60 # or: garden, chef, orbit
ffmpeg -framerate 60 -i /tmp/frames/%04d.png -c:v libx264 -pix_fmt yuv420p -crf 20 demo/reveal.mp4
Making a drawing move is easy. Making it feel alive is hard: it has to breathe, look around, blink, shift its weight and act, without ever freezing or jumping. This skill helps your agent get there.