architect-nextjs について
Next.js 15+アプリの構成を設計する開発者向けのスキルです。機能の利用範囲に応じてファイル配置を決め、App Routerとサーバー優先の設計を促します。
主な機能
- 01機能の利用範囲に応じた配置
- 02機能を示すディレクトリ構成
- 03Next.js 15 App Routerへの準拠
- 04Server Componentsを標準に採用
- 05Client ComponentsとServer Actionsの指針
活用シーン
- 01新規アプリのディレクトリ構成の計画
- 02コンポーネントのローカル配置と共有配置の判断
- 03クライアント側の操作が必要かの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ ivantsxx/ my-next-skills --skill architect-nextjsインストール後、Claude Code で/architect-nextjsを入力して読み込まれたか確認します。
同梱ファイルreferences/component_templates.mdreferences/project_structure.md
詳細
スコープルールアーキテクト(Next.js 15+)
このスキルは、厳格なスコープルールとScreaming Architectureを徹底することで、スケーラブルな Next.js アプリケーションのアーキテクチャ基盤を確立します。
核となる原則
1. スコープルール(絶対的な原則)
「スコープが構造を決定します。」
- ローカルスコープ:1 つの機能で使用されるコードは、ローカルに配置する必要があります(例:
(user)/profile/_components)。 - 共有スコープ:2 つ以上の機能で使用されるコードは、
src/shared/に配置する必要があります。 - 例外なし:単一の用途しかないコンポーネントで
sharedを汚染しないでください。
2. Screaming Architecture
ディレクトリ構造から、アプリケーションが何をするのかがすぐにわかるようにする必要があります。
- トップレベルのモジュールにはルートグループ
(feature)を使用します。 - トップレベルに
containersやviewsなどの汎用的なフォルダーを置かないでください。
3. Next.js 15 の標準
- App Router のみ:
pages/ディレクトリは使用しません。 - サーバーファースト:コンポーネントはデフォルトでサーバーコンポーネントです。
- データアクセス:サーバーコンポーネント内で直接取得するか、サーバーアクションを使用します。
判断フレームワーク
ファイルを配置するときは、次の判断ツリーに従ってください。
-
使用箇所を数える:
- 1 つの機能で使用:
app/(feature)/_components/に配置します。 - 2 つ以上の機能で使用:
src/shared/components/に配置します。
- 1 つの機能で使用:
-
種類を判断する:
- サーバーコンポーネント:デフォルトです。静的コンテンツと初期データの取得に使用します。
- クライアントコンポーネント:
useState、useEffect、またはイベントリスナーが必要な場合にのみ使用します。 - サーバーアクション:データの変更やフォーム処理に使用します。
_actions/name.tsに配置します。
実装ガイド
プロジェクト構造
標準的なディレクトリ構成については、プロジェクト構造テンプレートを参照してください。
新しいフォルダーを作成するときや、特定のファイルの配置先を確認するときに、このリファレンスを使用してください。
コンポーネントテンプレート
ベストプラクティスに沿ったコードパターンについては、コンポーネントテンプレートを参照してください。
次の内容が含まれます。
Suspenseとデータ取得を使用するサーバーコンポーネント。- インタラクティブな機能に限定したクライアントコンポーネント。
- 適切に型付けおよび検証されたサーバーアクション。
品質チェックリスト
構造を確定したり、ファイルを作成したりする前に、次の点を確認してください。
- スコープ:2 つ以上の機能で使用されますか?使用されない場合は、
_componentsに移動します。 - サーバー:「use client」は本当に必要ですか?コンポーネントツリーの下層に移せませんか?
- Screaming:フォルダー名から、何をするのかがわかりますか(例:
pagesではなく(invoices))? - コロケーション:固有のフック/型/スタイルは、それを使用するコンポーネントの隣にありますか?
コメント
Markdown 対応