Reverse-lookup glossary that turns a vague description of a web animation or motion effect into its exact term (“the bouncy thing when a popover opens” → Pop in; “the iOS…
8 minutes · 1,768 words · 16 sections
Turn a vague description of a motion or effect into the precise term, so the user knows what to ask for.
Read for intent, not keywords. Users describe what they see or feel (“springy”, “slides off”, “draws itself in”), not the technical name. Map the sensation to the glossary below.
Quote the glossary verbatim. Its descriptions are authoritative — use them as-is, don’t paraphrase.
Disambiguate close terms. When two compete (Clip-path vs Mask, Pop in vs Bounce, Shared element transition vs Layout animation), contrast them so the user can pick.
When nothing matches exactly, name the closest term and say plainly it’s an approximation, or describe the effect in the glossary’s vocabulary (e.g. “that’s a stagger of scale-in entrances”).
Stay within this glossary. If a term genuinely isn’t here, say so rather than inventing one — though you may explain the concept using these words.
Keep it tight. A naming question wants a name, not an essay. Lead with the term; expand only if asked.
Example 1 — feel-based
User: “What’s it called when a popover seems to grow out of the button you clicked instead of from its middle?”
Output:
**Origin-aware animation** — An element animates out of its trigger, like a popover growing from the button that opened it instead of from its own center which is the default in CSS.
Example 2 — disambiguation
User: “The thing where one image turns into another image.”
Output:
**Morph** — One shape smoothly turns into another shape, e.g. Dynamic Island.Close alternates:- **Crossfade** — if they simply fade over each other in the same spot.- **Shared element transition** — if an element travels and transforms from one position into another.
Example 3 — physics feel
User: “That iOS scroll where it resists and snaps back when you pull too far.”
Output:
**Rubber-banding** — Resistance and snap-back when you drag past a boundary (the iOS overscroll feel).
Translate — Move an element along the X or Y axis.
Scale — Make an element bigger or smaller.
Rotate — Spin an element around a point.
Skew — Slant an element along the X or Y axis, shearing it out of its rectangular shape.
3D tilt / Flip — Rotate in 3D space (rotateX / rotateY) to add depth.
Perspective — How strong the 3D effect looks — a lower value exaggerates depth, like the viewer is closer.
Transform origin — The anchor point a scale or rotation grows or spins from.
Origin-aware animation — An element animates out of its trigger, like a popover growing from the button that opened it instead of from its own center which is the default in CSS.
Crossfade — One element fades out as another fades in, in the same spot.
Continuity transition — A change that keeps the user oriented by visually connecting before and after. For example, making the same rectangle bigger and smaller.
Morph — One shape smoothly turns into another shape, e.g. Dynamic Island.
Shared element transition — An element travels and transforms from one position into another, like a thumbnail expanding into a card.
Layout animation — When an element’s size or position changes, it animates to the new spot instead of snapping.
Accordion / Collapse — A section smoothly expands and collapses its height to show or hide content.
Direction-aware transition — Content slides one way going forward and the opposite way going back, so navigation has a sense of direction.
Spring — Motion driven by physics (tension, mass, damping) rather than a set duration.
Stiffness / Tension — How strongly the spring pulls toward its target. Higher feels snappier.
Damping — How quickly a spring settles. Lower damping means more bounce and oscillation.
Mass — How heavy the animated element feels. More mass makes it slower and more sluggish.
Bounce — A spring that overshoots and settles, adding playfulness.
Perceptual duration — How long a spring feels finished, even though it keeps micro-settling underneath.
Momentum — Motion that carries velocity, especially after a drag or interruption.
Velocity — How fast and in which direction an element is moving. A spring carries it into the next animation when interrupted, so a flicked element keeps its speed.
Interruptible animation — An animation that can be smoothly redirected mid-flight instead of finishing first.
Purposeful animation — Motion should serve a function — orient, give feedback, show relationships — not just decorate.
Anticipation — A small wind-up in the opposite direction before a move, hinting at what’s about to happen.
Follow-through — Parts of an element keep moving and settle slightly after the main motion stops, adding weight.
Squash & stretch — Deforming an element as it moves to convey weight, speed, and flexibility.
Perceived performance — The right animation makes an interface feel faster, even when it isn’t.
Frequency of use — The more often a user sees an animation, the shorter and subtler it should be.
Spatial consistency — Animating so an element keeps its identity and position across states, so users never lose track of where things went.
Hardware acceleration — Animating transform and opacity lets the GPU keep motion smooth.
Reduced motion — Respecting the user’s prefers-reduced-motion setting by toning down or removing motion.
Install this repository
$ npx skills add emilkowalski/skills
Skills install per repository, not per chapter — the CLI has no documented per-skill form, so we do not print one.
About this skill
Trigger
Reverse-lookup glossary that turns a vague description of a web animation or motion effect into its exact term ("the bouncy thing when a popover opens" → Pop in; "the iOS rubber-band scroll" → Rubber-banding). Use when the user asks "what's it called when…", or describes a motion effect without knowing its name and wants the right word to prompt an AI or designer with. For naming an effect, not designing or building one.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
MIT — the text of every chapter is reproduced unmodified, frontmatter included, under the upstream licence.
Discovery
9 chapters 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 this chapter so the document has one h1 and no skipped levels:
Removed “Animation Vocabulary”, a leading h1 that duplicated the chapter title.
Images inside a chapter 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 chapter 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.