Skills Agentes

Clerk React Patterns

Patrones de autenticación en SPA de React con @clerk/react para Vite o CRA: alta de ClerkProvider, hooks useAuth/useUser/useClerk, rutas protegidas con React Router y login a medida.

Oficial
Solicitawebfetch
Estrellas
75

en todo el repo

Actividad
37

0–100, la ruta de este skill

Actualizado
hace 6 meses

último commit aquí

Commits
0

últimos 90 días

Contexto
1k tok

68 tok en reposo

Paquete
12 archivos

19 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add clerk/skills --skill clerk-react-patterns --agent claude-code

Se instala solo en este repositorio.

Este skill makes network requests.

Qué hace

  • Recoge los patrones de autenticación en SPA de React con `@clerk/react`, para Vite o Create React App
  • Cubre el alta de `ClerkProvider` y los hooks `useAuth`, `useUser` y `useClerk`
  • Explica cómo proteger rutas con React Router
  • Incluye flujos de login a medida

Úsalo cuando

  • Configurar Clerk en una SPA de React con Vite
  • Proteger rutas con React Router
  • Montar un formulario de login propio en React

No lo uses cuando

  • Next.js: usa `clerk-nextjs-patterns`; React Router v7/v8: usa `clerk-react-router-patterns`

Qué lo activa

Di cualquiera de estas frases y el agente debería cargar este skill.

  • “Configura Clerk en mi proyecto de Vite”
  • “Protege esta ruta de React Router”
  • “Hazme un formulario de login propio con useSignIn”

SKILL.md

En inglés

React SPA Patterns

This skill covers @clerk/react for Vite/CRA SPAs. For Next.js use clerk-nextjs-patterns. For TanStack Start use clerk-tanstack-patterns.

What Do You Need?

Task Reference
useAuth / useUser / useClerk hooks references/hooks.md
Protected routes with React Router references/protected-routes.md
Custom sign-in / sign-up forms references/custom-flows.md
React Router v6/v7 integration references/router-integration.md

References

Reference Description
references/hooks.md useAuth, isLoaded guard
references/protected-routes.md ProtectedRoute pattern
references/custom-flows.md useSignIn, useSignUp flows
references/router-integration.md React Router v6/v7 setup

Setup

npm install @clerk/react

.env:

VITE_CLERK_PUBLISHABLE_KEY=pk_...

src/main.tsx:

import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import { ClerkProvider } from '@clerk/react'
import App from './App.tsx'

const PUBLISHABLE_KEY = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY

createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <ClerkProvider publishableKey={PUBLISHABLE_KEY}>
      <App />
    </ClerkProvider>
  </StrictMode>,
)

Mental Model

@clerk/react is client-only — there is no server-side auth(). All auth state comes from hooks.

  • isLoaded must be true before trusting isSignedIn — always guard on isLoaded
  • useClerk() gives access to signOut, openSignIn, openUserProfile and other methods
  • getToken() from useAuth() fetches the session JWT for API calls

Minimal Pattern

import { useAuth } from '@clerk/react'

export function Dashboard() {
  const { isLoaded, isSignedIn, userId } = useAuth()

  if (!isLoaded) return <div>Loading...</div>
  if (!isSignedIn) return <div>Please sign in</div>

  return <div>Hello {userId}</div>
}

Protected Route (React Router v6/v7)

import { Navigate, Outlet } from 'react-router-dom'
import { useAuth } from '@clerk/react'

export function ProtectedRoute() {
  const { isLoaded, isSignedIn } = useAuth()

  if (!isLoaded) return <div>Loading...</div>
  if (!isSignedIn) return <Navigate to="/sign-in" replace />

  return <Outlet />
}
<Routes>
  <Route element={<ProtectedRoute />}>
    <Route path="/dashboard" element={<Dashboard />} />
    <Route path="/settings" element={<Settings />} />
  </Route>
  <Route path="/sign-in" element={<SignIn />} />
</Routes>

Token for API Calls

import { useAuth } from '@clerk/react'

export function DataFetcher() {
  const { getToken } = useAuth()

  async function fetchData() {
    const token = await getToken()
    if (!token) return

    const res = await fetch('/api/data', {
      headers: { Authorization: `Bearer ${token}` },
    })
    return res.json()
  }

  return <button onClick={fetchData}>Load</button>
}

Common Pitfalls

Symptom Cause Fix
isSignedIn is undefined isLoaded is still false Always check isLoaded first
ClerkProvider missing Provider not at root Wrap <App> in main.tsx
Env var undefined Wrong Vite prefix Use VITE_CLERK_PUBLISHABLE_KEY, access via import.meta.env
Token is null User not signed in Null-check getToken() result
Sign-in component shows blank No publishableKey on provider Pass publishableKey explicitly

See Also

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

Docs

React SDK

Reproducido de clerk/skills bajo licencia MIT. Leer esta página en markdown.

Archivos

12 archivos en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

Antes de instalar

Necesita en el PATH:npm

Detalles

Creador
clerk
Categoría
Seguridad
Licencia
MIT
Recursos incluidos
referencias
Repositorio
clerk/skills
Código fuente
Ver SKILL.md

Más de clerk/skills

Este repo incluye 22 skills. Si instalas uno, normalmente ya tienes los demás. Ver el pack skills entero y su comando de instalación

Opera el CLI de Clerk para autenticación, gestión de usuarios, organizaciones y sesiones, suplantación, webhooks locales, despliegue, configuración de instancia y cualquier llamada a su API.

Costo de contexto al activarse
9.1k tok
Tamaño del paquete
4 archivos
Última actualización
el mes pasado
Oficialseguridad

Añade autenticación de Clerk a cualquier proyecto siguiendo las guías oficiales de inicio rápido.

Costo de contexto al activarse
3.5k tok
Tamaño del paquete
2 archivos
Última actualización
el mes pasado
Oficialseguridad

Enrutador de autenticación de Clerk. Úsalo para operaciones del CLI, añadir autenticación, flujos de login a medida, patrones por framework, organizaciones, facturación, testing o webhooks; enruta solo al skill concreto.

Costo de contexto al activarse
1.5k tok
Tamaño del paquete
1 archivo
Última actualización
el mes pasado
Oficialseguridad

Añade autenticación de Clerk a apps de Expo y React Native con @clerk/expo: componentes nativos, flujos a medida, OAuth/SSO, login nativo de Google y Apple, rutas de Expo Router y biometría.

Costo de contexto al activarse
2.8k tok
Tamaño del paquete
8 archivos
Última actualización
hace 2 meses
Oficialseguridad

Facturación de Clerk para gestionar suscripciones: PricingTable, checkout en la app, planes, límite de asientos para B2B, permisos por funcionalidad con has() y webhooks de facturación.

Costo de contexto al activarse
5.1k tok
Tamaño del paquete
6 archivos
Última actualización
el mes pasado
Oficialfinanzas

Organizaciones de Clerk para SaaS B2B: apps multi-tenant con cambio de organización, acceso por rol, dominios verificados y SSO empresarial. Úsalo para espacios de equipo, RBAC y gestión de miembros.

Costo de contexto al activarse
4.8k tok
Tamaño del paquete
6 archivos
Última actualización
el mes pasado
Oficialseguridad

Skills relacionados

Barreras de seguridad para comandos destructivos (gstack).

Costo de contexto al activarse
879 tok
Tamaño del paquete
4 archivos
Última actualización
el mes pasado
Permisos
seguridad

Cso

134k

Modo Chief Security Officer: auditoría de seguridad centrada en infraestructura, con OWASP Top 10, modelado de amenazas STRIDE y verificación activa.

Costo de contexto al activarse
19.2k tok
Tamaño del paquete
6 archivos
Última actualización
el mes pasado
Permisos
seguridad

Guard

134k

Modo de máxima seguridad: avisos ante comandos destructivos más restricción de ediciones a un directorio concreto (gstack).

Costo de contexto al activarse
850 tok
Tamaño del paquete
2 archivos
Última actualización
el mes pasado
Permisos
seguridad