본문으로 건너뛰기
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"

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

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의 스킬 모두 보기

이 스킬의 문제 신고