Loading...
Loading...
Add Clerk authentication to any project by following the official quickstart guides.
npx skill4agent add clerk/skills clerk-setup| Step | Action |
|---|---|
| 1. Detect framework | Check |
| 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 |
package.json| Dependency | Framework | Quickstart URL |
|---|---|---|
| Next.js | |
| Remix | |
| Astro | |
| Nuxt | |
| React Router | |
| TanStack Start | |
| React SPA | |
| Vue | |
| Express | |
| Fastify | |
| Expo | |
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-steppackage.jsonWebFetch: https://clerk.com/docs/{framework}/getting-started/quickstart
Prompt: "Extract the complete setup instructions including all code snippets, file paths, and configuration steps."pk_test_pk_live_sk_test_sk_live_NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEYpackage.jsonnext-auth@auth/core@supabase/supabase-jsfirebasefirebase-admin@aws-amplify/authauth0@auth0/nextjs-auth0passportexternal_id| Level | Issue | Solution |
|---|---|---|
| CRITICAL | Missing | In Next.js 15+, |
| CRITICAL | Exposing | Never use secret key in client code; only |
| HIGH | Missing middleware matcher | Include API routes: `matcher: ['/((?!.\.. |
| HIGH | ClerkProvider not at root | Must wrap entire app in root layout/App component |
| HIGH | Auth routes not public | Allow |
| HIGH | Landing page requires auth | To keep "/" public, exclude it: `matcher: ['/((?!.\.. |
| MEDIUM | Wrong import path | Server code uses |
custom-flows/syncing-users/managing-orgs/testing/nextjs-patterns/