Agent skill

Clerk Chrome Extension Patterns

by geekskai in geekskai/blog

Chrome Extension auth with @clerk/chrome-extension -- popup/sidepanel setup, syncHost for OAuth/SAML via web app, createClerkClient for service workers and headless extensions, stable CRX ID.

MITAuto-check: notesDevelopment

Install Clerk Chrome Extension Patterns

skills CLI
$ npx skills add geekskai/blog --skill clerk-chrome-extension-patterns -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install geekskai/blog clerk-chrome-extension-patterns --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/geekskai/blog.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/clerk-chrome-extension-patterns .claude/skills/clerk-chrome-extension-patterns && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
clerk-chrome-extension-patterns
GitHub stars
103
Token cost
~2.9k tokens
SKILL.md length
749 words
Files
9 (incl. references)
Skills in repo
20
Repo updated
First seen
Licence
MIT

At a glance

Chrome Extension auth with @clerk/chrome-extension -- popup/sidepanel setup, syncHost for OAuth/SAML via web app, createClerkClient for service workers and headless extensions, stable CRX ID.

  • Works in 8 steps: OAuth (Google, GitHub, etc.) and SAML… → Email links (magic links) don't work in… → Side panels don't auto-refresh auth… → …
  • : Chrome extension auth
  • SKILL.md covers CRITICAL RULES, Authentication Options, Quick Start (Plasmo) and syncHost -- Sync Auth with Web…, plus 8 more sections
  • Calls npx, npm and curl; reaches api.clerk.com; needs PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY and PUBLISHABLE_KEY

What it does

Clerk Chrome Extension Patterns is an agent skill from geekskai/blog. Chrome Extension auth with @clerk/chrome-extension -- popup/sidepanel setup, syncHost for OAuth/SAML 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.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including reference files (for example `evals/evals.json`, `references/content-scripts.md` and `references/create-clerk-client.md`). Compatibility notes: Requires PLASMOPUBLICCLERKPUBLISHABLEKEY (Plasmo prefix for public env vars) and CLERKFRONTENDAPI.

It sits in Development, covering Browser extensions. It works with Chrome Extensions. The repository describes itself as: 🚀 2026 Most Popular FREE Blog Template! Next.js 14, Zero Code - Just Write & Deploy | 2026最火免费博客模板!支持Markdown,一键部署,极致性能!⚡️ ✨ Write in Markdown, get your professional blog in…. The licence is MIT.

When your agent uses it

  • : Chrome extension auth
  • Background service worker token
  • CreateClerkClient
  • Headless extension

Example prompts

  • “/clerk-chrome-extension-patterns”

Requirements

  • Node.js
  • A credential in PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY
  • A credential in PUBLISHABLE_KEY
  • Compatibility (from SKILL.md): Requires PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY (Plasmo prefix for public env vars) and CLERK_FRONTEND_API.
  • Pre-approved tools (allowed-tools): WebFetch

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. OAuth (Google, GitHub, etc.) and SAML are NOT supported in popups or side panels -- use syncHost to delegate auth to your web app
  2. Email links (magic links) don't work in popups -- the popup closes when the user clicks outside, resetting sign-in state
  3. Side panels don't auto-refresh auth state -- users must close and reopen the side panel after signing in via the web app
  4. Service workers and content scripts have NO access to Clerk React hooks -- use createClerkClient() or message passing
  5. Extension URLs use chrome-extension:// not http:// -- all redirect URLs must use chrome.runtime.getURL('.')
  6. Without a stable CRX ID, every rebuild breaks auth -- configure key in manifest BEFORE deploying
  7. Content scripts cannot use Clerk directly due to origin restrictions -- Clerk enforces strict allowed origins
  8. Bot protection must be DISABLED in Clerk Dashboard -- Cloudflare bot detection is not supported in extension environments

What it can do on your machine

Read from SKILL.md and the folder at commit e5554c5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • WebFetch

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx
    • npm
    • curl
    • openssl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.clerk.com

    Also links to:

    • itero.plasmo.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY
    • PUBLISHABLE_KEY
    • CRX_PUBLIC_KEY
    • GET_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY (Plasmo prefix for public env vars) and CLERK_FRONTEND_API.

    From compatibility in the SKILL.md frontmatter.

Context cost

Clerk Chrome Extension Patterns loads about 2.9k tokens when it runs, and up to ~6.7k if it reads all its reference files. Until then it costs about 93 tokens; SKILL.md has 749 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~93
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~6.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:59
    `.env.development`:
  • NoteMentions a .env fileSKILL.md:108
    `.env.development`:
  • NoteMentions a .env fileSKILL.md:115
    `.env.production`:
  • NoteMentions a .env fileSKILL.md:298
    **`.env.chrome`:**
  • NoteMentions a .env fileSKILL.md:355
    X ID rotated | Configure stable key via `.env.chrome` |
  • NoteMentions a .env fileSKILL.md:356
    _` var undefined | Wrong env file | Use `.env.development`, not `.env` |

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from geekskai/blog at commit e5554c5, republished under its MIT licence (© geekskai). 749 words, ~2,915 tokens.

Download SKILL.mdSave it as .claude/skills/clerk-chrome-extension-patterns/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.
name
clerk-chrome-extension-patterns
description
Chrome Extension auth with @clerk/chrome-extension -- popup/sidepanel setup, syncHost for OAuth/SAML 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.
allowed-tools
WebFetch
compatibility
Requires PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY (Plasmo prefix for public env vars) and CLERK_FRONTEND_API.
license
MIT
metadata.author
clerk
metadata.version
2.0.0
metadata.references
references/sync-host.md, references/create-clerk-client.md, references/content-scripts.md, references/headless-extension.md

Chrome Extension Patterns

CRITICAL RULES

  1. OAuth (Google, GitHub, etc.) and SAML are NOT supported in popups or side panels -- use syncHost to delegate auth to your web app
  2. Email links (magic links) don't work in popups -- the popup closes when the user clicks outside, resetting sign-in state
  3. Side panels don't auto-refresh auth state -- users must close and reopen the side panel after signing in via the web app
  4. Service workers and content scripts have NO access to Clerk React hooks -- use createClerkClient() or message passing
  5. Extension URLs use chrome-extension:// not http:// -- all redirect URLs must use chrome.runtime.getURL('.')
  6. Without a stable CRX ID, every rebuild breaks auth -- configure key in manifest BEFORE deploying
  7. Content scripts cannot use Clerk directly due to origin restrictions -- Clerk enforces strict allowed origins
  8. Bot protection must be DISABLED in Clerk Dashboard -- Cloudflare bot detection is not supported in extension environments

Authentication Options

MethodPopupSide PanelsyncHost (with web app)
Email + OTPYesYesYes
Email + LinkNoNoYes
Email + PasswordYesYesYes
Username + PasswordYesYesYes
SMS + OTPYesYesYes
OAuth (Google, GitHub, etc.)NONOYES
SAMLNONOYES
PasskeysYesYesYes
Google One TapNoNoYes
Web3NoNoYes

Quick Start (Plasmo)

bash
npx create-plasmo --with-tailwindcss --with-src my-extension
cd my-extension
npm install @clerk/chrome-extension

Enable Native API in Clerk Dashboard under Native applications. Required for all extension integrations.

.env.development:

PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_...
CLERK_FRONTEND_API=https://your-app.clerk.accounts.dev

src/popup.tsx:

tsx
import { ClerkProvider, Show, SignInButton, SignUpButton, UserButton } from '@clerk/chrome-extension'

const PUBLISHABLE_KEY = process.env.PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY
const EXTENSION_URL = chrome.runtime.getURL('.')

if (!PUBLISHABLE_KEY) {
  throw new Error('Missing PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY')
}

function IndexPopup() {
  return (
    <ClerkProvider
      publishableKey={PUBLISHABLE_KEY}
      afterSignOutUrl={`${EXTENSION_URL}/popup.html`}
      signInFallbackRedirectUrl={`${EXTENSION_URL}/popup.html`}
      signUpFallbackRedirectUrl={`${EXTENSION_URL}/popup.html`}
    >
      <Show when="signed-out">
        <SignInButton mode="modal" />
        <SignUpButton mode="modal" />
      </Show>
      <Show when="signed-in">
        <UserButton />
      </Show>
    </ClerkProvider>
  )
}

export default IndexPopup

Use mode="modal" for SignInButton -- navigating to a separate page breaks the popup flow.

syncHost -- Sync Auth with Web App

Use this when you need OAuth, SAML, or want the extension to reflect sign-in from your web app.

How it works: The extension reads the Clerk session cookie from your web app's domain via host_permissions.

Step 1 -- Environment variables:

.env.development:

PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_...
CLERK_FRONTEND_API=https://your-app.clerk.accounts.dev
PLASMO_PUBLIC_CLERK_SYNC_HOST=http://localhost

.env.production:

PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_live_...
CLERK_FRONTEND_API=https://clerk.your-domain.com
PLASMO_PUBLIC_CLERK_SYNC_HOST=https://clerk.your-domain.com

Step 2 -- Add syncHost prop:

tsx
const SYNC_HOST = process.env.PLASMO_PUBLIC_CLERK_SYNC_HOST

<ClerkProvider
  publishableKey={PUBLISHABLE_KEY}
  syncHost={SYNC_HOST}
  afterSignOutUrl="/"
  routerPush={(to) => navigate(to)}
  routerReplace={(to) => navigate(to, { replace: true })}
>

Step 3 -- Configure host_permissions in package.json:

json
{
  "manifest": {
    "key": "$CRX_PUBLIC_KEY",
    "permissions": ["cookies", "storage"],
    "host_permissions": [
      "$PLASMO_PUBLIC_CLERK_SYNC_HOST/*",
      "$CLERK_FRONTEND_API/*"
    ]
  }
}

Step 4 -- Add extension ID to web app's allowed origins via Clerk API:

bash
curl -X PATCH https://api.clerk.com/v1/instance \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -H "Content-type: application/json" \
  -d '{"allowed_origins": ["chrome-extension://YOUR_EXTENSION_ID"]}'

Hide unsupported auth methods in popup when using syncHost:

tsx
<SignIn
  appearance={{
    elements: {
      socialButtonsRoot: 'plasmo-hidden',
      dividerRow: 'plasmo-hidden',
    },
  }}
/>

Full guide: references/sync-host.md

createClerkClient() for Vanilla JS / Service Workers

Import from @clerk/chrome-extension/client (not @clerk/chrome-extension).

Background service worker (src/background/index.ts):

typescript
import { createClerkClient } from '@clerk/chrome-extension/client'

const publishableKey = process.env.PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY

async function getToken(): Promise<string | null> {
  const clerk = await createClerkClient({
    publishableKey,
    background: true,
  })
  if (!clerk.session) return null
  return await clerk.session.getToken()
}

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  getToken()
    .then((token) => sendResponse({ token }))
    .catch((error) => {
      console.error('[Background] Error:', JSON.stringify(error))
      sendResponse({ token: null })
    })
  return true
})

The background: true flag keeps sessions fresh even when popup/sidepanel is closed. Without it, tokens expire after 60 seconds.

Popup with vanilla JS (src/popup.ts):

typescript
import { createClerkClient } from '@clerk/chrome-extension/client'

const EXTENSION_URL = chrome.runtime.getURL('.')
const POPUP_URL = `${EXTENSION_URL}popup.html`

const clerk = createClerkClient({ publishableKey })

clerk.load({
  afterSignOutUrl: POPUP_URL,
  signInForceRedirectUrl: POPUP_URL,
  signUpForceRedirectUrl: POPUP_URL,
  allowedRedirectProtocols: ['chrome-extension:'],
}).then(() => {
  clerk.addListener(render)
  render()
})

Full guide: references/create-clerk-client.md

Headless Extension (no popup, no side panel)

For extensions that run entirely in the background and sync with a web app.

Uses syncHost + createClerkClient with background: true to read auth state from the web app's cookies.

typescript
import { createClerkClient } from '@clerk/chrome-extension/client'

const publishableKey = process.env.PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY
const syncHost = process.env.PLASMO_PUBLIC_CLERK_SYNC_HOST

async function getAuthenticatedUser() {
  const clerk = await createClerkClient({
    publishableKey,
    syncHost,
    background: true,
  })
  return clerk.user
}

Requires host_permissions for the sync host domain in package.json.

Full guide: references/headless-extension.md

Content Scripts

Content scripts run in an isolated JavaScript world injected into web pages. Clerk cannot be used directly -- origin restrictions prevent it.

Use message passing to request auth state from the background service worker:

typescript
// content.ts
async function getToken(): Promise<string | null> {
  return new Promise((resolve) => {
    chrome.runtime.sendMessage({ type: 'GET_TOKEN' }, (response) => {
      resolve(response?.token ?? null)
    })
  })
}

async function main() {
  const token = await getToken()
  if (!token) return
  // use token for authenticated API calls
}

main()

Full guide: references/content-scripts.md

Show full SKILL.md (294 more words)Show less

Stable CRX ID

Without a pinned key, Chrome derives the CRX ID from a random key at build time. This rotates every rebuild, breaking allowed origins.

Option A -- Plasmo Itero (recommended):

  1. Visit Plasmo Itero Generate Keypairs
  2. Click "Generate KeyPairs" -- save Private Key securely, copy Public Key and CRX ID

Option B -- OpenSSL:

bash
openssl genrsa -out key.pem 2048
# Use Plasmo Itero to convert or extract the public key in correct format

.env.chrome:

CRX_PUBLIC_KEY="<PUBLIC KEY from Itero>"

package.json:

json
{
  "manifest": {
    "key": "$CRX_PUBLIC_KEY",
    "permissions": ["cookies", "storage"],
    "host_permissions": [
      "http://localhost/*",
      "$CLERK_FRONTEND_API/*"
    ]
  }
}

Add chrome-extension://YOUR_STABLE_CRX_ID to Clerk Dashboard > Allowed Origins.

Token Cache (persist across popup closes)

tsx
const tokenCache = {
  async getToken(key: string) {
    const result = await chrome.storage.local.get(key)
    return result[key] ?? null
  },
  async saveToken(key: string, token: string) {
    await chrome.storage.local.set({ [key]: token })
  },
  async clearToken(key: string) {
    await chrome.storage.local.remove(key)
  },
}

<ClerkProvider publishableKey={PUBLISHABLE_KEY} tokenCache={tokenCache}>
Storage typeScopeClears on
chrome.storage.localDeviceUninstall or manual clear
chrome.storage.sessionSessionBrowser close
chrome.storage.syncAll devicesUninstall (size-limited, 8KB)
localStoragePopup onlyPopup close -- do not use for auth

Common Pitfalls

SymptomCauseFix
Redirect loop on sign-inMissing CRX URL in ClerkProvider propsSet afterSignOutUrl, signInFallbackRedirectUrl
OAuth button not workingOAuth not supported in popupUse syncHost to delegate to web app
Auth state stale after web app sign-insyncHost not configuredAdd syncHost prop + host_permissions
Side panel shows signed-out after web sign-inKnown limitationUser must close and reopen the side panel
Background can't get token after 60sSession expired, no background refreshUse createClerkClient({ background: true })
Content script can't access ClerkIsolated world + origin restrictionsUse message passing to background service worker
Auth breaks after rebuildCRX ID rotatedConfigure stable key via .env.chrome
PLASMO_PUBLIC_ var undefinedWrong env fileUse .env.development, not .env
Bot protection errorsCloudflare not supported in extensionsDisable bot protection in Clerk Dashboard
Token cache not persistingUsing localStorage in popupUse chrome.storage.local or pass tokenCache prop

Plan Requirements

FeaturePlan
Basic popup auth (email/password, OTP)Free
PasskeysFree
syncHostRequires Pro (custom domain)
OAuth through syncHostPro + OAuth configured on web app
SAML through syncHostEnterprise
Bot protectionN/A -- must be disabled for extensions

See Also

  • clerk-setup - Initial Clerk install
  • clerk-custom-ui - Custom flows & appearance

© geekskai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 8 other files (references) in .agents/skills/clerk-chrome-extension-patterns of geekskai/blog.

  • SKILL.md
  • evals/evals.json
  • references/content-scripts.md
  • references/create-clerk-client.md
  • references/headless-extension.md
  • references/sync-host.md
  • templates/chrome-ext-basic-auth/package.json
  • templates/chrome-ext-basic-auth/src/popup.tsx
  • templates/chrome-ext-basic-auth/tsconfig.json

Open the folder on GitHubat commit e5554c5

Compare with similar skills

Clerk Chrome Extension Patterns next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Clerk Chrome Extension Patterns compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Clerk Chrome Extension Patterns this skillgeekskai/blog103—~2.9kAutomated safety check: NotesMIT
Project Scaffoldingaiskillstore/marketplace430—~2kAutomated safety check: PassNone
Req Change Workflowaiskillstore/marketplace430—~1.3kAutomated safety check: PassNone
Wxt Browser Extensionsvantezzen/skip-silence4682 repos~1.9kAutomated safety check: PassMIT
Kimi WebbridgeMoonshotAI/kimi-code7.8k—~3.6kAutomated safety check: PassMIT
Repomix Browser Extension Developeryamadashy/repomix29k1 repos~288Automated safety check: PassMIT

Similar skills

  • Project Scaffolding

    aiskillstore/marketplace

    IDE-grade project scaffolding wizard for creating new projects with comprehensive configuration.

    430 GitHub stars~2k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Req Change Workflow

    aiskillstore/marketplace

    Standardize requirement/feature changes in an existing codebase (especially Chrome extensions) by turning "改需求/需求变更/调整交互/改功能/重构流程" into a repeatable loop: clarify acceptance criteria, confirm…

    430 GitHub stars~1.3k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Wxt Browser Extensions

    vantezzen/skip-silence

    WXT browser extension performance optimization guidelines. An agent skill from vantezzen/skip-silence.

    468 GitHub starsUsed in 2 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Kimi Webbridge

    MoonshotAI/kimi-code

    Kimi Browser Extension(Kimi 浏览器扩展,原 Kimi WebBridge)lets AI control the user's real browser — navigate, click, type, read, screenshot, and interact with any website using the user's actual login…

    7.8k GitHub stars~3.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content…

    29k GitHub starsUsed in 1 repo~288 tokens
    DevelopmentAuto-check passed
  • Deepseek Automation

    zhu1090093659/deepseek-pp

    A skill your agent uses when implementing, resuming, reviewing, or verifying the DeepSeek++ Codex-style automation feature in this repository.

    1.9k GitHub stars~2.1k tokensUpdated 1 mo ago
    DevelopmentAuto-check: notes

More from geekskai/blog

All 20 skills in this repo
  • Clerk Android

    geekskai/blog

    Implement Clerk authentication for native Android apps using Kotlin and Jetpack Compose with clerk-android source-guided patterns.

    103 GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • React SPA auth patterns with @clerk/react for Vite/CRA - ClerkProvider setup, useAuth/useUser/useClerk hooks, React Router protected routes, custom sign-in flows.

    103 GitHub starsUsed in 1 repo~1k tokens
    Auto-check: notes
  • React Router v7/v8 patterns with Clerk — rootAuthLoader, getAuth in loaders, clerkMiddleware, protected routes, SSR user data, org switching.

    103 GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check passed
  • TanStack React Start auth patterns with @clerk/tanstack-react-start - createServerFn, beforeLoad guards, loaders, Vinxi server.

    103 GitHub starsUsed in 1 repo~875 tokens
    Auto-check: notes
  • Astro patterns with Clerk — middleware, SSR pages, island components, API routes, static vs SSR rendering.

    103 GitHub stars~822 tokensUpdated yesterday
    Auto-check: notes
  • Clerk Billing

    geekskai/blog

    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…

    103 GitHub stars~5.1k tokensUpdated yesterday
    Auto-check passed

Questions about Clerk Chrome Extension Patterns

What does Clerk Chrome Extension Patterns do?

Chrome Extension auth with @clerk/chrome-extension -- popup/sidepanel setup, syncHost for OAuth/SAML via web app, createClerkClient for service workers and headless extensions, stable CRX ID. Clerk Chrome Extension Patterns is an agent skill from geekskai/blog. Chrome Extension auth with @clerk/chrome-extension -- popup/sidepanel setup, syncHost for OAuth/SAML via web app, createClerkClient for service workers and headless extensions, stable CRX ID.

When should I use Clerk Chrome Extension Patterns?

Clerk Chrome Extension Patterns fits situations like: : Chrome extension auth; background service worker token; createClerkClient; headless extension.

How do I install Clerk Chrome Extension Patterns in Claude Code?

Run `npx skills add geekskai/blog --skill clerk-chrome-extension-patterns -a claude-code`. Or copy the skill folder (.agents/skills/clerk-chrome-extension-patterns in geekskai/blog) into .claude/skills/clerk-chrome-extension-patterns in your project. Claude Code loads it when a task matches its description.

How do I install Clerk Chrome Extension Patterns in Codex?

Run `npx skills add geekskai/blog --skill clerk-chrome-extension-patterns -a codex`. Or copy the skill folder (.agents/skills/clerk-chrome-extension-patterns in geekskai/blog) into .agents/skills/clerk-chrome-extension-patterns in your project. Codex loads it when a task matches its description.

Can I use Clerk Chrome Extension Patterns in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add geekskai/blog --skill clerk-chrome-extension-patterns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/clerk-chrome-extension-patterns, .gemini/skills/clerk-chrome-extension-patterns, .github/skills/clerk-chrome-extension-patterns and .opencode/skills/clerk-chrome-extension-patterns in your project.

What does Clerk Chrome Extension Patterns need to run?

Going by SKILL.md and its folder, Clerk Chrome Extension Patterns needs the command-line tools its instructions call (npx, npm, curl and openssl) and credentials named PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY, PUBLISHABLE_KEY, CRX_PUBLIC_KEY and GET_TOKEN. Our summary lists: Node.js; A credential in PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY; A credential in PUBLISHABLE_KEY. Its frontmatter pre-approves these tools: WebFetch. Compatibility (from SKILL.md): Requires PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY (Plasmo prefix for public env vars) and CLERK_FRONTEND_API..

Does Clerk Chrome Extension Patterns access the network?

SKILL.md names 2 domains. In commands or code: api.clerk.com; the agent is likely to contact it when it follows the instructions. As links in the text: itero.plasmo.com. This is read from the text; nothing was executed.

Is Clerk Chrome Extension Patterns safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Clerk Chrome Extension Patterns use?

Clerk Chrome Extension Patterns is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Clerk Chrome Extension Patterns use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.8k tokens, read only when the agent opens those files.

What are the alternatives to Clerk Chrome Extension Patterns?

Skills that share tags, products or a category with Clerk Chrome Extension Patterns: Project Scaffolding (aiskillstore/marketplace, 430 stars), Req Change Workflow (aiskillstore/marketplace, 430 stars), Wxt Browser Extensions (vantezzen/skip-silence, 468 stars) and Kimi Webbridge (MoonshotAI/kimi-code, 7.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Clerk Chrome Extension Patterns?

geekskai (a GitHub user) maintains it in geekskai/blog, which has 103 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 7, 2026.

Source: geekskai/blog on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.