[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-clerk-clerk-testing":3,"mdc--rujly3-key":34,"related-org-clerk-clerk-testing":478,"related-repo-clerk-clerk-testing":675},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"clerk-testing","run E2E tests for Clerk apps","E2E testing for Clerk apps. Use with Playwright or Cypress for auth flow tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"clerk","Clerk","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fclerk.png",[12,14,17,20],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"E2E Testing","e2e-testing",{"name":18,"slug":19,"type":13},"Playwright","playwright",{"name":21,"slug":22,"type":13},"Testing","testing",59,"https:\u002F\u002Fgithub.com\u002Fclerk\u002Fskills","2026-04-10T05:00:12.957952","MIT",4,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"AI Skills to enhance working with Clerk","https:\u002F\u002Fgithub.com\u002Fclerk\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Ffeatures\u002Fclerk-testing","---\nname: clerk-testing\ndescription: E2E testing for Clerk apps. Use with Playwright or Cypress for auth flow\n  tests.\nallowed-tools: WebFetch\nlicense: MIT\nmetadata:\n  author: clerk\n  version: 1.2.0\ncompatibility: Requires CLERK_TESTING_TOKEN from Clerk dashboard\n---\n\n# Testing\n\n## Decision Tree\n\n| Framework | Documentation |\n|-----------|---------------|\n| Overview | https:\u002F\u002Fclerk.com\u002Fdocs\u002Fguides\u002Fdevelopment\u002Ftesting\u002Foverview |\n| Playwright | https:\u002F\u002Fclerk.com\u002Fdocs\u002Fguides\u002Fdevelopment\u002Ftesting\u002Fplaywright\u002Foverview |\n| Cypress | https:\u002F\u002Fclerk.com\u002Fdocs\u002Fguides\u002Fdevelopment\u002Ftesting\u002Fcypress\u002Foverview |\n\n## Mental Model\n\nTest auth = isolated session state. Each test needs fresh auth context.\n- `clerkSetup()` initializes test environment\n- `setupClerkTestingToken()` bypasses bot detection\n- `storageState` persists auth between tests for speed\n\n## Workflow\n\n1. Identify test framework (Playwright or Cypress)\n2. WebFetch the appropriate URL from decision tree above\n3. Follow official setup instructions\n4. Use `pk_test_*` and `sk_test_*` keys only\n\n## Best Practices\n\n- Use `setupClerkTestingToken()` before navigating to auth pages\n- Use test API keys: `pk_test_xxx`, `sk_test_xxx`\n- Save auth state with `storageState` for faster tests\n- Use `page.waitForSelector('[data-clerk-component]')` for Clerk UI\n\n## Anti-Patterns\n\n| Pattern | Problem | Fix |\n|---------|---------|-----|\n| Production keys in tests | Security risk | Use `pk_test_*` keys |\n| No `setupClerkTestingToken()` | Auth fails | Call before navigation |\n| UI-based sign-in every test | Slow tests | Use `storageState` |\n\n## Framework-Specific\n\n**Playwright**: Use `globalSetup` for auth state\n**Cypress**: Add `addClerkCommands({ Cypress, cy })` to support file\n\n## See Also\n\n- `clerk-setup` - Install Clerk before adding tests\n- `clerk-nextjs-patterns` - Next.js patterns being tested\n- [Demo Repo](https:\u002F\u002Fgithub.com\u002Fclerk\u002Fclerk-playwright-nextjs\u002Ftree\u002Fmain\u002Fe2e)\n",{"data":35,"body":40},{"name":4,"description":6,"allowed-tools":36,"license":26,"metadata":37,"compatibility":39},"WebFetch",{"author":8,"version":38},"1.2.0","Requires CLERK_TESTING_TOKEN from Clerk dashboard",{"type":41,"children":42},"root",[43,50,57,137,143,149,188,194,234,240,297,303,399,405,437,443],{"type":44,"tag":45,"props":46,"children":47},"element","h1",{"id":22},[48],{"type":49,"value":21},"text",{"type":44,"tag":51,"props":52,"children":54},"h2",{"id":53},"decision-tree",[55],{"type":49,"value":56},"Decision Tree",{"type":44,"tag":58,"props":59,"children":60},"table",{},[61,80],{"type":44,"tag":62,"props":63,"children":64},"thead",{},[65],{"type":44,"tag":66,"props":67,"children":68},"tr",{},[69,75],{"type":44,"tag":70,"props":71,"children":72},"th",{},[73],{"type":49,"value":74},"Framework",{"type":44,"tag":70,"props":76,"children":77},{},[78],{"type":49,"value":79},"Documentation",{"type":44,"tag":81,"props":82,"children":83},"tbody",{},[84,104,120],{"type":44,"tag":66,"props":85,"children":86},{},[87,93],{"type":44,"tag":88,"props":89,"children":90},"td",{},[91],{"type":49,"value":92},"Overview",{"type":44,"tag":88,"props":94,"children":95},{},[96],{"type":44,"tag":97,"props":98,"children":102},"a",{"href":99,"rel":100},"https:\u002F\u002Fclerk.com\u002Fdocs\u002Fguides\u002Fdevelopment\u002Ftesting\u002Foverview",[101],"nofollow",[103],{"type":49,"value":99},{"type":44,"tag":66,"props":105,"children":106},{},[107,111],{"type":44,"tag":88,"props":108,"children":109},{},[110],{"type":49,"value":18},{"type":44,"tag":88,"props":112,"children":113},{},[114],{"type":44,"tag":97,"props":115,"children":118},{"href":116,"rel":117},"https:\u002F\u002Fclerk.com\u002Fdocs\u002Fguides\u002Fdevelopment\u002Ftesting\u002Fplaywright\u002Foverview",[101],[119],{"type":49,"value":116},{"type":44,"tag":66,"props":121,"children":122},{},[123,128],{"type":44,"tag":88,"props":124,"children":125},{},[126],{"type":49,"value":127},"Cypress",{"type":44,"tag":88,"props":129,"children":130},{},[131],{"type":44,"tag":97,"props":132,"children":135},{"href":133,"rel":134},"https:\u002F\u002Fclerk.com\u002Fdocs\u002Fguides\u002Fdevelopment\u002Ftesting\u002Fcypress\u002Foverview",[101],[136],{"type":49,"value":133},{"type":44,"tag":51,"props":138,"children":140},{"id":139},"mental-model",[141],{"type":49,"value":142},"Mental Model",{"type":44,"tag":144,"props":145,"children":146},"p",{},[147],{"type":49,"value":148},"Test auth = isolated session state. Each test needs fresh auth context.",{"type":44,"tag":150,"props":151,"children":152},"ul",{},[153,166,177],{"type":44,"tag":154,"props":155,"children":156},"li",{},[157,164],{"type":44,"tag":158,"props":159,"children":161},"code",{"className":160},[],[162],{"type":49,"value":163},"clerkSetup()",{"type":49,"value":165}," initializes test environment",{"type":44,"tag":154,"props":167,"children":168},{},[169,175],{"type":44,"tag":158,"props":170,"children":172},{"className":171},[],[173],{"type":49,"value":174},"setupClerkTestingToken()",{"type":49,"value":176}," bypasses bot detection",{"type":44,"tag":154,"props":178,"children":179},{},[180,186],{"type":44,"tag":158,"props":181,"children":183},{"className":182},[],[184],{"type":49,"value":185},"storageState",{"type":49,"value":187}," persists auth between tests for speed",{"type":44,"tag":51,"props":189,"children":191},{"id":190},"workflow",[192],{"type":49,"value":193},"Workflow",{"type":44,"tag":195,"props":196,"children":197},"ol",{},[198,203,208,213],{"type":44,"tag":154,"props":199,"children":200},{},[201],{"type":49,"value":202},"Identify test framework (Playwright or Cypress)",{"type":44,"tag":154,"props":204,"children":205},{},[206],{"type":49,"value":207},"WebFetch the appropriate URL from decision tree above",{"type":44,"tag":154,"props":209,"children":210},{},[211],{"type":49,"value":212},"Follow official setup instructions",{"type":44,"tag":154,"props":214,"children":215},{},[216,218,224,226,232],{"type":49,"value":217},"Use ",{"type":44,"tag":158,"props":219,"children":221},{"className":220},[],[222],{"type":49,"value":223},"pk_test_*",{"type":49,"value":225}," and ",{"type":44,"tag":158,"props":227,"children":229},{"className":228},[],[230],{"type":49,"value":231},"sk_test_*",{"type":49,"value":233}," keys only",{"type":44,"tag":51,"props":235,"children":237},{"id":236},"best-practices",[238],{"type":49,"value":239},"Best Practices",{"type":44,"tag":150,"props":241,"children":242},{},[243,254,273,285],{"type":44,"tag":154,"props":244,"children":245},{},[246,247,252],{"type":49,"value":217},{"type":44,"tag":158,"props":248,"children":250},{"className":249},[],[251],{"type":49,"value":174},{"type":49,"value":253}," before navigating to auth pages",{"type":44,"tag":154,"props":255,"children":256},{},[257,259,265,267],{"type":49,"value":258},"Use test API keys: ",{"type":44,"tag":158,"props":260,"children":262},{"className":261},[],[263],{"type":49,"value":264},"pk_test_xxx",{"type":49,"value":266},", ",{"type":44,"tag":158,"props":268,"children":270},{"className":269},[],[271],{"type":49,"value":272},"sk_test_xxx",{"type":44,"tag":154,"props":274,"children":275},{},[276,278,283],{"type":49,"value":277},"Save auth state with ",{"type":44,"tag":158,"props":279,"children":281},{"className":280},[],[282],{"type":49,"value":185},{"type":49,"value":284}," for faster tests",{"type":44,"tag":154,"props":286,"children":287},{},[288,289,295],{"type":49,"value":217},{"type":44,"tag":158,"props":290,"children":292},{"className":291},[],[293],{"type":49,"value":294},"page.waitForSelector('[data-clerk-component]')",{"type":49,"value":296}," for Clerk UI",{"type":44,"tag":51,"props":298,"children":300},{"id":299},"anti-patterns",[301],{"type":49,"value":302},"Anti-Patterns",{"type":44,"tag":58,"props":304,"children":305},{},[306,327],{"type":44,"tag":62,"props":307,"children":308},{},[309],{"type":44,"tag":66,"props":310,"children":311},{},[312,317,322],{"type":44,"tag":70,"props":313,"children":314},{},[315],{"type":49,"value":316},"Pattern",{"type":44,"tag":70,"props":318,"children":319},{},[320],{"type":49,"value":321},"Problem",{"type":44,"tag":70,"props":323,"children":324},{},[325],{"type":49,"value":326},"Fix",{"type":44,"tag":81,"props":328,"children":329},{},[330,354,377],{"type":44,"tag":66,"props":331,"children":332},{},[333,338,343],{"type":44,"tag":88,"props":334,"children":335},{},[336],{"type":49,"value":337},"Production keys in tests",{"type":44,"tag":88,"props":339,"children":340},{},[341],{"type":49,"value":342},"Security risk",{"type":44,"tag":88,"props":344,"children":345},{},[346,347,352],{"type":49,"value":217},{"type":44,"tag":158,"props":348,"children":350},{"className":349},[],[351],{"type":49,"value":223},{"type":49,"value":353}," keys",{"type":44,"tag":66,"props":355,"children":356},{},[357,367,372],{"type":44,"tag":88,"props":358,"children":359},{},[360,362],{"type":49,"value":361},"No ",{"type":44,"tag":158,"props":363,"children":365},{"className":364},[],[366],{"type":49,"value":174},{"type":44,"tag":88,"props":368,"children":369},{},[370],{"type":49,"value":371},"Auth fails",{"type":44,"tag":88,"props":373,"children":374},{},[375],{"type":49,"value":376},"Call before navigation",{"type":44,"tag":66,"props":378,"children":379},{},[380,385,390],{"type":44,"tag":88,"props":381,"children":382},{},[383],{"type":49,"value":384},"UI-based sign-in every test",{"type":44,"tag":88,"props":386,"children":387},{},[388],{"type":49,"value":389},"Slow tests",{"type":44,"tag":88,"props":391,"children":392},{},[393,394],{"type":49,"value":217},{"type":44,"tag":158,"props":395,"children":397},{"className":396},[],[398],{"type":49,"value":185},{"type":44,"tag":51,"props":400,"children":402},{"id":401},"framework-specific",[403],{"type":49,"value":404},"Framework-Specific",{"type":44,"tag":144,"props":406,"children":407},{},[408,413,415,421,423,427,429,435],{"type":44,"tag":409,"props":410,"children":411},"strong",{},[412],{"type":49,"value":18},{"type":49,"value":414},": Use ",{"type":44,"tag":158,"props":416,"children":418},{"className":417},[],[419],{"type":49,"value":420},"globalSetup",{"type":49,"value":422}," for auth state\n",{"type":44,"tag":409,"props":424,"children":425},{},[426],{"type":49,"value":127},{"type":49,"value":428},": Add ",{"type":44,"tag":158,"props":430,"children":432},{"className":431},[],[433],{"type":49,"value":434},"addClerkCommands({ Cypress, cy })",{"type":49,"value":436}," to support file",{"type":44,"tag":51,"props":438,"children":440},{"id":439},"see-also",[441],{"type":49,"value":442},"See Also",{"type":44,"tag":150,"props":444,"children":445},{},[446,457,468],{"type":44,"tag":154,"props":447,"children":448},{},[449,455],{"type":44,"tag":158,"props":450,"children":452},{"className":451},[],[453],{"type":49,"value":454},"clerk-setup",{"type":49,"value":456}," - Install Clerk before adding tests",{"type":44,"tag":154,"props":458,"children":459},{},[460,466],{"type":44,"tag":158,"props":461,"children":463},{"className":462},[],[464],{"type":49,"value":465},"clerk-nextjs-patterns",{"type":49,"value":467}," - Next.js patterns being tested",{"type":44,"tag":154,"props":469,"children":470},{},[471],{"type":44,"tag":97,"props":472,"children":475},{"href":473,"rel":474},"https:\u002F\u002Fgithub.com\u002Fclerk\u002Fclerk-playwright-nextjs\u002Ftree\u002Fmain\u002Fe2e",[101],[476],{"type":49,"value":477},"Demo Repo",{"items":479,"total":674},[480,496,511,529,547,563,581,598,614,631,645,659],{"slug":8,"name":8,"fn":481,"description":482,"org":483,"tags":484,"stars":23,"repoUrl":24,"updatedAt":495},"route Clerk authentication requests","Clerk authentication router. Use when user asks about Clerk CLI operations, adding authentication, setting up Clerk, custom sign-in flows, Swift or native iOS auth, native Android auth, Next.js patterns, React patterns, Vue patterns, Nuxt patterns, Astro patterns, TanStack Start patterns, Expo patterns, React Router patterns, Chrome Extension patterns, organizations, billing, subscriptions, payments, pricing, plans, seat-based pricing, feature entitlements, syncing users, testing, impersonating a user, or testing webhooks locally. Automatically routes to the specific skill based on their task.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[485,488,489,492],{"name":486,"slug":487,"type":13},"Authentication","authentication",{"name":9,"slug":8,"type":13},{"name":490,"slug":491,"type":13},"Mobile","mobile",{"name":493,"slug":494,"type":13},"Web Development","web-development","2026-07-18T05:12:23.438307",{"slug":497,"name":497,"fn":498,"description":499,"org":500,"tags":501,"stars":23,"repoUrl":24,"updatedAt":510},"clerk-android","implement Clerk auth for native Android apps","Implement Clerk authentication for native Android apps using Kotlin and Jetpack Compose with clerk-android source-guided patterns. Use for prebuilt AuthView\u002FUserButton or custom API-driven auth flows. Do not use for Expo or React Native projects.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[502,505,506,509],{"name":503,"slug":504,"type":13},"Android","android",{"name":9,"slug":8,"type":13},{"name":507,"slug":508,"type":13},"Kotlin","kotlin",{"name":490,"slug":491,"type":13},"2026-04-10T05:00:18.622871",{"slug":512,"name":512,"fn":513,"description":514,"org":515,"tags":516,"stars":23,"repoUrl":24,"updatedAt":528},"clerk-astro-patterns","implement Clerk auth in Astro apps","Astro patterns with Clerk — middleware, SSR pages, island components, API routes, static vs SSR rendering. Triggers on: astro clerk, clerk astro middleware, astro protected page, clerk island component, astro API route auth, clerk astro SSR.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[517,520,521,522,525],{"name":518,"slug":519,"type":13},"Astro","astro",{"name":486,"slug":487,"type":13},{"name":9,"slug":8,"type":13},{"name":523,"slug":524,"type":13},"Frontend","frontend",{"name":526,"slug":527,"type":13},"Serverless","serverless","2026-04-07T04:46:14.731808",{"slug":530,"name":530,"fn":531,"description":532,"org":533,"tags":534,"stars":23,"repoUrl":24,"updatedAt":546},"clerk-backend-api","execute Clerk Backend API requests","Clerk Backend REST API explorer and executor. Browse tags, inspect endpoint schemas, and execute authenticated requests. Use when listing users, managing organizations, or calling any Clerk API endpoint.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[535,538,539,542,543],{"name":536,"slug":537,"type":13},"API Development","api-development",{"name":486,"slug":487,"type":13},{"name":540,"slug":541,"type":13},"Backend","backend",{"name":9,"slug":8,"type":13},{"name":544,"slug":545,"type":13},"REST API","rest-api","2026-04-10T05:00:08.728072",{"slug":548,"name":548,"fn":549,"description":550,"org":551,"tags":552,"stars":23,"repoUrl":24,"updatedAt":562},"clerk-billing","manage subscriptions with Clerk Billing","Clerk Billing for subscription management - render Clerk's PricingTable and in-app checkout drawer, configure subscription plans, seat-limit plans for B2B, feature entitlements with has(), and billing webhooks. Use for SaaS monetization, plan gating, checkout flows, trials, invoicing, and subscription lifecycle management.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[553,554,555,556,559],{"name":486,"slug":487,"type":13},{"name":9,"slug":8,"type":13},{"name":523,"slug":524,"type":13},{"name":557,"slug":558,"type":13},"Payments","payments",{"name":560,"slug":561,"type":13},"SaaS","saas","2026-04-29T05:37:27.130955",{"slug":564,"name":564,"fn":565,"description":566,"org":567,"tags":568,"stars":23,"repoUrl":24,"updatedAt":580},"clerk-chrome-extension-patterns","implement Clerk auth in Chrome Extensions","Chrome Extension auth with @clerk\u002Fchrome-extension -- popup\u002Fsidepanel setup, syncHost for OAuth\u002FSAML via web app, createClerkClient for service workers and headless extensions, stable CRX ID. Triggers on: Chrome extension auth, Plasmo clerk, popup sign-in, syncHost, background service worker token, createClerkClient, headless extension.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[569,572,573,574,577],{"name":570,"slug":571,"type":13},"Auth","auth",{"name":9,"slug":8,"type":13},{"name":523,"slug":524,"type":13},{"name":575,"slug":576,"type":13},"OAuth","oauth",{"name":578,"slug":579,"type":13},"Security","security","2026-04-07T04:46:08.489328",{"slug":582,"name":582,"fn":583,"description":584,"org":585,"tags":586,"stars":23,"repoUrl":24,"updatedAt":597},"clerk-cli","manage Clerk authentication and instances via CLI","Operate the Clerk CLI (`clerk` binary) for authentication, user\u002Forg\u002Fsession management, impersonation, local webhook testing, deploy verification, instance config, env keys, feature toggles, and any Clerk Backend, Platform, or Frontend API call. Use when the user mentions Clerk management tasks, \"list clerk users\", \"impersonate a user\", \"test webhooks locally\", \"enable orgs\", \"enable billing\", \"clerk env pull\", \"clerk doctor\", \"clerk deploy\", \"clerk api\", or any ad-hoc Clerk API request. Prefer the CLI over raw HTTP: it handles auth, key resolution, app\u002Finstance targeting, and formatting automatically.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[587,588,589,590,593,596],{"name":536,"slug":537,"type":13},{"name":486,"slug":487,"type":13},{"name":9,"slug":8,"type":13},{"name":591,"slug":592,"type":13},"CLI","cli",{"name":594,"slug":595,"type":13},"Deployment","deployment",{"name":578,"slug":579,"type":13},"2026-07-31T05:52:40.580813",{"slug":599,"name":599,"fn":600,"description":601,"org":602,"tags":603,"stars":23,"repoUrl":24,"updatedAt":613},"clerk-custom-ui","customize Clerk UI and auth flows","Custom authentication flows and component appearance - hooks (useSignIn, useSignUp), themes, colors, fonts, CSS. Use for custom sign-in\u002Fsign-up flows, appearance styling, visual customization, branding.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[604,605,608,609,612],{"name":486,"slug":487,"type":13},{"name":606,"slug":607,"type":13},"Branding","branding",{"name":9,"slug":8,"type":13},{"name":610,"slug":611,"type":13},"Design","design",{"name":523,"slug":524,"type":13},"2026-04-10T05:00:10.109158",{"slug":615,"name":615,"fn":616,"description":617,"org":618,"tags":619,"stars":23,"repoUrl":24,"updatedAt":630},"clerk-expo","implement Clerk authentication in Expo apps","Add Clerk authentication to Expo and React Native apps using @clerk\u002Fexpo. Use for Expo setup, prebuilt native components (AuthView, UserButton), custom sign-in\u002Fsign-up flows (email, password, SMS\u002Fphone OTP, MFA), OAuth\u002FSSO, native Google\u002FApple sign-in, Expo Router protected routes, biometrics, and push notifications. Do not use for native Swift\u002FiOS, native Android\u002FKotlin, or web-only framework projects.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[620,621,622,625,626,627],{"name":486,"slug":487,"type":13},{"name":9,"slug":8,"type":13},{"name":623,"slug":624,"type":13},"Expo","expo",{"name":523,"slug":524,"type":13},{"name":490,"slug":491,"type":13},{"name":628,"slug":629,"type":13},"React Native","react-native","2026-05-19T06:48:47.074181",{"slug":465,"name":465,"fn":632,"description":633,"org":634,"tags":635,"stars":23,"repoUrl":24,"updatedAt":644},"implement advanced Next.js patterns with Clerk","Advanced Next.js patterns - middleware, Server Actions, caching with Clerk.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[636,637,638,641],{"name":9,"slug":8,"type":13},{"name":523,"slug":524,"type":13},{"name":639,"slug":640,"type":13},"Next.js","next-js",{"name":642,"slug":643,"type":13},"Performance","performance","2026-04-10T05:00:15.80215",{"slug":646,"name":646,"fn":647,"description":648,"org":649,"tags":650,"stars":23,"repoUrl":24,"updatedAt":658},"clerk-nuxt-patterns","implement Clerk auth in Nuxt 3 apps","Nuxt 3 auth patterns with @clerk\u002Fnuxt - middleware, composables, server API routes, SSR. Triggers on: Nuxt auth, useAuth composable, clerkMiddleware Nuxt, server API Clerk, Nuxt route protection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[651,652,653,654,655],{"name":486,"slug":487,"type":13},{"name":540,"slug":541,"type":13},{"name":9,"slug":8,"type":13},{"name":523,"slug":524,"type":13},{"name":656,"slug":657,"type":13},"Nuxt","nuxt","2026-04-07T04:46:18.337538",{"slug":660,"name":660,"fn":661,"description":662,"org":663,"tags":664,"stars":23,"repoUrl":24,"updatedAt":673},"clerk-orgs","manage Clerk Organizations for B2B SaaS","Clerk Organizations for B2B SaaS - create multi-tenant apps with org switching, role-based access, verified domains, and enterprise SSO. Use for team workspaces, RBAC, org-based routing, member management.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[665,666,669,672],{"name":9,"slug":8,"type":13},{"name":667,"slug":668,"type":13},"Multi-Tenant","multi-tenant",{"name":670,"slug":671,"type":13},"RBAC","rbac",{"name":560,"slug":561,"type":13},"2026-04-10T05:00:14.40165",20,{"items":676,"total":674},[677,684,691,699,707,715,723],{"slug":8,"name":8,"fn":481,"description":482,"org":678,"tags":679,"stars":23,"repoUrl":24,"updatedAt":495},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[680,681,682,683],{"name":486,"slug":487,"type":13},{"name":9,"slug":8,"type":13},{"name":490,"slug":491,"type":13},{"name":493,"slug":494,"type":13},{"slug":497,"name":497,"fn":498,"description":499,"org":685,"tags":686,"stars":23,"repoUrl":24,"updatedAt":510},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[687,688,689,690],{"name":503,"slug":504,"type":13},{"name":9,"slug":8,"type":13},{"name":507,"slug":508,"type":13},{"name":490,"slug":491,"type":13},{"slug":512,"name":512,"fn":513,"description":514,"org":692,"tags":693,"stars":23,"repoUrl":24,"updatedAt":528},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[694,695,696,697,698],{"name":518,"slug":519,"type":13},{"name":486,"slug":487,"type":13},{"name":9,"slug":8,"type":13},{"name":523,"slug":524,"type":13},{"name":526,"slug":527,"type":13},{"slug":530,"name":530,"fn":531,"description":532,"org":700,"tags":701,"stars":23,"repoUrl":24,"updatedAt":546},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[702,703,704,705,706],{"name":536,"slug":537,"type":13},{"name":486,"slug":487,"type":13},{"name":540,"slug":541,"type":13},{"name":9,"slug":8,"type":13},{"name":544,"slug":545,"type":13},{"slug":548,"name":548,"fn":549,"description":550,"org":708,"tags":709,"stars":23,"repoUrl":24,"updatedAt":562},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[710,711,712,713,714],{"name":486,"slug":487,"type":13},{"name":9,"slug":8,"type":13},{"name":523,"slug":524,"type":13},{"name":557,"slug":558,"type":13},{"name":560,"slug":561,"type":13},{"slug":564,"name":564,"fn":565,"description":566,"org":716,"tags":717,"stars":23,"repoUrl":24,"updatedAt":580},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[718,719,720,721,722],{"name":570,"slug":571,"type":13},{"name":9,"slug":8,"type":13},{"name":523,"slug":524,"type":13},{"name":575,"slug":576,"type":13},{"name":578,"slug":579,"type":13},{"slug":582,"name":582,"fn":583,"description":584,"org":724,"tags":725,"stars":23,"repoUrl":24,"updatedAt":597},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[726,727,728,729,730,731],{"name":536,"slug":537,"type":13},{"name":486,"slug":487,"type":13},{"name":9,"slug":8,"type":13},{"name":591,"slug":592,"type":13},{"name":594,"slug":595,"type":13},{"name":578,"slug":579,"type":13}]