mcpField
C
clerk-nuxt-patterns

clerk-nuxt-patterns

github.com/clerk開発8914.0k 回インストール今日更新
リポジトリ

clerk-nuxt-patterns について

Nuxt 開発者向けの Clerk 認証パターンをまとめたスキルです。ルート保護、Nitro サーバー API、コンポーザブル、SSR の扱いを説明します。

主な機能

  1. 01Nuxt 認証ミドルウェアのパターン
  2. 02Nitro ルート認証
  3. 03認証コンポーザブルの使い方
  4. 04SSR ハイドレーション処理
  5. 05組織ロールのパターン

活用シーン

  1. 01サインイン必須のページ保護
  2. 02Nitro API ルートでの本人確認
  3. 03コンポーネントでのユーザー状態参照
  4. 04SSR 認証状態のハイドレーション処理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/clerk/skills --skill clerk-nuxt-patterns

インストール後、Claude Code で/clerk-nuxt-patternsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

evals/
evals.json
references/
composables.md
nuxt-middleware.md
server-api-routes.md
ssr-auth.md
templates/nuxt-basic-auth/
app.vue
nuxt.config.ts
package.json

詳細

Nuxt のパターン

必要な情報は?

タスクリファレンス
ミドルウェアでルートを保護するreferences/nuxt-middleware.md
サーバー API ルート(Nitro)での認証references/server-api-routes.md
コンポーネントでの useAuth / useUserreferences/composables.md
SSR に対応した認証パターンreferences/ssr-auth.md

リファレンス

リファレンス説明
references/nuxt-middleware.mdルート保護、clerkMiddleware()
references/server-api-routes.mdNitro サーバールートの認証
references/composables.mduseAuth、useUser、useClerk
references/ssr-auth.mdSSR のハイドレーション、サーバーとクライアント

セットアップ

npm install @clerk/nuxt

.env:

NUXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_...
NUXT_CLERK_SECRET_KEY=sk_...

nuxt.config.ts:

export default defineNuxtConfig({
  modules: ['@clerk/nuxt'],
})

この1行で、ミドルウェア、プラグイン、コンポーネントの自動インポートが自動設定されます。

基本的な考え方

@clerk/nuxt はすべての Clerk コンポーネントとコンポーザブルを自動インポートするため、<script setup> で明示的にインポートする必要はありません。

  • コンポーザブル(useAuth、useUser)— クライアント側でリアクティブに動作し、<script setup> 内で使用します
  • サーバールート(clerkClient)— Nitro のサーバールートで使用し、event.context.auth を使います
  • ミドルウェア(clerkMiddleware)— 自動登録されます。ルートを保護するには auth().protect() を使います

最小限のパターン


<script setup lang="ts">
definePageMeta({ middleware: 'auth' })
const { userId } = useAuth()
</script>

<template>
  <Show when="signed-in">
    <p>Hello {{ userId }}</p>
  </Show>
</template>

definePageMeta({ middleware: 'auth' }) は、@clerk/nuxt に組み込まれている認証ミドルウェアを使用します。

よくある問題

症状原因対処法
サーバー上でコンポーザブルが undefined を返すuseAuth はクライアント専用ですサーバールートでは event.context.auth を使います
ルートが保護されていないmiddleware: 'auth' メタデータがありませんdefinePageMeta({ middleware: 'auth' }) を追加します
clerkClient が利用できないインポートパスが正しくありません@clerk/nuxt/server からインポートします
ハイドレーションの不一致マウント前に認証状態をレンダリングしています<ClientOnly> で囲むか、isLoaded を確認します
環境変数が読み込まれないプレフィックスが正しくありませんNuxt では、公開用に NUXT_PUBLIC_、サーバー用に NUXT_ が必要です

組織対応パターン

<script setup lang="ts">
const { orgId, orgRole } = useAuth()
</script>

<template>
  <div v-if="orgId">
    <p>Org: {{ orgId }}</p>
    <p v-if="orgRole === 'org:admin'">Admin panel</p>
  </div>
  <div v-else>
    <OrganizationSwitcher />
  </div>
</template>

関連項目

  • clerk-setup - Clerk の初期インストール
  • clerk-custom-ui - カスタムフローと外観
  • clerk-orgs - B2B 組織

ドキュメント

Nuxt SDK

コメント