К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

vue · vercel-labs — скилл для Claude Code: рендер Vue UI из JSON

Скилл для преобразования JSON-спецификаций в Vue 3 компоненты с привязкой данных, условиями видимости и обработкой действий. Нужен, если вы генерируете интерфейсы через ИИ или строите UI из JSON.

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

Что делает vue

vue — это renderer из библиотеки @json-render/vue, которая преобразует JSON-описания в живые Vue 3 компоненты. Вы определяете каталог (catalog) с типами компонентов, затем регистр (registry) с их реализацией через функции h(), а потом просто передаёте спецификацию в компонент Renderer.

В пакете уже встроена работа с состоянием через StateProvider, обработка действий через ActionProvider, условный рендер через VisibilityProvider и валидация форм. Есть composables для доступа к состоянию (useStateValue), привязке данных (useBoundProp), проверке видимости (useIsVisible). JSON-спец поддерживает динамические выражения: $state для чтения состояния, $bindState для двусторонней привязки, $cond для условий, $template для шаблонов.

При установке нужны peer-зависимости: vue ^3.5.0 и zod ^4.0.0 — убедитесь, что они уже в проекте.

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

  • генерировать Vue интерфейсы из JSON-спецификаций
  • определить компоненты-каталог с типами props и slots
  • связать состояние приложения с рендером компонентов
  • добавить условный рендер и валидацию форм без ручного кода

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

  • Установи скилл vue и создай каталог компонентов с типами через `defineCatalog`
  • Определи registry с Vue render-функциями и передай спецификацию в компонент `Renderer`
  • Оборачи `Renderer` в `StateProvider` и `ActionProvider`, чтобы управлять состоянием и обработкой действий

Как установить vue

1Через Skills CLI (Vercel)

npx skills add vercel-labs/json-render --skill vue -a claude-code

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

~/.claude/skills/vue/SKILL.md

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

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

Весь набор →
react vercel-labs Скилл помогает собирать React-интерфейсы из JSON-спецификаций через json-render. Нужен для каталогов компонентов и UI, который создаёт ИИ. Claude Code CX Codex Cursor +1 16 300установок core vercel-labs Описывает схему и каталог компонентов для json-render и собирает системный промпт, по которому ИИ выдаёт JSON-спеки интерфейсов. Claude Code CX Codex Cursor +1 15 000установок codegen vercel-labs Утилиты для генерации кода из json-render UI-деревьев. Помогает строить кастомные экспортеры кода для Next.js, Remix и других фреймворков, обходить спеки и сериализовать пропсы. Claude Code CX Codex Cursor +1 8 900установок next vercel-labs Генерирует многостраничные приложения Next.js из спецификаций JSON. Пригодится при сборке SSR-сайтов, маршрутов и макетов через @json-render/next. Claude Code CX Codex Cursor +1 8 600установок devtools vercel-labs Панель отладки для json-render: дерево компонентов, редактор состояния, лог действий, стриминг патчей и пикер элементов. Claude Code CX Codex Cursor +1 8 300установок directives vercel-labs Готовые директивы для json-render: форматирование, математика, строки, i18n. Подключаются в каталог и рендерер за пару строк. Claude Code CX Codex Cursor +1 8 000установок mcp vercel-labs Скилл помогает собирать MCP-серверы с интерактивными json-render UI для Claude, ChatGPT, Cursor и VS Code. Claude Code CX Codex Cursor +1 5 800установок react-native vercel-labs Скилл помогает собирать нативные React Native-интерфейсы из JSON-спецификаций. Пригодится для мобильных UI с состоянием, условиями видимости и действиями. Claude Code CX Codex Cursor +1 3 200установок

Другие версии vue

Похожие

game-object-components phaserjs Справочник по компонентам и миксинам игровых объектов в Phaser 4. Помогает агенту настраивать Transform, Depth и WebGL-эффекты. Claude Code CX Codex Cursor +1 796установок control-ui cursor Скилл подключает локальную автоматизацию браузера или CDP для проверки интерфейсов веб-приложений и Electron. Помогает собирать скриншоты и профили производительности. Claude Code CX Codex Cursor +1 2 400установок time-and-timers phaserjs Помогает настраивать таймеры, задержки и последовательности Timeline в Phaser 4. Пригодится при создании игровых циклов и анимаций. Claude Code CX Codex Cursor +1 786установок image-to-ui UIZZE Превратите скриншот, макет или эскиз в рабочий код интерфейса. Скилл смотрит на изображение, воспроизводит его точно в коде, затем рендерит и сравнивает, чтобы исправить различия. Claude Code CX Codex Cursor +1 63 500установок userinterface-wiki raphael-salaja Справочник из 152 правил UI/UX для веб-интерфейсов. Скилл проверяет анимации, типографику, аудиофидбэк и паттерны UX, выдаёт ошибки с привязкой к строкам кода. Claude Code CX Codex Cursor +1 4 500установок adaptive Google LLC Настраивает адаптивный интерфейс Android-приложений на Jetpack Compose под телефоны, планшеты, складные устройства и десктоп. Спасёт при переносе экрана на экраны разных размеров. Claude Code CX Codex Cursor +1 2 400установок frontend-design официальный anthropics Скилл задаёт осмысленное визуальное направление для новых интерфейсов и редизайна. Подойдёт, когда стандартный шаблонный UI не устраивает. Claude Code Claude.ai 1 025 790установок design-taste-frontend Leonxlnx Скилл задаёт арт-дирекцию для публичных страниц и рабочих экранов, а затем проверяет результат в браузере по скриншотам. Нужен, когда интерфейс выглядит шаблонным или недоработанным. Claude Code CX Codex Cursor +1 673 100установок

Вопросы о vue

Как установить vue скилл в Claude Code?

Выполни npx skills add vercel-labs/json-render --skill vue -a claude-code. Скилл будет доступен в ~/.claude/skills/vue/SKILL.md.

Что даёт vue скилл?

Позволяет рендерить Vue 3 компоненты из JSON-спецификаций с привязкой данных, условиями видимости и действиями. Полезно для ИИ-генерации интерфейсов.

Какие зависимости нужны для работы?

Нужны vue ^3.5.0 и zod ^4.0.0. Установи их в проект перед использованием скилла.

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

SKILL.md · Apache-2.0
---
name: vue
description: Vue 3 renderer for json-render. Use when building Vue UIs from JSON specs, working with @json-render/vue, defining Vue component registries, or rendering AI-generated specs in Vue.
---

# @json-render/vue

Vue 3 renderer that converts JSON specs into Vue component trees with data binding, visibility, and actions.

## Installation

```bash
npm install @json-render/vue @json-render/core zod
```

Peer dependencies: `vue ^3.5.0` and `zod ^4.0.0`.

## Quick Start

### Create a Catalog

```typescript
import { defineCatalog } from "@json-render/core";
import { schema } from "@json-render/vue/schema";
import { z } from "zod";

export const catalog = defineCatalog(schema, {
  components: {
    Card: {
      props: z.object({ title: z.string(), description: z.string().nullable() }),
      slots: ["default"],
      description: "A card container",
    },
    Layout: {
      props: z.object({}),
      slots: ["default", "header", "footer"],
      description: "Layout with named content regions",
    },
    Button: {
      props: z.object({ label: z.string(), action: z.string() }),
      description: "A clickable button",
    },
  },
  actions: {},
});
```

### Define Registry with h() Render Functions

```typescript
import { h } from "vue";
import { defineRegistry } from "@json-render/vue";
import { catalog } from "./catalog";

export const { registry } = defineRegistry(catalog, {
  components: {
    Card: ({ props, children }) =>
      h("div", { class: "card" }, [
        h("h3", null, props.title),
        props.description ? h("p", null, props.description) : null,
        children,
      ]),
    Layout: ({ slots }) =>
      h("div", null, [
        h("header", null, slots.header?.()),
        h("main", null, slots.default?.()),
        h("footer", null, slots.footer?.()),
      ]),
    Button: ({ props, emit }) =>
      h("button", { onClick: () => emit("press") }, props.label),
  },
});
```

## Named Slots

Use `children` for the `"default"` slot. Use the element's top-level `slots` object for other slot names declared by the catalog:

```json
{
  "type": "Layout",
  "props": {},
  "children": ["main"],
  "slots": {
    "header": ["heading"],
    "footer": ["actions"]
  }
}
```

Registry components receive Vue-native slot functions. Render them with `slots.header?.()`, `slots.footer?.()`, and so on. `slots.default?.()` renders the spec's `children`; the `children` context field is a convenience alias for that rendered result. In the JSON spec, keep default content in `children` rather than adding a `default` entry to `slots`.

### Render Specs

```vue
<script setup lang="ts">
import { StateProvider, ActionProvider, Renderer } from "@json-render/vue";
import { registry } from "./registry";

const spec = { root: "card-1", elements: { /* ... */ } };
</script>

<template>
  <StateProvider :initial-state="{ form: { name: '' } }">
    <ActionProvider :handlers="{ submit: handleSubmit }">
      <Renderer :spec="spec" :registry="registry" />
    </ActionProvider>
  </StateProvider>
</template>
```

## Providers

| Provider | Purpose |
|----------|---------|
| `StateProvider` | Share state across components (JSON Pointer paths). Accepts `initialState` or `store` for controlled mode. |
| `ActionProvider` | Handle actions dispatched via the event system |
| `VisibilityProvider` | Enable conditional rendering based on state |
| `ValidationProvider` | Form field validation |

## Composables

| Composable | Purpose |
|------------|---------|
| `useStateStore()` | Access state context (`state` as `ShallowRef`, `get`, `set`, `update`) |
| `useStateValue(path)` | Get single value from state |
| `useIsVisible(condition)` | Check if a visibility condition is met |
| `useActions()` | Access action context |
| `useAction(binding)` | Get a single action dispatch function |
| `useFieldValidation(path, config)` | Field validation state |
| `useBoundProp(propValue, bindingPath)` | Two-way binding for `$bindState`/`$bindItem` |

Note: `useStateStore().state` returns a `ShallowRef<StateModel>` — use `state.value` to access.

## External Store (StateStore)

Nested lists can set `repeat.statePath` to `{ "$item": "field" }` inside an enclosing repeat.

Pass a `StateStore` to `StateProvider` to wire json-render to Pinia, VueUse, or any state management:

```typescript
import { createStateStore, type StateStore } from "@json-render/vue";

const store = createStateStore({ count: 0 });
```

```vue
<StateProvider :store="store">
  <Renderer :spec="spec" :registry="registry" />
</StateProvider>
```

## Dynamic Prop Expressions

Props support `$state`, `$bindState`, `$cond`, `$template`, `$computed`. Use `{ "$bindState": "/path" }` on the natural value prop for two-way binding.

## Visibility Conditions

```typescript
{ "$state": "/user/isAdmin" }
{ "$state": "/status", "eq": "active" }
{ "$state": "/maintenance", "not": true }
[ cond1, cond2 ]  // implicit AND
```

## Built-in Actions

`setState`, `pushState`, `removeState`, and `validateForm` are built into the Vue schema and handled by `ActionProvider`:

```json
{
  "action": "setState",
  "params": { "statePath": "/activeTab", "value": "settings" }
}
```

## Event System

Components use `emit(event)` to fire events, or `on(event)` for metadata (`shouldPreventDefault`, `bound`).

## Streaming

`useUIStream` and `useChatUI` return Vue Refs for streaming specs from an API.

## BaseComponentProps

For catalog-agnostic reusable components:

```typescript
import type { BaseComponentProps } from "@json-render/vue";

const Card = ({ props, children }: BaseComponentProps<{ title?: string }>) =>
  h("div", null, [props.title, children]);
```

## Key Exports

| Export | Purpose |
|--------|---------|
| `defineRegistry` | Create a type-safe component registry from a catalog |
| `Renderer` | Render a spec using a registry |
| `schema` | Element tree schema (from `@json-render/vue/schema`) |
| `StateProvider`, `ActionProvider`, `VisibilityProvider`, `ValidationProvider` | Context providers |
| `useStateStore`, `useStateValue`, `useBoundProp` | State composables |
| `useActions`, `useAction` | Action composables |
| `useFieldValidation`, `useIsVisible` | Validation and visibility |
| `useUIStream`, `useChatUI` | Streaming composables |
| `createStateStore` | Create in-memory `StateStore` |
| `BaseComponentProps` | Catalog-agnostic component props type |

© vercel-labs · Apache-2.0 · vercel-labs/json-render

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

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

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