react-flow-node-ts — скилл для Claude Code
Генерирует типизированные узлы для холста React Flow со связками Handle и стором Zustand. Пригодится при сборке визуальных редакторов и пайплайнов.
npx skills add microsoft/skills --skill react-flow-node-ts -a claude-codeЧто делает react-flow-node-ts
Скилл стандартизирует создание узлов для холста React Flow на TypeScript. Он содержит заготовки для файла компонента и файла типов. Заполнители в шаблонах задают PascalCase для имени компонента и kebab-case для строкового идентификатора ноды. В коде компонента сразу используются обёртка memo, блок изменения размера NodeResizer и порты Handle для входящих и исходящих связей.
Скилл жёстко привязан к Zustand. Шаблоны также рассчитаны на размещение файлов внутри каталога src/frontend/src/. Компонент обращается к хуку useAppStore, чтобы проверять режим редактирования холста и вызывать метод updateNode. Если в проекте выбран другой менеджер состояния или иная структура папок, пути импорта и синхронизацию придётся переписать вручную.
Процесс интеграции узла разбит на шесть шагов. Скилл проводит разработчика от объявления типов в src/frontend/src/types/index.ts и создания компонента до регистрации в словаре nodeTypes и привязки к меню добавления блоков.
Какие задачи решает
- создать компонент узла React Flow с портами входа и выхода
- объявить типизированный интерфейс данных ноды на TypeScript
- связать обновление узла с хранилищем Zustand
- зарегистрировать новый тип узла в canvas и меню добавления блоков
Примеры запросов агенту
- Создай узел VideoNode для React Flow с портами связей и TypeScript-типами
- Добавь кастомную ноду для редактора пайплайнов и подключи её к Zustand
- Разверни компонент узла с ресайзером по шаблону react-flow-node-ts
Как установить react-flow-node-ts
1Через Skills CLI (Vercel)
npx skills add microsoft/skills --skill react-flow-node-ts -a claude-code2Вручную: положить файлы
~/.claude/skills/react-flow-node-ts/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/react-flow-node-ts/
Вручную: положить файлы
.agents/skills/react-flow-node-ts/SKILL.mdДля всех проектов — ~/.agents/skills/
Вручную: положить файлы
.cursor/skills/react-flow-node-ts/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install microsoft/skills react-flow-node-ts2Вручную: положить файлы
.github/skills/react-flow-node-ts/SKILL.mdКомандой платформы
gemini skills install https://github.com/microsoft/skills --path .github/plugins/azure-sdk-typescript/skills/react-flow-node-tsВручную: положить файлы
.devin/skills/react-flow-node-ts/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о react-flow-node-ts
Как установить react-flow-node-ts в Claude Code?
Выполните команду npx skills add microsoft/skills --skill react-flow-node-ts -a claude-code. Также можно вручную поместить файл спецификации по пути ~/.claude/skills/react-flow-node-ts/SKILL.md.
Что входит в шаблон узла?
Шаблон включает компонент на React с обёрткой memo, порты связей Handle и отдельный файл типов для данных узла.
Можно ли использовать скилл без Zustand?
Шаблон напрямую обращается к хуку useAppStore для чтения режима холста и вызова updateNode. Без изменений в коде компонент потребует наличие этого стора в проекте.
Исходный текст
SKILL.md · MIT
---
name: react-flow-node-ts
description: Create React Flow node components with TypeScript types, handles, and Zustand integration. Use when building custom nodes for React Flow canvas, creating visual workflow editors, or implementing node-based UI components.
license: MIT
metadata:
author: Microsoft
version: "1.0.0"
---
# React Flow Node
Create React Flow node components following established patterns with proper TypeScript types and store integration.
## Quick Start
Copy templates from [assets/](assets/) and replace placeholders:
- `{{NodeName}}` → PascalCase component name (e.g., `VideoNode`)
- `{{nodeType}}` → kebab-case type identifier (e.g., `video-node`)
- `{{NodeData}}` → Data interface name (e.g., `VideoNodeData`)
## Templates
- [assets/template.tsx](assets/template.tsx) - Node component
- [assets/types.template.ts](assets/types.template.ts) - TypeScript definitions
## Node Component Pattern
```tsx
export const MyNode = memo(function MyNode({
id,
data,
selected,
width,
height,
}: MyNodeProps) {
const updateNode = useAppStore((state) => state.updateNode);
const canvasMode = useAppStore((state) => state.canvasMode);
return (
<>
<NodeResizer isVisible={selected && canvasMode === 'editing'} />
<div className="node-container">
<Handle type="target" position={Position.Top} />
{/* Node content */}
<Handle type="source" position={Position.Bottom} />
</div>
</>
);
});
```
## Type Definition Pattern
```typescript
export interface MyNodeData extends Record<string, unknown> {
title: string;
description?: string;
}
export type MyNode = Node<MyNodeData, 'my-node'>;
```
## Integration Steps
1. Add type to `src/frontend/src/types/index.ts`
2. Create component in `src/frontend/src/components/nodes/`
3. Export from `src/frontend/src/components/nodes/index.ts`
4. Add defaults in `src/frontend/src/store/app-store.ts`
5. Register in canvas `nodeTypes`
6. Add to AddBlockMenu and ConnectMenu
© Microsoft · MIT · microsoft/skills