clerk-vue-patterns — скилл для Claude Code: Vue 3 и Clerk
Скилл подсказывает агенту, как связать Vue 3 с Clerk: композаблы, навигационные хуки Vue Router и стор Pinia.
npx skills add clerk/skills --skill clerk-vue-patterns -a claude-codeЧто делает clerk-vue-patterns
Скилл описывает работу с @clerk/vue v2+ в приложении на Vue 3. Внутри — справочники по композаблам useAuth, useUser, useClerk, useOrganization, по навигационным хукам Vue Router и по стору Pinia с состоянием авторизации. Агент читает нужный файл, когда вы спрашиваете про вход, выход или переключение организации.
Подключение идёт через clerkPlugin в main.ts с publishableKey из VITE_CLERK_PUBLISHABLE_KEY. Композаблы возвращают реактивные значения: isSignedIn, userId, user, organization. Переключение организации делается через useOrganizationList и setActive.
Есть грабли, о которых скилл предупреждает. Если композабл вернул undefined, значит вызов идёт вне дерева ClerkProvider — проверьте, что app.use(clerkPlugin, { publishableKey }) вообще вызван. Для Nuxt этот скилл не подойдёт, там нужен clerk-nuxt-patterns.
Какие задачи решает
- подключить Clerk к приложению на Vue 3 через clerkPlugin
- получить реактивные isSignedIn и userId в компоненте
- закрыть маршруты Vue Router от неавторизованных
- хранить состояние входа в сторе Pinia
- переключать активную организацию через useOrganizationList
Примеры запросов агенту
- Покажи, как вывести имя пользователя через useUser в Vue 3
- Настрой навигационный хук Vue Router, который пускает только вошедших
- Сделай стор Pinia с состоянием авторизации Clerk
Как установить clerk-vue-patterns
1Через Skills CLI (Vercel)
npx skills add clerk/skills --skill clerk-vue-patterns -a claude-code2Вручную: положить файлы
~/.claude/skills/clerk-vue-patterns/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/clerk-vue-patterns/
1Через Skills CLI (Vercel)
npx skills add clerk/skills --skill clerk-vue-patterns -a codex2Вручную: положить файлы
.agents/skills/clerk-vue-patterns/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add clerk/skills --skill clerk-vue-patterns -a cursor2Вручную: положить файлы
.cursor/skills/clerk-vue-patterns/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install clerk/skills clerk-vue-patterns2Вручную: положить файлы
.github/skills/clerk-vue-patterns/SKILL.md1Через Skills CLI (Vercel)
npx skills add clerk/skills --skill clerk-vue-patterns -a gemini-cli2Командой платформы
gemini skills install https://github.com/clerk/skills --path skills/clerk-vue-patternsВручную: положить файлы
.devin/skills/clerk-vue-patterns/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add clerk/skills --skill clerk-vue-patterns -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о clerk-vue-patterns
Как установить clerk-vue-patterns в Claude?
Выполните npx skills add clerk/skills --skill clerk-vue-patterns -a claude-code. Скилл появится в ~/.claude/skills/clerk-vue-patterns/SKILL.md.
Что делает clerk-vue-patterns?
Даёт агенту шаблоны для Vue 3 с Clerk: композаблы, хуки Vue Router и стор Pinia. Плюс разбор частых ошибок вроде undefined из композабла.
Подойдёт ли скилл для Nuxt?
Нет. Для Nuxt в описании указан отдельный скилл clerk-nuxt-patterns.
Исходный текст
SKILL.md · MIT
---
name: clerk-vue-patterns
description: 'Vue 3 patterns with Clerk — composables (useAuth, useUser,
useClerk, useOrganization), Vue Router guards, Pinia auth store
integration. Triggers on: vue clerk, useAuth vue, clerk composables,
vue router clerk guard, pinia auth clerk. For Nuxt, use clerk-nuxt-patterns instead.'
license: MIT
allowed-tools: WebFetch
metadata:
author: clerk
version: 1.0.0
---
# Vue Patterns
SDK: `@clerk/vue` v2+ (Vue 3). For Nuxt, use `clerk-nuxt-patterns`.
## What Do You Need?
| Task | Reference |
|------|-----------|
| Composables: useAuth, useUser, useOrganization | references/composables.md |
| Vue Router navigation guards | references/vue-router-guards.md |
| Pinia store with auth state | references/pinia-integration.md |
## Mental Model
Vue uses composables from `@clerk/vue`:
- **`useAuth()`** — reactive `isSignedIn`, `userId`, `signOut`
- **`useUser()`** — reactive `user` object
- **`useClerk()`** — full Clerk instance for advanced operations
- **`useOrganization()`** — reactive `organization`, `membership`
## Setup
### Vue (Plain)
```ts
// main.ts
import { clerkPlugin } from '@clerk/vue'
import { createApp } from 'vue'
import App from './App.vue'
const app = createApp(App)
app.use(clerkPlugin, {
publishableKey: import.meta.env.VITE_CLERK_PUBLISHABLE_KEY,
})
app.mount('#app')
```
## Composables Usage
```vue
<script setup lang="ts">
import { useAuth, useUser } from '@clerk/vue'
const { isSignedIn, userId, signOut } = useAuth()
const { user } = useUser()
</script>
<template>
<div v-if="isSignedIn">
<p>Hello {{ user?.firstName }}</p>
<button @click="signOut()">Sign Out</button>
</div>
<SignInButton v-else />
</template>
```
## Org Switching
```vue
<script setup lang="ts">
import { useOrganizationList } from '@clerk/vue'
const { userMemberships, setActive } = useOrganizationList()
</script>
<template>
<button
v-for="mem in userMemberships.data ?? []"
:key="mem.organization.id"
@click="setActive({ organization: mem.organization.id })"
>
{{ mem.organization.name }}
</button>
</template>
```
## Common Pitfalls
| Symptom | Cause | Fix |
|---------|-------|-----|
| Composables return `undefined` | Not inside `ClerkProvider` tree | Ensure `app.use(clerkPlugin, { publishableKey })` is called |
| `userId` reactive but not updating | Destructuring loses reactivity | Use `const { userId } = useAuth()` (toRefs-style composable, reactive) |
## Import Map
| What | Import |
|------|--------|
| Composables | `@clerk/vue` |
| Plugin setup | `@clerk/vue` |
| Components | `@clerk/vue` |
## See Also
- `clerk-setup` - Initial Clerk install
- `clerk-custom-ui` - Custom flows & appearance
- `clerk-orgs` - B2B organizations
## Docs
- [Vue SDK](https://clerk.com/docs/vue/getting-started/quickstart)
© clerk · MIT · clerk/skills