Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

ui-animation

UIのモーションやアニメーション実装の作成・レビュー・デバッグを担当するスキル。スプリング、ジェスチャー、ドラッグ操作、clip-pathによる表示エフェクト、イージング、タイミング調整など幅広くカバーし、CSS transitions・keyframes・framer-motionなどのアニメーション設計や「動きをスムーズにしたい」「アニメーションを追加して」「スワイプジェスチャーを実装したい」といった要望に対応します。

description の原文を見る

Creates, reviews, and debugs UI motion and animation implementations. Covers springs, gestures, drag interactions, clip-path reveals, easing, timing, and animation review. Use when designing, implementing, or reviewing motion, CSS transitions, keyframes, framer-motion, spring animations, asking "add animations to", "make this feel smooth", "review my animations", "should this animate", or "add a swipe gesture"

SKILL.md 本文

UI Animation

Reference files

FileRead when
references/decision-framework.mdデフォルト: アニメーション決定、easing、duration
references/spring-animations.mdspring physics、framer-motion useSpring、spring params の設定
references/component-patterns.mdボタン、ポップオーバー、ツールチップ、ドロワー、モーダル、トーストのアニメーション構築
references/clip-path-techniques.mdclip-path を使用した reveal、タブ、hold-to-delete、comparison slider
references/gesture-drag.mddrag、swipe-to-dismiss、momentum、pointer capture の実装
references/performance-deep-dive.mdjank のデバッグ、CSS vs JS、WAAPI、CSS variables trap、Framer Motion の注意点
references/review-format.mdアニメーション code の review — Before/After/Why テーブル、issue チェックリスト
references/contextual-animations.mdcontextual icon swap、word-level stagger entrance、fixed-offset exit animation の実装

Core rules

  • フィードバック、方向性、連続性、または意図的な喜びのためにアニメーション化します。
  • キーボード開始アクション (ショートカット、矢印ナビゲーション、tab/focus) を決してアニメーション化しないでください。
  • interruptible UI には CSS transitions を優先; keyframes は予め決定されたシーケンスにのみ使用します。
  • CSS transitions > WAAPI > CSS keyframes > JS (requestAnimationFrame)。
  • アニメーションを interruptible でユーザー入力駆動にします。
  • Asymmetric timing: enter は少し遅くしてもよく; exit は高速にする必要があります。
  • DOM entry animation に @starting-style を使用; data-mounted にフォールバックします。
  • 小さい filter: blur(2px) は粗いクロスフェードを隠すことができます。

Motion design principles

  • 連続性対テレポーテーション。 両方の状態で可視の要素は、その場で遷移します。shared element transition を使用 — 要素が置かれている場所から拡大するのであって、新しいインスタンスをフェードインするのではありません。persistent element を複製したり、コンポーネントを共有するビュー間でハードカットしたりしないでください。
  • 方向的な動きは位置と合致します。 タブおよびカルーセル遷移は、空間的なレイアウトと一致する方向でアニメーション化します (forward は左から右、back は右から左)。
  • トリガーから出現。 オーバーレイ、トレイ、パネルは、それらを開いた要素から外側へアニメーション化します。generic center-screen entrance は空間的な方向性を損ないます。
  • どこでも一貫したポーランド。 under-animated 領域は製品全体を unpolished に感じさせます。motion quality はすべてのサーフェスで統一する必要があります。
  • 喜びは頻度に反比例します。 より稀な相互作用には、より多くのパーソナリティと驚きの余地があります。high-frequency アクションは見えないものである必要があります。
  • 動きは知覚速度を向上します。 状態間のスムーズな遷移は、ハードカットよりも高速に感じられます、同一の読み込み時間でも。

What to animate

  • 動き: transformopacity のみ。
  • 状態フィードバック: colorbackground-coloropacity は許容されます。
  • layout properties (widthheighttopleft) を決してアニメーション化しないでください; transition: all を決して使用しないでください。
  • core interaction の filter animation を回避; 避けられない場合は blur <= 20px を保ちます。
  • SVG: transform-box: fill-box; transform-origin: center を持つ <g> ラッパーに transforms を適用します。
  • theme switch 中に transition を無効化 ([data-theme-switching] * { transition: none !important })。

Easing defaults

ElementDurationEasing
ボタンプレスフィードバック100–160mscubic-bezier(0.22, 1, 0.36, 1)
ツールチップ、小さいポップオーバー125–200msease-out または enter curve
ドロップダウン、select150–250mscubic-bezier(0.22, 1, 0.36, 1)
モーダル、ドロワー200–350mscubic-bezier(0.22, 1, 0.36, 1)
画面上でのスライド200–300mscubic-bezier(0.25, 1, 0.5, 1)
シンプルなホバー (color/opacity)200msease
Illustrative/marketing最大 1000msSpring またはカスタム

Named curves

  • Enter: cubic-bezier(0.22, 1, 0.36, 1) — entrance と transform-based hover
  • Move: cubic-bezier(0.25, 1, 0.5, 1) — slide、drawer、panel
  • Drawer (iOS-like): cubic-bezier(0.32, 0.72, 0, 1)

UI に ease-in を使用しないでください。easing.dev からカスタム curve を優先します。

Spatial and sequencing

  • ポップオーバーの trigger point で transform-origin を設定; モーダルは center を保ちます。
  • ダイアログ/メニューの場合、scale(0.85–0.9) の周辺で開始します。scale(0) は決して使用しないでください。
  • reveal を 30–50ms per item で stagger; total stagger は 300ms 以下。visual importance で timing を変化 — 最も重要な要素がリードする必要があります。Uniform stagger (すべての項目間の identical delays) は階層を削除し、mechanical に感じられます。
  • Paired elements rule: 一緒にアニメーション化する要素 (modal + overlay、tooltip + arrow、FAB + label) は同じ easing curve と duration を共有する必要があります。paired element 間の mismatched timing は、「何か off に感じられる」バグの一般的な原因です。

Accessibility

  • @media (hover: hover) and (pointer: fine) の背後に hover animation をゲート化して、touch で false positive を回避します。Tailwind v4 hover: utilities はこのガードを自動的に適用 — Tailwind v4 プロジェクトで manual media query をスキップします。
  • direct manipulation 中は、要素をポインターに locked に保ちます。easing は release 後にのみ追加します。
  • prefers-reduced-motion: reduce を尊重します。spatial movement (translateYscale) を opacity crossfade に置き換え — reduced motion は spatial movement を減らすことを意味し、ゼロフィードバックではありません。colorbackground-color transition を保ちます。
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}
  • Framer Motion では、useReducedMotion hook を使用して spatial initial values をスキップします:
const shouldReduceMotion = useReducedMotion();
<motion.div
  initial={shouldReduceMotion ? false : { opacity: 0, y: 20 }}
  animate={{ opacity: 1, y: 0 }}
/>

Performance

  • transformopacity のみをアニメーション化 — これらは layout と paint をスキップします。
  • looping animation を IntersectionObserver で off-screen の時に pause します。
  • will-change は heavy motion 中にのみ、transform/opacity にのみ toggle — 後で削除します。
  • CSS variables を使用した drag gesture animation を実行しないでください (すべての子の recalc をトリガー)。
  • Motion x/y value は axis-based movement と drag の通常の選択肢です。combined transform または interop に対して 1 つの transform owner が必要な場合は、full transform string を使用します。
  • references/performance-deep-dive.md で WAAPI、compositing layer、CSS vs JS comparison を参照します。

Anti-patterns

  • transition: all — layout recalc をトリガーし、unintended properties をアニメーション化します。
  • layout properties (widthheighttopleft) をアニメーション化して interactive feedback を行う。
  • UI entrance に ease-in を使用 — sluggish に感じられます。
  • scale(0) からアニメーション化 — 現実世界では何も無から出現しません。scale(0.85–0.95) を使用します。
  • ユーザートリガーなしに mount でアニメーション化 — unexpected motion は disorienting です。
  • Permanent will-change — heavy motion 中にのみ toggle します。
  • drag gesture animation の CSS variables — every frame を reprint します。
  • Symmetric enter/exit timing — exit は高速にする必要があります (ユーザーは instant response を期待)。
  • drag boundary での hard stops — friction/damping を代わりに使用します。
  • Motion x/y props と handwritten transform string を同じ要素で混合。
  • rapidly-triggered element 上の keyframe — interruptibility のために CSS transition を使用します。
  • 関連ビュー間の static cut — ビュースが要素を共有する場合、hard cut は spatial context を失います。shared element をその場で遷移させます。
  • 状態全体で persistent element を複製 — 要素を現在の位置から次の位置にアニメーション化するのであって、1 つを非表示にして別の要素を表示するのではありません。
  • contextual content の generic center-screen entrance — overlay と tray は何も無から fade in ではなく、trigger から出現する必要があります。
  • container と staggering children の両方をアニメーション化 — container あたり 1 つの entrance を選択します。panel がスライドする場合、その content は到着時に既に visible である必要があります。

Workflow

このチェックリストをコピーして追跡します:

Animation progress:
- [ ] Step 1: 相互作用がアニメーション化すべきかを決定
- [ ] Step 2: 目的、easing、duration を選択
- [ ] Step 3: implementation style を選択
- [ ] Step 4: 関連する component または technique reference をロード
- [ ] Step 5: timing、interruption、device behavior を検証
  1. references/decision-framework.md から 4 つの質問に答える: アニメーション化すべきか? どのような目的? どのような easing? どのような速度?
  2. 上記の easing defaults テーブルから duration を選択します。
  3. Implementation を選択: CSS transition > WAAPI > spring > keyframe > JS。
  4. あなたの component type または technique の関連 reference をロードします。
  5. review するときは、references/review-format.md からの Before/After/Why テーブル形式を使用します。

Validation

  • layout property animation (widthheighttopleft) がないことを確認します。
  • looping animation が off-screen で pause されていることを確認します。
  • will-change が animation 中にのみ toggle され、permanently set されていないことを確認します。
  • component を素早く retoggle して、transition が zero からの restart ではなく cleanly retarget することを確認します。
  • animation を DevTools で 0.1x にスローして、full speed で invisible の timing issue をキャッチします。
  • frame-by-frame で coordinated property timing をキャッチするために記録と再生を行います。
  • real device で touch interaction をテストします (simulator だけではなく)。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
mblode
リポジトリ
mblode/agent-skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/mblode/agent-skills / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: mblode · mblode/agent-skills · ライセンス: MIT