makepad-animation
Skill1 starsChanged 10 months agoMITView on GitHub
CRITICAL: Use for Makepad animation system. Triggers on: makepad animation, makepad animator, makepad hover, makepad state, makepad transition, "from: { all: Forward", makepad pressed, makepad 动画, makepad 状态, makepad 过渡, makepad 悬停效果
In this repository21 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- skills/molykit/llms.txtllms.txt
- evolutionSkill
- makepad-basicsSkill
- makepad-deploymentSkill
- makepad-dslSkill
- makepad-event-actionSkill
- makepad-fontSkill
- makepad-layoutSkill
- makepad-platformSkill
- makepad-referenceSkill
- makepad-routerSkill
- makepad-shadersSkill
- makepad-splashSkill
- makepad-widgetsSkill
- molykitSkill
- robius-app-architectureSkill
- robius-event-actionSkill
- robius-matrix-integrationSkill
- robius-state-managementSkill
- robius-widget-patternsSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 4 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 39
Read the relevant reference file(s) listed above
- Distinctive: line 40
If file read fails or file is empty:
- Distinctive: line 43
If reference file exists, incorporate its content into the answer
- Very specific: line 258
Always set default: for initial state
- Very specific: line 259
Use Forward for smooth transitions
- Very specific: line 260
Use Snap for instant state changes (like disabled)
- Distinctive: line 261
Keep durations short (0.1-0.3s) for responsive feel
- Very specific: line 304
Use id!(state.value) macro to reference animation states in Rust
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Makepad Animation Skill
Version: makepad-widgets (dev branch) | Last Updated: 2026-01-19
Check for updates: https://crates.io/crates/makepad-widgets
You are an expert at Makepad animations. Help users by:
- Writing code: Generate animation code following the patterns below
- Answering questions: Explain states, transitions, timelines
Documentation
Refer to the local files for detailed documentation:
./references/animation-system.md- Complete animation reference
Advanced Patterns
For production-ready animation patterns, see the _base/ directory:
| Pattern | Description |
| 06-animator-basics | Animator fundamentals |
| 07-easing-functions | Easing and timing |
| 08-keyframe-animation | Complex keyframes |
IMPORTANT: Documentation Completeness Check
Before answering questions, Claude MUST:
- Read the relevant reference file(s) listed above
- If file read fails or file is empty:
- Inform user: "本地文档不完整,建议运行
/sync-crate-skills makepad --force更新文档" - Still answer based on SKILL.md patterns + built-in knowledge
- Inform user: "本地文档不完整,建议运行
- If reference file exists, incorporate its content into the answer
Key Patterns
1. Basic Hover Animation
<Button> {
text: "Hover Me"
animator: {
hover = {
default: off
off = {
from: { all: Forward { duration: 0.15 } }
apply: {
draw_bg: { color: #333333 }
}
}
on = {
from: { all: Forward { duration: 0.15 } }
apply: {
draw_bg: { color: #555555 }
}
}
}
}
}2. Multi-State Animation
<View> {
animator: {
hover = {
default: off
off = {
from: { all: Forward { duration: 0.2 } }
apply: { draw_bg: { color: #222222 } }
}
on = {
from: { all: Forward { duration: 0.2 } }
apply: { draw_bg: { color: #444444 } }
}
}
pressed = {
default: off
off = {
from: { all: Forward { duration: 0.1 } }
apply: { draw_bg: { scale: 1.0 } }
}
on = {
from: { all: Forward { duration: 0.1 } }
apply: { draw_bg: { scale: 0.95 } }
}
}
}
}3. Focus State Animation
<TextInput> {
animator: {
focus = {
default: off
off = {
from: { all: Forward { duration: 0.2 } }
apply: {
draw_bg: {
border_color: #444444
border_size: 1.0
}
}
}
on = {
from: { all: Forward { duration: 0.2 } }
apply: {
draw_bg: {
border_color: #0066CC
border_size: 2.0
}
}
}
}
}
}4. Disabled State
<Button> {
animator: {
disabled = {
default: off
off = {
from: { all: Snap }
apply: {
draw_bg: { color: #0066CC }
draw_text: { color: #FFFFFF }
}
}
on = {
from: { all: Snap }
apply: {
draw_bg: { color: #333333 }
draw_text: { color: #666666 }
}
}
}
}
}Animator Structure
| Property | Description |
animator | Root animation container |
{state} = | State definition (hover, pressed, focus, disabled) |
default: | Initial state value |
{value} = | State value definition (on, off, custom) |
from: | Transition timeline |
apply: | Properties to animate |
Timeline Types (Play Enum)
| Type | Description |
Forward { duration: f64 } | Linear forward animation |
Snap | Instant change, no transition |
Reverse { duration: f64, end: f64 } | Reverse animation |
Loop { duration: f64, end: f64 } | Looping animation |
BounceLoop { duration: f64, end: f64 } | Bounce loop animation |
Easing Functions (Ease Enum)
// Basic
Linear
// Quadratic
InQuad, OutQuad, InOutQuad
// Cubic
InCubic, OutCubic, InOutCubic
// Quartic
InQuart, OutQuart, InOutQuart
// Quintic
InQuint, OutQuint, InOutQuint
// Sinusoidal
InSine, OutSine, InOutSine
// Exponential
InExp, OutExp, InOutExp
// Circular
InCirc, OutCirc, InOutCirc
// Elastic
InElastic, OutElastic, InOutElastic
// Back
InBack, OutBack, InOutBack
// Bounce
InBounce, OutBounce, InOutBounce
// Custom
ExpDecay { d1: f64, d2: f64 }
Bezier { cp0: f64, cp1: f64, cp2: f64, cp3: f64 }
Pow { begin: f64, end: f64 }Using Easing
from: {
all: Ease { duration: 0.3, ease: InOutQuad }
}Common States
| State | Values | Trigger |
hover | on, off | Mouse enter/leave |
pressed / down | on, off | Mouse press/release |
focus | on, off | Focus gain/lose |
disabled | on, off | Widget enabled/disabled |
selected | on, off | Selection change |
Animatable Properties
Most draw_* shader uniforms can be animated:
- Colors:
color,border_color,shadow_color - Sizes:
border_size,border_radius,shadow_radius - Transforms:
scale,rotation,offset - Opacity:
opacity
When Writing Code
- Always set
default:for initial state - Use
Forwardfor smooth transitions - Use
Snapfor instant state changes (like disabled) - Keep durations short (0.1-0.3s) for responsive feel
- Animate shader uniforms in
draw_bg,draw_text, etc.
Rust API (AnimatorImpl Trait)
pub trait AnimatorImpl {
// Animate to state
fn animator_play(&mut self, cx: &mut Cx, state: &[LiveId; 2]);
// Cut to state (no animation)
fn animator_cut(&mut self, cx: &mut Cx, state: &[LiveId; 2]);
// Check current state
fn animator_in_state(&self, cx: &Cx, state: &[LiveId; 2]) -> bool;
}
// Usage example
fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) {
match event.hits(cx, self.area()) {
Hit::FingerHoverIn(_) => {
self.animator_play(cx, id!(hover.on));
}
Hit::FingerHoverOut(_) => {
self.animator_play(cx, id!(hover.off));
}
Hit::FingerDown(_) => {
self.animator_play(cx, id!(pressed.on));
}
Hit::FingerUp(_) => {
self.animator_play(cx, id!(pressed.off));
}
_ => {}
}
}When Answering Questions
- States are independent - multiple can be active simultaneously
- Animation applies properties when state reaches that value
fromdefines HOW to animate,applydefines WHAT to animate- Makepad tweens between old and new values automatically
- Use
id!(state.value)macro to reference animation states in Rust
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

