jotai — скилл для Claude Code: адаптер json-render
Готовит Jotai как хранилище состояния для json-render: атом, адаптер StateStore и общий store с приложением.
npx skills add vercel-labs/json-render --skill jotai -a claude-codeЧто делает jotai
Скилл разбирает пакет @json-render/jotai — адаптер, который отдаёт атом Jotai в качестве хранилища состояния для json-render через интерфейс StateStore. Внутри инструкция с примером на TSX и таблицей опций, а не собранный плагин. Нужен, когда интерфейс уже рендерится из JSON-описания, а состояние вы хотите держать в Jotai.
Ставится четырьмя пакетами: npm install @json-render/jotai @json-render/core @json-render/react jotai. Дальше создаёте записываемый атом, оборачиваете его в jotaiStateStore({ atom: uiAtom }) и отдаёте результат в StateProvider из @json-render/react. Чтение и запись состояния идут через Jotai.
Если в приложении уже есть свой <Provider> с кастомным store, передайте его вторым полем: jotaiStateStore({ atom: uiAtom, store: jStore }). Без этого адаптер заводит новый store, и useAtom() в компонентах увидит другое состояние. Это повод проверить, что оба провайдера смотрят в один инстанс, иначе состояние разъедется.
Какие задачи решает
- перевести состояние json-render на атомы Jotai
- отдать общий store и приложению, и рендереру
- подменить дефолтное хранилище своим инстансом
- собрать минимальный пример с
StateProvider - разобраться, какие опции принимает
jotaiStateStore
Примеры запросов агенту
- Подключи Jotai как хранилище состояния для json-render: поставь
@json-render/jotaiи покажи обёртку надStateProvider. - У нас json-render уже работает, но состояние дублируется — переведи его на
jotaiStateStoreс нашимcreateStore(). - Покажи минимальный пример с
atom<Record<string, unknown>>иjotaiStateStoreдля этого экрана.
Как установить jotai
1Через Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill jotai -a claude-code2Вручную: положить файлы
~/.claude/skills/jotai/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/jotai/
1Через Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill jotai -a codex2Вручную: положить файлы
.agents/skills/jotai/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill jotai -a cursor2Вручную: положить файлы
.cursor/skills/jotai/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install vercel-labs/json-render jotai2Вручную: положить файлы
.github/skills/jotai/SKILL.md1Через Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill jotai -a gemini-cli2Командой платформы
gemini skills install https://github.com/vercel-labs/json-render --path skills/jotaiВручную: положить файлы
.devin/skills/jotai/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill jotai -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора23
Весь набор →Похожие
Рядом в теме «Фронтенд и UI»
Всё по теме «Фронтенд и UI» →Вопросы о jotai
Как установить jotai в Claude Code?
Выполните npx skills add vercel-labs/json-render --skill jotai -a claude-code. Файл скилла появится по пути ~/.claude/skills/jotai/SKILL.md.
Что делает jotai?
Даёт агенту инструкцию по адаптеру @json-render/jotai: как завести атом, обернуть его в jotaiStateStore и подключить к StateProvider из @json-render/react.
Как сделать, чтобы json-render и компоненты делили одно состояние?
Передайте свой инстанс в опцию store: jotaiStateStore({ atom: uiAtom, store: jStore }). По умолчанию адаптер создаёт новый store, поэтому useAtom() вне провайдера с тем же store увидит другое состояние.
Исходный текст
SKILL.md · Apache-2.0
---
name: jotai
description: Jotai adapter for json-render's StateStore interface. Use when integrating json-render with Jotai for state management via @json-render/jotai.
---
# @json-render/jotai
Jotai adapter for json-render's `StateStore` interface. Wire a Jotai atom as the state backend for json-render.
## Installation
```bash
npm install @json-render/jotai @json-render/core @json-render/react jotai
```
## Usage
```tsx
import { atom } from "jotai";
import { jotaiStateStore } from "@json-render/jotai";
import { StateProvider } from "@json-render/react";
// 1. Create an atom that holds the json-render state
const uiAtom = atom<Record<string, unknown>>({ count: 0 });
// 2. Create the json-render StateStore adapter
const store = jotaiStateStore({ atom: uiAtom });
// 3. Use it
<StateProvider store={store}>
{/* json-render reads/writes go through Jotai */}
</StateProvider>
```
### With a Shared Jotai Store
When your app already uses a Jotai `<Provider>` with a custom store, pass it so both json-render and your components share the same state:
```tsx
import { atom, createStore } from "jotai";
import { Provider as JotaiProvider } from "jotai/react";
import { jotaiStateStore } from "@json-render/jotai";
import { StateProvider } from "@json-render/react";
const jStore = createStore();
const uiAtom = atom<Record<string, unknown>>({ count: 0 });
const store = jotaiStateStore({ atom: uiAtom, store: jStore });
<JotaiProvider store={jStore}>
<StateProvider store={store}>
{/* Both json-render and useAtom() see the same state */}
</StateProvider>
</JotaiProvider>
```
## API
### `jotaiStateStore(options)`
Creates a `StateStore` backed by a Jotai atom.
| Option | Type | Required | Description |
|--------|------|----------|-------------|
| `atom` | `WritableAtom<StateModel, [StateModel], void>` | Yes | A writable atom holding the state model |
| `store` | Jotai `Store` | No | The Jotai store instance. Defaults to a new store. Pass your own to share state with `<Provider>`. |
© vercel-labs · Apache-2.0 · vercel-labs/json-render