Animation principles
This skill reviews how motion is staged once the timing function is chosen. It checks press feedback, deformation, stagger and focus.
Every check is a pair. The broken line sits beside the line that replaces it.
Press scale, squash and stagger amounts below are exact. A project that omits press feedback on a control is a finding. A project that uses one consistent scale near
is not. Curves, the
cap and context-menu entrances belong to
. Exit mounting belongs to
.
When to use
Use this when adding or reviewing animation on controls, lists, overlays or entrances. Use
first when the question is spring versus easing. Use
when a component fails to leave the tree.
1. Read the motion in scope
Read the files the user named. If none are named, ask which surfaces to review. Note each animated element and whether it is a press, a list entrance, an overlay or background decoration.
2. Check staging
Similar controls share one duration. A primary button at
and a secondary button at
is
.
An interactive control needs an active scale. The published press scale is
. Squash and stretch stay inside
to
.
of
is
physics-subtle-deformation
.
Stagger stays under
per item.
passes.
is
physics-no-excessive-stagger
.
Only one element animates prominently at a time. That is
. A modal or dialog dims what is behind it, as in
background: var(--black-a6)
, which is
. A tooltip or overlay that can paint underneath siblings is
staging-z-index-hierarchy
.
Springs used for overshoot, ease curves and the
cap are
. Cite that skill beside a duration finding. Do not restate its curve table here.
3. Report and stop
Write the findings, then the summary table. Do not restyle the motion while reporting unless the user asked for a fix.
The pair
Every check is a pair. The broken line sits beside the line that replaces it.
| Rule | Broken | Replacement |
|---|
| .button-primary { transition: 200ms }
and .button-secondary { transition: 150ms }
| Both controls at |
| .button:hover { background: var(--gray-3) }
and no | .button:active { transform: scale(0.98) }
|
physics-subtle-deformation
| whileTap={{ scale: 0.8 }}
| whileTap={{ scale: 0.98 }}
|
physics-no-excessive-stagger
| | |
| Two siblings both | One element carries the entrance |
| .overlay { background: transparent }
| .overlay { background: var(--black-a6) }
|
staging-z-index-hierarchy
| with no stacking | |
Reporting
Severity. Use the ladder in this skill. Do not raise a preference to
.
Verification. Read the declared values in the files in scope. A browser is optional. Mark any check you could not run as
.
Format. One finding per root cause:
file:line - [rule-id] what is wrong
Then a summary:
when any
remains.
otherwise, and leave lesser rows in the table. Never
a file you did not read. With nothing to report, say "No actionable findings" and list what was not verified.