tanstack-start-architecture について
TanStack Start アプリの構成を定める単独のアーキテクチャスキルです。アプリの構築、拡張、レビューを行う開発者向けに、配置や命名、コードの責務を示し、フレームワーク API やデプロイは扱いません。
主な機能
- 01ページとルートのディレクトリ規約
- 02UI とフックの配置ルール
- 03再利用モジュールの判断指針
- 04構築・適用・レビューのモード
- 05スタック別の追加ルール
活用シーン
- 01新しいページやレイアウトの構築
- 02ルート専用の補助コードや UI の配置
- 03アーキテクチャ規則に沿ったアプリのレビュー
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dobroslavradosavljevic/ skills --skill tanstack-start-architectureインストール後、Claude Code で/tanstack-start-architectureを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/checklist.mdexamples.mdrules.mdtree.mdwith-better-auth-client.mdwith-client-authorization.mdwith-effect.mdwith-env.mdwith-generated-api-client.mdwith-route-gates.mdwith-tanstack-form.mdwith-tanstack-query.mdwith-ui-package.mdwith-vitest.md詳細
TanStack Start のアーキテクチャ
TanStack Start(@tanstack/react-start)アプリ向けの、移植可能なハウススタイルです。このスキル単独で使用でき、ほかのスキルには依存しません。
目的: UI、フック、機能コードの配置場所、フォルダー/ファイルの命名、所有範囲を定めます。
対象外: Start/Router API の固有仕様、SSR アダプター、デプロイ、最新のフレームワークドキュメントです。これらについては、最新の TanStack Start/Router ドキュメントを参照してください。公式の Start ドキュメントでは、フレームワークは引き続きリリース候補版として説明されています(API は安定していると見なされていますが、バグがないわけではありません)。ほかの場所に残っている古い「alpha」という表記よりも、@tanstack/react-start と @tanstack/react-router の npm latest を優先してください。
対象のリポジトリにすでにアーキテクチャのドキュメント(例:AGENTS.md)があり、内容が競合する場合は、このスキルへの移行をユーザーが求めていない限り、リポジトリの記述を優先します。
スタックのデフォルト設定(コア)
| 要素 | デフォルト |
|---|---|
| フレームワーク | TanStack Start + ファイルベースの TanStack Router(Vite または Rsbuild) |
| エントリーポイント | src/router.tsx(getRouter)、routes/__root.tsx、生成される routeTree.gen.ts。start.ts/server.ts は任意 |
| ページ | ページごとにフォルダーと index.tsx を使用(フラットなページリーフは使用しない) |
| ルート専用コード | ハイフンで始まる同階層のフォルダー(-components、-hooks、-lib) |
| 再利用可能な機能 | 再利用基準を満たした後に src/modules/<feature>/ を使用 |
| アプリ全体の UI | src/components/ |
| 機能以外のインフラストラクチャ | src/lib/ |
| 無視プレフィックス | Router の routeFileIgnorePrefix のデフォルトは - |
該当するスタックがある場合は、対応する with-* 拡張機能を読み込んでください(以下を参照)。
モード
- スキャフォールド — checklist.md と tree.md を参照して、新しいページ/レイアウト/機能を作成します。
- 適用 — 新しい UI/フック/ヘルパーを標準の配置場所に置きます。
- レビュー — rules.md と照合し、移動を提案します。並行する別のレイアウトは作らないでください。
厳守ルール(コア)
- すべてのページは
segment/index.tsxにします。 フラットなページリーフ(ページコンポーネントファイルとしてのbilling.tsxなど)は追加しないでください。billing/index.tsxを優先してください。 - ルート専用モジュールには
-プレフィックスを付けます(または、アプリで設定されている無視プレフィックスを使用します)。src/routes内のプレフィックスなしファイルは URL になります。 - 新しいページ UI は、デフォルトで
routes/…/-componentsに配置します。 ページ専用のフックには-hooks、ヘルパーには-libを同様に使用します。 src/modules/<feature>/の再利用基準: 2 つ目の利用箇所ができた場合、または複数のルートで使用する明確な共有クライアント/スキーマがある場合に昇格させます。空のモジュールツリーを先回りして作らないでください。- モジュールから
src/routesをインポートしてはいけません。 ルートからモジュールをインポートすることはできます。 - モジュールのバレル
index.tsは、デフォルトでは作成しません。 具体的なパスからインポートしてください(@/modules/billing/hooks/use-checkout)。 - アプリ全体のツールキットは
src/components/に、 機能以外のインフラストラクチャはsrc/lib/に配置します。共有 UI を無造作にroutes/に置かないでください。 - URL を変えずにセクションをラップする場合は、 パスレスレイアウトに
_name/(または_name.tsx)を使用します。 - 命名: フォルダー名は名詞/ルートセグメント、リーフ名は短い要素名(
billing-page.tsx、use-checkout.ts)にします。フォルダー名で示されている親パスを、すべてのファイル名で繰り返さないでください。 - ルートフォルダーごとに役割は 1 つです。 そのセグメントのページ/レイアウトと、同階層に置くプライベートコードのみを配置します。
詳細:rules.md、tree.md、examples.md。
必要に応じた開示
| 必要な内容 | 参照先 |
|---|---|
| 標準的なツリー構成とトークン | references/tree.md |
| ルールとアンチパターンの適用 | references/rules.md |
| スキャフォールド/レビューのチェックリスト | references/checklist.md |
| 適切なレイアウトと不適切なレイアウト | references/examples.md |
| 任意のスタックオーバーレイ | 以下の拡張機能 |
拡張機能
該当するスタックが存在する場合(またはユーザーから依頼された場合)にのみ拡張機能を読み込みます。 拡張機能はルールを追加します。コアツリーに置き換わるものではありません。
| 条件 | 拡張機能 |
|---|---|
| 生成された OpenAPI/Hey スタイルのクライアント | with-generated-api-client.md |
| Better Auth(またはセッション)クライアントモジュール | with-better-auth-client.md |
TanStack Query +ローダー/queryClient.query | with-tanstack-query.md |
| パスレス認証/オンボーディング/組織のゲート | with-route-gates.md |
| TanStack Form +モジュール/ルートのスキーマ | with-tanstack-form.md |
T3 Env/VITE_ クライアントキー | with-env.md |
| 純粋な認可パッケージ+クライアントアダプター | with-client-authorization.md |
| ワークスペース UI パッケージ+Storybook/トークン | with-ui-package.md |
| Effect Schema/サーバー専用 Effect | with-effect.md |
| Vitest — libs/schemas/gates に重点 | with-vitest.md |