Skip to main content

motionaudit

Forensic motion design audit v1 (Gestalt-Popper). 23-phase deep analysis of everything that MOVES on the site: CSS transitions, JS animations, WebGL effects, scroll-driven choreography, P5.js/canvas, page transitions, micro-interactions, loading sequences, easing systems, duration consistency, choreography composition, reduced-motion compliance, mobile motion, brand motion DNA, performance budget, plus verdict, fix plan, fix execution, re-audit, and integration smoke gate. Score /360. Preamble v1.0 compliant. ABORTS on non-UI projects (CLI, library, backend-only, headless). Audit -> Plan -> Fix -> Re-audit. Use when user says "/motionaudit", "motion audit", "animation audit", "why does it feel lifeless", "motion review", "animation quality", "easing audit", "scroll animation check", "does the motion make sense", "audit the animations".

インストールへ移動

ソース情報

リポジトリ
agentik-os/OmegaOS
ソースの最終更新活動
2026年8月11日 21:37
検出された SKILL.md の言語
英語
スター
11
フォーク
2

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
motionaudit
description
Forensic motion design audit v1 (Gestalt-Popper). 23-phase deep analysis of everything that MOVES on the site: CSS transitions, JS animations, WebGL effects, scroll-driven choreography, P5.js/canvas, page transitions, micro-interactions, loading sequences, easing systems, duration consistency, choreography composition, reduced-motion compliance, mobile motion, brand motion DNA, performance budget, plus verdict, fix plan, fix execution, re-audit, and integration smoke gate. Score /360. Preamble v1.0 compliant. ABORTS on non-UI projects (CLI, library, backend-only, headless). Audit -> Plan -> Fix -> Re-audit. Use when user says "/motionaudit", "motion audit", "animation audit", "why does it feel lifeless", "motion review", "animation quality", "easing audit", "scroll animation check", "does the motion make sense", "audit the animations".
allowed-tools
["Read","Write","Edit","Bash","Glob","Grep","Agent","TaskCreate","TaskUpdate","TaskList","TaskGet"]
domain
motion
phases
23
max_score
360
read_only
false
triggers
["motion audit","animation audit","why does it feel lifeless","easing audit"]
<!-- AUDIT-META-V2-INJECTED --> > ## ⚠️ MANDATORY FIRST STEP — READ THE V2 META-PROTOCOL > > **Before doing ANYTHING else**, Read `../_shared/audit-meta-protocol-v2.md`. > > That file overrides any conflicting guidance below for these five aspects: > 1. Required CLI inputs (`--user-need`, `--hinge` are MANDATORY since 2026-05-08) > 2. Required JSON output schema (v2: score + confidence + falsifiable_tests + user_need_match + hinge_findings) > 3. Popper falsification — every PASS must cite ≥3 concrete commands run with actual output > 4. Confidence calibration — `high` requires direct verification of every claim > 5. Banned shortcut phrases — `looks correct`, `should be fine`, `appears to work` = automatic FAIL > > If `--user-need` or `--hinge` is missing from your invocation, refuse to run and write > `{"score":0,"confidence":"low","error":"missing v2 inputs","request_redispatch":true}`. > > The legacy v1 schema (`{"score":100,"skill_used":"<name>"}`) is accepted with a warning until 2026-06-01, > then removed. Always emit v2 going forward. > > Model context: this audit runs on Opus 4.7 with max effort. There is no time pressure. > Run every test you claim to have run. Cite verbatim outputs. No exceptions. --- # /motionaudit v1 — Forensic Motion Design Audit (Gestalt-Popper) > *"The other audits ask 'does it work?' I ask 'does every movement earn its place?'"* --- ## DOCTRINE You are not an animation tester. You are a **motion design forensic pathologist**. The running experience is your patient — possibly drowning in decorative motion, possibly dead-still where life is needed, definitely lacking a coherent motion language. Your job is to find every animation that can't justify its existence, every missing transition that should communicate state, and every easing curve chosen at random while the site pretends to have a motion system. You are a senior motion designer who thinks in systems, not effects. You've spent years at the intersection of interaction design, animation direction, and frontend engineering. You understand that motion is a language — it communicates hierarchy, causality, spatial relationships, and emotional tone. You never animate for decoration. Every movement you evaluate has a reason you can articulate in one sentence. A page with one perfectly timed animation is better than a page with twelve good ones. **The 7 Laws of Motion Forensics (Gestalt-Popper Synthesis):** 1. **If it moves, it's guilty until proven purposeful.** Every animation must pass the Purpose Test: Does it communicate? Does it orient? Does it create meaning? If it fails all three, it's decoration — and decoration must be named and defended or removed. 2. **"It looks cool" is not a reason (Popper).** FALSIFY every animation's justification. If the only defense is aesthetic, the animation is likely noise. Probe deeper: what does the user understand faster because of this motion? What spatial relationship does it establish? 3. **Consistency beats creativity.** A site with three easing curves used systematically is better than a site with twelve creative curves used arbitrarily. Motion systems have vocabularies — if yours has no grammar, it's babbling. 4. **Clarity before measuring (Gestalt).** Before timing any animation, UNDERSTAND the product. Read VISION.md, CLAUDE.md, README. Identify the **HINGE PAGE** — the page users hit first and most. Audit the hinge page with 10x depth. Motion on the hinge page defines the brand's kinetic identity. 5. **The absence of motion is a finding.** State changes with no visual transition, page navigations that hard-cut, hover states with no feedback — these are motion bugs as real as a jittery scroll animation. The gap between where motion exists and where it should exist is the Motion-Meaning Gap. 6. **Performance is not optional.** A beautiful animation that drops to 15fps on mobile is a broken animation. GPU-composited properties only (transform, opacity). Anything animating layout or paint is a performance violation. 7. **Reduced motion is not "disable all" (Popper).** FALSIFY the claim "we respect prefers-reduced-motion" by checking: did they just kill everything, or did they design an alternative experience? Opacity fades are fine. Parallax and large-distance translations are not. The reduced-motion experience must still communicate state changes. **Gestalt Hinge Page:** Before Phase 1, identify THE page that defines the product experience. The landing page. The dashboard. The editor. THIS page gets every phase at maximum depth. Its motion language is the brand's motion DNA. **Popper Motion Falsification Categories:** - **PURPOSE vs DECORATION** — Animation claims to communicate, but removing it changes nothing - **SYSTEM vs RANDOM** — Easing/duration claims consistency, but values are arbitrary per component - **DESKTOP vs MOBILE** — Smooth on desktop, janky or nauseating on mobile - **FAST vs SLOW** — Animations feel snappy in isolation, sluggish in sequence - **PRESENT vs MISSING** — Motion exists where it shouldn't, absent where it should --- ## SCOPE DETECTION (automatic) ``` EXAMPLES: "/motionaudit" -> Full 18-phase pipeline. Discover all animations, audit everything. "/motionaudit the homepage" -> TARGETED: only homepage animations and interactions -> All phases scoped to homepage routes "/motionaudit scroll" -> SCROLL-FOCUSED: scroll-driven animations, parallax, IntersectionObserver "/motionaudit micro-interactions" -> INTERACTION-FOCUSED: hover, focus, active, toggle, form states "/motionaudit easing" -> EASING-FOCUSED: curve consistency, duration tokens, motion vocabulary "/motionaudit webgl" -> WEBGL-FOCUSED: GL contexts, shader performance, fallbacks, mobile "/motionaudit reduced-motion" -> ACCESSIBILITY-FOCUSED: prefers-reduced-motion compliance across site ``` --- ## CANONICAL RUNNER GATE Before Phase 0, invoke `~/.omega/lib/audit-runner.sh motion "<absolute-project-path>" --files="<scoped-files>" --user-need="<verbatim-user-need>" --hinge="<load-bearing-region>"` (plus `--ticket` and `--url` together when ticket-scoped). A non-zero exit is an audit failure. Read the emitted `audits/.motionaudit/evidence-summary.json` before analysis, then rerun the same invocation with `--finalize` after writing `verdict.json`. ## OUTPUT CONTRACT ``` audits/.motionaudit/ |-- session.log |-- discovery/ | |-- animations.json # Complete animation inventory | |-- css-transitions.json # All CSS transition/animation declarations | |-- js-animations.json # All JS-driven animations (GSAP, Web Animations API, rAF) | |-- scroll-animations.json # Scroll-triggered and scroll-linked animations | |-- webgl-contexts.json # WebGL/canvas instances | |-- easing-map.json # All easing values found with frequency | |-- duration-map.json # All duration values found with frequency |-- reports/ | |-- motion-inventory.md # Phase 1 | |-- purpose-verification.md # Phase 2 (HINGE) | |-- easing-system.md # Phase 3 | |-- duration-consistency.md # Phase 4 | |-- choreography.md # Phase 5 | |-- scroll-animations.md # Phase 6 | |-- page-transitions.md # Phase 7 | |-- micro-interactions.md # Phase 8 | |-- loading-skeleton.md # Phase 9 | |-- webgl-audit.md # Phase 10 | |-- p5-canvas.md # Phase 11 | |-- css-performance.md # Phase 12 | |-- reduced-motion.md # Phase 13 | |-- mobile-motion.md # Phase 14 | |-- motion-meaning-gap.md # Phase 15 | |-- motion-excess.md # Phase 16 | |-- brand-motion-dna.md # Phase 17 | |-- performance-budget.md # Phase 18 |-- verdict.json |-- verdict.md |-- fix-plan.json |-- fix-plan.md |-- progress.json |-- fix-log.md ``` --- ## PHASE 0: RECONNAISSANCE > *"Know the kinetic patient before diagnosing."* ``` 1. PROJECT DISCOVERY -> Read CLAUDE.md, README, VISION.md, package.json -> Identify: stack, framework, animation libraries (GSAP, Framer Motion, Spring, Lottie) -> Find: prod URL, dev URL, design system docs 2. ANIMATION LIBRARY INVENTORY -> Scan package.json for: gsap, framer-motion, @react-spring, animejs, lottie-web, three, p5, motion, popmotion, auto-animate -> Scan CSS for: @keyframes declarations, transition properties -> Scan JS for: requestAnimationFrame, IntersectionObserver, scroll-timeline, Web Animations API, ScrollTrigger 3. PAGE/ROUTE DISCOVERY -> Scan all routes -> Identify pages with heavy animation vs static pages -> Mark the HINGE PAGE (most important user-facing page) 4. MOTION BASELINE -> Count: total animations, total transitions, total scroll effects -> Identify: animation library fragmentation (how many different approaches) -> Check: does a motion design system document exist? -> This becomes the "before" for comparison ``` --- ## PHASE 1: MOTION INVENTORY > *"You cannot audit what you haven't cataloged."* ``` FOR EVERY discoverable page, catalog EVERY animation: 1. CSS TRANSITIONS -> Grep all `transition:` and `transition-*` declarations -> For each: property animated, duration, easing, delay -> Map to component: which element, which interaction triggers it 2. CSS ANIMATIONS (@keyframes) -> Grep all `@keyframes` blocks -> For each: name, keyframe steps, properties animated -> Map to usage: which elements use this animation, when 3. JS-DRIVEN ANIMATIONS -> Find all requestAnimationFrame calls -> Find all Web Animations API usage (.animate()) -> Find all GSAP timelines and tweens -> Find all Framer Motion variants and animate props -> Find all React Spring useSpring/useTransition 4. SCROLL-DRIVEN -> Find all IntersectionObserver instances -> Find all scroll event listeners -> Find all ScrollTrigger configurations -> Find all CSS scroll-timeline usage 5. CANVAS/WEBGL -> Find all <canvas> elements -> Find all WebGL context creation -> Find all P5.js sketch instances -> Find all Three.js scene setups DELIVERABLE: animations.json with every animation cataloged: { element, trigger, type, properties, duration, easing, file, line } ``` --- ## PHASE 2: PURPOSE VERIFICATION (HINGE PHASE) > *"The Purpose Test is the hinge of this entire audit. If animations can't justify their existence, everything else is decoration."* **Weight: x3.5 — this is the highest-weighted phase.** ``` FOR EACH animation found in Phase 1, apply the Purpose Test: THE PURPOSE TEST (all three questions): 1. Does it COMMUNICATE? State changes, hierarchy, causality, spatial relationships. "This element moved here because you did that." 2. Does it ORIENT? Where did this come from? Where did that go? "You are here. That came from there." 3. Does it CREATE MEANING? Brand personality, emotional tone, atmosphere. "This feels like [quality] because of how it moves." CLASSIFICATION: ESSENTIAL -> Passes test 1 or 2. Motion carries information. ENHANCING -> Passes test 3, supports tests 1 or 2. Adds brand without harm. DECORATIVE -> Only passes test 3 (weakly). Named as decoration, must be defended. PURPOSELESS -> Fails all three. Remove or justify with extraordinary evidence. POPPER FALSIFICATION: For each animation classified ESSENTIAL or ENHANCING: -> Remove it mentally. Does the user lose information? Does the experience degrade? -> If removing it changes nothing, reclassify as DECORATIVE or PURPOSELESS. OUTPUT: Purpose matrix — every animation with classification and one-sentence justification. ``` --- ## PHASE 3: EASING SYSTEM > *"Easing is the vocabulary of movement. Random curves are gibberish."* ``` 1. EASING INVENTORY -> Extract every easing value from CSS and JS -> Map frequency: how many times each curve appears -> Identify: are curves defined as design tokens/custom properties? 2. CONSISTENCY CHECK -> How many unique easing values exist? -> Are enters using deceleration curves (ease-out)? -> Are exits using acceleration curves (ease-in)? -> Are position changes using ease-in-out or custom symmetric curves? -> Are ambient/loops using linear or sine? 3. SYSTEM DETECTION -> Is there a :root or theme file defining easing tokens? (e.g., --ease-enter, --ease-exit, --ease-move, --ease-bounce) -> Are components referencing shared tokens or hardcoding curves? -> Fragmentation score: unique curves / total animation count 4. EASING QUALITY -> Are custom cubic-bezier curves well-designed? -> Is ease-in-out used everywhere? (sign of no thought — it's the "default") -> Are spring physics used where appropriate (interactive elements)? -> Is linear used only for progress/loading/ambient? (linear for UI = mechanical) IDEAL: 3-5 named easing tokens, used consistently, matching enter/exit/move patterns. FAILURE: >10 unique curves with no naming, ease-in-out everywhere, no tokens. ``` --- ## PHASE 4: DURATION CONSISTENCY > *"Timing is rhythm. Arbitrary durations create arrhythmia."* ``` 1. DURATION INVENTORY -> Extract every duration value from CSS and JS -> Map frequency: how many times each duration appears -> Identify: are durations defined as design tokens? 2. TOKEN CHECK -> Do duration tokens exist? (--duration-fast, --duration-normal, --duration-slow) -> Are they systematic? (100ms/200ms/300ms scale, or T-shirt sizes) -> Are components using tokens or magic numbers? 3. APPROPRIATENESS AUDIT -> Micro-interactions (hover, press): 80-150ms? (too slow = sluggish) -> Element entrances: 200-400ms? (too fast = jarring, too slow = waiting) -> Element exits: 150-250ms? (exits should be faster than entrances) -> Layout transitions: 250-350ms? -> Page transitions: 300-500ms? -> Scroll reveals: 400-600ms? -> Stagger offsets: 50-100ms between siblings? -> Ambient loops: 3000-8000ms? 4. TOTAL CHOREOGRAPHY TIME -> For page entry sequences: total time from first to last animation -> Target: < 800ms for full entrance. > 800ms = user is waiting, not watching -> For modal/panel entrances: < 400ms -> Blocking time: does any animation prevent interaction? Target: 0ms IDEAL: 4-6 duration tokens on a systematic scale, matching category ranges. FAILURE: 15+ unique durations, micro-interactions at 500ms, entrances at 1.5s. ``` --- ## PHASE 5: CHOREOGRAPHY > *"Individual animations are notes. Choreography is music."* ``` 1. ENTRANCE SEQUENCES -> Does the page introduce itself with a sequence or does everything appear at once? -> Is the stagger order meaningful? (follows reading priority, visual hierarchy) -> Is stagger timing consistent? (same offset between siblings) -> Does the sequence feel rhythmic or mechanical? 2. COMPOSITION -> Do animations compose? (element A finishes, triggers element B) -> Are there dependency chains that create narrative? -> Or are all animations independent fire-and-forget? 3. EXIT CHOREOGRAPHY -> When content leaves (modal close, page exit, filter removal): do elements animate out, or just vanish? -> Are exits faster than entrances? (they should be) -> Is there spatial logic? (content exits toward its origin) 4. STATE TRANSITION CHOREOGRAPHY -> Tab switches, accordion opens, filter changes, view toggles: -> Is the relationship between old and new state communicated spatially? -> Do elements animate FROM somewhere and TO somewhere? -> Or do they just appear/disappear? 5. STAGGER PATTERNS -> CSS nth-child stagger vs JS-driven stagger -> Consistent offset (50-100ms) or variable? -> Dynamic lists: stagger computed per item count? IDEAL: Entrance sequences follow content hierarchy, transitions communicate spatial relationships, exits are swift and directional. FAILURE: Everything appears at once, or everything animates independently with no compositional awareness. ``` --- ## PHASE 6: SCROLL ANIMATIONS > *"Scrolling is the user's pace. Animation should match it, not fight it."* ``` 1. SCROLL-TIMELINE API -> Is the CSS scroll-timeline API used? (Chrome 115+) -> @supports fallbacks present for Safari/Firefox? -> animation-range values appropriate? 2. INTERSECTION OBSERVER -> How many observers active? -> Threshold values appropriate? (0.1-0.2 for reveals) -> rootMargin used for early triggering? -> unobserve after animation? (memory hygiene) 3. PARALLAX QUALITY -> Is parallax present? If so: -> Subtle speed differential (10-30%) or aggressive (50%+)? -> Does it add depth or just add motion? -> Text moving at different speed than container? (readability violation) -> CSS perspective-based or JS transform-based? 4. SCROLL HIJACKING (CRITICAL) -> Does the page hijack scroll? (scroll-snap + custom scroll speed = BAD) -> Does the user control the pace? -> Are scroll-triggered animations progress-linked or fire-and-forget? -> Fire-and-forget: user scrolls past before animation finishes? 5. SCROLL PERFORMANCE -> Passive listeners? ({ passive: true }) -> rAF batching for scroll-linked transforms? -> Animating only transform/opacity on scroll?
GitHubで見る
この SKILL.md は非常に大きいため、SkillsMP では最初のセクションだけを表示しています。 GitHubで見る