better-auth について
フレームワーク非依存の TypeScript 認証ライブラリ Better Auth の実装・移行ルールを42項目まとめたリファレンススキルです。設定、拡張、セキュリティ強化、問題解決を行う開発者向けです。
主な機能
- 018カテゴリにわたる42のルール
- 02初期設定とアダプターのガイド
- 03セッションとCookieの設定
- 04セキュリティとプラグインの推奨事項
- 05他の認証ライブラリからの移行ガイド
活用シーン
- 01Better Auth の新規設定の計画
- 02認証設定の変更レビュー
- 03セッションやCSRFエラーの調査
- 04他の認証ライブラリからの移行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill better-authインストール後、Claude Code で/better-authを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonassets/templates/_template.mdreferences/_sections.mdauth-client-sign-in-helpers.mdauth-infer-additional-fields.mdauth-magic-link-setup.mdauth-oauth-env-vars.mdauth-oauth-redirect-uri.mdauth-require-email-verification.mddb-adapter-selection.mddb-additional-fields.mddb-connection-pooling.mddb-database-hooks.mddb-plugin-schema-customization.mddb-schema-generate.mdmigrate-force-allow-id.mdmigrate-nextauth-schema-mapping.mdmigrate-oauth-account-mapping.mdmigrate-parallel-cutover.mdplugins-admin-impersonation.mdplugins-jwt-when-to-use.mdplugins-next-cookies-last.mdplugins-organization-active-context.mdplugins-pair-client-server.mdplugins-shared-access-control.mdplugins-two-factor-issuer.mdroute-mount-catchall.mdroute-no-body-consumers.mdroute-runtime-selection.md詳細
Better Auth のベストプラクティス
フレームワークに依存しない TypeScript の認証・認可ライブラリである Better Auth の実装・移行ガイドです。このスキルには、公式ドキュメントと移行ガイドに基づいた 42 のルールが含まれており、影響度に応じて 8 つのカテゴリに分類されています。
適用するタイミング
次のような場合に、このガイドラインを参照してください。
- Better Auth の新しいインスタンスをセットアップするとき(設定、アダプター、ルートハンドラー、クライアント)
- フレームワーク固有のインテグレーションを接続するとき(Next.js App Router/Pages Router、SvelteKit、Hono、Express、Nuxt、Astro)
- セッション、Cookie、セキュリティを設定するとき(レート制限、信頼されたオリジン、パスワードハッシュ化)
- プラグインを追加するとき:2FA、organization、admin、magicLink、JWT、passkey、multi-session
- 別の認証ライブラリから移行するとき(NextAuth/Auth.js、Clerk、Auth0、Supabase Auth)
- 「session is null」/「redirect_uri_mismatch」/403 CSRF エラーをデバッグするとき
lib/auth.ts、auth-client.ts、または/api/auth/のルートハンドラーに関する PR をレビューするとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | セットアップと設定 | CRITICAL | setup- |
| 2 | データベースアダプターとスキーマ | CRITICAL | db- |
| 3 | API ルートハンドラー | CRITICAL | route- |
| 4 | セッションと Cookie | HIGH | session- |
| 5 | 認証方式とプロバイダー | HIGH | auth- |
| 6 | セキュリティと強化 | HIGH | security- |
| 7 | プラグインと拡張機能 | MEDIUM | plugins- |
| 8 | 他の認証ライブラリからの移行 | MEDIUM | migrate- |
クイックリファレンス
1. セットアップと設定(CRITICAL)
setup-secret— 環境ごとに強力なBETTER_AUTH_SECRETを設定しますsetup-base-url— 環境ごとに明示的なbaseURLを設定しますsetup-client-base-url— クライアントのbaseURLをサーバーと一致させますsetup-singleton— サーバー専用モジュールから単一の認証インスタンスをエクスポートしますsetup-trusted-origins—baseURL以外から呼び出すすべてのアクセス元に対してtrustedOriginsを設定します
2. データベースアダプターとスキーマ(CRITICAL)
db-adapter-selection— ORM に合ったアダプターを選択しますdb-schema-generate— デプロイのたびにauth generateを実行し、その後 ORM のマイグレーションを実行しますdb-additional-fields—additionalFieldsを使ってユーザースキーマを拡張しますdb-plugin-schema-customization—schemaオプションを使ってプラグインのテーブル名を変更しますdb-database-hooks— 横断的なロジックにはdatabaseHooksを使いますdb-connection-pooling— アプリの他の部分と、プールされた DB クライアントを 1 つ共有します
3. API ルートハンドラー(CRITICAL)
route-mount-catchall—/api/auth/[...all]にキャッチオールハンドラーをマウントしますroute-runtime-selection—auth.apiを呼び出すミドルウェアには Node.js ランタイムを使いますroute-no-body-consumers— ボディー解析ミドルウェアより前に認証をマウントします
4. セッションと Cookie(高)
session-server-vs-client— サーバーではauth.api.getSession、クライアントではauthClient.useSessionを使用しますsession-expiry-tuning—expiresInとupdateAgeを併せて設定しますsession-cookie-cache—cookieCacheを有効にして、セッションの DB 照会を削減しますsession-cookie-attributes— クロスサイトのフローではsameSite、secure、partitionedを設定しますsession-cross-subdomain— 複数サブドメインのアプリではcrossSubDomainCookiesを有効にしますsession-customsession-fields—customSessionを使用して計算フィールドを追加します
5. 認証方式とプロバイダー(高)
auth-require-email-verification—sendVerificationEmailと併せてrequireEmailVerificationを有効にしますauth-oauth-redirect-uri— OAuth のredirectURIをプロバイダーのコンソールと完全に一致させますauth-oauth-env-vars— OAuth の認証情報は環境変数から読み込み、コードに直接記述しないでくださいauth-magic-link-setup—magicLinkプラグインを有効にする前にsendMagicLinkを実装しますauth-client-sign-in-helpers—callbackURLと併せてauthClient.signIn.socialを使用しますauth-infer-additional-fields— 型を同期するため、クライアントにinferAdditionalFieldsを追加します
6. セキュリティと強化(高)
security-rate-limit— 本番環境では永続ストレージと併せてrateLimitを有効にしますsecurity-password-hash-interop— bcrypt/argon2 から移行する際は、ハッシュ関数をオーバーライドしますsecurity-revoke-on-password-reset—revokeSessionsOnPasswordResetを有効にしますsecurity-min-password-length—minPasswordLengthを 10 以上に設定しますsecurity-trusted-origins-strict—trustedOriginsにワイルドカードを指定しないでください
7. プラグインと拡張機能(中)
plugins-next-cookies-last— Next.js ではnextCookies()を最後のプラグインとして配置しますplugins-two-factor-issuer— 2FA の発行者としてappNameを設定しますplugins-shared-access-control—acとロールを一度だけ定義し、サーバーとクライアントで共有しますplugins-pair-client-server— すべてのサーバープラグインに対応するクライアント側のプラグインを組み合わせますplugins-organization-active-context— セッションでアクティブな組織を設定しますplugins-jwt-when-to-use— 外部サービスの利用者向けにのみjwtプラグインを使用しますplugins-admin-impersonation— サポート対応のアクセスには、admin プラグインのimpersonateメソッドを使用します
8. 他の認証方式からの移行(中)
migrate-parallel-cutover— 切り替え期間中、Better Auth を従来の認証方式と並行して実行しますmigrate-oauth-account-mapping— 従来の OAuth ID をaccount行に対応付けますmigrate-force-allow-id— 既存のユーザー ID を保持するためにforceAllowIdを使用しますmigrate-nextauth-schema-mapping— NextAuth v5 の列をフィールドごとに対応付けます
使用方法
新規に実装する場合は、優先順位に従って読み進めてください。まず setup- ルールをすべて読み、次に db-、その後 route- を読みます。これらの CRITICAL カテゴリが正しく設定されていないと、ほかの機能は動作しません。基盤を整えたら、対象範囲に合ったルールを選んでください。Cookie や有効期限の調整には session-、プロバイダーの設定には auth-、本番環境の強化には security- を参照してください。
別の認証ライブラリから移行する場合は、まず migrate-parallel-cutover(戦略)、次に security-password-hash-interop(ユーザーパスワードの保持)、その後 migrate-oauth-account-mapping と migrate-nextauth-schema-mapping(データ構成)を読んでください。
詳細な説明、誤ったコードと正しいコードの例、Better Auth の公式ドキュメントへのリンクについては、個別のリファレンスファイルを参照してください。
リファレンスファイル
| ファイル | 説明 |
|---|---|
| references/_sections.md | 影響度順に並べたカテゴリの定義 |
| assets/templates/_template.md | 新しいルールを追加するためのテンプレート |
| metadata.json | バージョン、リファレンス、規律に関するメタデータ |