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

react-pdf — скилл для Claude Code: генерация PDF из JSON

Рендерит PDF-документы из JSON-спецификаций через @react-pdf/renderer. Нужен, когда требуется собирать счета, отчёты или формы программно.

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

Что делает react-pdf

Скилл превращает JSON-спецификацию в PDF-буфер, поток или файл — три метода рендера (renderToBuffer, renderToStream, renderToFile). Внутри каталог стандартных компонентов: Document, Page, Table, Heading, Text, Image, Link, List, Divider, Spacer, PageNumber. Каждый элемент описывается в JSON с типом, пропсами и дочерними узлами.

Требует установки @json-render/core и @json-render/react-pdf. Можно расширить каталог собственными компонентами: задаёшь схему через Zod, регистрируешь React-компонент, передаёшь registry в render. Для управления состоянием есть StateStore, для серверного импорта — @json-render/react-pdf/server без React в бандле.

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

  • сгенерировать счёт с таблицей позиций и итогами
  • собрать PDF-отчёт из данных дашборда
  • экспортировать форму заявки в печатный документ
  • построить документ с кастомными компонентами вроде бейджей
  • отдать PDF-поток в HTTP-ответ без записи на диск

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

  • Сгенерируй PDF-счёт из JSON-спецификации с таблицей товаров и суммой
  • Создай PDF-отчёт: заголовок h1, два абзаца текста, таблица с колонками Item и Price
  • Экспортируй спецификацию в файл `output.pdf` через `renderToFile`

Как установить react-pdf

1Через Skills CLI (Vercel)

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

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

~/.claude/skills/react-pdf/SKILL.md

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

Из того же набора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установок

Похожие

teams-meeting-pipeline Hermes Agent + Teknium Управляет получением заметок и списков задач из встреч Microsoft Teams через Microsoft Graph. Пригодится для перезапуска задач и контроля вебхуков. Claude Code CX Codex Cursor +1 365установок scientific-slides K-Dense-AI Помогает готовить презентации для научных конференций, семинаров и защиты диссертаций. Поддерживает сборку слайдов в PowerPoint и LaTeX Beamer с контролем структуры и стиля. Claude Code CX Codex Cursor +1 2 200установок markitdown K-Dense-AI Скилл для Claude Code и других ИИ-редакторов: превращает PDF, файлы Office, HTML и CSV в Markdown, пригодный для поиска и загрузки в LLM. Claude Code CX Codex Cursor +1 2 100установок draft-nda phuryn Скилл помогает составить детальное соглашение о неразглашении (NDA) между двумя сторонами с учётом типов информации, юрисдикции и пометками разделов для проверки юристом. Claude Code CX Codex Cursor +1 2 600установок pptx-posters K-Dense-AI Собирает одностраничный научный постер в редактируемый .pptx из локального JSON-манифеста и проверяет его до печати. Claude Code CX Codex Cursor +1 2 000установок docx Nous Research Скилл для создания, чтения, правки и валидации файлов .docx через CLI-скрипты на Python. Пригодится для сборки отчётов, заполнения шаблонов и работы с правками. Claude Code CX Codex Cursor +1 306установок pptx официальный anthropics Скилл помогает создавать, читать и редактировать файлы .pptx и шаблоны .potx. Пригодится, когда нужно собрать презентацию или извлечь из неё текст. Claude Code Claude.ai 241 433установок pdf официальный anthropics Скилл читает, создаёт и меняет PDF-файлы, включая формы и сканы. Подойдёт, когда агенту нужно работать с PDF в проекте. Claude Code Claude.ai 216 041установок

Вопросы о react-pdf

Как установить react-pdf в Claude Code?

Выполни npx skills add vercel-labs/json-render --skill react-pdf -a claude-code. Скилл появится в ~/.claude/skills/react-pdf/SKILL.md.

Что делает скилл react-pdf?

Генерирует PDF-документы из JSON-спецификаций через @react-pdf/renderer. Поддерживает рендер в буфер, поток или файл, предоставляет каталог стандартных компонентов и позволяет добавлять кастомные.

Какие компоненты доступны в react-pdf?

Стандартный каталог включает Document, Page, View, Row, Column, Heading, Text, Image, Link, Table, List, Divider, Spacer, PageNumber. Можно зарегистрировать собственные через defineCatalog и Zod-схемы.

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

SKILL.md · Apache-2.0
---
name: react-pdf
description: React PDF renderer for json-render. Use when generating PDF documents from JSON specs, working with @json-render/react-pdf, or rendering specs to PDF buffers/streams/files.
---

# @json-render/react-pdf

React PDF renderer that generates PDF documents from JSON specs using `@react-pdf/renderer`.

## Installation

```bash
npm install @json-render/core @json-render/react-pdf
```

## Quick Start

```typescript
import { renderToBuffer } from "@json-render/react-pdf";
import type { Spec } from "@json-render/core";

const spec: Spec = {
  root: "doc",
  elements: {
    doc: { type: "Document", props: { title: "Invoice" }, children: ["page"] },
    page: {
      type: "Page",
      props: { size: "A4" },
      children: ["heading", "table"],
    },
    heading: {
      type: "Heading",
      props: { text: "Invoice #1234", level: "h1" },
      children: [],
    },
    table: {
      type: "Table",
      props: {
        columns: [
          { header: "Item", width: "60%" },
          { header: "Price", width: "40%", align: "right" },
        ],
        rows: [
          ["Widget A", "$10.00"],
          ["Widget B", "$25.00"],
        ],
      },
      children: [],
    },
  },
};

const buffer = await renderToBuffer(spec);
```

## Render APIs

```typescript
import { renderToBuffer, renderToStream, renderToFile } from "@json-render/react-pdf";

// In-memory buffer
const buffer = await renderToBuffer(spec);

// Readable stream (pipe to HTTP response)
const stream = await renderToStream(spec);
stream.pipe(res);

// Direct to file
await renderToFile(spec, "./output.pdf");
```

All render functions accept an optional second argument: `{ registry?, state?, handlers? }`.

## Standard Components

| Component | Description |
|-----------|-------------|
| `Document` | Top-level PDF wrapper (must be root) |
| `Page` | Page with size (A4, LETTER), orientation, margins |
| `View` | Generic container (padding, margin, background, border) |
| `Row`, `Column` | Flex layout with gap, align, justify |
| `Heading` | h1-h4 heading text |
| `Text` | Body text (fontSize, color, weight, alignment) |
| `Image` | Image from URL or base64 |
| `Link` | Hyperlink with text and href |
| `Table` | Data table with typed columns and rows |
| `List` | Ordered or unordered list |
| `Divider` | Horizontal line separator |
| `Spacer` | Empty vertical space |
| `PageNumber` | Current page number and total pages |

## Custom Catalog

```typescript
import { defineCatalog } from "@json-render/core";
import { schema, defineRegistry, renderToBuffer } from "@json-render/react-pdf";
import { standardComponentDefinitions } from "@json-render/react-pdf/catalog";
import { z } from "zod";

const catalog = defineCatalog(schema, {
  components: {
    ...standardComponentDefinitions,
    Badge: {
      props: z.object({ label: z.string(), color: z.string().nullable() }),
      slots: [],
      description: "A colored badge label",
    },
  },
  actions: {},
});

const { registry } = defineRegistry(catalog, {
  components: {
    Badge: ({ props }) => (
      <View style={{ backgroundColor: props.color ?? "#e5e7eb", padding: 4 }}>
        <Text>{props.label}</Text>
      </View>
    ),
  },
});

const buffer = await renderToBuffer(spec, { registry });
```

## External Store (Controlled Mode)

Pass a `StateStore` for full control over state:

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

```typescript
import { createStateStore } from "@json-render/react-pdf";

const store = createStateStore({ invoice: { total: 100 } });
store.set("/invoice/total", 200);
```

## Server-Safe Import

Import schema and catalog without pulling in React:

```typescript
import { schema, standardComponentDefinitions } from "@json-render/react-pdf/server";
```

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

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

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

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