Communitygithub.com

EchoteDev/web-motion-ultra

洗練されたデスクトップおよびモバイルアニメーションを設計、実装、調整します。静的でないページ、ランディングページ、ブランドに一貫したマイクロインタラクション、リビール、パララックス、スクロールコレオグラフィを追加する際に使用します。

web-motion-ultra とは?

Web Motion Ultraは、クリエイティブデベロッパー兼モーションデザイナーの視点から静的なページをインタラクティブな体験に変えるためのAIエージェントスキルです。このスキルは、注意力の誘導、状態の伝達、階層の確立、ブランド表現といった目的に沿った動きを設計します。CSS、IntersectionObserver、GSAP+ScrollTrigger、Motion/Framer Motionなど、既存のスタックや依存関係を尊重しながら、最も適切な技術を選択します。プロジェクトの内容やリクエストから自動的にモードや目的、対象ページ、動きの特性を推測し、質問は最小限に抑えます。「ウルトラ」品質基準に基づき、精密なコレオグラフィ、継続的なインタラクション、デスクトップとモバイルでの品質検証を重視し、すべてのアニメーションがアクセシビリティ、パフォーマンス、ユーザーコントロールを損なわないようにします。

対応~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/EchoteDev/web-motion-ultra/tree/HEAD/skills/web-motion-ultra

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

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

ドキュメント

Web Motion Ultra

クリエイティブデベロッパー兼モーションデザイナーの視点から、静的なページを生き生きとした体験に変えます。すべての動きは、注意を誘導し、状態を伝え、階層を確立し、ブランドを表現するために存在します。すべての場所に同じエフェクトを適用するのではなく、コンテンツに合わせてモーションをコレオグラフ化します。

コンテキストとスコープ

プロジェクトとリクエストから、モード、目的、オーディエンス、影響を受けるページ、動きの特性、強度、スタックを推測します。この情報がすでに利用可能な場合、質問リストを尋ねないでください。有用な前提を簡潔に述べ、進行を妨げる情報のみを尋ねてください。

  • 拡張(既存サイトのデフォルト): コピー、セクション順序、ビジュアルアイデンティティ、機能性、情報アーキテクチャを保持します。モーションに必要なラッパー、属性、ローカルな変更のみを追加します。リクエストをリデザインに変えないでください。
  • 作成: 新しいページがリクエストされた場合、レイアウトと動きを一緒に設計し、静止時でも判読可能なレイヤー、スケールのコントラスト、階層を使用します。
  • ページ、URL、コードが利用できない場合は、暫定的なコンセプトを定義し、それを適用するために必要な資料をリクエストします。ユーザーのサイトを発明したり、行われていない変更を主張したりしないでください。
  • URLの場合は、利用可能な読み取りツールやブラウザツールを使用します。スクリーンショットだけではインタラクションやスクロールを検証できません。

既存のスタックと依存関係を尊重します。制約のない新しいページの場合は、HTML、CSS、バニラJavaScriptから始めます。単純なエフェクトにはCSSとIntersectionObserverを、複雑なシーケンス、ピン留め、スクラブにはGSAPとScrollTriggerを、Reactですでに使用されている場合やリクエストされた場合にはMotion/Framer Motionを使用します。Lenisはオプションであり、プロジェクトに役立つ場合にのみ使用し、前提条件ではありません。ライブラリを追加する前に、公式ドキュメントでAPIとバージョンを確認します。既存のパッケージマネージャーまたは固定されたCDNバージョンを使用し、決してlatestを使用しないでください。

ウルトラ品質基準

「ウルトラ」とは、精密なコレオグラフィ、継続的なインタラクション、デスクトップとモバイルでの検証済み品質を意味すると解釈します。自動的に強度、エフェクト数、依存関係が増えるわけではありません。

変更を加える前に、ページを観察し、具体的な問題(静的階層、フィードバックの欠如、一貫性のないタイミング、ジャンプ、重いスクロール、タッチと互換性のないエフェクトなど)を特定します。すでにモーションが存在する場合は、ベースラインを記録し、既存のシステムを改善します。分析とドキュメントはローカルな変更に比例させてください。

すべての実装について、references/smooth-responsive-motion.mdを読んでください。コレオグラフィ、中断、入力プロファイル、パフォーマンス、受け入れ基準が定義されています。視覚言語を選択するためにエフェクトカタログを参照してください。品質は、状態間で何が起こるかにも依存します。

1. コンセプト

構造、コンテンツ、主要なアクション、既存のインタラクションを調査します。以下を定義します。

  • モーションコンセプト:動作を説明する1文(美的な形容詞だけではありません)。
  • シグニチャーモーメント:ページまたはジャーニーで最も印象的なエフェクトで、物語的または実用的な目的を持ちます。操作インターフェースでは、微妙なマイクロインタラクションの場合があります。
  • 各セクションのサポートエフェクトと、それらがユーザーの理解や行動にどのように役立つかの説明。
  • 特性と強度:操作インターフェースや読み取りでは控えめに、プロモーションランディングページでは中程度をデフォルトの仮定とし、リクエストと一致する場合のみ大胆にします。強度は速度だけでなく、振幅、密度、複雑さを変更します。

一度に一つの視覚的主導。同じトークンを共有しながら、見出し、画像、リスト、コントロールの処理を異ならせます。シーケンス、オーバーラップ、ポーズを使用します。大きな要素は小さな要素よりも時間がかかる場合があります。CTAの利用可能性を遅らせたり、品質をシミュレートするためにプリローダーを課したりしないでください。

エフェクトを選択するには、references/effect-selection.mdを読んでください。これは選択的なレパートリーであり、完了すべきチェックリストではありません。サイトは、永続的なアニメーションなしでも、レスポンシブなインタラクションを通じて生き生きと感じられます。

2. システムとモーションマップ

期間、イージング、距離、スタガーをCSSトークンとJavaScript設定に集中管理します。これらの開始値を適応させます。

トークン開始値使用法
micro150–250 msコントロールとリンクのフィードバック
standard400–700 msリビールとローカルトランジション
hero800–1200 msノンブロッキングメインシーケンス
ease-outcubic-bezier(0.16, 1, 0.3, 1)ソフトな到着
ease-in-outcubic-bezier(0.65, 0, 0.35, 1)状態遷移
stagger60–120 ms関連要素間のリズム
distance16–48 px控えめな変位、モバイルでは縮小

ライブラリが異なる形式を期待する場合は同等のイージングを使用します。CSS文字列を受け付けないAPIにCSS文字列を渡さないでください。linearは連続ループ、スクロールリンク進行、一定速度の動きに適しています。跳ね返りや弾性イージングの多用は避けてください。個々のアニメーションと同様に、長いスタガーシーケンスの合計期間も制限してください。

作業に比例したモーションマップを準備します。

セクション/要素目的トリガーエフェクト/プロパティ期間またはスクロール範囲イージング遅延/スタガーモバイル/タッチ動作の縮小

インタラクティブエフェクトについては、中断、反転、繰り返し入力時の動作、最終静止状態も指定します。同じ視覚的意図を持つ、デスクトップとタッチ用の個別のプロファイルを定義します。画面幅だけでは入力やデバイスのパフォーマンスは決まりません。

スクラブの場合、固定の時間的期間を考案する代わりに、スクロール範囲とスムージングを説明します。各エフェクトに縮小版または完全な静的状態を用意します。

3. 実装

コード変更がリクエストされた場合は、同じタスク内でコンセプトから実装に進みます。フェーズは作業を整理するためのものであり、中間承認は必要ありません。ユーザーが明示的にチェックポイントを要求した場合のみ、フェーズ間で停止します。続行を求める前に、具体的なフェーズ結果を提示します。コンセプトまたはモーションマップのみがリクエストされた場合は、そのスコープを尊重します。

references/implementation-and-qa.mdを読んで、初期化、アクセシビリティ、クリーンアップ、実用的なチェックを確認してください。以下の制約を適用します。

  • 必須のコンテンツとアクションは、JavaScriptなし、依存関係欠落時、初期化エラー後でも表示され使用可能であること。初期の.jsクラスだけではこれを保証できません。
  • transformとopacityを優先し、clip-path、フィルター、グラデーション、大きなサーフェスは慎重に評価します。測定なしで60 fpsを約束しないでください。レイアウトの読み取りと書き込みを交互に行わないでください。
  • アコーディオンやその他の必要なサイズ変更には、セマンティックで測定可能なソリューションを選択します。heightの絶対禁止に従うためだけにscaleYでテキストを歪めないでください。
  • メディアスペースを確保し、ラッパーまたはコンポジションを通じて既存のtransformを保持します。レイアウトシフトや意図しない水平オーバーフローを引き起こさないでください。
  • ネイティブスクロール、アンカー、履歴、キーボードアクセス、フォーカス、ズームを保持します。スクロールジャッキングは禁止。スムーススクロールとピン留めはユーザーコントロールを維持する必要があります。
  • タッチ/モバイルでは、パララックス、チルト、カスタムカーソル、高価なグラフィックスを削減または無効にします。アクションがホバーに依存してはなりません。
  • prefers-reduced-motion: reduceでは、大きな変位、パララックス、空間スクラブ、ナラティブピン留め、必須でないループを削除します。適切な場合は即時状態または短いフェードを使用します。セッション中の設定変更も尊重します。
  • 意図的な点滅はありません。他のコンテンツと一緒に5秒以上自動的に動くコンテンツには、一時停止/停止/非表示を提供するか、静的にします。縮小動作のサポートだけでは、そのコントロールを代替できません。
  • テキストを単語や行に分割する際にセマンティクスを保持します。フォーカス可能なコントロールのインタラクティブ要素やアンカーステムをスクリーンリーダーから隠さないでください。

バニラプロジェクトでは、必要に応じてmotion.cssとmotion.jsを使用します。フレームワークでは、既存のモジュール、コンポーネント、ライフサイクル規則に従います。強度、タイミング、距離、スタガー、オプション機能の中央設定を公開します。実装されていないエフェクトのトグルは追加しないでください。

再利用を簡素化するために、data-reveal="mask"、data-stagger="80" (ms)、data-parallax="0.15" (係数) のような宣言的属性を使用します。サポートされる属性の単位と意味を定義します。ローカルなCSSトランジションで十分な場合に汎用エンジンを構築しないでください。

実際に存在するエフェクトに対してのみ、initHero、initReveals、initParallax のような初期化子を分離します。すべての初期化は破棄可能である必要があります。ナビゲーションや再マウント後に重複するオブザーバー、リスナー、ティッカー、トリガーを避けてください。Reactでは、テキスト分割のためにReact管理下のDOMを直接変更せずに、ライフサイクルとクリーンアップを使用します。

アクセス権がある場合、プロジェクトファイルに統合された完全なコードを提供します。スニペットを貼り付けて実装を未完了のまま放置しないでください。サイトを公開またはデプロイしないでください(リクエストされた場合を除く)。

4. 検証と納品

ブラウザが利用可能な場合、初期および最終アニメーション状態、モバイル、タッチ/キーボード、リサイズ、動作の縮小、JavaScript無効、依存関係の失敗を検証します。関連するプロジェクトチェックを実行します。高価なエフェクトについて代表的なインタラクションをプロファイリングします。

納品前に、スムースモーションリファレンスの受け入れ基準を適用します。エフェクトが苦戦する場合は、まずレンダリングコストと同時実行性を減らし、次に振幅または複雑さを減らします。速度を落としてもドロップフレームは修正されません。観察された問題を修正し、対象を絞った再チェックを実行します。

実際に検証された内容と未検証の内容を報告します。コードレビューとブラウザテストを混同しないでください。問題を観察した場合は、結論を出す前に修正します。

納品をリクエストに合わせてスケーリングし、以下を含めます。

  • コンセプト、シグニチャーモーメント、簡潔なモーションマップ。
  • 実装された変更とファイルリンク。ファイルを直接編集できない場合にのみ、ファイルごとに完全なコードを提供します。
  • QA結果、トレードオフ、関連する未解決の前提。
  • 結果をより控えめまたはより大胆にするための具体的なパラメータ。

すべてのフェーズで空のセクションや承認質問を繰り返さないでください。

関連スキル