algorithmic-color-pale…
Derive a full UI colour palette algorithmically from one or two brand colours. Darker and lighter variants for interactive states, desaturated greys from the…
Disney's 12 animation principles, cinematic storytelling techniques, and comic book conventions apply to web UI — used subtly, they make interfaces feel alive, intentional, and emotionally resonant. Use when designing transitions, micro-interactions, onboarding flows, scroll
$ npx -y skills add dembrandt/dembrandt-skills --skill motion-and-storytelling --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/motion-and-storytellingContext preview
The summary Claude sees to decide when to auto-load this skill.
Disney's 12 animation principles, cinematic storytelling techniques, and comic book conventions apply to web UI — used subtly, they make interfaces feel alive, intentional, and emotionally resonant. Use when designing transitions, micro-interactions, onboarding flows, scroll
name: motion-and-storytelling
description: Disney's 12 animation principles, cinematic storytelling techniques, and comic book conventions apply to web UI — used subtly, they make interfaces feel alive, intentional, and emotionally resonant. Use when designing transitions, micro-interactions, onboarding flows, scroll animations, or any motion in the UI.
metadata:
priority: 6
pathPatterns:
- "**/*.css"
- "**/*.scss"
- "**/*.tsx"
- "**/*.jsx"
- "design-system/**"
- "components/**"
promptSignals:
phrases:
- "animation"
- "transition"
- "motion"
- "micro-interaction"
- "scroll animation"
- "easing"
- "storytelling"
- "entrance"
- "exit"
retrieval:
aliases:
- animation principles
- disney principles
- motion design
- micro-interactions
- transitions
- cinematic ui
- storytelling ui
intents:
- animate this component
- design a transition
- make the ui feel alive
- add scroll animations
- design micro-interactions
examples:
- animate this modal entrance
- make this button feel more satisfying to click
- add scroll-driven animations to this landing page
- design the transition between these two statesAnimation and motion are not decoration — they are communication. When applied with the same discipline as typography or colour, they tell the user what is happening, where to look, and what the product feels like to use. The source material — Disney's 12 principles, cinematic language, comic book conventions — is centuries of accumulated knowledge about how to communicate through movement and sequence.
The key word is **subtlety**. In UI, motion should be felt, not watched.
---
Objects compress on impact and extend on acceleration. In UI: a button that scales down slightly on press and springs back communicates physicality and responsiveness.
button:active { transform: scale(0.96); }
button { transition: transform 80ms ease-out; }Use sparingly — reserved for primary CTAs and satisfying confirmations.
A small preparatory movement before the main action. In UI: a menu item shifting slightly before opening, or a loading indicator appearing before a transition begins, prepares the user for what is coming.
Present one idea clearly at a time. In UI: entrance animations should direct attention to the new content, not compete with existing content. When a modal opens, the rest of the page dims — that is staging.
**Pose to pose** — defining start and end states and letting the system interpolate — is the CSS/JS approach. Define clear initial and final states; let `transition` or a spring physics library handle the in-between.
Elements don't all stop at the same time. In UI: staggered list item entrances (each item enters 40–60ms after the previous) feel more natural than all items appearing simultaneously.
.item:nth-child(1) { animation-delay: 0ms; }
.item:nth-child(2) { animation-delay: 50ms; }
.item:nth-child(3) { animation-delay: 100ms; }Nothing in nature starts or stops instantly. Use easing curves, not linear transitions.
| Easing | Use for | |---|---| | `ease-out` (fast start, slow end) | Elements entering the screen — feels natural arrival | | `ease-in` (slow start, fast end) | Elements leaving the screen — feels intentional exit | | `ease-in-out` | Elements moving between positions on screen | | Spring physics | Interactive elements that respond to touch/drag |
Never use `linear` for UI motion — it reads as mechanical and unfinished.
Natural movement follows arcs, not straight lines. Tooltips and popovers that scale from their origin point (rather than fading uniformly) follow this principle. `transform-origin` matters.
A supporting motion that reinforces the main action. In UI: an icon inside a button that shifts slightly when the button is pressed. A checkmark that draws itself after a form submission. These details reward attention without demanding it.
Duration is meaning. Fast = responsive, energetic. Slow = weighty, important.
| Duration | Use for | |---|---| | 80–120ms | Micro-interactions (button press, hover) | | 150–250ms | Component transitions (dropdown open, tooltip) | | 250–400ms | Page-level transitions, modal entrance | | 400–600ms | Hero animations, onboarding sequences | | > 600ms | Almost always too long — the user is waiting |
A small, deliberate overstatement makes an action feel satisfying. In UI: a success checkmark that overshoots slightly before settling, or a notification badge that pops just slightly larger than its final size. The exaggeration is 10–15%, not theatrical.
Respect the depth and layering of the interface. Elements should move in ways consistent with their perceived layer — a bottom sheet slides up from below because it lives below the content, not from the side. A tooltip appears near its trigger, not across the screen.
The overall motion should feel right for the brand. A playful consumer app can use bouncier, springier motion. A financial tool uses precise, controlled transitions. Appeal is not decoration — it is brand personality expressed through time.
---
Content that enters the viewport has more impact when it arrives, rather than simply existing. Scroll-triggered entrance animations — a section fading up as the user scrolls into it — borrow from cinematic reveals. The key: **the content drives in from a meaningful direction** (below, because that's where the user is scrolling from).
@keyframes fade-up {
from { opacity: 0;UX and design-system skills for AI agents. Install once, and your agent knows how to design. --all installs every skill at once. They load only when a prompt needs them, so there is no runtime cost to having them all. Want to pick by hand?
Repo: dembrandt/dembrandt-skills
Derive a full UI colour palette algorithmically from one or two brand colours. Darker and lighter variants for interactive states, desaturated greys from the…
The persistent shell around an application — the top bar, the app launcher, the tenant and environment cue, and in heavy tools a status bar. In an estate of…
Product visuals — hero shots, demos, screenshots, landing-page panels — must reproduce the real product, not a stylised poster of it. Design with real content…
A brand's visual tone — playful or serious, rounded or angular — should be consistent across all UI elements. Shape language in typography, border-radius, and…
Every interactive element needs a complete set of visual states — rest, hover, active/pressed, focus, disabled, and loading. States should be derived…
Rebuild an existing web page 1:1 from measurement instead of by eye — into Figma, Penpot, or code. Captures the rendered page, the raw source and the computed…