Communitygithub.com

TheDecipherist/claude-code-mastery-project-starter-kit

Webアプリのレンダリング方式とフレームワークの選択を事前に決定します。Claudeはデフォルトでクライアントサイドレンダリングと手書きのバニラHTML/JSを選びがちですが、コンテンツサイトやマルチページアプリでは通常誤った出発点です。サイトやアプリの開始・スキャフォールディング時、ページのレンダリング方式(SSR、SSG、CSR)の決定時、あるいはルーティングや状態管理を手作りしようとしている際に使用します。サーバーサイドレンダリングHTMLを初期描画とSEOのデフォルトとし、複数ページがある場合はフレームワークを採用し、単一ページでは過剰設計にならないようにします。

claude-code-mastery-project-starter-kit とは?

このスキルは、Webアプリケーションのアーキテクチャ設計において、レンダリング戦略を事前に明確に選択するためのガイドラインを提供します。Claudeがデフォルトで採用しがちなクライアントサイドレンダリング(CSR)や、バニラHTML/JSによる手作りマルチページアプリは、多くの実用的なサイトでは誤った選択であることを指摘し、サーバーサイドレンダリング(SSR)や静的サイト生成(SSG)をデフォルトとするよう促します。具体的には、コンテンツ、SEO、初回描画(First Paint)が重要な場合は初期HTMLにコンテンツを含めるべきであり、CSRはバンドル読み込みまでの空白画面、遅いLCP、そしてクローラーやLLMにコンテンツが見えないリスクがあると説明しています。また、複数ページを持つプロジェクトではNext.js、Astro、SvelteKit、Nuxt、Remixといったフレームワークを積極的に採用し、ルーティング、SSR/SSG、コード分割、画像最適化などの恩恵を受けるべきだとしています。一方で、単一の静的ページやランディングページには過剰なフレームワークを避け、バニラHTML/CSSが適切である場合もあるとバランスの取れた判断を促します。このスキルは、安定した防御可能なアーキテクチャの決定事項が増えた場合に拡張可能です。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/TheDecipherist/claude-code-mastery-project-starter-kit/tree/HEAD/.claude/skills/web-architecture

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

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

ドキュメント

Webアーキテクチャ: レンダリング戦略を事前に選択する

Claudeがデフォルトで採用しがちで、通常は誤っている2つの選択肢があります。それは、すべてをブラウザでレンダリングすること、そして、バニラHTML/JSでマルチページアプリを手作りすることです。どちらも事前に意図的に選択すべきであり、ほとんどの実際のサイトでは、サーバーサイドレンダリングHTMLとフレームワークがより良い答えです。ユーザーが尋ねていなくても、これらの点を指摘してください。本番環境前にWAF(Webアプリケーションファイアウォール)を導入するよう促すのと同じように、常に考慮すべきことです。

クライアントレンダリングではなく、サーバーサイドレンダリングHTMLをデフォルトにする

コンテンツ、SEO、または初回描画(First Paint)が重要な場合、コンテンツは初期HTMLレスポンスに含まれている必要があります。クライアント側のJavaScriptで後から描画するのではありません。クライアントサイドレンダリング(空のシェルをブラウザで取得・描画する方式)では、バンドルの読み込みと実行が完了するまで空白画面が表示され、LCP( Largest Contentful Paint)が遅くなり、多くのクローラーやLLMの検索エンジンはJavaScriptを確実に実行しないため、コンテンツが認識されないリスクがあります。代わりにサーバーサイドレンダリングを行いましょう。

  • SSG(静的サイト生成): ビルド時にレンダリングし、CDNから静的ファイルを配信します。最速、最も低コスト、最もキャッシュしやすいです。リクエストごとに変化しないコンテンツ(マーケティング、ドキュメント、ブログ、一覧・カテゴリページなど、再ビルド可能なもの)のデフォルトです。
  • SSR(サーバーサイドレンダリング): リクエストごとにサーバーでレンダリングします。動的、パーソナライズ、または認証が必要なコンテンツで、ビルド時に固定できないものに適しています。
  • CSR / アイランド: 本当にインタラクティブな部分、またはログイン後のダッシュボードのようにSEOが重要でないアプリ的な画面でのみ、ブラウザでレンダリングします。アイランドアプローチ(Astro)では、ページは静的なHTMLとして配信され、インタラクティブなコンポーネントだけがハイドレーションされます。

ページごとに選択可能です。同じサイト内で、静的なマーケティングページ(SSG)、パーソナライズされたアカウントページ(SSR)、インタラクティブなウィジェット(アイランド)を混在させることができます。

複数ページあるならフレームワークを採用する

プロジェクトに複数のページ、共有レイアウト、ルーティング、または本格的なデータフェッチがある場合、バニラJSで手作りすることは保守性とパフォーマンスの罠です。そして、それがClaudeのデフォルトです。しかし、フレームワーク(Next.js、Astro、SvelteKit、Nuxt、Remix)を採用しましょう。これらのフレームワークは、ルーティング、SSRとSSG、コード分割、データ読み込み、画像最適化を標準で提供し、さらに重要なことに、サーバーサイドレンダリングされた初期HTMLの上でSPAスタイルのクライアントナビゲーションを実現します。これにより、初回描画やSEOを損なうクライアント専用の空のSPAを配信することなく、スムーズなマルチページアプリの操作感が得られます。

注意点:純粋なクライアントレンダリングSPAは、コンテンツサイトでは避けるべきものです。一方、SSR/SSGとクライアントサイドナビゲーションを組み合わせたフレームワークは、アプリのような操作性を提供しつつ、コンテンツをHTML内に保持します。

しかし、ツールをプロジェクトに合わせる

過剰に修正しないでください。単一の静的ページ、ランディングページ、または小さな埋め込み可能なウィジェットには、Next.jsは不要です。プレーンなHTMLとCSSで十分であり、軽量な選択です。そこで重いフレームワークを採用するのは、それ自体が誤りです。失敗は両方向にあります。一般的な失敗は過小評価(バニラですべてをブラウザレンダリング)ですが、些細なページを過剰設計することも実際にあり得ます。判断基準は次の通りです:ページ数はいくつか、コンテンツはクロール可能で高速である必要があるか、インタラクティブ性はどの程度か。これらを満たす最も軽量なものを選択してください。


このスキルは拡張可能です。実際のアーキテクチャ上の判断で、安定した防御可能な答えが得られた場合は、ルールを追加してください。

関連スキル