本文へ移動
cccskills
無料GitHub で公開

motion-meaning

Web (CSS/JS/React + GSAP/Motion): classify UI motion as communicative (sequence is the content) or decorative (decorating a result), then fix or apply prefers-reduced-motion so meaning survives under reduce. Use when auditing existing animation, gating new motion, verifying both preference states, catching a dead reduced-motion branch, snapping to an end state, or collapsing a transition without nuking essential cues. Not for React Native, full WCAG encyclopedias, keyboard traps, color contrast, focus management, or ARIA pattern audits.

インストール方法を見る

含まれるファイル(15)

  • SKILL.md7.1 KB
  • references/AUDIT.md2.3 KB
  • references/CLASSIFY.md4.7 KB
  • references/CREDITS.md2.0 KB
  • references/FAILURES.md3.0 KB
  • references/PATTERNS.md3.8 KB
  • references/STRATEGIES.md5.9 KB
  • references/VERIFY.md3.6 KB
  • scripts/fixtures/collapse-transition.html2.1 KB
  • scripts/fixtures/communicative-snap.html2.3 KB
  • scripts/fixtures/dead-branch.html2.1 KB
  • scripts/fixtures/decorative-bail.html1.2 KB
  • scripts/fixtures/reduce-complexity.html1.4 KB
  • scripts/smoke.mjs2.6 KB
  • scripts/verify-reduced.mjs10.6 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Motion Meaning

Reduced motion isn't about removing animation. It's about deciding what remains when animation disappears.

Ask once, before writing or patching any reduce branch:

Is the motion sequence the content, or is it decorating a result that exists either way?

  • Communicative (sequence = content) → keep the destination; change how you get there (snap end state, or reduce complexity).
  • Decorative (decorating a result) → bail, or collapse the transition. No substitute required.

Grep for prefers-reduced-motion proves almost nothing. Touches ≠ reachable ≠ correct.

Read next

SituationOpen
Pick a strategyreferences/CLASSIFY.md
Reduce strategies + picture storiesreferences/STRATEGIES.md
Audit / fix existing codereferences/AUDIT.md
Code patterns (CSS / JS / React)references/PATTERNS.md
Failure modesreferences/FAILURES.md
Done codingreferences/VERIFY.md + scripts/verify-reduced.mjs
Sources & creditreferences/CREDITS.md

Four reduce strategies

Pick one of these for what the screen becomes under reduce. Picture the outcome first; then open STRATEGIES.md for the full story.

#StrategyWhenUnder reduce looks like
1BailPure decoration; no honest reduced formEffect is gone — OS cursor back, no custom layer
2Snap to end stateSequence is the content (staged journey)Same final layout as the last frame of the full animation — no travel, no mid poses piled on screen
3Collapse transitionMotion only decorates a result already in the DOMControl jumps to the right place (tab pill, underline) — instant, not a slide
4Reduce complexityCost/layers/autoplay matter, not only durationSame silhouette, cheaper — fewer blur layers, autoplay off, fewer clones

Always also — live preference (not a fifth “look”): read prefers-reduced-motion with a change listener (or library equivalent). One-shot .matches at mount goes stale mid-session. See PATTERNS.md.

Quick fork: decorative → 1 or 3. Communicative journey → 2. Still useful but heavy → 4.

The four gates

Every animation under authorship or audit passes all four. Verify by running both preference states — never by grepping alone. Details in VERIFY.md.

  1. Role — Communicative or decorative? (sequence = content?)
  2. Hazard — Large viewport motion, parallax, spin, autoplay >5s, seizure flash?
  3. Reduce path — Which strategy (1–4)? Is preference live?
  4. Meaning — With reduce on, can the user still know the state / outcome?

Author new motion

  1. Name the role (gate 1) out loud before keyframes.
  2. Pick strategy 1–4 from CLASSIFY.md — use the “looks like” column above.
  3. Wire a live preference read — PATTERNS.md.
  4. Implement the reduce branch inside the setup that also owns the full-motion path (avoid outer gates that skip the end-state applicator — FAILURES.md #1).
  5. Verify both states (VERIFY.md).

Companion: icon hover gestures from animating-icons are decorative → animation: none at rest. Icon-swap is communicative → instant coordinates, no tween.

Audit existing motion

  1. Inventory motion sources (CSS transitions/keyframes, WAAPI, GSAP, Motion, canvas, smooth-scroll hijack).
  2. Per item: run the four gates; assign a strategy.
  3. Report each finding as:
    • file:line + quoted snippet
    • role + failure (one short sentence)
    • concrete minimal fix
  4. Prefer targeted patches. Do not rewrite unrelated UI.
  5. Re-verify both preference states after the patch.

Full procedure: AUDIT.md.

Done checklist

  • Role named (communicative vs decorative)
  • Strategy 1–4 chosen; you can picture what “looks like” under reduce
  • Preference is live (change listener — not one-shot at mount)
  • Reduce branch is reachable (not dead behind an outer if (reduced) return)
  • Gate 4: meaning survives under reduce (end state / bail / collapse as intended)
  • No duration: 0 on sequence-as-content without a snap end state
  • If something waits on transitionend / onComplete, use ~0.01ms not 0s
  • scripts/verify-reduced.mjs (or equivalent dual-state check) run on fixtures or the page
  • Autoplay >5s still has a pause control (WCAG 2.2.2) even when motion is allowed
  • Interaction-triggered motion is disable-able via PRM unless essential (WCAG 2.3.3) — meaning still survives under the chosen strategy

Red flags — stop and re-derive

  • "Just set duration: 0 everywhere"
  • Grep is green so shipping
  • Outer if (prefersReducedMotion) return before the function that applies the end state
  • One-shot matchMedia(...).matches with no change listener
  • Reduced path teleports overlapping mid-states instead of a single destination
  • Decorative flourish kept "because it is small"

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Author, review, or batch-produce SVG icon hover gestures and icon↔icon morphs (Hugeicons/Lucide/Phosphor). Use for animated icon, icon hover, per-icon gesture, icon morph, menu↔cross, stroke-dashoffset draw-on, pathLength, transform-box. Not for page transitions, Lottie, or general UI chrome motion.

日本語の概要は準備中です。原文の説明を表示しています。

SoraLabsOSS/skills282026年8月28日 更新

SoraLabsOSS のスキルをすべて見る

このスキルの問題を報告する