К основному содержанию
скилл CX Codex

clerk-tanstack-patterns — скилл для Claude Code: авторизация

Подсказывает агенту, как подключить Clerk к TanStack React Start: защита маршрутов, createServerFn, лоадеры и middleware.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add clerk/skills --skill clerk-tanstack-patterns -a claude-code
Открыть на GitHub

Что делает clerk-tanstack-patterns

Скилл разбирает авторизацию Clerk в TanStack React Start по четырём файлам-справочникам: references/router-guards.md про beforeLoad, references/server-functions.md про createServerFn и auth(), references/loaders.md про контекст в лоадерах, references/server-setup.md про Vite и request middleware. Агент читает нужный файл, когда задача касается TanStack auth, защиты маршрутов или middleware.

Устройство двухслойное. Серверный слой — createServerFn вместе с auth() из @clerk/tanstack-react-start/server. Роутерный — beforeLoad в определении маршрута, где неавторизованного уводит throw redirect. Обе части выполняются на сервере, а useAuth и useUser остаются браузерными хуками.

Перед началом нужен пакет @clerk/tanstack-react-start и два ключа в .env: VITE_CLERK_PUBLISHABLE_KEY и CLERK_SECRET_KEY. В src/start.ts clerkMiddleware() регистрируется после CSRF-защиты — если поставить его раньше или забыть, auth() падает с ошибкой про ненастроенный middleware. В корне приложения нужен <ClerkProvider>. Ещё одна частая осечка: return redirect(...) вместо throw redirect(...) — редирект просто не сработает.

Какие задачи решает

  • закрыть маршрут /dashboard от неавторизованных через beforeLoad
  • достать userId внутри createServerFn
  • прокинуть состояние авторизации из beforeLoad в лоадер
  • настроить clerkMiddleware рядом с CSRF в src/start.ts
  • разобраться, почему auth() ругается на ненастроенный middleware

Примеры запросов агенту

  • Защити маршрут /dashboard через beforeLoad и Clerk, неавторизованных отправляй на /sign-in
  • Добавь в createServerFn проверку auth() и верни userId
  • Как прокинуть userId из beforeLoad в лоадер TanStack Start?

Как установить clerk-tanstack-patterns

1Через Skills CLI (Vercel)

npx skills add clerk/skills --skill clerk-tanstack-patterns -a claude-code

2Вручную: положить файлы

~/.claude/skills/clerk-tanstack-patterns/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/clerk-tanstack-patterns/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора19

clerk Разбирает запрос про Clerk и отправляет к нужному скиллу: настройка, CLI, паттерны фреймворков, биллинг, вебхуки. CX Codex +1 30 000установок clerk-react-patterns Скилл помогает настроить аутентификацию в React SPA на базе @clerk/react. Пригодится при сборке проектов на Vite или Create React App с закрытыми маршрутами. CX Codex +1 19 700установок clerk-billing Скилл для работы с Clerk Billing: тарифы, чекаут, ограничение функций по плану и вебхуки подписок. CX Codex +1 16 900установок clerk-react-router-patterns Помогает настроить Clerk с React Router v7/v8: загрузчики, защищённые маршруты, SSR и выбор организации. Нужен при добавлении авторизации в роутер. CX Codex +1 15 500установок clerk-swift Собирает экраны входа Clerk в нативных приложениях iOS и macOS: готовые вью ClerkKitUI или свои сценарии на ClerkKit. CX Codex +1 14 500установок clerk-chrome-extension-patterns Набор инструкций по интеграции @clerk/chrome-extension в браузерные расширения. Помогает настроить вход в popup, сессии в service worker и делегирование OAuth через веб-приложение. CX Codex +1 14 400установок clerk-astro-patterns Подсказывает агенту, как подключить Clerk к Astro: middleware, защита SSR-страниц, авторизация в API-роутах и островных компонентах. CX Codex +1 14 300установок clerk-android Скилл помогает агенту подключить Clerk к нативному Android-приложению на Kotlin и Jetpack Compose — через готовые AuthView/UserButton или свой поток авторизации. CX Codex +1 14 400установок

Похожие

clerk-nextjs-skills gocallum Подключает аутентификацию Clerk в Next.js 16 с App Router: proxy.ts, переменные окружения, защита маршрутов и MCP-сервер. CX Codex +1 436установок tanstack-start tanstack-skills Скилл помогает создавать и сопровождать приложения на фреймворке TanStack Start с потоковым SSR, серверными функциями и маршрутизацией. CX Codex +1 3 900установок tanstack-devtools tanstack-skills Скилл учит агента подключать единую панель отладки TanStack в проектах на React. Помогает настроить плагины для Query, Router и рабочих процессов TanStack AI. CX Codex +1 2 300установок clerk sanjeed5 Правило для Cursor задаёт жёсткие требования к аутентификации Clerk: PKCE, серверные проверки, короткие токены. Пригодится, когда в проекте уже есть Clerk и нужен порядок в безопасности. ★ 3 579звёзд репо clerk-authentication Mindrally Правила подключения Clerk в Next.js: middleware, хуки, защита серверных действий и маршрутов API. Пригодится, когда проект уже на Clerk и нужен порядок в проверках доступа. CX Codex +1 683установок react-2026 patterns.dev Подбирает архитектурный стек для новых и обновляемых проектов на React. Помогает выбрать фреймворк, сборщик, роутер и библиотеки управления состоянием. CX Codex +1 1 900установок

Рядом в теме «Фронтенд и UI»

Всё по теме «Фронтенд и UI» →

Вопросы о clerk-tanstack-patterns

Как установить clerk-tanstack-patterns в Claude?

Выполните npx skills add clerk/skills --skill clerk-tanstack-patterns -a claude-code. Скилл окажется в ~/.claude/skills/clerk-tanstack-patterns/SKILL.md.

Что делает clerk-tanstack-patterns?

Даёт агенту готовые шаблоны авторизации Clerk для TanStack React Start: защита маршрутов, createServerFn, лоадеры и настройка Vite с request middleware.

Что нужно подготовить до работы со скиллом?

Пакет @clerk/tanstack-react-start и ключи VITE_CLERK_PUBLISHABLE_KEY и CLERK_SECRET_KEY в .env. Без clerkMiddleware в src/start.ts вызов auth() завершится ошибкой.

Исходный текст

SKILL.md · MIT
---
name: clerk-tanstack-patterns
description: 'TanStack React Start auth patterns with @clerk/tanstack-react-start
  - createServerFn, beforeLoad guards, loaders, Vite plugin, server middleware. Triggers on: TanStack
  auth, createServerFn clerk, beforeLoad protection, TanStack Start middleware.'
license: MIT
allowed-tools: WebFetch
metadata:
  author: clerk
  version: 1.0.0
---

# TanStack React Start Patterns

## What Do You Need?

| Task | Reference |
|------|-----------|
| Protect routes with beforeLoad | references/router-guards.md |
| Auth in createServerFn | references/server-functions.md |
| Pass auth to loaders | references/loaders.md |
| Configure Vite + Clerk middleware | references/server-setup.md |

## References

| Reference | Description |
|-----------|-------------|
| `references/router-guards.md` | beforeLoad auth redirect |
| `references/server-functions.md` | createServerFn with auth() |
| `references/loaders.md` | Auth context in loaders |
| `references/server-setup.md` | Vite and request middleware setup |

## Setup

```
npm install @clerk/tanstack-react-start
```

`.env`:
```
VITE_CLERK_PUBLISHABLE_KEY=pk_...
CLERK_SECRET_KEY=sk_...
```

`src/start.ts` (request middleware):
```typescript
import { clerkMiddleware } from '@clerk/tanstack-react-start/server'
import { createCsrfMiddleware, createStart } from '@tanstack/react-start'

const csrfMiddleware = createCsrfMiddleware({
  filter: (ctx) => ctx.handlerType === 'serverFn',
})

export const startInstance = createStart(() => {
  return {
    requestMiddleware: [csrfMiddleware, clerkMiddleware()],
  }
})
```

`src/routes/__root.tsx` — wrap with `<ClerkProvider>`:
```tsx
import { ClerkProvider } from '@clerk/tanstack-react-start'

function RootDocument({ children }: { children: React.ReactNode }) {
  return (
    <html lang="en">
      <body>
        <ClerkProvider>
          {children}
        </ClerkProvider>
      </body>
    </html>
  )
}
```

## Mental Model

TanStack Start uses the `tanstackStart()` Vite plugin. Register CSRF protection before Clerk request middleware in `src/start.ts`; auth then flows through two layers:

1. **Server layer** — `createServerFn` + `auth()` from `@clerk/tanstack-react-start/server`
2. **Router layer** — `beforeLoad` on route definitions, throws `redirect` for unauthenticated

Both layers are server-executed. Client hooks (`useAuth`, `useUser`) are React hooks for the browser side.

## Minimal Pattern

```typescript
import { createFileRoute, redirect } from '@tanstack/react-router'
import { createServerFn } from '@tanstack/react-start'
import { auth } from '@clerk/tanstack-react-start/server'

const authStateFn = createServerFn().handler(async () => {
  const { isAuthenticated, userId } = await auth()
  if (!isAuthenticated) {
    throw redirect({ to: '/sign-in' })
  }
  return { userId }
})

export const Route = createFileRoute('/dashboard')({
  beforeLoad: async () => await authStateFn(),
})
```

## Common Pitfalls

| Symptom | Cause | Fix |
|---------|-------|-----|
| `auth()` throws "without configuring the middleware" | Missing `clerkMiddleware` in start.ts | Add it after CSRF middleware in `requestMiddleware` |
| `redirect` not thrown | Using `return` instead of `throw` | `throw redirect(...)` in TanStack |
| Wrong import for `auth` | Mixing client/server imports | Server: `@clerk/tanstack-react-start/server` |
| Loader context missing userId | Not passing from beforeLoad | Return from beforeLoad, access via `context` |
| `ClerkProvider` missing | Forgot root wrapping | Add to `__root.tsx` shell component |

## See Also

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

## Docs

[TanStack React Start SDK](https://clerk.com/docs/tanstack-react-start/getting-started/quickstart)

© clerk · MIT · clerk/skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой