💬 Fixing Motion Performance
アニメーションのパフォーマンス問題を監査し、レイアウトの乱れやスクロール連動モーションなど、カクつきの原因を特定して修正するSkill。
📺 まず動画で見る(YouTube)
▶ 【最新版】Claude(クロード)完全解説!20以上の便利機能をこの動画1本で全て解説 ↗
※ jpskill.com 編集部が参考用に選んだ動画です。動画の内容と Skill の挙動は厳密には一致しないことがあります。
📜 元の英語説明(参考)
Audit and fix animation performance issues including layout thrashing, compositor properties, scroll-linked motion, and blur effects. Use when animations stutter, transitions jank, or reviewing CSS/JS animation performance.
🇯🇵 日本人クリエイター向け解説
アニメーションのパフォーマンス問題を監査し、レイアウトの乱れやスクロール連動モーションなど、カクつきの原因を特定して修正するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o fixing-motion-performance.zip https://jpskill.com/download/2864.zip && unzip -o fixing-motion-performance.zip && rm fixing-motion-performance.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/2864.zip -OutFile "$d\fixing-motion-performance.zip"; Expand-Archive "$d\fixing-motion-performance.zip" -DestinationPath $d -Force; ri "$d\fixing-motion-performance.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
fixing-motion-performance.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
fixing-motion-performanceフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-17
- 同梱ファイル
- 1
💬 こう話しかけるだけ — サンプルプロンプト
- › Fixing Motion Performance で、お客様への返信文を作って
- › Fixing Motion Performance を使って、社内向けアナウンスを書いて
- › Fixing Motion Performance で、メールテンプレートを整備して
これをClaude Code に貼るだけで、このSkillが自動発動します。
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
fixing-motion-performance
アニメーションのパフォーマンス問題を修正します。
使用方法
-
/fixing-motion-performanceこの会話におけるUIアニメーション作業すべてに、これらの制約を適用します。 -
/fixing-motion-performance <file>以下のすべてのルールに対してファイルをレビューし、以下を報告します。- 違反(正確な行またはスニペットを引用)
- なぜそれが重要なのか(短い一文)
- 具体的な修正(コードレベルの提案)
明示的に要求されない限り、アニメーションライブラリを移行しないでください。既存のスタック内でルールを適用してください。
使用するタイミング
以下の状況でこれらのガイドラインを参照してください。
- UIアニメーション(CSS、WAAPI、Motion、rAF、GSAP)を追加または変更する場合
- カクカクしたインタラクションやトランジションをリファクタリングする場合
- スクロール連動モーションやスクロール時の表示を実装する場合
- レイアウト、フィルター、マスク、グラデーション、またはCSS変数をアニメーション化する場合
- will-change、transforms、または測定を使用するコンポーネントをレビューする場合
レンダリングステップの用語集
- composite: transform、opacity
- paint: color、borders、gradients、masks、images、filters
- layout: size、position、flow、grid、flex
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 |
|---|---|---|
| 1 | never patterns | 致命的 |
| 2 | choose the mechanism | 致命的 |
| 3 | measurement | 高 |
| 4 | scroll | 高 |
| 5 | paint | 中高 |
| 6 | layers | 中 |
| 7 | blur and filters | 中 |
| 8 | view transitions | 低 |
| 9 | tool boundaries | 致命的 |
クイックリファレンス
1. never patterns (致命的)
- 同じフレーム内でレイアウトの読み取りと書き込みを交互に行わないでください
- 大きなまたは重要なサーフェスでレイアウトを継続的にアニメーション化しないでください
- scrollTop、scrollY、またはスクロールイベントからアニメーションを駆動しないでください
- 停止条件のない requestAnimationFrame ループを使用しないでください
- それぞれがレイアウトを測定または変更する複数のアニメーションシステムを混在させないでください
2. choose the mechanism (致命的)
- モーションにはデフォルトで transform と opacity を使用してください
- インタラクションが必要な場合にのみJS駆動のアニメーションを使用してください
- paint または layout アニメーションは、小さく分離されたサーフェスでのみ許容されます
- ワンショット効果は、連続的なモーションよりも頻繁に許容されます
- モーションを完全に削除するよりも、テクニックをダウングレードすることを優先してください
3. measurement (高)
- 一度測定し、その後 transform または opacity を介してアニメーション化してください
- すべてのDOM読み取りを書き込みの前にバッチ処理してください
- アニメーション中にレイアウトを繰り返し読み取らないでください
- レイアウトのような効果にはFLIPスタイルのトランジションを優先してください
- 測定と書き込みをバッチ処理するアプローチを優先してください
4. scroll (高)
- 利用可能な場合は、スクロール連動モーションに Scroll または View Timelines を優先してください
- 可視性と一時停止には IntersectionObserver を使用してください
- アニメーションのためにスクロール位置をポーリングしないでください
- 画面外ではアニメーションを一時停止または停止してください
- スクロール連動モーションは、大きなサーフェスで継続的なレイアウトやペイントをトリガーしてはなりません
5. paint (中高)
- paint をトリガーするアニメーションは、小さく分離された要素でのみ許可されます
- 大きなコンテナで paint の負荷が高いプロパティをアニメーション化しないでください
- transform、opacity、または position のためにCSS変数をアニメーション化しないでください
- 継承されたCSS変数をアニメーション化しないでください
- アニメーション化されたCSS変数をローカルにスコープし、継承を避けてください
6. layers (中)
- コンポジタモーションにはレイヤーの昇格が必要であり、それを仮定しないでください
- will-change は一時的かつ外科的に使用してください
- 多くのまたは大きな昇格されたレイヤーを避けてください
- パフォーマンスが重要な場合は、ツールを使用してレイヤーの動作を検証してください
7. blur and filters (中)
- ぼかしアニメーションは小さく保ってください (<=8px)
- ぼかしは短時間のワンタイム効果にのみ使用してください
- ぼかしを継続的にアニメーション化しないでください
- 大きなサーフェスでぼかしをアニメーション化しないでください
- ぼかしの前に opacity と translate を優先してください
8. view transitions (低)
- ビュートランジションはナビゲーションレベルの変更にのみ使用してください
- インタラクションの多いUIにはビュートランジションを避けてください
- 中断またはキャンセルが必要な場合はビュートランジションを避けてください
- サイズ変更はレイアウトをトリガーする可能性があるものとして扱ってください
9. tool boundaries (致命的)
- 明示的に要求されない限り、アニメーションライブラリを移行または書き換えしないでください
- 既存のアニメーションシステム内でこれらのルールを適用してください
- 同じコンポーネント内でAPIを部分的に移行したり、スタイルを混在させたりしないでください
一般的な修正
/* layout thrashing: width の代わりに transform をアニメーション化 */
/* before */ .panel { transition: width 0.3s; }
/* after */ .panel { transition: transform 0.3s; }
/* scroll-linked: JS の代わりに scroll-timeline を使用 */
/* before */ window.addEventListener('scroll', () => el.style.opacity = scrollY / 500)
/* after */ .reveal { animation: fade-in linear; animation-timeline: view(); }
// measurement: 書き込みの前に読み取りをバッチ処理 (FLIP)
// before — layout thrash
el.style.left = el.getBoundingClientRect().left + 10 + 'px';
// after — 一度測定し、transform を介してアニメーション化
const first = el.getBoundingClientRect();
el.classList.add('moved');
const last = el.getBoundingClientRect();
el.style.transform = `translateX(${first.left - last.left}px)`;
requestAnimationFrame(() => { el.style.transition = 'transform 0.3s'; el.style.transform = ''; });
レビューのガイダンス
- まず致命的なルール(never patterns、tool boundaries)を強制してください
- 意図に合致する最もコストの低いレンダリング作業を選択してください
- デフォルト以外の選択肢については、それを正当化する制約(サーフェスサイズ、期間、またはインタラクション要件)を述べてください
- レビューの際は、理論よりも実行可能なメモと具体的な代替案を優先してください
制限事項
- このスキルは、タスクが上記で説明された範囲と明確に一致する場合にのみ使用してください。
- 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全境界、または成功基準が不足している場合は、停止して明確化を求めてください。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
fixing-motion-performance
Fix animation performance issues.
how to use
-
/fixing-motion-performanceApply these constraints to any UI animation work in this conversation. -
/fixing-motion-performance <file>Review the file against all rules below and report:- violations (quote the exact line or snippet)
- why it matters (one short sentence)
- a concrete fix (code-level suggestion)
Do not migrate animation libraries unless explicitly requested. Apply rules within the existing stack.
When to Use
Reference these guidelines when:
- adding or changing UI animations (CSS, WAAPI, Motion, rAF, GSAP)
- refactoring janky interactions or transitions
- implementing scroll-linked motion or reveal-on-scroll
- animating layout, filters, masks, gradients, or CSS variables
- reviewing components that use will-change, transforms, or measurement
rendering steps glossary
- composite: transform, opacity
- paint: color, borders, gradients, masks, images, filters
- layout: size, position, flow, grid, flex
rule categories by priority
| priority | category | impact |
|---|---|---|
| 1 | never patterns | critical |
| 2 | choose the mechanism | critical |
| 3 | measurement | high |
| 4 | scroll | high |
| 5 | paint | medium-high |
| 6 | layers | medium |
| 7 | blur and filters | medium |
| 8 | view transitions | low |
| 9 | tool boundaries | critical |
quick reference
1. never patterns (critical)
- do not interleave layout reads and writes in the same frame
- do not animate layout continuously on large or meaningful surfaces
- do not drive animation from scrollTop, scrollY, or scroll events
- no requestAnimationFrame loops without a stop condition
- do not mix multiple animation systems that each measure or mutate layout
2. choose the mechanism (critical)
- default to transform and opacity for motion
- use JS-driven animation only when interaction requires it
- paint or layout animation is acceptable only on small, isolated surfaces
- one-shot effects are acceptable more often than continuous motion
- prefer downgrading technique over removing motion entirely
3. measurement (high)
- measure once, then animate via transform or opacity
- batch all DOM reads before writes
- do not read layout repeatedly during an animation
- prefer FLIP-style transitions for layout-like effects
- prefer approaches that batch measurement and writes
4. scroll (high)
- prefer Scroll or View Timelines for scroll-linked motion when available
- use IntersectionObserver for visibility and pausing
- do not poll scroll position for animation
- pause or stop animations when off-screen
- scroll-linked motion must not trigger continuous layout or paint on large surfaces
5. paint (medium-high)
- paint-triggering animation is allowed only on small, isolated elements
- do not animate paint-heavy properties on large containers
- do not animate CSS variables for transform, opacity, or position
- do not animate inherited CSS variables
- scope animated CSS variables locally and avoid inheritance
6. layers (medium)
- compositor motion requires layer promotion, never assume it
- use will-change temporarily and surgically
- avoid many or large promoted layers
- validate layer behavior with tooling when performance matters
7. blur and filters (medium)
- keep blur animation small (<=8px)
- use blur only for short, one-time effects
- never animate blur continuously
- never animate blur on large surfaces
- prefer opacity and translate before blur
8. view transitions (low)
- use view transitions only for navigation-level changes
- avoid view transitions for interaction-heavy UI
- avoid view transitions when interruption or cancellation is required
- treat size changes as potentially layout-triggering
9. tool boundaries (critical)
- do not migrate or rewrite animation libraries unless explicitly requested
- apply these rules within the existing animation system
- never partially migrate APIs or mix styles within the same component
common fixes
/* layout thrashing: animate transform instead of width */
/* before */ .panel { transition: width 0.3s; }
/* after */ .panel { transition: transform 0.3s; }
/* scroll-linked: use scroll-timeline instead of JS */
/* before */ window.addEventListener('scroll', () => el.style.opacity = scrollY / 500)
/* after */ .reveal { animation: fade-in linear; animation-timeline: view(); }
// measurement: batch reads before writes (FLIP)
// before — layout thrash
el.style.left = el.getBoundingClientRect().left + 10 + 'px';
// after — measure once, animate via transform
const first = el.getBoundingClientRect();
el.classList.add('moved');
const last = el.getBoundingClientRect();
el.style.transform = `translateX(${first.left - last.left}px)`;
requestAnimationFrame(() => { el.style.transition = 'transform 0.3s'; el.style.transform = ''; });
review guidance
- enforce critical rules first (never patterns, tool boundaries)
- choose the least expensive rendering work that matches the intent
- for any non-default choice, state the constraint that justifies it (surface size, duration, or interaction requirement)
- when reviewing, prefer actionable notes and concrete alternatives over theory
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.