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

codegen — скилл для Claude Code: генерация кода из UI-спеков

Утилиты для генерации кода из json-render UI-деревьев. Помогает строить кастомные экспортеры кода для Next.js, Remix и других фреймворков, обходить спеки и сериализовать пропсы.

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

Что делает codegen

codegen — это набор функций для работы с UI-спецификациями на уровне кода. Внутри есть три типа операций: обход спеков в глубину (traverseSpec), сбор метаданных (какие компоненты используются, какие состояния и экшены), и сериализация значений для JSX.

Траверсал позволяет пройти по всему дереву UI и собрать информацию: collectUsedComponents вытащит все типы компонентов, collectStatePaths найдёт пути к состояниям (например, «analytics/revenue»), collectActions выберет имена действий. Сериализация превращает значения в строки кода: serializePropValue обработает строки, объекты со ссылками на состояние и вернёт готовый результат для вставки в JSX.

Устанавливается через npm install @json-render/codegen и подключается как скилл в IDE. Работает с json-render/core спеками; требует Node.js и npm.

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

  • Собрать метаданные из UI-спеки: компоненты, состояния, экшены
  • Сериализовать значения в JSX-атрибуты с правильным escaping
  • Обойти всё дерево UI и обработать каждый элемент
  • Построить кастомный генератор кода для своего фреймворка
  • Преобразовать дизайн-спеку в рабочий Next.js проект

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

  • Собери все компоненты, используемые в спеке, и выведи их список
  • Найди все пути состояний в UI и экспортируй как переменные
  • Сгенерируй Next.js страницу из json-render спеки с правильными пропсами

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

1Через Skills CLI (Vercel)

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

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

~/.claude/skills/codegen/SKILL.md

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

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

Весь набор →

Похожие

flutter-add-widget-preview flutter Скилл учит агента создавать интерактивные превью виджетов во Flutter через package:flutter/widget_previews.dart. Пригодится для изолированной вёрстки UI без сборки всего приложения. Claude Code CX Codex Cursor +1 36 600установок transitions-polish Jakubantalik Скилл проверяет уже существующие анимации и подбирает токены для времени, расстояния, масштаба, blur и easing. Пригодится для точной настройки motion. Claude Code CX Codex Cursor +1 10 600установок explain-interface jakubkrehel Разбирает чужие веб-интерфейсы, анимации и визуальные эффекты по ссылке или скриншоту. Помогает понять, из каких слоёв и стилей собран элемент. Claude Code CX Codex Cursor +1 13 900установок interaction-design Seth Hobson Скилл помогает проектировать микровзаимодействия, переходы и состояния обратной связи. Подойдёт для полировки интерфейса и загрузочных экранов. Claude Code CX Codex Cursor 16 146установок design-system-patterns Seth Hobson Помогает проектировать дизайн-токены, переключение тем и архитектуру библиотеки компонентов. Пригодится, когда вы закладываете общие правила интерфейса для проекта. Claude Code CX Codex Cursor 15 953установок frontend-design официальный anthropics Скилл задаёт осмысленное визуальное направление для новых интерфейсов и редизайна. Подойдёт, когда стандартный шаблонный UI не устраивает. Claude Code Claude.ai 1 025 790установок design-taste-frontend Leonxlnx Скилл задаёт арт-дирекцию для публичных страниц и рабочих экранов, а затем проверяет результат в браузере по скриншотам. Нужен, когда интерфейс выглядит шаблонным или недоработанным. Claude Code CX Codex Cursor +1 673 100установок prototype Matt Pocock Создаёт временный прототип, чтобы проверить логику, модель состояния или вид интерфейса до работы над основным кодом. Claude Code 986 201установок

Вопросы о codegen

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

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

Что делает codegen?

Предоставляет утилиты для анализа и генерации кода из UI-спеков json-render. Можно обходить спеки, собирать метаданные (компоненты, состояния, действия) и сериализовать значения для JSX.

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

Требуется @json-render/core для типов Spec. Основной пакет — @json-render/codegen устанавливается через npm.

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

SKILL.md · Apache-2.0
---
name: codegen
description: Code generation utilities for json-render. Use when generating code from UI specs, building custom code exporters, traversing specs, or serializing props for @json-render/codegen.
---

# @json-render/codegen

Framework-agnostic utilities for generating code from json-render UI trees. Use these to build custom code exporters for Next.js, Remix, or other frameworks.

## Installation

```bash
npm install @json-render/codegen
```

## Tree Traversal

```typescript
import {
  traverseSpec,
  collectUsedComponents,
  collectStatePaths,
  collectActions,
} from "@json-render/codegen";

// Walk the spec depth-first
traverseSpec(spec, (element, key, depth, parent) => {
  console.log(`${" ".repeat(depth * 2)}${key}: ${element.type}`);
});

// Get all component types used
const components = collectUsedComponents(spec);
// Set { "Card", "Metric", "Button" }

// Get all state paths referenced
const statePaths = collectStatePaths(spec);
// Set { "analytics/revenue", "user/name" }

// Get all action names
const actions = collectActions(spec);
// Set { "submit_form", "refresh_data" }
```

## Serialization

```typescript
import {
  serializePropValue,
  serializeProps,
  escapeString,
  type SerializeOptions,
} from "@json-render/codegen";

// Serialize a single value
serializePropValue("hello");
// { value: '"hello"', needsBraces: false }

serializePropValue({ $state: "/user/name" });
// { value: '{ $state: "/user/name" }', needsBraces: true }

// Serialize props for JSX
serializeProps({ title: "Dashboard", columns: 3, disabled: true });
// 'title="Dashboard" columns={3} disabled'

// Escape strings for code
escapeString('hello "world"');
// 'hello \"world\"'
```

### SerializeOptions

```typescript
interface SerializeOptions {
  quotes?: "single" | "double";
  indent?: number;
}
```

## Types

```typescript
import type { GeneratedFile, CodeGenerator } from "@json-render/codegen";

const myGenerator: CodeGenerator = {
  generate(spec) {
    return [
      { path: "package.json", content: "..." },
      { path: "app/page.tsx", content: "..." },
    ];
  },
};
```

## Building a Custom Generator

```typescript
import {
  collectUsedComponents,
  collectStatePaths,
  traverseSpec,
  serializeProps,
  type GeneratedFile,
} from "@json-render/codegen";
import type { Spec } from "@json-render/core";

export function generateNextJSProject(spec: Spec): GeneratedFile[] {
  const files: GeneratedFile[] = [];
  const components = collectUsedComponents(spec);
  // Generate package.json, component files, main page...
  return files;
}
```

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

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

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

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