mcpField
O
opinionated-nextjs-patterns

opinionated-nextjs-patterns

github.com/pproenca開発218128 回インストール11 週間前に更新
リポジトリ

opinionated-nextjs-patterns について

Next.js 16 App Routerのコードベースを構築・レビューするチーム向けのリファレンススキルです。実行ライフサイクルに沿って50のルールを整理し、Supabaseを例に他のバックエンドにも応用できるパターンを示します。

主な機能

  1. 018カテゴリにわたる50のルール
  2. 02認可とデータ層アクセスのパターン
  3. 03サーバー側のデータ読み込みと変更
  4. 04クライアントとサーバーの境界指針
  5. 05Turbo monorepoアーキテクチャ
  6. 06フォームとUIの規約

活用シーン

  1. 01Next.jsの新機能の実装
  2. 02認可とリクエスト処理のレビュー
  3. 03データアクセスとパッケージ境界のリファクタリング
  4. 04コードベースへの開発者のオンボーディング

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pproenca/dot-skills --skill opinionated-nextjs-patterns

インストール後、Claude Code で/opinionated-nextjs-patternsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_sections.md
arch-app-vs-packages-boundary.md
arch-config-driven-navigation.md
arch-data-access-adapter.md
arch-feature-package-layout.md
arch-import-via-package-exports.md
arch-policy-engine-for-business-rules.md
arch-provider-gateway-pattern.md
auth-gate-admin-client.md
auth-mfa-in-middleware.md
auth-server-only-imports.md
auth-trust-rls-no-duplicate-checks.md
auth-use-require-user.md
auth-use-sql-policy-helpers.md
auth-use-standard-server-client.md
client-pass-server-data-as-props.md
client-realtime-cleanup-subscription.md
client-stable-query-keys.md
client-use-action-hook.md
client-use-client-at-leaves.md
client-use-supabase-with-react-query.md
mutate-enhance-route-handler.md
mutate-revalidate-path-after-write.md
mutate-thin-action-service-holds-logic.md
mutate-use-getlogger-not-console.md
mutate-use-safe-action-clients.md
mutate-webhook-verify-signature.md

詳細

意見を取り入れた Next.js 16 のパターン

単一の一貫したアーキテクチャを採用する Next.js 16(App Router) コードベース向けの実装パターンリファレンスです。実行ライフサイクルにおける影響の連鎖を基準に優先順位を付けた 8 カテゴリー、50 のルールを収録しています。まず認可と(任意の)テナントモデリング、次にリクエスト境界、サーバー側のデータ取得、ミューテーション、クライアント境界、アーキテクチャ、UI の規約を扱います。

ルールは原則としてバックエンドに依存しませんが、具体例には Supabase を使用しています。各ルールでは、応用可能な考え方(例:「データレイヤーで認可する」「型付けされたリポジトリを通して読み取る」)を説明します。バックエンドが実際に関係する場合は、*Transferable:* の注記で、ほかのストア(Drizzle、Prisma)に適用するパターンを説明します。構成は、標準的なライブラリ(next-safe-action、@supabase/ssr、@tanstack/react-query、react-hook-form + zod、shadcn/ui、next-intl、pino)を基盤とする Turbo モノレポで、独自の @app/* パッケージを構築します。ベンダー提供のスターターキットを使う構成ではありません。

適用する場面

次のようなときに、これらのルールを活用してください。

  • 新しいコードを書くとき — ページ、レイアウト、サーバーアクション、ルートハンドラー、proxy.ts、機能パッケージ、クライアントコンポーネント、フック、データアクセスパッケージ、SQL/マイグレーション、フォーム。
  • PR をレビューするとき — 認可の漏れ(ガードなしの特権クライアント、'server-only' の指定漏れ)、ウォーターフォール(順次の await、クライアントによるサーバーデータの取得)、乖離(生成された型の手動編集、パッケージの深い階層からのインポート、ハードコードされた i18n 文字列)。
  • リファクタリングするとき — apps/web と packages/* の間でのコード移動、アクションとサービスの分割、'use client' 境界の引き上げ、直接クエリを型付きデータアクセスファクトリーに置き換えること、データアクセスパッケージの背後でバックエンドを切り替えること。
  • 機能を設計するとき — 適切なクライアント(リクエストスコープ、特権、ブラウザー)を選ぶこと、アクションとルートハンドラーのどちらにするかを決めること、フォームとサーバーアクションの契約を計画すること、テナントのスコープを決めること(マルチテナントの場合)。
  • オンボーディングするとき — 具体的で応用可能な例を通して、コードベースがそのような構成になっている理由を理解すること。

優先度別のルールカテゴリー

優先度カテゴリー影響プレフィックス
1認可とデータレイヤーアクセス重大auth-
2マルチテナンシー (任意、SaaS のみ)重大tenant-
3リクエスト境界(Proxy)高proxy-
4サーバー側のデータ読み込み高server-
5ミューテーション:アクションとルートハンドラー高mutate-
6クライアント/サーバー境界中〜高client-
7アーキテクチャとサービス中arch-
8フォームと UI の規約中ui-

クイックリファレンス

1. 認可とデータレイヤーアクセス(重大)
  • auth-use-standard-server-client — リクエストスコープで認証に紐付いたクライアントを使用し、特権クライアントをデフォルトにしないでください。
  • auth-gate-admin-client — サービスロールクライアントを構築する前に認可してください。
  • auth-trust-rls-no-duplicate-checks — データレイヤーで一度だけ認可し、アプリケーションコードで再確認しないでください。
  • auth-use-sql-policy-helpers — スコープ指定の述語を再利用可能な SQL ポリシーヘルパーに集約してください。
  • auth-use-require-user — 認証ゲートを 1 つの requireUser() ヘルパーに集約してください。
  • auth-server-only-imports — 特権モジュールには import 'server-only' を指定してください。
  • auth-mfa-in-middleware — ページごとではなく、proxy.ts 境界で MFA を適用してください。
2. マルチテナンシー(重大 — 任意、SaaS のみ)
3. リクエスト境界:プロキシ(高)
4. サーバーサイドのデータ読み込み(高)
5. ミューテーション:アクションとルートハンドラー(高)
6. クライアント/サーバーの境界(中〜高)
7. アーキテクチャとサービス(中)
  • arch-app-vs-packages-boundary — 再利用可能な機能は packages/ に、製品固有のコードは apps/web に配置します。
  • arch-data-access-adapter — 安定したインターフェースを持つ単一のデータアクセスパッケージに、バックエンドを集約します。
  • arch-feature-package-layout — 機能パッケージは components / hooks / schema / server の構成にします。
  • arch-import-via-package-exports — パッケージの exports マップ経由でインポートし、内部パスを直接指定しません。
  • arch-provider-gateway-pattern — ベンダーの SDK をゲートウェイインターフェースの背後に隠します。
  • arch-policy-engine-for-business-rules — インラインの条件分岐ではなく、自分たちが管理するポリシーレイヤーでビジネスルールをモデル化します。
  • arch-config-driven-navigation — ルートとナビゲーションはコンポーネントにハードコードせず、config/ で定義します。
8. フォームと UI の規約(中)
  • ui-rhf-zod-no-generics — フォームの型推論は zodResolver に任せ、useForm にジェネリクスを追加しません。
  • ui-form-message-per-field — 各フィールドに FormMessage を含めます。
  • ui-kit-ui-package-imports — UI は @app/ui のデザインシステムインターフェースからインポートし、内部パスは使用しません。
  • ui-semantic-tailwind-tokens — ハードコードされた色ではなく、セマンティックな Tailwind トークンを使用します。
  • ui-base-ui-render-not-aschild — Radix の asChild ではなく、Base UI の render プロパティを使用します。
  • ui-trans-for-display-text — 表示テキストは <Trans> または useTranslations を通じてレンダリングします。

使用方法

詳しい説明やコード例については、各リファレンスファイルを参照してください。

リファレンスファイル

ファイル説明
references/_sections.mdカテゴリーの定義とライフサイクルへの影響度に基づく順序
assets/templates/_template.md新しいルールを追加するためのテンプレート
metadata.jsonバージョン、組織、リファレンス

関連スキル

  • base-ui-migrator — Radix の asChild パターンを Base UI の render プロパティに一括移行します。
  • tailwind-refactor — ハードコードされた色をセマンティックトークンにリファクタリングします。
  • react-optimise — React コンポーネントのパフォーマンスを最適化します。
  • nextjs-bundle-optimizer — Next.js アプリのバンドルを分析し、サイズを削減します。

コメント