# react-flow-code-review

Проверяет код на @xyflow/react по чек-листу: антипаттерны, лишние ре-рендеры, типы. Пригодится, когда граф тормозит или ноды пересоздаются.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 319 установок · ★ 84
- Автор: existential-birds
- Лицензия: Apache-2.0 · policy=mirror · лицензия открытая, файл — в исходнике
- Исходник: https://github.com/existential-birds/beagle/tree/HEAD/plugins/beagle-react/skills/react-flow-code-review/SKILL.md
- Обновлён: 2026-09-15
- HTML: https://affpapa.org/nevibecode/skills/react-flow-code-review

## Что делает

Скилл ведёт ревью по пяти шагам. Сначала ищет в области проверки `ReactFlow`, `ReactFlowProvider`, `useReactFlow`, `@xyflow/react`, `nodeTypes` и `edgeTypes` и возвращает список файлов. Потом для каждого `useReactFlow()` прослеживает дерево компонентов до `ReactFlowProvider` и фиксирует несовпадение с номером строки. Дальше смотрит, обёрнуты ли кастомные ноды и рёбра в `memo`, есть ли типизированные пропсы `NodeProps<...>`, и стабильны ли ссылки на `nodeTypes` и `edgeTypes`.

Находки выдаются с доказательством: путь к файлу и строки либо короткий фрагмент кода. Критичную проблему без ссылки скилл не заявляет. В конце закрываются два чек-листа — производительность и частые ошибки; каждый пункт получает статус «выполнено», «не применимо» с причиной или «открыто» с доказательством.

Внутри разобраны пять антипаттернов: `nodeTypes` внутри компонента, отсутствие `memo`, инлайн-колбэки без `useCallback`, `useReactFlow` вне провайдера и сложные объекты в данных ноды. Отдельно — мелочи, на которых спотыкаются: контейнер без высоты, забытый импорт `@xyflow/react/dist/style.css`, кнопка без класса `nodrag`, строковые литералы вместо `Position.Right` и прямая мутация массива нод. Скилл рассчитан на проекты с `@xyflow/react`; если библиотека в коде не используется, искать ему нечего.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add existential-birds/beagle --skill react-flow-code-review -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/react-flow-code-review/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/react-flow-code-review/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add existential-birds/beagle --skill react-flow-code-review -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/react-flow-code-review/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add existential-birds/beagle --skill react-flow-code-review -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/react-flow-code-review/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install existential-birds/beagle react-flow-code-review
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/react-flow-code-review/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add existential-birds/beagle --skill react-flow-code-review -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/existential-birds/beagle --path plugins/beagle-react/skills/react-flow-code-review
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/react-flow-code-review/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add existential-birds/beagle --skill react-flow-code-review -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/existential-birds/beagle/tree/HEAD/plugins/beagle-react/skills/react-flow-code-review/SKILL.md

## Когда брать
- найти причину, по которой все ноды пересоздаются при каждом рендере
- проверить, что кастомные ноды и рёбра обёрнуты в `memo`
- отловить `useReactFlow` вне `ReactFlowProvider` до запуска приложения
- убрать лишние обновления из-за новых ссылок на объекты в `data`
- пройтись по чек-листу производительности графа и закрыть открытые пункты

## Примеры запросов агенту
- проверь этот компонент с React Flow на антипаттерны и покажи файлы со строками
- почему у меня пересоздаются ноды при каждом рендере? прогони ревью по скиллу
- пройдись по чек-листу производительности в `src/Flow.tsx` и отметь, что не выполнено

## Похожие
- [react-flow](https://affpapa.org/nevibecode/skills/framara-react-flow.md) — скилл · 821 установка
- [react-best-practices](https://affpapa.org/nevibecode/skills/mastra-ai-react-best-practices.md) — скилл · 2800 установок
- [react-code-review](https://affpapa.org/nevibecode/skills/react-code-review.md) — скилл · 4300 установок
- [react-doctor](https://affpapa.org/nevibecode/skills/react-doctor.md) — скилл · 19200 установок
- [react-performance](https://affpapa.org/nevibecode/skills/react-performance.md) — скилл · 4900 установок
- [react-specialist](https://affpapa.org/nevibecode/agents/react-specialist.md) — субагент · 815 установок

Из того же набора: [existential-birds/beagle](https://affpapa.org/nevibecode/by/existential-birds/beagle.md) — 8 карточек

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
