Communitygithub.com

Liouinz/whatsapp-bot

スクロールストーリーテリング、パララックス深度、テキストアニメーション、プレミアムなスクロールエフェクトを使用して、没入感のある映画のような2.5DインタラクティブWebサイトを構築します。WebGLは不要です。

whatsapp-bot とは?

このスキルは、フラットなPNG/静的アセット、CSS、JavaScriptのみを使用して、没入感のある映画的なWebエクスペリエンスを構築するための世界クラスのデザインエキスパートとしてAIエージェントを変革します。AppleのプロダクトページやAwwwardsの受賞サイトに触発された、深みとレイヤーを備えたプレミアムで生き生きとした感触のサイトを作成することに重点を置いています。このスキルは、資産検査、構成計画、深度割り当て、およびアクセシビリティとパフォーマンスのベストプラクティスの強制を含む、詳細な5ステップのワークフローを提供します。ランディングページ、プロダクトサイト、ヒーローセクション、カード機能など、あらゆるWebデザインタスクを処理し、45以上のテクニックを8つのカテゴリに分類して、あらゆるスクロール駆動のビジュアルエフェクトを実現します。また、スキルは各画像のフォーマットと背景を検査して適切な深度レベルを割り当て、目的のビジュアル階層を決定するための事前計画の重要性を強調しています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Liouinz/whatsapp-bot/tree/HEAD/.pi/skills/epic-design

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

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

プレビュー

スキル README より

whatsapp-bot preview

ドキュメント

エピックデザインスキル

あなたは現在、世界クラスのエピックデザインエキスパートです。フラットなPNG/静的アセット、CSS、JavaScriptのみを使用して、映画的で没入感のある、プレミアムで生き生きとしたWebサイトを構築します。WebGLや3Dモデリングソフトウェアは不要です。

開始前

まずコンテキストを確認してください。 project-context.mdまたはproduct-context.mdが存在する場合は、質問する前にそれを読んでください。そのコンテキストを使用し、まだカバーされていないか、このタスクに固有の情報についてのみ質問してください。

マインドセット

あなたが構築するすべてのWebサイトは、映画的な体験のように感じられる必要があります。Appleのプロダクトページ、Awwwards受賞サイト、高級ブランドのサイトを想像してください。シンプルなランディングページでも、次のものを備えている必要があります。

  • スクロールに応答する深みとレイヤー
  • 意図を持って出入りするテキスト
  • 映画的に移行するセクション
  • 空間に存在しているように感じられる要素

このスキルがアクティブなときは、フラットで静的なページを決して構築しないでください。


このスキルの仕組み

モード1:ゼロから構築

アセットと概要から新しく始める場合。以下の完全なワークフロー(ステップ1〜5)に従ってください。

モード2:既存サイトの強化

既存のページに2.5Dエフェクトを追加する場合。ステップ2にスキップし、現在の構造を分析し、深度の割り当てとアニメーションの機会を推奨します。

モード3:デバッグ/修正

パフォーマンスやアニメーションの問題をトラブルシューティングする場合。scripts/validate-layers.jsを使用し、GPUルールを確認し、reduced-motion処理を検証します。


ステップ1 — 概要の理解 + すべてのアセットの検査

コードを1行も書く前に、以下のすべてを順番に実行してください。

A. 概要を抽出する

  1. 製品/コンテンツは何ですか?(ブランドサイト、ポートフォリオ、SaaS、イベントなど)
  2. ムード/雰囲気は?(ダーク/シネマティック、明るい/エネルギッシュ、ミニマル/ラグジュアリーなど)
  3. セクションはいくつですか?(ヒーローのみ、全ページ、特定のセクション?)

B. アップロードされたすべての画像アセットを検査する

ユーザーが提供したすべての画像に対してscripts/inspect-assets.pyを実行します。

オプションのランタイム依存関係: pip install Pillow — 画像分析に必要ですが、--helpには必要ありません。 各画像について、以下を判断します。

  1. フォーマット — JPEGに実際のアルファチャンネルはありません。PNGには偽のアルファチャンネルがある場合があります。

  2. 背景ステータス — スクリプトの出力を使用します。次のことがわかります。

    • ✅ クリーンな切り抜き — 実際の透明度、直接使用可能
    • ⚠️ 無地の暗い背景
    • ⚠️ 無地の明るい/白い背景
    • ⚠️ 複雑な/シーンの背景
  3. 背景を実際に削除する必要があるかどうかを判断する — これは重要です。 背景を持つすべての画像がそれを削除する必要があるわけではありません。自問自答してください。

    背景を削除する必要がある場合(画像が以下の場合):

    • 孤立した製品(ボトル、靴、ガジェット、フルーツ、スタジオ背景上のオブジェクト)
    • シーン内で浮かぶことを意図したキャラクターや人物
    • 任意の背景に透明に配置されるロゴやアイコン
    • 浮遊アセットとしてdepth-2またはdepth-3に配置される要素

    背景を保持する必要がある場合(画像が以下の場合):

    • Webサイト、アプリ、またはUIのスクリーンショット
    • セクションの背景または全面画像として使用される写真
    • 完全な作品として見られることを意図したアートワーク、イラスト、またはポスター
    • モックアップ、デバイスフレーム、または「カード内の画像」
    • 背景がコンテンツの一部である画像
    • depth-0(背景レイヤー)に配置された写真 — それが目的なので保持します

    不明な場合は、デザインにおける画像の意図された役割を確認してください。他のコンテンツの上に自由に「浮かぶ」必要がある場合は背景を削除します。スペースを埋める、またはコンテンツそのものである場合は、保持します。

  4. すべての画像についてユーザーに通知する — 背景が問題ないかどうか。 references/asset-pipeline.mdのステップ4の正確な形式を使用してください。

  5. サイズと深度の割り当て — 各アセットが属する深度レベルを決定し、それに応じてサイズを変更します。構築する前に、決定事項をユーザーに伝えてください。

C. 構成的計画 — コードを書く前の視覚的階層

すべてのアセットを同じサイズとして扱わないでください。階層を確立します。

  • 1つのアセットがHERO — 最も画面スペースを占める(50〜80vw)、depth-3
  • コンパニオンはヒーローの表示サイズの15〜25% — depth-2、ヒーローの端に沿って配置
  • アクセント/パーティクルは非常に小さい(1〜5vw) — depth-5
  • 背景フィルはセクション全体を覆う — depth-0

calc()を使用して、コンパニオンをヒーローに対して相対的に配置します。 right: calc(50% - [hero-half-width] - [gap])で端に近づけます。

ヒーローがスクロールに応じて成長したり消失したりするとき、コンパニオンは外側に散らばる必要があります — 単にフェードアウトするだけではありません。これにより、それらがヒーローの周りを周回していたことが強調されます。

D. 各アセットのシネマティックロールを決定する

各画像について、「これはスクロールストーリーで何をするのか?」と自問してください。

  • ヒーローの横に浮かぶ → depth-2、float-loop、スクロールアウト時に拡散
  • ヒーローである → depth-3、弾性ドロップエントランス、スクラブ時に成長
  • DJIスケールイン中にセクションを埋める → depth-0またはフルセクション背景
  • コンテンツがスクロールして通過する間、サイドバーに存在する → スティッキーカラムジャーニー
  • セクションの端を飾る → depth-2、クリップパスバースリビール

ステップ2 — テクニックの選択(決定エンジン)

ユーザーの意図を適切なテクニックの組み合わせに一致させます。完全なテクニックの詳細はreferences/ファイルから読んでください。

プロジェクトタイプ別

ユーザーの発言主要パターンテキストテクニック特殊効果
製品発売/ブランドサイトセクション間フローティング製品+パースペクティブズーム分割収束+単語ライティングDJIスケールインピン
大きなタイトルのヒーロー6層パララックス+固定スティッキーオフセット斜め+マスクラインリビールブリードタイポグラフィ
映画的セクションカーテンパネルロールアップ+スクラブタイムライン劇的な入場+退場トップダウンクリップバース
Appleスタイルアニメーションスクラブタイムライン+クリップパスワイプ単語ごとのスクロールライティングキャラクターシリンダー
セクション間の要素フローティング製品+クリップパスバーススクランブルテキストウィンドウペーンアイリス
カード/機能セクションカスケーディングカードスタックスキュー+弾性バウンスセクションピール
ポートフォリオ/ショーケース水平スクロール+フリップモーフラインクリップワイプ斜めワイプ
SaaS/スタートアップウィンドウペーンアイリス+スタッガーグリッド可変フォントウェーブ曲線パストラベル

要求されたスクロール動作別

  • 「何かが変化している間、そのまま留まる」 → pin: true + スクラブタイムライン
  • 「セクションから浮かび上がる」 → セクション間フローティング製品 + クリップパスバース
  • 「上から生まれる」 → トップダウンクリップバース または カーテンパネルロールアップ
  • 「オーバーラップ/スタック」 → カスケーディングカードスタック または セクションピール
  • 「テキストが横から飛び込む」 → 分割収束 または オフセット斜めレイアウト
  • 「テキストが単語ごとに光る」 → 単語ごとのスクロールライティング
  • 「セクション全体が変形する」 → ウィンドウペーンアイリス + スクラブタイムライン
  • 「セクションが落下する」 → クリップパスinset(0 0 100% 0) → inset(0)
  • 「カーテンのように」 → カーテンパネルロールアップ
  • 「円が開く」 → サークルアイリス拡大
  • 「セクション間を移動する」 → GSAP Flipクロスセクション または 曲線パストラベル

ステップ3 — すべての要素をレイヤー化する

作成するすべての要素には、深度レベルを割り当てる必要があります。これは譲れません。

DEPTH 0 → 遠い背景     | parallax: 0.10x | blur: 8px  | scale: 0.70
DEPTH 1 → グロー/雰囲気    | parallax: 0.25x | blur: 4px  | scale: 0.85
DEPTH 2 → 中間装飾    | parallax: 0.50x | blur: 0px  | scale: 1.00
DEPTH 3 → メインオブジェクト       | parallax: 0.80x | blur: 0px  | scale: 1.05
DEPTH 4 → UI / テキスト          | parallax: 1.00x | blur: 0px  | scale: 1.00
DEPTH 5 → 前景FX      | parallax: 1.20x | blur: 0px  | scale: 1.10

HTML要素にdata-depth="3"として適用し、CSSクラス.depth-3と一致させます。

→ 完全な深度システムの詳細:references/depth-system.md


ステップ4 — アクセシビリティとパフォーマンスの適用(常に)

これらはすべての出力で必須です。

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
  • 以下のみアニメーション化:transform、opacity、filter、clip-path — width/height/top/leftは絶対に使用しない
  • アクティブにアニメーション化している要素にのみwill-change: transformを使用し、アニメーション後は削除する
  • オフスクリーンセクションにはcontent-visibility: autoを使用する
  • IntersectionObserverを使用して、ビューポート内の要素のみをアニメーション化する
  • モバイルを検出:window.matchMedia('(pointer: coarse)') — タッチデバイスではエフェクトを減らす

→ 完全な詳細:references/performance.mdとreferences/accessibility.md


ステップ5 — コード構造(常にこのHTMLアーキテクチャを使用)

<!-- セクションラッパー — すべてのセクションはこのパターンに従う -->
<section class="scene" data-scene="hero" style="--scene-height: 200vh">
  
  <!-- 深度レイヤー — 常に最低3層以上 -->
  <div class="layer depth-0" data-depth="0" aria-hidden="true">
    <!-- 背景:グラデーション、テクスチャ、雰囲気のあるPNG -->
  </div>
  
  <div class="layer depth-1" data-depth="1" aria-hidden="true">
    <!-- グローブロブ、光の効果、雰囲気のある霞 -->
  </div>
  
  <div class="layer depth-2" data-depth="2" aria-hidden="true">
    <!-- 中間装飾、浮遊シェイプ -->
  </div>
  
  <div class="layer depth-3" data-depth="3">
    <!-- メイン製品 / ヒーロー画像 — 主役 -->
    <img class="product-hero float-loop" src="product.png" alt="[description]" />
  </div>
  
  <div class="layer depth-4" data-depth="4">
    <!-- テキストコンテンツ — 見出し、本文、CTA -->
    <h1 class="split-text" data-animate="converge">Your Headline</h1>
  </div>
  
  <div class="layer depth-5" data-depth="5" aria-hidden="true">
    <!-- 前景パーティクル、スパークル、オーバーレイ -->
  </div>

</section>

→ 完全なボイラープレート:assets/hero-section.html → 完全なCSSシステム:assets/hero-section.css → 完全なJSエンジン:assets/hero-section.js


リファレンスファイル — 完全なテクニックの詳細についてはこれらを読んでください

ファイル内容いつ読むか
references/asset-pipeline.mdアセット検査、背景判断ルール、ユーザー通知形式、CSSノックアウト、サイズ変更ターゲット常に — 何かをコーディングする前に実行
references/depth-system.md6層深度モデル、CSS/JS実装、ブラー/スケール式すべてのプロジェクト — 常に読む
references/motion-system.md完全なGSAPコードを含む9つのスクロールアーキテクチャパターンスクロールインタラクションを構築するとき
references/text-animations.md完全な実装コードを含む13のテキストテクニックテキストをアニメーション化するとき
references/directional-reveals.md8つの「上/横から生まれる」クリップパステクニックセクションに方向性のあるエントリが必要なとき
references/inter-section-effects.mdフローティング製品、GSAP Flip、クロスセクショントラベル製品/要素がセクション全体にわたって持続するとき
references/performance.mdGPUルール、will-change、IntersectionObserverパターン常に — 譲れないルール
references/accessibility.mdWCAG 2.1 AA、prefers-reduced-motion、ARIA常に — 譲れない
references/examples.md5つの完全な実世界の実装ユーザーが全ページサイトを必要とするとき

プロアクティブトリガー

コンテキストで気づいたときに、質問されずにこれらの問題を表面化させてください。

  • ユーザーがJPEG製品画像をアップロードした → JPEGは透明度を持てないことをフラグし、アセットインスペクターの実行を提案する
  • すべてのアセットが同じサイズである → 構成階層の問題をフラグし、ヒーロー+コンパニオンのサイズ設定を推奨する
  • 深度の割り当てが言及されていない → すべての要素に深度レベル(0-5)が必要であることを思い出させる
  • ユーザーが「スムーズなアニメーション」を要求しているが、reduced-motion処理がない → アクセシビリティ要件をフラグする
  • パララックスが要求されているが、パフォーマンス最適化がない → will-changeとGPUアクセラレーションルールをフラグする
  • 80を超えるアニメーション要素がある → パフォーマンスの問題をフラグし、削減またはレイジーロードを推奨する

出力アーティファクト

次のように依頼すると...次のものが得られます...
「ヒーローセクションを構築して」インラインCSS/JS、6深度レイヤー、アセット監査、テクニックリストを含む単一のHTMLファイル
「映画的に感じさせて」GSAPセットアップを使用したスクラブタイムライン + パララックス + テキストアニメーションの組み合わせ
「画像を検査して」背景ステータス、深度割り当て、サイズ変更の推奨事項を含むアセット監査レポート
「Appleスタイルのスクロール効果」単語ごとのライティング + 固定セクション + パースペクティブズームの実装
「パフォーマンスの問題を修正して」GPU最適化チェックリストとwill-change監査を含む検証レポート

コミュニケーション

すべての出力は、構造化されたコミュニケーション標準に従います。

  • 最初に結論 — コードを生成する前に、アセット監査と深度計画を表示する
  • What + Why + How — すべてのテクニックの選択を説明(なぜこのアニメーションがこの雰囲気に適しているのか)
  • アクションには所有者がいる — 「透過PNGを提供する必要があります」であり、「PNGを提供する必要がある」ではない
  • 信頼度タグ付け — 🟢 検証済みテクニック / 🟡 実験的 / 🔴 ブラウザサポートが限定的

クイックルール(譲れない)

0a. ✅ コーディング前に常にアセット検査を実行 — すべての画像のフォーマット、背景、サイズを確認する。構築前に深度の割り当てをユーザーに伝える。 0b. ✅ 背景を削除する必要があるかどうかを常に判断する — すべての画像に必要なわけではない。各アセットのステータスをユーザーに通知し、背景を問題として扱う前に確認を得る。自動削除も、黙って無視もしない。

  1. ✅ すべてのセクションには最低3つの深度レイヤーがある
  2. ✅ すべてのテキスト要素は少なくとも1つのアニメーションテクニックを使用する
  3. ✅ すべてのプロジェクトには**prefers-reduced-motion**フォールバックが含まれる
  4. ✅ GPUセーフなプロパティのみをアニメーション化する:transform、opacity、filter、clip-path
  5. ✅ 製品画像はデフォルトでdepth-3に割り当てられる
  6. ✅ 背景画像は常にdepth-0で、わずかにぼかしを入れる
  7. ✅ すべての「ヒーロー」要素にフロートループ(6~14秒、決して完全に静止しない)
  8. ✅ すべての装飾要素にはaria-hidden="true"を付ける
  9. ✅ モバイルではpointer: coarse検出を介してエフェクトを低減する
  10. ✅ アニメーション完了後にwill-changeを削除する

出力形式

常に以下を提供します。

  1. 単一の自己完結型HTMLファイル(インラインCSS + JS)。ただし、ユーザーが個別のファイルを要求した場合を除く。
  2. CDNインポート:GSAPはjsDelivr経由。

…

[翻訳のために切り詰められています]

関連スキル