tanstack-start-conventions について
TanStack Start アプリを構築・リファクタリングするチーム向けの規約ガイドです。タスク別の資料とサーバー境界、サーバー関数、SSR のルールを示し、tanstack-router-conventions スキルとの併用が必要です。
主な機能
- 01タスク別リファレンスガイド
- 02クライアントとサーバーの境界規則
- 03サーバー関数の規約
- 04ルート SSR の指針
- 05API ルートの検証規則
活用シーン
- 01アプリのディレクトリ構成や改修
- 02サーバーコードの配置先の判断
- 03検証付きサーバー関数の実装
- 04ルートのレンダリング設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ fixmyberlin/ fixmyskills --skill tanstack-start-conventionsインストール後、Claude Code で/tanstack-start-conventionsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/app-structure.mdclient-server-boundaries.mdexecution-model.mdlocal-runtime.mdparams-search-api-routes.mdselective-ssr.mdserver-components.mdserver-functions.md詳細
TanStack Start の規約
この組織の TanStack Start アプリ向けのスタック規約です。必須スキル tanstack-router-conventions(検索パラメーター、きれいな URL、ローダーと Query、フォームと useMutation の使い分け、型付き Router TS、開発者ツール)を参照してください。ここでは重複させないでください。認証とセッションのレイアウトについては、tanstack-start-auth と併用してください。
参照するドキュメント
| タスク | ファイル |
|---|---|
app/src フォルダーの作成またはリファクタリング、薄いルート、Layout/Page の命名、テスト | app-structure.md |
.server.ts / .functions.ts 間のコード分割、インポート保護、beforeLoad と loader の使い分け、エラーログ | client-server-boundaries.md |
createServerFn、バリデーション、フォーム送信、無効化 | server-functions.md |
| ローダーまたはコンポーネントが DB/fs/シークレットにアクセスする場合、クライアントナビゲーションのバグ | execution-model.md |
ルートの ssr 設定、SSR / ハイドレーションのデバッグ、Query のデハイドレーション | selective-ssr.md |
routes/api/ 配下の API ルート(パスパラメーター、検索、POST 本文) | params-search-api-routes.md |
実験的な RSC(renderServerComponent、createCompositeComponent) | server-components.md |
Vite + Nitro スクリプト用の bun --bun | local-runtime.md |
認証フロー:スキル tanstack-start-auth。
譲れないルール
| トピック | ルール |
|---|---|
| サーバー専用モジュール | *.server.ts - ルート/コンポーネントからインポートしないでください(例外:routes/api/ およびコンポーネントを持たないハンドラー専用ルート)。内部では createServerOnlyFn を使用してください |
| クライアントから呼び出し可能 | createServerFn を使用する *.functions.ts。エクスポート名は *Fn にしてください |
| 公開サーバー関数 | public*.functions.ts - グローバルな認証ミドルウェアは使用しないでください。レート制限/トークンチェックは .server.ts で行ってください(tanstack-start-auth を参照) |
| API ルートファイル | ルートファイルに server-only インポートマーカーを付けないでください。サーバー専用ロジックはハンドラー内、またはツリーシェイキングされるインポート内に配置してください |
| API 検索パラメーター | API ルートで validateSearch を使用しないでください。request.url から GET 内で Zod の safeParse を実行し、失敗時は 400 の JSON を返してください |
| SSR | すべてのルートで ssr を明示的に設定してください。UI の既定値は true、ハンドラー専用の API ルートは false、マップを多用する UI は 'data-only' です |
| ローカルの Bun ランタイム | Vite の dev と Nitro の start/preview では bun --bun を使用してください |
| Router の検索/Query | tanstack-router-conventions が担当します(parseSearch/stringifySearch、loader + Query) |
すぐに決めるための指針
beforeLoadとloader: リダイレクト、認証、軽量なコンテキストはbeforeLoad(ミドルウェアではありません)で処理し、データ取得/Query の事前設定はloaderで行います。beforeLoadは検索パラメーターの変更を含め、ナビゲーションのたびに再実行されるため、頻繁に更新されるルート(マップのビューポート、レイヤー切り替え)ではリダイレクト/認証/地域情報をloaderに配置し、それらのパラメーターをloaderDepsに含めないでください。詳細:client-server-boundaries.md。- Loader と Query、フォームとミューテーション:
tanstack-router-conventions->references/router-and-query.md(#client-mutations)に従ってください。Start では、loader とmutationFnが*Fnを呼び出します。サーバーとの I/O は必ずcreateServerFnを経由してください。 ssr: サーバー認証/データを必要とする、マップ/キャンバスを多用する UI には'data-only'を指定します。ハンドラー専用の API(server.handlers)にはfalseを指定します。完全にクライアントファーストの UI ルートにはfalseを指定します(まれです)。- サーバーコンポーネント: オプトイン方式の実験的機能であり、FMC のデータ処理経路では既定で使用しません。
関連スキル
| トピック | スキル |
|---|---|
| Router(必須) | tanstack-router-conventions |
| 認証/セッション | tanstack-start-auth |
| Bun のインストール/nvm | tech-stack -> bun-install |
| Zustand | zustand-state-management |
| TanStack Router を使わない URL 状態 | nuqs |
| リファクタリング後の残りの配置先 | unslop-code Phase 6 -> references/component-location.md |
コメント
Markdown 対応