ワンクリックで
clerk-setup
Add Clerk authentication to any project by following the official quickstart guides.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Add Clerk authentication to any project by following the official quickstart guides.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Use when building real-time voice and video AI agents, integrating with 30+ AI providers, deploying to production with HTTP servers or Kubernetes, adding function calling and tool access, or handling complex conversation flows with event subscriptions.
Build a new app or add Stream products (Chat, Video, Feeds, Moderation) to an existing app. Scaffold Next.js + Tailwind + Shadcn + Stream SDKs end-to-end with Steps 0-7. Add Chat/Video/Feeds/Moderation to an existing project (enhance flow). Triggers on 'build me a ... app', 'scaffold', 'create a new ...', 'add Chat to this app', 'integrate Video', 'drop Feeds into ...'. Covers livestreaming, video conferencing, team messaging, direct messaging, social feed use cases.
Query Stream data and run CLI operations against Chat, Video, Feeds, and Moderation: list channels, list calls, show flagged messages, find users, query any Stream resource. Run stream api / stream config / stream auth commands. Install the Stream CLI binary. Use when the user gives operational verbs ('list', 'show', 'find', 'check', 'query') with Stream nouns, or invokes the CLI literally.
Search live Stream SDK documentation for Chat, Video, Feeds, and Moderation. Look up how a Stream React/iOS/Android/Node/Flutter/Unity/Angular hook, component, or method works. Answer how-to questions about any Stream SDK across every framework and version. Triggers on 'docs', 'documentation', explicit SDK tokens (Chat React, Video iOS, Feeds Node, Moderation), and 'how do I ... in <framework>' phrasing. Answers come verbatim from getstream.io with citations - no CLI required.
Create, build, and integrate Stream Chat React Native apps in React Native Community CLI and Expo. Use for new RN/Expo Chat apps from scratch, existing app integration, Stream Chat RN, stream-chat-react-native, stream-chat-expo, migration/setup, channel list, message list, MessageComposer, attachment picker, image/file attachments, media picker, camera upload, audio messages, threads, thread list, React Navigation, Expo Router, theming, offline support, push notifications, and Chat customization. Chat only in v1; not for Stream Video, Feeds, or Moderation UI.
Stream router for Chat, Video, Feeds, and Moderation. Use when the user wants to build a new app with Stream, scaffold a project, add Chat/Video/Feeds/Moderation to an existing app, integrate Stream, build for Swift/SwiftUI/UIKit/iOS/Xcode, query Stream data, list channels, list calls, show flagged messages, find users, run stream api / stream config / stream auth commands, install the Stream CLI, set up Stream, search Stream SDK documentation, look up Stream React/iOS/Android/Node/Flutter/Unity SDK methods, ask how-to questions about Stream hooks/components/methods, configure moderation blocklists or automod, set up webhooks, or anything tagged Chat React, Video iOS, Feeds Node, Moderation, etc. Routes to the right sub-skill based on the task.
| name | clerk-setup |
| description | Add Clerk authentication to any project by following the official quickstart guides. |
| license | MIT |
| allowed-tools | WebFetch |
| compatibility | Requires NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY and CLERK_SECRET_KEY (or framework-specific equivalents like VITE_CLERK_PUBLISHABLE_KEY for Vite-based apps). Keys can be auto-generated via Keyless on first SDK initialization, or pulled from the Clerk Dashboard. Requires Node.js 20.9.0 or higher. |
| metadata | {"author":"clerk","version":"2.3.0"} |
Version: Check
package.jsonfor the SDK version — seeclerkskill for the version table. Core 2 differences are noted inline with> **Core 2 ONLY (skip if current SDK):**callouts.
This skill sets up Clerk for authentication by following the official quickstart documentation. For agents, the clerk CLI handles most of this end to end — see the next section.
The clerk CLI replaces most Dashboard clicks. Three scenarios cover almost everything:
clerk init --framework <next|react|vue|nuxt|astro|react-router|tanstack-react-start|expressjs|fastify|expo> -y
clerk init creates the Clerk app via PLAPI, links the project, writes the framework-specific publishable + secret keys to the right env file (e.g. .env.local for Next.js, .env for Vite-based projects), and installs the SDK package.
clerk auth login # one-time OAuth (skip if already logged in)
clerk link # autolinks if a CLERK_PUBLISHABLE_KEY is in your .env
clerk link --app app_xxx # explicit form, required in agent mode
clerk env pull # writes the framework-detected env vars
clerk auth login
clerk apps create "My App" --json # returns the new app_id
clerk link --app app_xxx
clerk env pull
clerk env pull # refresh keys (uses linked profile)
clerk env pull --instance prod # production keys
clerk doctor --json # framework integration health check
PLAPI exposes secret-key rotation directly. Use raw clerk api until the friendly wrapper ships:
clerk api --platform POST /v1/platform/applications/<app_id>/rotate_secret_keys \
-d '{"delay_old_secrets_expiration_hours": 24, "reason": "scheduled rotation"}'
delay_old_secrets_expiration_hours keeps the old key valid for the grace period so deploys can roll forward without downtime.
clerk link (no flags) only autolinks when a CLERK_PUBLISHABLE_KEY is already in .env / .env.local. Without it, agent mode errors out: "Cannot select an application in agent mode." When that happens, run clerk apps list --json, and ask the user which app_id to link rather than guessing.--json on apps list/create, users create, and doctor for parseable output.VITE_CLERK_PUBLISHABLE_KEY for Vite, NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY for Next.js, etc.) and target file (.env.development.local > .env.local > .env).If the CLI isn't an option (sandboxed environments, docs walkthroughs), here's the manual Dashboard path:
| Step | Action |
|---|---|
| 1. Detect framework | Check package.json dependencies |
| 2. Fetch quickstart | Use WebFetch on the appropriate docs URL |
| 3. Follow instructions | Execute steps; create proxy.ts (Next.js <=15: middleware.ts) |
| 4. Get API keys | From dashboard.clerk.com |
If the project has
components.json(shadcn/ui), apply the shadcn theme after setup. Seeclerk-custom-uiskill → shadcn Theme.
Check package.json to identify the framework:
| Dependency | Framework | Quickstart URL |
|---|---|---|
next | Next.js | https://clerk.com/docs/nextjs/getting-started/quickstart |
@remix-run/react | Remix (deprecated) | Migrate to React Router v7 — use the React Router quickstart below |
react-router | React Router (v7+) | https://clerk.com/docs/react-router/getting-started/quickstart |
astro | Astro | https://clerk.com/docs/astro/getting-started/quickstart |
nuxt | Nuxt | https://clerk.com/docs/nuxt/getting-started/quickstart |
@tanstack/react-start | TanStack Start | https://clerk.com/docs/tanstack-react-start/getting-started/quickstart |
react (no framework) | React SPA | https://clerk.com/docs/react/getting-started/quickstart |
vue | Vue | https://clerk.com/docs/vue/getting-started/quickstart |
express | Express | https://clerk.com/docs/expressjs/getting-started/quickstart |
fastify | Fastify | https://clerk.com/docs/fastify/getting-started/quickstart |
expo | Expo | https://clerk.com/docs/expo/getting-started/quickstart |
For other platforms:
https://clerk.com/docs/chrome-extension/getting-started/quickstarthttps://clerk.com/docs/android/getting-started/quickstarthttps://clerk.com/docs/ios/getting-started/quickstarthttps://clerk.com/docs/js-frontend/getting-started/quickstartUser Request: "Add Clerk" / "Add authentication"
│
├─ Read package.json
│
├─ Existing auth detected?
│ ├─ YES → Audit → Migration plan
│ └─ NO → Fresh install
│
├─ Identify framework → WebFetch quickstart → Follow instructions
│ └─ Next.js? → Create proxy.ts (Next.js <=15: middleware.ts)
│
└─ components.json exists? → YES → Apply shadcn theme (see clerk-custom-ui)
Read the project's package.json and match dependencies to the table above.
Use WebFetch to retrieve the official quickstart for the detected framework:
WebFetch: https://clerk.com/docs/{framework}/getting-started/quickstart
Prompt: "Extract the complete setup instructions including all code snippets, file paths, and configuration steps."
Execute each step from the quickstart guide:
Next.js: Create
proxy.ts(Next.js <=15:middleware.ts). See theclerk-nextjs-patternsskill for middleware strategies.
shadcn/ui detected (
components.jsonexists): ALWAYS apply the shadcn theme. Seeclerk-custom-uiskill → shadcn Theme section.
Two paths for development API keys:
Keyless (Automatic)
Manual (Dashboard)
pk_test_ or pk_live_sk_test_ or sk_live_NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY and CLERK_SECRET_KEYIf the project already has authentication, create a migration plan before replacing it.
Check package.json for existing auth libraries:
next-auth / @auth/core → NextAuth/Auth.js@supabase/supabase-js → Supabase Authfirebase / firebase-admin → Firebase Auth@aws-amplify/auth → AWS Cognitoauth0 / @auth0/nextjs-auth0 → Auth0passport → Passport.jsAudit current auth - Identify all auth touchpoints:
Create migration plan - Consider:
external_id in ClerkChoose migration strategy:
| Package | Install |
|---|---|
| Next.js | @clerk/nextjs |
| React | @clerk/react |
| Expo | @clerk/expo |
| React Router | @clerk/react-router |
| TanStack Start | @clerk/tanstack-react-start |
Core 2 ONLY (skip if current SDK): React and Expo packages have different names:
@clerk/clerk-reactand@clerk/clerk-expo(withclerk-prefix).
ClerkProvider must be placed inside <body>, not wrapping <html>:
// root layout.tsx
export default function RootLayout({ children }) {
return (
<html>
<body>
<ClerkProvider>{children}</ClerkProvider>
</body>
</html>
)
}
Core 2 ONLY (skip if current SDK):
ClerkProvidercan wrap<html>directly.
For dynamic rendering with auth data, use the dynamic prop:
<ClerkProvider dynamic>{children}</ClerkProvider>
Requires Node.js 20.9.0 or higher.
Core 2 ONLY (skip if current SDK): Minimum Node.js 18.17.0.
Themes are installed from @clerk/ui:
npm install @clerk/ui
Core 2 ONLY (skip if current SDK): Themes are from
@clerk/themesinstead of@clerk/ui.
If the project uses shadcn/ui (check for components.json in the project root), apply the shadcn theme so Clerk components match the app's design system:
npm install @clerk/ui
import { shadcn } from '@clerk/ui/themes'
<ClerkProvider appearance={{ theme: shadcn }}>{children}</ClerkProvider>
Also import the shadcn CSS in your global styles:
@import 'tailwindcss';
@import '@clerk/ui/themes/shadcn.css';
Core 2 ONLY (skip if current SDK): Import from
@clerk/themesand@clerk/themes/shadcn.cssinstead.
Run
clerk doctorfirst. It checks framework integration, env vars, middleware presence, and SDK install status. Fixes a lot of these in one shot.
| Issue | Solution |
|---|---|
Missing await on auth() | In Next.js 15+, auth() is async: const { userId } = await auth() |
Exposing CLERK_SECRET_KEY | Never use the secret key in client code; only NEXT_PUBLIC_* keys are safe |
| Missing middleware matcher | Include API routes: `matcher: ['/((?!.\.. |
| ClerkProvider placement | Must be inside <body> in root layout (Core 2: could wrap <html>) |
| Auth routes not public | Allow /sign-in, /sign-up in middleware config |
| Landing page requires auth | To keep "/" public, exclude it: `matcher: ['/((?!.\.. |
| Wrong import path | Server code uses @clerk/nextjs/server, client uses @clerk/nextjs |
| Wrong package name | Use @clerk/react not @clerk/clerk-react (Core 2 naming) |
clerk-custom-ui - Custom sign-in/up componentsclerk-nextjs-patterns - Advanced Next.js patternsclerk-react-patterns - React SPA patternsclerk-react-router-patterns - React Router patternsclerk-vue-patterns - Vue patternsclerk-nuxt-patterns - Nuxt patternsclerk-astro-patterns - Astro patternsclerk-tanstack-patterns - TanStack Start patternsclerk-expo-patterns - Expo patternsclerk-chrome-extension-patterns - Chrome Extension patternsclerk-orgs - B2B multi-tenant organizationsclerk-webhooks - Webhook → database syncclerk-testing - E2E testing setupclerk-swift - Native iOS authclerk-android - Native Android authclerk-backend-api - Backend REST API explorer