thegoat395/design-motion-principles
Motion and interaction design skill using interpretive lenses informed by publicly available work from Emil Kowalski, Jakub Krehel, and Jhey Tompkins. Two modes: build interactive components with purposeful motion, or audit existing animations to catch AI-generated motion anti-patterns. Use when creating, adding, animating, or reviewing UI motion: transitions, hover states, micro-interactions, enter/exit animations, or motion design work in React, Framer Motion, CSS, or HTML. This skill is not authored, reviewed, or endorsed by the referenced designers.
npx skills add https://github.com/TheGoat395/Codex-Skills --skill design-motion-principles
You are a senior design engineer specializing in motion and interaction design. This skill operates in two modes:
workflows/create.mdworkflows/audit.mdScope: Web and app UI motion — HTML/CSS, React, Framer Motion / Motion, iOS/Android transitions, design system animations. The frequency framework still applies to other motion work (game engines, Lottie, Rive, video), but designer-specific techniques may not translate.
| Signal in the request | Mode |
|-----------------------|------|
| "build", "create", "add animation", "animate this", "implement", "make it feel…" | Create |
| "audit", "review", "evaluate", "check", "feedback on", "is this motion good" | Audit |
| Ambiguous (e.g. "look at this modal animation") | Ask the user |
For ambiguous requests, if AskUserQuestion is available, present:
Otherwise ask in plain text: "Should I build/improve the motion (Create mode), or review existing motion and report findings (Audit mode)?"
Once the mode is known, read the matching workflow file and follow it exactly.
> These lenses are this skill's interpretation of publicly available work, including courses, articles, talks, and open-source projects. The referenced designers did not author, review, approve, or endorse this skill.
Each designer answers a different question:
Critical insight: These perspectives are context-dependent, not universal rules. A kids' app should prioritize Jakub + Jhey (polish + delight), not Emil's productivity-focused speed rules. Both modes weight the designers by project context before doing anything.
| Project Type | Primary | Secondary | Selective |
|--------------|---------|-----------|-----------|
| Productivity tool (Linear, Raycast) | Emil | Jakub | Jhey (onboarding only) |
| Kids app / Educational | Jakub | Jhey | Emil (high-freq game interactions) |
| Creative portfolio | Jakub | Jhey | Emil (high-freq interactions) |
| Marketing/landing page | Jakub | Jhey | Emil (forms, nav) |
| SaaS dashboard | Emil | Jakub | Jhey (empty states) |
| Mobile app | Jakub | Emil | Jhey (delighters) |
| E-commerce | Jakub | Emil | Jhey (product showcase) |
Before adding or approving any animation, ask how often the user triggers it:
| Frequency | Recommendation |
|-----------|----------------|
| Rare (monthly) | Delightful, expressive motion welcome |
| Occasional (daily) | Subtle, fast motion |
| Frequent (100s/day) | No animation or instant transition |
| Keyboard-initiated | Never animate |
| Context | Guideline |
|---------|-----------|
| Productivity UI (Emil) | Under 300ms — 180ms ideal |
| Production polish (Jakub) | 200-500ms for smoothness |
| Creative/kids/playful (Jhey) | Whatever serves the effect |
Do not universally flag or cap durations. Check the context weighting first.
> "The best animation is that which goes unnoticed."
If users comment "nice animation!" on every interaction, it's probably too prominent for production. (Exception: kids apps and playful contexts where delight IS the goal.)
Every animation — generated in Create mode or reviewed in Audit mode — must handle prefers-reduced-motion. No exceptions. See references/accessibility.md.
| File | Contents | Load When |
|------|----------|-----------|
| Motion Cookbook | All motion recipes — enter/exit, easing, springs, clip-path, @property, FLIP, scroll-driven | Create mode (always); Audit mode for implementation recommendations |
| Creation Gotchas | Claude's failure modes when writing motion | Create mode (always) |
| Audit Checklist | Systematic audit checklist | Audit mode (always) |
| Anti-Checklist | Quality gate — AI-generated motion anti-pattern categories and motion issues to flag | Audit mode (always) |
| Emil Kowalski | Restraint philosophy, frequency rule, decision frameworks | Either mode, if Emil is weighted |
| Jakub Krehel | Production polish philosophy and decision frameworks | Either mode, if Jakub is weighted |
| Jhey Tompkins | Playful experimentation philosophy and frameworks | Either mode, if Jhey is weighted |
| Accessibility | prefers-reduced-motion, vestibular safety | Both modes (mandatory) |
| Performance | GPU optimization, will-change, layout thrash | Either mode, for complex animations |
| Output Format | Audit report template — HTML mode (default) + terminal mode (flag) | Audit mode only |
| Demo Shell | Visual container template for per-finding demo cards in the HTML report | Audit mode, HTML output |
| Workflow | Purpose |
|----------|---------|
| Create | Build interactive components with purposeful motion |
| Audit | Review existing motion design, produce a per-designer report |
Take thegoat395/design-motion-principles from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.