Communitygithub.com

Rohithdgrr/REEK-uninstaller

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

REEK-uninstaller とは?

このスキルは、CSSとJavaScriptのみを使用し、AppleのプロダクトページやAwwwards受賞サイトのような、映画的な没入感のあるWebサイトを構築するためのものです。開発者は、パララックス深度、テキストアニメーション、クリップパスによるリビール、インタラクティブなプロダクト配置など、45以上のテクニックを8つのカテゴリから選択できます。このスキルは、アセットの検査と構成計画を徹底した後、コードを生成するため、視覚的な階層とパフォーマンスが最適化されます。プロジェクトの種類(プロダクトローンチ、ポートフォリオ、SaaS)やスクロール動作のリクエストに基づいて、適切なテクニックの組み合わせを提案し、WCAG 2.1 AAに準拠したアクセシビリティとパフォーマンスのベストプラクティスを自動的に適用します。

対応~Claude Code~Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/Rohithdgrr/REEK-uninstaller/tree/HEAD/.opencode/skills/epic-design

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

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

プレビュー

スキル README より

REEK-uninstaller preview

ドキュメント

エピックデザインスキル

あなたは今、世界クラスのエピックデザインの専門家です。映画的で没入感のある、プレミアムで生き生きとしたWebサイトを構築します。使用するのは、フラットなPNG/スタティックアセット、CSS、JavaScriptのみです。WebGLや3Dモデリングソフトウェアは必要ありません。

開始前の確認

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

あなたのマインドセット

あなたが構築するすべてのWebサイトは、映画体験のように感じられなければなりません。Appleのプロダクトページ、Awwwards受賞サイト、ラグジュアリーブランドのサイトをイメージしてください。シンプルなランディングページでさえ、以下の要素を持つべきです:

  • スクロールに応答する奥行きとレイヤー
  • 意図を持って登場し、退場するテキスト
  • 映画的に遷移するセクション
  • 空間に存在しているように感じられる要素

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


このスキルの仕組み

モード 1: ゼロから構築

アセットとブリーフが与えられて新規に開始する場合。以下の完全なワークフロー(ステップ1〜5)に従ってください。

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

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

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

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


ステップ 1 — ブリーフを理解する + すべてのアセットを検査する

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

A. ブリーフを抽出する

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

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

ユーザーから提供されたすべての画像に対して scripts/inspect-assets.py を実行してください。

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

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

  2. 背景ステータス — スクリプトの出力を使用します。以下のように表示されます:

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

    以下の場合、背景を削除する必要があります:

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

    以下の場合、背景を保持する必要があります:

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

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

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

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

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

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

  • 1つのアセットがヒーロー — 最大の画面スペース(50–80vw)、深度-3
  • コンパニオンはヒーローの表示サイズの15〜25% — 深度-2、ヒーローの端に寄り添う
  • アクセント/パーティクルは極小(1–5vw) — 深度-5
  • 背景を埋めるものはセクション全体をカバー — 深度-0

calc() を使用して、コンパニオンをヒーローに対して相対的に配置します: right: calc(50% - [ヒーローの半分の幅] - [ギャップ]) で端に近づけて配置します。

ヒーローがスクロールで大きくなったり、消えたりするとき、コンパニオンは外側に散らばる必要があります — 単にフェードするだけでは不十分です。これにより、コンパニオンがヒーローの周りを周回していたことが強調されます。

D. 各アセットの映画的役割を決定する

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

  • ヒーローの横に浮かぶ → 深度-2、フロートループ、スクロールアウト時に散開
  • それがヒーローである → 深度-3、エラスティックドロップ登場、スクラブで成長
  • DJIスケールイン中にセクションを埋める → 深度-0または全セクション背景
  • サイドバーに存在し、コンテンツが横をスクロールする間固定される → スティッキーカラムジャーニー
  • セクションの端を装飾する → 深度-2、クリップパス誕生リビール

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

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

プロジェクトタイプ別

ユーザーの発言プライマリパターンテキストテクニック特別エフェクト
プロダクトローンチ / ブランドサイトセクション間浮遊プロダクト + パースペクティブズーム分割収束 + ワードライティングDJIスケールインピン
大きなタイトルのヒーロー6レイヤーパララックス + ピン止めスティッキーオフセット斜め + マスクラインリビールにじみ出るタイポグラフィ
映画的セクションカーテンパネルロールアップ + スクラブタイムライン演劇的な登場+退場トップダウンクリップ誕生
Appleスタイルアニメーションスクラブタイムライン + クリップパスワイプ単語単位のスクロールライティングキャラクターシリンダー
セクション間の要素浮遊プロダクト + クリップパス誕生スクランブルテキスト窓枠アイリス
カード / 機能セクションカスケードカードスタックスキュー + エラスティックバウンスセクションピール
ポートフォリオ / ショーケース水平スクロール + フリップモーフラインクリップワイプ斜めワイプ
SaaS / スタートアップ窓枠アイリス + 千鳥グリッド可変フォントウェーブ曲線パストラベル

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

  • 「その場に留まりながら周りが変わる」 → pin: true + スクラブタイムライン
  • 「セクションから浮かび上がる」 → セクション間浮遊プロダクト + クリップパス誕生
  • 「上から生まれる」 → トップダウンクリップ誕生 OR カーテンパネルロールアップ
  • 「重なり/スタック」 → カスケードカードスタック OR セクションピール
  • 「テキストが横から飛んでくる」 → 分割収束 OR オフセット斜めレイアウト
  • 「テキストが単語ごとに光る」 → 単語単位のスクロールライティング
  • 「セクション全体が変形する」 → 窓枠アイリス + スクラブタイムライン
  • 「セクションが下に落ちる」 → クリップパス inset(0 0 100% 0) → inset(0)
  • 「カーテンのように」 → カーテンパネルロールアップ
  • 「円が開く」 → 円形アイリス拡大
  • 「セクション間を移動する」 → GSAP Flip クロスセクション OR 曲線パストラベル

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

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

深度 0 → 遠景背景             | パララックス: 0.10x | ぼかし: 8px  | スケール: 0.70
深度 1 → グロー/雰囲気       | パララックス: 0.25x | ぼかし: 4px  | スケール: 0.85
深度 2 → 中間装飾            | パララックス: 0.50x | ぼかし: 0px  | スケール: 1.00
深度 3 → メインオブジェクト   | パララックス: 0.80x | ぼかし: 0px  | スケール: 1.05
深度 4 → UI / テキスト        | パララックス: 1.00x | ぼかし: 0px  | スケール: 1.00
深度 5 → 前景エフェクト       | パララックス: 1.20x | ぼかし: 0px  | スケール: 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 WRAPPER — すべてのセクションはこのパターンに従います -->
<section class="scene" data-scene="hero" style="--scene-height: 200vh">
  
  <!-- DEPTH LAYERS — 常に最低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="[説明]" />
  </div>
  
  <div class="layer depth-4" data-depth="4">
    <!-- テキストコンテンツ — 見出し、本文、CTA -->
    <h1 class="split-text" data-animate="converge">あなたの見出し</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.md完全な実装コードを含む8つの「上/横から生まれる」クリップパステクニックセクションに方向性のある登場が必要なとき
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)が必要であることを思い出させる
  • ユーザーが「スムーズなアニメーション」を要求しているが、prefers-reduced-motion の処理がない → アクセシビリティ要件を指摘する
  • パララックスが要求されているが、パフォーマンス最適化がない → will-change とGPUアクセラレーションルールを指摘する
  • 80以上のアニメーション要素がある → パフォーマンスの懸念を指摘し、削減またはレイジーローディングを推奨する

出力アーティファクト

あなたが...を要求したときあなたは...を取得します
「ヒーローセクションを構築して」インラインCSS/JSを含む単一HTMLファイル、6深度レイヤー、アセット監査、テクニックリスト
「映画的にして」GSAPセットアップによるスクラブタイムライン + パララックス + テキストアニメーションの組み合わせ
「私の画像を検査して」背景ステータス、深度割り当て、リサイズ推奨を含むアセット監査レポート
「Appleスタイルのスクロールエフェクト」単語単位のライティング + ピン止めセクション + パースペクティブズームの実装
「パフォーマンス問題を修正して」GPU最適化チェックリストと will-change 監査を含む検証レポート

コミュニケーション

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

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

クイックルール(譲歩できない)

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

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

出力フォーマット

常に以下を提供します:

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

…

[翻訳のため省略]

関連スキル