All skills
clerk avatar

/clerk-nuxt-patterns

@ca5e365 official
by clerkclerk/skills83 stars
5

Nuxt 3 auth patterns with @clerk/nuxt - middleware, composables, server API routes, SSR. Triggers on: Nuxt auth, useAuth composable, clerkMiddleware Nuxt, server API Clerk, Nuxt route protection.

Use this Skill: https://skilld.dev/gh/clerk/skills/clerk-nuxt-patterns

This session only. Nothing lands on disk.

referencesnuxt-middleware.md

≈372 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Nuxt Middleware (CRITICAL)

Built-in Auth Middleware

@clerk/nuxt auto-registers an auth named middleware. Use it with definePageMeta:

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

This redirects unauthenticated users to the sign-in page automatically.

Custom Route Middleware

Create middleware/require-org.ts for custom logic:

export default defineNuxtRouteMiddleware(() => {
  const { isSignedIn, orgId } = useAuth()

  if (!isSignedIn.value) {
    return navigateTo('/sign-in')
  }

  if (!orgId.value) {
    return navigateTo('/select-org')
  }
})

Apply to a page:

<script setup lang="ts">
definePageMeta({ middleware: ['auth', 'require-org'] })
</script>

Server-Side Middleware (Nitro)

For API-level protection in server/middleware/auth.ts:

import { clerkClient } from '@clerk/nuxt/server'

export default defineEventHandler(async (event) => {
  const auth = event.context.auth

  if (getRequestURL(event).pathname.startsWith('/api/protected')) {
    if (!auth?.userId) {
      throw createError({ statusCode: 401, message: 'Unauthorized' })
    }
  }
})

Redirect URLs

Configure in .env:

NUXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NUXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NUXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL=/dashboard
NUXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL=/dashboard

Docs

Source: SKILL.md on GitHub

No alerts16d4 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    The skill provides legitimate Nuxt 3 authentication patterns using the official Clerk SDK. All code snippets, configurations, and dependencies follow established best practices for secure application development.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: LOW · No issues

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at ca5e365. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated 6 months ago
What it can do
Network
metadata
{
  "author": "clerk",
  "version": "1.0.0"
}
All 1 allowed tools
WebFetch
  • Nuxt
  • Auth
  • clerk
  • authentication
  • middleware
  • ssr
  • composables
  • nitro

README badge

README badge for clerk/skills/clerk-nuxt-patterns

Provides Nuxt 3 patterns for Clerk authentication, covering route protection with middleware, server API routes via Nitro, and client-side composables like useAuth and useUser. Includes SSR-safe patterns and organization-aware auth flows using @clerk/nuxt.

Generated from the current SKILL.md.

Does this skill work with Nuxt 3?
Yes. The skill covers Nuxt 3 patterns specifically, including auto-imports, composables, and the Nitro server runtime.
How do I protect routes from unauthenticated users?
Add `definePageMeta({ middleware: 'auth' })` to your page component. The `@clerk/nuxt` module auto-registers the auth middleware.
Can I use useAuth in server API routes?
No. useAuth is client-only. Use `event.context.auth` in Nitro server routes instead, or import `clerkClient` from `@clerk/nuxt/server`.
What causes hydration mismatches with auth state?
Rendering auth state before the component mounts. Fix this by wrapping sensitive content in `<ClientOnly>` or checking `isLoaded` before rendering.
How do I set up environment variables?
Use `NUXT_PUBLIC_CLERK_PUBLISHABLE_KEY` for the public key and `NUXT_CLERK_SECRET_KEY` for the secret key in your `.env` file.

Generated from the current SKILL.md. These answers refresh after source changes.