Communityコーディング&開発github.com

Web Craft アーキテクチャ

Reactウェブアプリケーション(Next.js App Router または React + Vite)のアーキテクチャと統合ルール:サーバー/クライアントコンポーネントの境界、型付きエラーモデルを持つ単一API層、状態の所有権、react-hook-form + Zod を用いたサーバーエラーのフィールドマッピング、ローディング・エラー・Suspense境界、i18nアーキテクチャ(ロケールレジストリ、解決順、URLポリシー、リクエストスコープのロケール、カタログ、キット・日付ロケール)、論理プロパティを用いたRTL、認証、XSS、CSRF、シークレットとキャッシュの分離。

Web Craft アーキテクチャ とは?

このスキルは、Reactベースのウェブアプリケーション(Next.js App Router または React + Vite)における堅牢なアーキテクチャパターンと統合ルールを定義します。15以上のトピックにわたる詳細なリファレンスが用意されており、サーバー/クライアントコンポーネントの適切な境界設定、単一のAPIレイヤーと型付きエラーモデル、react-hook-form + Zodによるフォーム管理、ローディング・エラー・NotFound境界、i18n(国際化)、RTL(右書き言語)、認証・セキュリティ、テーマ、SEO、GEOなどの設計判断を一貫して行えるようにします。主要なフレームワークアダプター(Next.js、Vite)とUIキットアダプター(shadcn/ui、Ant Design、Material UI)も含まれており、プロジェクトの選択に応じて必要なリファレンスのみをロードできます。すべてのルールは、セキュリティをサーバーサイドに集中させ、キャッシュの分離、クライアントへのシークレット漏洩防止、ロケールやユーザーに依存するレンダリングの正確性を保証します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hasaneks/web-craft/tree/HEAD/skills/web-craft-arch

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

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

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

ドキュメント

Webアプリケーションアーキテクチャ

最初に web-craft を読んでください。タスクに必要な参照のみをロードしてください。キットとフレームワークのアダプターは、選択したキットとフレームワークのものだけをロードします。

マップ

トピック参照先
サーバーコンポーネント vs クライアントコンポーネント、BFF、環境変数とシークレットの境界references/server-client.md
APIレイヤー、エラーモデル、状態の所有権、フォーム、楽観的UI、URL状態references/data-forms.md
ローディング、エラー、not-found境界、リトライ、オフライン、スケルトンのタイミングreferences/states.md
i18n: レジストリ、解決、URL、カタログ、フォーマット、バックエンドヘッダーreferences/i18n.md
RTL、論理プロパティ、方向性アイコン、ポータルreferences/rtl.md
認証、認可、XSS、CSRF、クッキー、キャッシュの分離、個人データreferences/auth-security.md
テーマ: ユーザー設定 vs 適用テーマ、システム変更、フラッシュ防止references/theming.md
公開ページのSEOreferences/seo.md
GEO: AI検索・アシスタントでの可視性references/geo.md
Next.js App Router アダプターreferences/fw-next.md
React + Vite アダプターreferences/fw-vite.md
shadcn/ui アダプターreferences/kit-shadcn.md
Ant Design アダプターreferences/kit-antd.md
Material UI アダプターreferences/kit-mui.md
node-craft(または任意のOpenAPI)バックエンドとの連携references/node-craft-contract.md
公式ソースとレビュー日references/sources.md

すべてに適用されるルール

  1. 必要性に基づく境界。 コンポーネントは、インタラクティブ性、ブラウザAPI、またはクライアント状態を必要とするからクライアントコンポーネントになるのであって、デフォルトでそうなるわけではありません。インタラクティブなアイランドは小さく保ちます。サーバー専用コード、ORMクライアント、またはシークレットをクライアントコードにインポートしないでください。公開環境変数はシークレットではありません。
  2. 単一のAPIレイヤー。 1つのfetchクライアント、安定したコードとステータスでキー指定される1つの型付きエラーモデル、1つの認証動作。機能が独自のfetchやリトライを構築することはありません。サーバーデータはクエリ/キャッシュレイヤーに、グローバルクライアント状態は小さなストアまたはコンテキストに、フォーム状態はフォームツールに、ローカルUI状態はコンポーネントに保持します。モックソースは設定によって開発とテストのために切り替えられ、機能を編集して切り替えることはありません。信頼できないレスポンスは実行時にパースされます。
  3. フォーム。 プロジェクトに別のツールがない限り、react-hook-form + Zod。mode: 'onTouched'、reValidateMode: 'onChange'、最初のエラーへのフォーカスとスクロール、setError によるサーバーフィールドエラー、エラー後も値は保持、二重送信はブロック。サーバーがバリデーションの権威であり続けます。
  4. 状態には境界があります。 ルートレベルのローディングとエラー境界、加えてデータがストリームされる場所にはローカルのSuspense。1つのウィジェットが失敗してもページ全体が空白になることはありません。
  5. i18nはアーキテクチャです。 本物のエンジン、ロケールレジストリ(BCP 47タグ、方向、カタログ、表示名)、特に指定がない限り英語フォールバック、サーバー上のリクエストスコープのロケール、サーバーとクライアントで同じ初期ロケール、ロケールと名前空間ごとにロードされるカタログ、アプリケーションロケールからマッピングされるキットと日付ロケール。
  6. セキュリティはサーバーサイド。 バックエンドでの認可。レンダリングするHTMLはすべてサニタイズします。クッキーセッションにはCSRF保護が必要です。個人を特定できるレスポンスは共有キャッシュに決して入れません。ロケールやユーザーに依存するレスポンスはキャッシュキーを変化させます。
  7. 公開ページは見つけやすい。 サーバーでレンダリングされるロケール正しいメタデータ、言語ごとの正規URL、実際の対応ページのみに対するhreflang代替、サイトマップ、表示されるコンテンツと一致する構造化データ。GEOはここから始まります:インデックス可能で引用可能なコンテンツと明示的なAIクローラーポリシー。ランキングや引用の保証はありません。
  8. キットはラップされるのではなく、適用されます。 テーマとトークンはプロダクトのデザイン決定から来ます。キットコンポーネントをラップするのは、繰り返されるプロダクトの振る舞いのため、またはAPIをピン留めするためだけです。キット独自のトランジションの上に、別のアニメーションシステムを積み重ねないでください。

完了条件

web-craft を適用 → 完了。加えて:クライアントバンドルにシークレットやサーバー専用モジュールが含まれていないこと;異なるロケールまたは異なるユーザーによる2つの同時リクエストがデータを混在させないこと;最初のレンダリングが正しい言語とテーマで行われること;主張されているすべてのキット/フレームワークの組み合わせが実際にチェックされたこと。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

関連スキル