ui-animation
UI Animation
Core rules
- Animate to clarify cause/effect or add deliberate delight.
- Keep interactions fast (200-300ms; up to 1s only for illustrative motion).
- Never animate keyboard interactions (arrow-key navigation, shortcut responses, tab/focus).
- Prefer CSS; use WAAPI or JS only when needed.
- Make animations interruptible and input-driven.
- Honor
prefers-reduced-motion(reduce or disable).
What to animate
- For movement and spatial change, animate only
transformandopacity. - For simple state feedback,
color,background-color, andopacitytransitions are acceptable. - Never animate layout properties; never use
transition: all. - Avoid
filteranimation for core interactions; if unavoidable, keep blur <= 20px. - SVG: apply transforms on a
<g>wrapper withtransform-box: fill-box; transform-origin: center. - Disable transitions during theme switches.
Spatial and sequencing
- Set
transform-originat the trigger point. - For dialogs/menus, start around
scale(0.85-0.9); avoidscale(0). - Stagger reveals <= 50ms.
Easing defaults
- Enter and transform-based hover:
cubic-bezier(0.22, 1, 0.36, 1). - Move:
cubic-bezier(0.25, 1, 0.5, 1). - Simple hover colour/background/opacity:
200ms ease. - Avoid
ease-infor UI (feels slow).
Accessibility
- If
transformis used, disable it inprefers-reduced-motion. - Disable hover transitions on touch devices via
@media (hover: hover) and (pointer: fine).
Performance
- Pause looping animations off-screen.
- Toggle
will-changeonly during heavy motion and only fortransform/opacity. - Prefer
transformover positional props in animation libraries. - Do not animate drag gestures using CSS variables.
Reference
- Snippets and practical tips: examples.md
Workflow
- Start with the core rules, then pick a reference snippet from examples.md.
- Keep motion functional; honor
prefers-reduced-motion. - When reviewing, cite file paths and line numbers and propose concrete fixes.
More from joelhooks/joelclaw
cli-design
Design and build agent-first CLIs with HATEOAS JSON responses, context-protecting output, and self-documenting command trees. Use when creating new CLI tools, adding commands to existing CLIs (joelclaw, slog), or reviewing CLI design for agent-friendliness. Triggers on 'build a CLI', 'add a command', 'CLI design', 'agent-friendly output', or any task involving command-line tool creation.
129k8s
>-
88docker-sandbox
Create, manage, and execute agent tools (claude, codex) inside Docker sandboxes for isolated code execution. Use when running agent loops, spawning tool subprocesses, or any task requiring process isolation. Triggers on "sandbox", "isolated execution", "docker sandbox", "safe agent execution", or when working on agent loop infrastructure.
86joel-writing-style
Joel's writing voice and style guide for joelclaw.com content. Use when writing, editing, or reviewing any blog post, essay, book chapter, or prose content for joelclaw.com. Also use when asked to 'write like Joel,' 'match Joel's voice,' 'draft a post,' 'write content for the blog,' or 'review this for voice.' This skill captures Joel's specific writing patterns derived from ~90,000 words of published content spanning 2012–2026. Cross-reference with copy-editing and copywriting skills for marketing-specific copy.
81task-management
Manage Joel's task system in Todoist. Triggers on: 'add a task', 'create a todo', 'what's on my list', 'today's tasks', 'what do I need to do', 'remind me to', 'inbox', 'complete', 'mark done', 'weekly review', 'groom tasks', 'what's next', or when actionable items emerge from other work. Also triggers when Joel mentions something he needs to do in passing — capture it.
54skill-review
Audit and maintain the joelclaw skill inventory. Use when checking skill health, fixing broken symlinks, finding stale skills, or running the skill garden. Triggers: 'skill audit', 'check skills', 'stale skills', 'skill health', 'skill garden', 'broken skill', 'skill review', 'fix skills', 'garden skills', or any task involving skill inventory maintenance.
49