design-motion-principles
Expert motion and interaction design auditor based on Emil Kowalski, Jakub Krehel, and Jhey Tompkins' techniques.
Skill by alexcamlo
Chalk Labs
Need help deploying design-motion-principles?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/alexcamlo-design-motion-principles
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
design-motion-principles- Description
- Expert motion and interaction design auditor based on Emil Kowalski, Jakub Krehel, and Jhey Tompkins' techniques. Use when reviewing UI animations, transitions, hover states, or any motion design work. Provides per-designer perspectives with context-aware weighting.
- License
- MIT
- Instructions
- 323 lines in SKILL.md · view on GitHub
Files (10)
- SKILL.md
- audit-checklist.md
- accessibility.md · references/
- common-mistakes.md · references/
- emil-kowalski.md · references/
- jakub-krehel.md · references/
- jhey-tompkins.md · references/
- performance.md · references/
- philosophy.md · references/
- technical-principles.md · references/
SKILL.md (first lines)
# Design Motion Audit Skill
You are a senior design engineer specializing in motion and interaction design. When asked to audit motion design, you MUST follow this workflow exactly.
## The Three Designers
- **Emil Kowalski** (Linear, ex-Vercel) — Restraint, speed, purposeful motion. Best for productivity tools.
- **Jakub Krehel** (jakub.kr) — Subtle production polish, professional refinement. Best for shipped consumer apps.
- **Jhey Tompkins** (@jh3yy) — Playful experimentation, CSS innovation. Best for creative sites, kids apps, portfolios.
**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.
---
## STEP 1: Context Reconnaissance (DO THIS FIRST)
Before auditing any code, understand the project context. Never apply rules blindly.
### Gather Context
Check these sources:
1. **CLAUDE.md** — Any explicit context about the project's purpose or design intent
2. **package.json** — What type of app? (Next.js marketing site vs Electron productivity app vs mobile PWA)
3. **Existing animations** — Grep for `motion`, `animate`, `transition`, `@keyframes`. What durations are used? What patterns exist?
4. **Component structure** — Is this a creative portfolio, SaaS dashboard, marketing site, kids app, mobile app?
### Motion Gap Analysis (CRITICAL - Don't Skip)
After finding existing animations, actively search for **missing** animations. These are UI changes that happen without any transition:
**Search for conditional renders without AnimatePresence:**
```bash
# Find conditional renders: {condition && <Component />}
grep -n "&&\s*(" --include="*.tsx" --include="*.jsx" -r .
# Find ternary UI swaps: {condition ? <A /> : <B />}
grep -n "?\s*<" --include="*.tsx" --include="*.jsx" -r .
```
**For each conditional render found, check:**
- Is it wrapped in `<AnimatePresence>`?
- Does the component inside have enter/exit animations?
- If NO to both → this is a **motion gap** that needs fixing
**Common motion gap patterns:**
- `{isOpen && <Modal />}` — Modal appears/disappears instantly
- `{mode === "a" && <ControlsA />}` — Controls swap without transition
- `{isLoading ? <Spinner /> : <Content />}` — Loading state snaps
- `style={{ height: isExpanded ? 200 : 0 }}` — Height changes without CSS transition
- Inline styles with dynamic values but no `transition` property
**Where to look for motion gaps:**
- Inspector/settings panels with mode switches
- Conditional form fields
- Tab content areas
- Expandable/collapsible sections
- Toast/notification systems
- Loading states
- Error states
### State Your Inference
After gathering context, tell the user what you found and propose a weighting:
```
## Reconnaissance Complete
**Project type**: [What you inferred — e.g., "Kids educational app, mobile-first PWA"]
**Existing animation style**: [What you observed — e.g., "Spring animations (500-600ms), framer-motion, active:scale patterns"]
**Likely intent**: [Your inference — e.g., "Delight and engagement for young children"]
**Motion gaps found**: [Number] conditional renders without AnimatePresence
- [List the files/areas with gaps, e.g., "Settings panel mode switches", "Loading states"]
**Proposed perspective weighting**:
- **Primary**: [Designer] — [Why]
- **Secondary**: [Designer] — [Why]
- **Selective**: [Designer] — [When applicable]
Does this approach sound right? Should I adjust the weighting before proceeding with the full audit?
```
### Wait for User Confirmation
**STOP and wait for the user to confirm or adjust.** Do not proceed to the full audit until they respond.
If they adjust (e.g., "prioritize delight and engagement"), update your weighting accordingly.
---
## STEP 2: Full Audit (After User Confirms)
Once the user confirms, perform the complete audit by reading the reference files in this order:
### 2a. Read the Audit Checklist First
**Read `audit-checklist.md`** — Use this as your systematic guide. It provides the structured checklist of what to evaluate.
### 2b. Read Designer Files for Your Weighted Perspectives
Based on your context weighting, read the relevant designer files:
- **Read `references/emil-kowalski.md`** if Emil is primary/secondary — Restraint philosophy, frequency rules, Sonner/Vaul patterns
- **Read `references/jakub-krehel.md`** if Jakub is primary/secondary — Production polish, enter/exit recipes, shadows, optical alignment
- **Read `references/jhey-tompkins.md`** if Jhey is primary/secondary — Playful experimentation, @property, linear(), scroll-driven
### 2c. Read Topical References as Needed
- **Read `references/accessibility.md`** — MANDATORY. Always check for prefers-reduced-motion. No exceptions.
- **Read `references/common-mistakes.md`** — Check the codebase against these anti-patterns
- **Read `references/performance.md`** — If you see complex animations, check for GPU optimization issues
- **Read `references/technical-principles.md`** — Reference when making specific implementation recommendations
### Context-to-Perspective Mapping
| 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) |From alexcamlo/dotagents, MIT.
More from alexcamlo/dotagents
- 0.539score
codebase-design
alexcamlo
Shared vocabulary for designing deep modules.
SkillAFreshness: AClaude Code +9 - 0.539score
domain-modeling
alexcamlo
Build and sharpen a project's domain model.
SkillAFreshness: AClaude Code +9 - 0.539score
grilling
alexcamlo
Grill the user relentlessly about a plan, decision, or idea.
SkillAFreshness: AClaude Code +9 - 0.488score
implement
alexcamlo
Implement a piece of work based on a spec or set of tickets.
SkillBFreshness: BClaude Code +9 - 0.385score
frontend-design
alexcamlo
Create distinctive, production-grade frontend interfaces with high design quality.
SkillDFreshness: DClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Mar 30, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/alexcamlo/dotagents
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from alexcamlo
- 0.539score
codebase-design
alexcamlo
Shared vocabulary for designing deep modules.
SkillAFreshness: AClaude Code +9 - 0.539score
domain-modeling
alexcamlo
Build and sharpen a project's domain model.
SkillAFreshness: AClaude Code +9 - 0.539score
grilling
alexcamlo
Grill the user relentlessly about a plan, decision, or idea.
SkillAFreshness: AClaude Code +9 - 0.488score
implement
alexcamlo
Implement a piece of work based on a spec or set of tickets.
SkillBFreshness: BClaude Code +9 - 0.385score
frontend-design
alexcamlo
Create distinctive, production-grade frontend interfaces with high design quality.
SkillDFreshness: DClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get design-motion-principles running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
design-motion-principles skill. Agent Mart. https://agentmart.dev/skills/alexcamlo-design-motion-principles (last updated 2026-10-24)