Communitygithub.com

インタラクティブサイトアーキテクチャ

サーバーファーストのNext.jsサイトを計画、構築、監査、進化させるためのスキルです。マーケティング、ブランド、製品、ローンチ、エディトリアル、ポートフォリオ、コミュニティ、カンファレンス、没入型ショーケースなど、多様なコンテンツリッチなサイトに対応します。

インタラクティブサイトアーキテクチャ とは?

このスキルは、コンテンツとインタラクションの品質が重視される公開向けNext.jsサイトを構築するための包括的なアーキテクチャを提供します。サーバーレンダリング、最小限のクライアントアイランド、型安全なデータ契約、共有デザイントークン、ネイティブブラウザ動作、SEO/アクセシビリティを核とし、必要に応じてCMS、EC、ポートフォリオなどのモジュールを選択的に追加します。非交渉の不変条件として、Server Componentsを優先、`use client`は最小限のリーフに限定、TypeScript契約を真実の源泉とするなど、堅牢な設計原則を徹底します。主な対象プラットフォームはNext.js App Router (Node 26 LTS, pnpm) で、Tailwind CSS 4、Motion、Zod、Vercel、Stripeなどの検証済みスタックをデフォルトで使用します。ビルド中はアーキテクチャドキュメント、依存関係マトリックス、品質ゲートなどの参照資料に従い、構造監査スクリプトで依存関係、ルート構造、クライアント/サーバー境界、アクセシビリティなどを自動チェックします。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/z0rgoyok/interactive-site-architecture/tree/HEAD

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

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

ドキュメント

インタラクティブサイトアーキテクチャ は何をしますか?

成果物

コンテンツ、ナラティブ、ビジュアルアイデンティティ、およびインタラクションの品質が重視される、プロダクション向け公開Next.jsサイトを作成します。これはコンテンツ主導のサイトのための汎用アーキテクチャです:ブランド・マーケティングサイト、SaaS・プロダクトサイト、ランディングページ、エディトリアルプロパティ、ポートフォリオ、コミュニティ、カンファレンス、ドキュメントサイト、没入型ショーケースなどに対応します。

コアは固定です:

  • サーバーレンダリングされたコンテンツ;
  • 狭いクライアントアイランド;
  • 検証済みのコンテンツ契約;
  • 共有デザイン・モーショントークン;
  • ネイティブブラウザ動作;
  • サーバーレスポンス内のSEOとアクセシビリティ;
  • ルートスコープのパフォーマンス予算。

製品が必要とするモジュールを選択します:

モジュール使用する場面
コンテンツ収集と詳細サイトにプロジェクト、記事、製品、人物、イベントなどのレコードがある場合
ポートフォリオまたはケーススタディ組織が実績による証明を必要とする場合
没入型アーカイブビジュアル探索が主要なプロダクトサーフェスである場合
ストアサイトがデジタル製品または物理製品を販売する場合
CMSアダプター編集者がリリースとは独立して公開する必要がある場合
お問い合わせフォームメールリンクやカレンダーだけでは不十分な場合

必要なモジュールを必要としないサイトに強制しないでください。

典型的なプロファイルは同じコアを再利用します:

  • SaaSまたはプロダクト:ランディング、オファー、機能、コンテンツ収集、ドキュメントまたはチェンジログ。
  • ブランドまたはローンチ:キャンペーンナラティブ、製品発表、ウェイトリスト、社会的証明。
  • エディトリアル:コレクションインデックス、記事詳細、著者、トピック、検索。
  • コミュニティまたはカンファレンス:スピーカー、スケジュール、セッション、会場、チケット。
  • ポートフォリオ:プロジェクトインデックス、ケース詳細、ビジュアルアーカイブ、お問い合わせ。
  • コマース:カタログ、製品詳細、チェックアウト、ダウンロードまたはフルフィルメント。

行動前の確認

再利用可能なテンプレートは assets/templates/ にあります。選択したアーキテクチャに一致する場合のみ、それらから開始してください。すべてのテンプレートを盲目的にコピーしないでください。

非交渉の不変条件

  1. デフォルトではページ構成とプライマリコンテンツをServer Componentsに保持します。
  2. use client は最も小さな実行可能なリーフに配置します。可能な場合は、クライアントラッパーを介してサーバーレンダリングされた子をアニメーション化します。
  3. TypeScriptデータ契約を、すべてのコンテンツエンティティ、メタデータレコード、ギャラリー、サイトマップエントリの真実の源泉として扱います。
  4. すべてのオーバーレイインタラクションに、クライアント状態、JavaScript、またはハッシュなしで動作する実際のルートを提供します。
  5. ネイティブHTML動作を優先します:リンク、ボタン、フォーム、<dialog>、フォーカス管理、ブラウザ履歴。
  6. シークレットはサーバー専用モジュールに保持します。NEXT_PUBLIC_* を使用できるのは公開識別子のみです。
  7. コマースが存在する場合、価格、権利決定、支払い確認、保護されたダウンロードをサーバーに保持します。
  8. prefers-reduced-motion、キーボードナビゲーション、可視フォーカス、セマンティック見出し、およびスクリプトなしでの可読性を尊重します。
  9. あるルートのコンテンツを別のルートの初期クライアントバンドルに含めないようにします。クライアントシェルがカウントやラベルを必要とする場合、サーバーから小さなサマリーを渡します。
  10. 薄いルートアダプター、所有するフィーチャーモジュール、明示的なポート、および単一の構成境界を持つモジュラーモノリスを使用します。
  11. 安定した依存関係を優先します。未検証のReactビルドで新しいプロダクションアプリを開始しないでください。

デフォルトスタック

サイトに文書化された理由がない限り、依存関係マトリックスで検証された正確なバージョンを使用します。

  • Node 26 LTSファミリーとpnpm。
  • Next.js App Router、React、React DOM、TypeScript。
  • Tailwind CSS 4(トークン、リセット、ユーティリティレイアウト用)。
  • CSS Modules(ルートまたはコンポーネント固有のコンポジション用)。
  • Motion for React(オーケストレーションとジェスチャー用)。
  • ネイティブdialog、Canvas、SVG、CSS、Web Animations API(それらで十分なインタラクション用)。
  • Lucideアイコン(個別にインポート)。
  • Zod(コンテンツと外部入力の境界用)。
  • Vercel(デプロイ、分析、画像配信用)。
  • Stripe Embedded Checkoutとサーバーアクション(コマースが必要な場合)。

作業順序

  1. 公開サーフェスを棚卸しします:ランディングページ、コンテンツインデックス、詳細ルート、コンバージョンパス、法務ルート、検索、アーカイブ、コマース。
  2. 実装前にルートマニフェストとクライアント境界マップを確定します。
  3. ファイルを作成する前に、機能所有者、ポート、ルートアダプター、外部アダプターを割り当てます。
  4. セクションを構築する前に、コンテンツエンティティと必要なメディアをモデル化します。
  5. グローバルトークン、タイポグラフィ、スペーシング、状態、モーション削減動作、画像規約を確立します。
  6. サーバーシェル、ナビゲーション、ルートフォールバック、SEOメタデータを構築します。
  7. クライアントアイランドを一度に1つ追加します。それぞれがクライアントサイドでなければならない理由を記録します。
  8. ネイティブダイアログとURL状態を使用してオーバーレイを構築します。同時に正規のページルートを追加します。
  9. 複雑なビジュアルは、そのデータ、フォールバック、モーション削減動作、パフォーマンス境界が定義された後に追加します。
  10. CMS、コマース、アカウント、または永続化は、運用モデルがそれらを必要とする場合にのみ追加します。
  11. アーキテクチャ境界チェック、構造監査、フォーカステスト、品質ゲート、プロダクションプレビュー承認を実行します。
  12. 実装された動作、検証されたエビデンス、および未検証の制限事項を別々に報告します。

決定ルール

  • ホバー、フォーカス、プレス、表示、マーキー、および単純な状態変更にはCSSトランジションを使用します。
  • 調整されたバリアント、レイアウトトランジション、ドラッグ、プレゼンス、およびスクロールリンクオーケストレーションにはMotionを使用します。
  • CanvasまたはWebGLは、DOM、SVG、CSSで視覚を確実に表現できない場合にのみ使用します。表示一時停止、DPR制限、クリーンアップ、モーション削減動作、静的フォールバックを追加します。
  • コンテンツコレクションはサーバーレンダリングに保ちます。カウント、ラベル、または選択されたレコードのみをクライアントオーバーレイシェルに送信します。
  • プレビューやシートには、同じコンテンツに正規ページがある場合はネイティブ<dialog>を使用します。深く、長く、または独立してリンクされたコンテンツには専用ルートを使用します。
  • アプリとともにリリースする小規模チームには、検証済みコードコンテンツを使用します。編集者が独立した公開を必要とする場合は、リポジトリアダプターの背後にCMSを導入します。
  • ストアが即時購入とダウンロードのみを必要とする場合は、ステートレスなStripeセッションを使用します。製品が権利、返金、アカウント、注文履歴、またはリトライを必要とする場合は、データベースと検証されたウェブフックを追加します。
  • Radix、shadcn、またはその他のコンポーネントライブラリは、それが所有するプリミティブを特定した後にのみ追加します。ネイティブ要素とサイト所有のプリミティブがベースラインです。
  • ポートフォリオ、アーカイブ、ストアはモジュールとして扱います。これらはコアのコンテンツ、ルート、スタイル、モーション、セキュリティ契約を再利用します。

必要なビルドアーティファクト

以下のサイトレベルアーティファクトを作成し維持します:

  • docs/architecture.md:ルートマップ、クライアント境界、コンテンツ所有権、外部サービス、パフォーマンス予算。
  • src/features/*/domain および src/features/*/application:検証済み契約と機能。
  • src/platform/*:外部アダプターとサーバー専用コンポジションルート。
  • src/shared/*:実績のあるクロスフィーチャー契約とデザインプリミティブ。
  • src/components/*:明示的な名前を持つサーバーコンポジションとクライアントアイランド。
  • src/app/*:ページ、レイアウト、メタデータ、サイトマップ、robots、ルートハンドラー。
  • .env.example:名前と目的、実際のシークレットは決して含めません。
  • コンテンツ検証、クライアント状態マシン、サーバーアクション、重要なブラウザジャーニーに対するテスト。
  • プレビュー、ブラウザ、アクセシビリティ、パフォーマンス、SEO、および条件付きコマースのエビデンスを含むリリースチェックリスト。

構造監査

スキャフォールディング後およびリリース前に、アーキテクチャ境界チェックとバンドル監査を実行します:

pnpm arch:check
node scripts/audit_site.mjs --root /path/to/app

警告が失敗とみなされる場合は、CIで --strict を使用します。このスクリプトは、依存関係の存在、ルートとコンテンツ構造、クライアント/サーバーシークレットの危険性、ダイアログとモーションの保護、テスト、SEOファイル、ソースマップの公開をチェックします。これはテストを補完するものであり、置き換えるものではありません。

完了契約

以下の条件をすべて満たした場合にのみ、ビルドは完了とみなされます:

  • ルートと境界マップが実装と一致していること;
  • 依存関係グラフに循環がなく、arch:check が成功すること;
  • ルートがフィーチャーの公開APIを使用し、コンポジションルートが配線を所有していること;
  • アプリがカナリアまたはピア依存関係の驚きなしにビルドされること;
  • 重要なコンテンツがサーバーHTMLに表示されること;
  • オーバーレイ、メニュー、キーボードパスが機能し、フォーカスを復元すること;
  • モーション削減とスクリプトなしのフォールバックが検証されていること;
  • メタデータ、サイトマップ、robots、正規URL、ソーシャル画像が存在すること;
  • 初期ルートJSと画像ペイロードが文書化された予算内に収まること;
  • コマースが存在する場合、サーバー所有の価格、サーバー側確認、保護されたダウンロードが使用されていること;
  • プレビューとプロダクションのエビデンスが別々に記録されていること。

関連スキル