MRが楽しい

MRやVRについて学習したことを書き残す

AWESOME-COPILOTのドキュメントを読む その97(Next.js Best Practices for LLMs (2026))

本日はAWESOME-COPILOTの技術調査枠です。
AWESOME-COPILOTのドキュメントを読みながら実際に操作を試して記事に残します。
今回はカスタムインストラクションの一つNext.js Best Practices for LLMs (2026)についてです。

Next.js Best Practices for LLMs (2026)

Next.js Best Practices for LLMs (2026)はNext.js 16.1.1 / App Router 前提で、最新のキャッシュ・Server/Client分離・ツール仕様に沿って開発するためのルールです。
Next.jsの最新仕様に追従した実務向けインストラクションです。

以下のページからGenaiscriptのインストールボタンをクリックして取得します。
github.com

インストールボタンを押してNext.js Best Practices for LLMs (2026)をダウンロードします。
すると.github/instructions配下にインストラクションがインストールされます。

インストールしたインストラクションはCopilotの動作に自動的に適用されます。
このインストラクションを読み込むと、CopilotはNext.js 16 App Router前提の最新ベストプラクティスで提案するようになります。

以下の関連ファイルを対象に動作します。

  • *.tsx
  • *.ts
  • *.jsx
  • *.js
  • *.css

具体的にはCopilotは以下のような行動をとります。

App Router前提で設計する

Copilotはapp/Routerを前提にした最新Next.js標準構成で提案を行うようになります。
以下の推奨構成を利用します。

app/
components/
lib/
hooks/
types/
public/
styles/
contexts/

Server Componentを基本にする

CopilotはServer Componentsをデフォルトとして扱います。

種類 用途
Server Component データ取得・重い処理・静的UI
Client Component hooks・state・ブラウザAPI

next/dynamic({ ssr:false }) の誤用を防ぐ

Server Component内でnext/dynamic + { ssr: false }を使わないようにします。
Copilotはクライアント専用UIが必要な場合、'use client'付きのClient Componentへ分離して、Server Componentから直接importする提案をします。

動的レンダリングを意識する

Copilotはcookies()やheaders()を動的化することを意識します。
Suspense境界で分離し、静的最適化を壊さないという提案になります。

Route Handlerを正しく使う

CopilotはAPIをapp/api/users/route.tsに置きます。
以下の形式で生成します。

export async function GET() {}
export async function POST() {}

lib/に共有ロジックを分離

Copilotは以下のロジックをlib/に切り出します。

  • DBアクセス
  • APIクライアント
  • 認証処理
  • 共通ロジック

TypeScript strict前提とする

Copilotは以下を前提にコードを書きます。

  • strict: true
  • 明示的な型
  • props interface
  • type guard

Zodなどで入力検証する

CopilotはAPIやフォーム入力に対してZod/yupによる実行時バリデーションを提案します。

コンポーネント設計を整理

Copilotは以下の命名・配置を守ります。

対象 ルール
Component PascalCase
Hook camelCase / useXxx
Folder kebab-case
Static asset kebab-case / snake_case
Constants UPPER_SNAKE_CASE

Next.js 16のツール変更に対応

CopilotはNext.js 16のツールに対応しており以下の提案を行います。

  • Turbopackがdevのデフォルト
  • experimental.turbo は使わない
  • next lint ではなく ESLint CLI
  • typedRoutes は安定機能