# state-management

Скилл с готовыми паттернами TanStack Query v5 и Zustand v5: запросы, кеш, мутации, оптимистичные обновления и клиентские сторы.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 783 установки · ★ 95
- Автор: agent-skills
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/AsyrafHussin/agent-skills/tree/HEAD/skills/state-management/SKILL.md
- Обновлён: 2026-08-27
- HTML: https://affpapa.org/nevibecode/skills/state-management

## Что делает

Скилл описывает, как агент должен писать код состояния в React-проекте. Внутри 26+ правил, разбитых по приоритетам: базовые хуки `useQuery` и `useMutation`, организация query keys, кеширование и инвалидация, оптимистичные обновления, DevTools и связка React Query с Zustand. Каждое правило помечено префиксом (`rq-`, `zs-`, `cache-`, `mut-`, `opt-`, `dev-`, `adv-`), так что агент быстро находит нужный раздел.

Отдельный блок — миграция на v5. В TanStack Query `cacheTime` переименован в `gcTime`, `keepPreviousData` стал `placeholderData: keepPreviousData`, `isPreviousData` — `isPlaceholderData`, а `suspense: true` заменён на `useSuspenseQuery`. В Zustand второй аргумент `shallow` убран в пользу `useShallow` из `zustand/shallow`; селекторы, возвращающие новую ссылку, без него дают бесконечный цикл рендеров. Если проект ещё на v4, эти пункты — первое, что стоит проверить перед запуском агента.

Есть и предупреждение по безопасности: токены, пароли и секреты не стоит класть в `localStorage` или `sessionStorage`. Для persist-мидлвара советуется `partialize`, чтобы сохранять только нечувствительное состояние, а сами токены держать в HttpOnly cookies.

## Установка

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

1. **Через Skills CLI (Vercel)**
```bash
npx skills add AsyrafHussin/agent-skills --skill state-management -a claude-code
```

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

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add AsyrafHussin/agent-skills --skill state-management -a codex
```

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

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add AsyrafHussin/agent-skills --skill state-management -a cursor
```

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

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install AsyrafHussin/agent-skills state-management
```

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

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add AsyrafHussin/agent-skills --skill state-management -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/AsyrafHussin/agent-skills --path skills/state-management
```

### Windsurf (Devin Desktop)

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

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add AsyrafHussin/agent-skills --skill state-management -a opencode
```

### Claude.ai

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

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/AsyrafHussin/agent-skills/tree/HEAD/skills/state-management/SKILL.md

## Когда брать
- написать запрос данных через useQuery с обработкой загрузки и ошибки
- собрать query keys так, чтобы инвалидация не задевала лишнее
- обновить список после мутации без ручного refetch
- сделать оптимистичное обновление с откатом при ошибке
- перенести проект с TanStack Query v4 на v5

## Примеры запросов агенту
- Добавь хук usePosts с useQuery и фабрикой query keys из скилла state-management
- Перепиши этот компонент на Zustand v5 с useShallow в селекторах
- Проверь мой код на breaking changes TanStack Query v5 и исправь

## Похожие
- [frontend-state-management](https://affpapa.org/nevibecode/skills/frontend-state-management.md) — скилл · 480 установок
- [zustand-state-management](https://affpapa.org/nevibecode/skills/zustand-state-management.md) — скилл · 959 установок
- [react-state-management](https://affpapa.org/nevibecode/skills/react-state-management.md) — скилл · 15286 установок
- [React State Management taste](https://affpapa.org/nevibecode/prompts/react-state-management-taste.md) — промпт · ★ 174597
- [zustand](https://affpapa.org/nevibecode/skills/pedronauck-zustand.md) — скилл · 353 установки
- [zustand-patterns](https://affpapa.org/nevibecode/skills/zustand-patterns.md) — скилл · 1400 установок

## Другие версии с тем же именем
- [state-management · akillness](https://affpapa.org/nevibecode/skills/akillness-state-management.md) — 365 установок

Из того же набора: [asyrafhussin/agent-skills](https://affpapa.org/nevibecode/by/asyrafhussin/agent-skills.md) — 12 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

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