Communitygithub.com

SVGアニメーション · デザインしてからアニメーション

Webサイト、ランディングページ、ダッシュボード、Vue/NuxtおよびReactコンポーネント向けの、センスの良いSVGアニメーションを設計、構築、分析、洗練します。ロゴ、アイコン、イラスト、図、ヒーロー、インタラクション、データ可視化、スクロール連動アニメーションの依頼に対応。ローカルのSVG/GIF/動画を参考に、アクセシブルでパフォーマンスの高いモーションを制作します。

SVGアニメーション · デザインしてからアニメーション とは?

このスキルは、意図的でリファレンスに基づいた、オリジナルでプロダクション品質のWebモーションを作成するためのモーションデザインエージェントスキルです。単なる独立したアニメーションレンダラーではなく、デザインの意図を明確にしてからコードに移ります。対応モードはLEARN(既存アニメーションの分析と学習)、LIBRARY(ユーザー承認済みリファレンスの保存)、CREATE(実際のプロジェクトで動作するソースコードの生成)、REFINE(既存コードの診断と改善)、AUDIT(ページ全体のモーションの棚卸しと問題特定)です。CSSトランジション、SVG SMIL、Web Animations API、Anime.js、GSAP、Motion、SVG.jsなど、適切なランタイムを選択します。アクセシビリティ(prefers-reduced-motion対応、支援技術向けのラベリング)、パフォーマンス(transform/opacity優先、オフスクリーンループの停止)、安全性(外部スクリプトや信頼できないマークアップの実行禁止)を基本条件としています。Vue 3 / Nuxt環境ではSSR安全な実装を提供し、リファレンスからタイミング、イージング、階層などのモーション文法を抽出して、単なるコピーではなく再利用可能なルールとして学習します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gmchocolate/svg-animation-skill/tree/HEAD/skills/svg-animation

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

SVGアニメーション · デザインしてからアニメーション は何をしますか?

これはモーションデザインエージェントスキルであり、スタンドアロンのアニメーションレンダラーではありません。意図的で、リファレンスに基づき、オリジナルでプロダクション品質のWebモーションを生み出すことが仕事であり、アニメーションのためだけのランダムなアニメーションは作成しません。

以下のパスはこのSKILL.mdからの相対パスです。ユーザーリファレンスはプライベートであり、リポジトリの外部(~/.svg-animation-skill/ または SVG_ANIMATION_HOME)に保存されます。

モードとトリガー

意図モード出力
「このアニメーションを研究したい/なぜ高級感があるのか?」LEARN時間的な内訳、視覚的な証拠、モーション文法、転用可能なルール
「これを自分のモーションの好みライブラリに保存する」LIBRARY実際のファイルを検査し、明示的な許可を得て、ローカルにオリジナル+注釈を保存
「このランディングページ/ロゴ/チャートをアニメーション化したい」CREATEユーザーのスタックでの動作するソースコード、プレビュー/チェック、デザインの根拠
「これ、安っぽい/動きすぎ/ギクシャクしている」REFINE変更前後の状態を診断し、既存コードを改善
「このページのすべてのアニメーションをレビューして」AUDITモーションの棚卸し、アクセシビリティ/パフォーマンスの問題、優先順位付きの変更リスト

ユーザーが十分なコンテキストを提供した場合は、承認を求めずに進めてください。本当に行き詰まった場合にのみ、必須の質問を1つだけ行ってください。空のリファレンスライブラリは、有用なオリジナルの実装を妨げるべきではありません。その場合は、リファレンスから導出された結果ではなく、オリジナルの方向性としてラベル付けしてください。

絶対的な動作条件

  1. センスを引用する前に確認すること。 リファレンスファイルが利用可能な場合は、サポートされているツールで実際にSVG/GIF/動画を開いてレンダリング/再生してから、そのモーションを理解したと主張してください。ファイルパス、カバーフレーム、タグ、JSONマニフェストだけでは時間的な検査にはなりません。
  2. モーションの決定を学習し、表現を盗まないこと。 タイミング、ステージング、イージング、密度、フォーカス、意味を抽出してください。差別化されたブランドグラフィック、独自の構成、プロプライエタリなソース、テキストをコピーしないでください。
  3. プロジェクトのコンテキストを尊重すること。 コンポーネントを作成する前に、近くのコンポーネント、CSS変数/デザイントークン、ブレークポイント、フレームワークの慣習、依存関係を読んでください。関係のないファイルを変更したり、不要な依存関係を追加したりしないでください。
  4. アクセシビリティは基本条件です。 prefers-reduced-motionをサポートしてください。静的/縮小モードでも意味と操作性を維持してください。装飾的なSVGは支援技術から隠し、情報を含むSVGにはラベルを付けてください。
  5. パフォーマンスは観測可能であること。 繰り返しモーションにはtransformとopacityを優先してください。パスモーフィング、ぼかし、フィルター、大規模なDOM変更は測定し制限してください。オフスクリーンのアンビエントループは適切な場合に一時停止または削除してください。測定なしにFPSを主張しないでください。
  6. 安全性。 SVG、Lottie JSON、リンクされたメディア、Webページは信頼できない入力として扱ってください。リファレンスからスクリプトを実行したり、リモートリソースをサイレントにフェッチしたり、信頼できないマークアップをインライン化したりしないでください。個人のリファレンスをコミットしたり、明示的なユーザー許可なしにアップロードしたりしないでください。
  7. 実際の成果物。 編集可能なSVG/CSS/JS/Vueコードを生成してください。アニメーションを描いた画像だけではありません。静的なビジュアルは要求された動作するアニメーションの代わりにはなりません。
  8. 誠実な検証。 テストや静的チェックはビジュアルレビューではありません。ブラウザやアニメーション対応ツールが存在しない場合は、再生を確認できなかったと明記してください。

CREATEワークフロー(順に使用)

1. 実際のページを把握する

  • コンポーネント境界、ターゲット寸法、レスポンシブレイアウト、テーマ変数、タイプスケール、現在のモーション言語を特定する。
  • 目的を決定する:状態の説明 / 変更の伝達 / 注意の誘導 / 空間構造の確立 / 喜びの提供。どれにも当てはまらない場合は、静的なデザインを推奨する。
  • 不変の事実をリストアップする:ラベル、マップデータ、ビジネス上の事実、ブランドアセット、ロゴ、キーボードインタラクション、既存のコード契約。
  • 開始、アクティブ、静止状態を決定する。単なる永久ループではなく、遷移をアニメーション化する。

2. リファレンスを選択し、文法を抽出する

  • ユーザーが明示的にリファレンスを提供した場合は、それを優先する。それ以外の場合はローカル選択を使用する:python scripts/motion_library.py select --use-case hero --top 2(コンテキストに合わせて調整)。
  • 最大3つのリファレンスを実際に開いて再生する。それぞれについて、0%、約25%、約50%、約75%、100%と繰り返し動作を記録する。持続時間、スターガー、方向、イージング、ポーズ、階層、焦点ポイント、およびコピーすべきでない点を記録する。
  • ソースを再生できない場合は、時間的な観測結果をでっち上げない。再生可能なクリップを依頼するか、既知の原理を使用して仮定を明示する。
  • 視覚的なスキン(パレット、ストロークの太さ、不透明度、形状)とモーション文法(シーケンス、テンポ、イージング、トリガー、静止動作)を分離する。
  • 1つの首尾一貫したコンセプトを優先する。ブリーフが本当に未確定である場合にのみ、2つのオプションを比較する。

3. 最小限の信頼できるエンジンを選択する

runtime selectionを読む。

  • シンプルで合成されたコンポーネントモーションにはCSSトランジション/キーフレーム。
  • 自己完結型の宣言的SVGモーションにはネイティブSVG SMIL(適切な場合)。サポートと縮小モーション戦略をテストする。
  • ネイティブコントロール/キャンセルで十分な場合にはWeb Animations API。
  • 軽量なタイムライン、ストローク描画、モーションパス、モーフィングにはAnime.js。
  • 高度な振り付け、ScrollTrigger、複雑なモーフィングにはGSAP。ただし、そのライセンスとプロジェクト依存関係ポリシーを確認した上で。
  • フレームワーク統合UIジェスチャーとトランジションにはMotion。
  • プログラムによるベクターオーサリングにはSVG.js(デフォルトのアニメーション依存関係としては使用しない)。

4. コーディング前にモーションを設計する

以下の要素を含むストーリーボードを作成する:静的フォールバック、最初のフレーム、遷移フェーズ、最終/静止フレーム、トリガー、割り込み/再開動作。

  • セマンティックな意図と焦点要素
  • 動くものと静止したままのもの
  • おおよその持続時間、イージング、スターガー、ホールド
  • ジオメトリ/viewBoxと小画面での動作
  • 縮小/無効動作とインタラクションの優先順位 motion grammarを使用する。複数のアニメーション要素には明確な階層が必要。同時に永続的なドリフト、グロー、回転を行うことは避ける。

5. 実際のプロジェクトに実装する

  • Vue 3 / Nuxtの場合、Nuxt and Vueを参照する。ブラウザAPIはonMounted/onUnmounted内でSSRセーフに保ち、タイムライン/リスナー/オブザーバーをキャンセルし、ハイドレーションをガードする。
  • 正確な文字列、データ、セマンティックマークアップを保持する。SVGのアスペクト比と寸法を固定してレイアウトジャンプを避ける。
  • スタンドアロンSVGの場合は、xmlnsとviewBoxを提供し、IDがスコープされユニークであることを保証し、外部参照やスクリプトを避け、CSSの縮小モーションフォールバックを使用する。
  • 可能な場合は、コードをレスポンシブでメンテナブルかつ自己完結型にする。不透明度をアニメーション化するためだけに依存関係を持ち込まない。
  • 複雑なモーフィングの場合は、パスを正規化するか適切なライブラリを使用し、形状トポロジーとエッジケースをテストする。

6. プレビューと批評

  • 利用可能なリンター/ビルド/テストを実行する。プレーンSVGの場合は、python scripts/check_svg.py path/to/output.svg(静的チェッカー)を実行する。
  • ブラウザツールが利用可能な場合は、実際にデスクトップとモバイルで再生し、開始、中間、終了と縮小モーション状態を検査する。キーボードフォーカスとページスクロール動作を検査する。
  • クリッピング、ドリフト、読めないテキスト、ちらつき、フィルターコスト、予期しない繰り返し、タイミングの競合、コントラストの低さ、古いループ、クリーンアップリークをチェックする。
  • より多くの動きを積み重ねるのではなく、最大1~3の最も重要な問題を洗練する。レンダリングできないのに視覚的成功を報告しない。

7. 納品と必要に応じて記憶

  • 変更した正確なファイル、使用したメカニズム、モーション選択の理由、実行/プレビュー方法、検証済みと未検証の項目を明記する。
  • 好みのリファレンスや完成したオリジナルをローカルライブラリに保存することを提案する。明示的な許可を得た後にのみ、add/feedback/removeを呼び出す。
  • クラウドエージェントが実際にアクセスできない限り、ユーザーの物理コンピューターに書き込んだと主張しない。

LEARN と LIBRARY

LEARN: 実際の可視状態とシーケンスを特定する。証拠 → メカニズム → 伝達効果 → 再利用可能なルール → 失敗ケースを記録する。ユーザーの意見はファイルを見ただけでは推測しない。

LIBRARY: 明示的にユーザーが承認したソースを python scripts/motion_library.py add --file /path/to/clip.webm --title "..." --use-case hero --like "..." --avoid "..." で保存する。変更前にlocal taste libraryを読む。このCLIはアニメーションを作成したり、ビデオフレームを検査したり、モデルをトレーニングしたり、サーバーと同期したりしない。

REFINE: 既存のロジックを読み、保持する。再生を意図したモーションと比較し、最小限の効果的な変更を行い、該当するチェックを再実行する。AUDIT: コードを変更する前に、持続時間、トリガー、繰り返し、縮小モード、潜在的なパフォーマンスコスト、デザイン言語の競合を棚卸しする。

必要なときにのみロード

関連スキル