Next.js 開発環境セットアップ (nextjs-dev-setup) は何をしますか?
Next.js App Router の開発環境、リバースプロキシルーティング(Traefik / Nginx)、および docs/project.json にある単一の真実源を発見、設定、検証するための構造化されたエンドツーエンドのオーケストレーションランブックです。
事前条件と発見
- 無中断スキャン: 質問をする前に、既存のリポジトリファイル(
package.json、ロックファイル、スタイルシート、docs/adr/*.md、docs/plan.md、CONTEXT.md)をスキャンします。 - メタデータ構造と自動推論ルールについては、project-json-schema.md を参照してください。
フェーズ0: マルチラウンドセットアップインタビュー(詰問)と計画生成
各ラウンド後にユーザーの応答を待ちながら、段階的かつ適応的なラウンドでインタラクティブインタビューを実施し、セットアップを調整します:
- ラウンド1(スコープとツール): 対象のテストスイート(Jest、Playwright、Storybook)、MCPサーバー、および
@shadcn/lintの適用を探ります。 - ラウンド2(リバースプロキシとプロダクションホスティング): ドメイン名、ポート、およびリバースプロキシ戦略を探ります:
- Traefik(Docker Compose経由): 環境変数(
${DOMAIN_NAME}、${TRAEFIK_ENTRYPOINT}、${TRAEFIK_CERTRESOLVER})から読み取るComposeラベルを使用した自動コンテナ検出(アンチバッファリング付き)。 - Nginx(ホストシステム経由): Certbot SSL証明書を使用した
/etc/nginx/sites-available/<domain>内のスタンドアロン設定。
- Traefik(Docker Compose経由): 環境変数(
- ラウンド3(CI/CD、Gitフック、レジストリ): Huskyのプリプッシュテストスイート、Commitlint、GitHub Actions Release Please / GHCRワークフローを探ります。
- 完全な質問セットと分岐ロジックについては、setup-interview-rounds.md を参照してください。
- 計画と実行: 変更を適用する前に、計画されたすべてのファイル作成、設定、パッケージを詳細に説明する
implementation_plan.mdアーティファクトを生成して提示し、手動確認を待たずに直接実行に進みます。
ステップバイステップの実行フロー
ステージ 1: プロジェクトメタデータと開発者ツール(docs/project.json)
- ユーザーインタビューの選択に基づいて、project.template.json を使用して
docs/project.jsonを初期化します。 - vscode-launch.json.template を使用して
.vscode/launch.jsonを設定します。 <ProgressBarProvider>を含むapp/providers.tsxを providers.tsx.template を使用して、複合<Link>を Link.tsx.template を使用してスキャフォールディングします。.env.exampleを env.example.template を使用して(プロダクション用)、.env.localを env.local.template を使用して(ローカル開発用)スキャフォールディングします。- アプリアイコン、Appleアイコン、PWAマニフェスト: manifest.ts.template を
app/manifest.tsにデプロイします。ユーザーが提供したファビコンをルートのapp/favicon.ico、app/icon.png、app/apple-icon.png(または動的なImageResponseアイコン)に設定します。app-icons-and-pwa-guide.md を参照してください。
ステージ 2: テストスイート(Jest、Playwright、インスタントナビゲーション)
[!IMPORTANT] ダミーテストファイル禁止(ルール3): ワークスペースにプレースホルダーやサンプルのテストファイルを作成しないでください。フレームワークファイルとスクリプトのみを設定してください。サンプルパターンは sample-component.test.tsx、sample-navigation.spec.ts、および sample-component.stories.tsx で入手できます。
- Jestユニットテスト: jest.config.ts.template と jest.setup.ts.template を設定します。
- Playwright E2Eとインスタントナビゲーション:
@playwright/testと@next/playwrightをインストールし(pnpm add -D @playwright/test @next/playwright)、playwright.config.ts.template を設定し、ブラウザをインストールします。 - Next.js インスタント設定:
next.config.tsでcacheComponents: true、partialPrefetching: true、およびインスタントインサイトを設定します。 - Storybookワークショップ: .storybook/main.ts と .storybook/preview.tsx を設定します。
- testing-guide.md と storybook-guide.md でアーキテクチャを確認します。
ステージ 3: デュアルMCPサーバー設定
[!IMPORTANT] Antigravity グローバルMCP読み込みルール: AGは、ホストシステムにグローバルに設定されたMCPサーバー(
~/.gemini/antigravity/mcp_config.jsonおよび~/.gemini/config/mcp_config.json)のみを読み込みます。ワークスペースのmcp.jsonは移植性のために維持されます。両方を設定する必要があります。
next-devtools、playwright、storybook、codebase-memory-mcpを設定します。- スタッター防止:
codebase-memory-mcp config set auto_watch falseでauto_watch = falseを設定し、ルートに .cbmignore をデプロイします。 - mcp-configuration-guide.md で完全な仕様を確認します。
ステージ 4: エージェントファーストデザインシステムリンティング(@shadcn/lint)
@shadcn/lintをインストールし、eslint.config.mjs.template を使用してESLintフラット設定を構成します。- styling-and-linting-guide.md で仕組みを確認します。
ステージ 5: スタンドアロンプロダクションDockerとリバースプロキシ(Traefik / Nginx)
next.config.tsで:Gitコミットハッシュ(CIフォールバック付きgetGitCommitHash())とパッケージバージョンを解決し、NEXT_PUBLIC_APP_VERSIONとNEXT_PUBLIC_GIT_COMMIT_HASHをenvの下に注入し、`output: