.agents/skills/clerk-setup/SKILL.md
Add Clerk authentication to any project by following the official quickstart guides.
npx skillsauth add growupanand/convoform clerk-setupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill sets up Clerk for authentication by following the official quickstart documentation.
| Step | Action |
|------|--------|
| 1. Detect framework | Check package.json dependencies |
| 2. Fetch quickstart | Use WebFetch on the appropriate docs URL |
| 3. Follow instructions | Execute the steps from the official guide |
| 4. Get API keys | From dashboard.clerk.com |
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 | https://clerk.com/docs/remix/getting-started/quickstart |
| astro | Astro | https://clerk.com/docs/astro/getting-started/quickstart |
| nuxt | Nuxt | https://clerk.com/docs/nuxt/getting-started/quickstart |
| react-router | React Router | https://clerk.com/docs/react-router/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 current auth → Create migration plan
│ │ → See "Migrating from Another Auth Provider"
│ │
│ └─ NO → Fresh install
│
├─ Identify framework from dependencies
│
├─ WebFetch the appropriate quickstart URL
│
└─ Follow the official instructions step-by-step
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:
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:
| Level | Issue | Solution |
|-------|-------|----------|
| CRITICAL | Missing await on auth() | In Next.js 15+, auth() is async: const { userId } = await auth() |
| CRITICAL | Exposing CLERK_SECRET_KEY | Never use secret key in client code; only NEXT_PUBLIC_* keys are safe |
| HIGH | Missing middleware matcher | Include API routes: matcher: ['/((?!.*\\..*|_next).*)', '/'] |
| HIGH | ClerkProvider not at root | Must wrap entire app in root layout/App component |
| HIGH | Auth routes not public | Allow /sign-in, /sign-up in middleware config |
| HIGH | Landing page requires auth | To keep "/" public, exclude it: matcher: ['/((?!.*\\..*|_next|^/$).*)', '/api/(.*)'] |
| MEDIUM | Wrong import path | Server code uses @clerk/nextjs/server, client uses @clerk/nextjs |
custom-flows/ - Custom sign-in/up componentssyncing-users/ - Webhook → database syncmanaging-orgs/ - B2B multi-tenant organizationstesting/ - E2E testing setupnextjs-patterns/ - Advanced Next.js patternsdevelopment
Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
development
React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.
development
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
development
React composition patterns that scale. Use when refactoring components with boolean prop proliferation, building flexible component libraries, or designing reusable APIs. Triggers on tasks involving compound components, render props, context providers, or component architecture. Includes React 19 API changes.