К основному содержанию
скилл CX Codex

zustand-patterns — скилл для Claude Code: паттерны Zustand 5.x

Справочник по управлению состоянием на Zustand 5.x: слайсы, middleware, Immer, useShallow, персистентность и devtools. Пригодится, когда хочется уйти от Redux без лишнего кода.

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

Что делает zustand-patterns

Скилл открывается, когда агент работает с файлами вроде *.store.*, **/store/** или *.zustand.*. Внутри — семь основных паттернов с примерами на TypeScript и разбор антипаттернов: деструктуризация всего стора, хранение серверного состояния, прямая мутация. Механику Zustand скилл не пересказывает, а держит только дельту OrchestKit в references/ork-delta.md и файлах rules/.

Ключевые решения собраны в таблицы. Структура — слайсы в одном сторе, а не несколько сторов, потому что так проще ходить между слайсами. Для вложенности от трёх уровней советует Immer, для 2–5 связанных значений — useShallow. Порядок middleware задан жёстко: immer, затем subscribeWithSelector, devtools и persist. Серверное состояние скилл отдаёт TanStack Query, а в Zustand оставляет только клиентское.

Требуется Zustand 5.0.0 и выше, скилл рассчитан на Claude 2.1.277+. Модель — haiku, доступны только Read, Write, Grep, Glob. Вызывать вручную нельзя: user-invocable: false. Если в проекте ещё Zustand 4.x, паттерны из справочника не совпадут с вашим API — это повод сначала обновить библиотеку.

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

  • разложить большой стор на слайсы и не потерять типы
  • собрать middleware в правильном порядке
  • убрать лишние ре-рендеры через useShallow
  • добавить persist с миграцией схемы между версиями
  • отделить серверное состояние от клиентского

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

  • Создай типизированный стор Zustand с двумя слайсами: корзина и пользователь
  • Проверь мой стор на антипаттерны Zustand и покажи, что переписать
  • Настрой persist с partialize и миграцией с версии 1 на 2

Как установить zustand-patterns

1Через Skills CLI (Vercel)

npx skills add yonatangross/orchestkit --skill zustand-patterns -a claude-code

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

~/.claude/skills/zustand-patterns/SKILL.md

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

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о zustand-patterns

Как установить zustand-patterns в Claude?

Выполните npx skills add yonatangross/orchestkit --skill zustand-patterns -a claude-code. Скилл окажется в ~/.claude/skills/zustand-patterns/SKILL.md.

Что делает zustand-patterns?

Даёт агенту справочник по Zustand 5.x: слайсы, middleware, Immer, useShallow, персистентность, селекторы и devtools. Плюс список запрещённых приёмов и шаблон стора для продакшена.

С какой версией Zustand работает скилл?

С Zustand 5.0.0 и выше. Для 4.x паттерны не подойдут, там другой API и миграция на createWithEqualityFn.

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

SKILL.md · MIT
---
name: zustand-patterns
license: MIT
compatibility: "Claude Code 2.1.277+."
description: "Reference for Zustand 5.x state management including slices, middleware, Immer, useShallow, persistence, selectors, and devtools integration. Documents 7 core patterns with TypeScript examples and anti-patterns. Use when building React state management with Zustand instead of Redux."
context: inherit
allowed-tools: "Read Write Grep Glob"
user-invocable: false
disable-model-invocation: true
effort: low
targets:
  - library: zustand
    version: ">=5.0.0"
model: haiku
metadata:
  category: document-asset-creation
  version: "1.0.0"
  author: "OrchestKit"
  complexity: "low"
  tags: "zustand, state-management, react, immer, middleware, persistence, slices"
path_patterns: ["**/store/**", "**/stores/**", "*.store.*", "*.zustand.*"]
---

# Zustand Patterns

Modern state management with Zustand 5.x - lightweight, TypeScript-first, no boilerplate.

## Overview

- Global state without Redux complexity
- Shared state across components without prop drilling
- Persisted state with localStorage/sessionStorage
- Computed/derived state with selectors
- State that needs middleware (logging, devtools, persistence)

## Upstream coverage (do not restate)

Zustand's own docs are the source for the mechanics. This skill carries only the OrchestKit delta
on top of them, in `references/ork-delta.md`, the `rules/` files, and the checklist.

| Topic | First-party source |
|-------|--------------------|
| Basic store, `create<State>()()`, actions, async actions | https://github.com/pmndrs/zustand/blob/main/docs/reference/apis/create.md |
| Slices pattern (splitting and combining stores) | https://github.com/pmndrs/zustand/blob/main/docs/learn/guides/slices-pattern.md |
| Typing slices and middleware mutator tuples | https://github.com/pmndrs/zustand/blob/main/docs/learn/guides/advanced-typescript.md |
| Immer middleware (draft mutations) | https://github.com/pmndrs/zustand/blob/main/docs/reference/middlewares/immer.md |
| persist: `partialize`, `version`, `migrate`, `onRehydrateStorage`, storage adapters | https://github.com/pmndrs/zustand/blob/main/docs/reference/middlewares/persist.md |
| devtools: action names, `enabled`, `serialize`, `trace` | https://github.com/pmndrs/zustand/blob/main/docs/reference/middlewares/devtools.md |
| `subscribeWithSelector` and non-React subscriptions | https://github.com/pmndrs/zustand/blob/main/docs/reference/middlewares/subscribe-with-selector.md |
| Selectors and `useShallow` re-render control | https://github.com/pmndrs/zustand/blob/main/docs/learn/guides/prevent-rerenders-with-use-shallow.md |
| v4 to v5 migration (`createWithEqualityFn`, React 18 floor) | https://github.com/pmndrs/zustand/blob/main/docs/reference/migrations/migrating-to-v5.md |
| SSR and hydration | https://github.com/pmndrs/zustand/blob/main/docs/learn/guides/ssr-and-hydration.md |
| Store testing and reset | https://github.com/pmndrs/zustand/blob/main/docs/learn/guides/testing.md |
| Server-state ownership (use TanStack Query, not Zustand) | https://tanstack.com/query/latest/docs/framework/react/guides/does-this-replace-client-state |

## Quick Reference

```typescript
// ✅ Create typed store with double-call pattern
const useStore = create<State>()((set, get) => ({ ... }));

// ✅ Use selectors for all state access
const count = useStore((s) => s.count);

// ✅ Use useShallow for multiple values (Zustand 5.x)
const { a, b } = useStore(useShallow((s) => ({ a: s.a, b: s.b })));

// ✅ Middleware order: immer → subscribeWithSelector → devtools → persist
create(persist(devtools(immer((set) => ({ ... })))))

// ❌ Never destructure entire store
const store = useStore(); // Re-renders on ANY change

// ❌ Never store server state (use TanStack Query instead)
const useStore = create((set) => ({ users: [], fetchUsers: async () => ... }));
```

## Key Decisions

| Decision | Option A | Option B | Recommendation |
|----------|----------|----------|----------------|
| State structure | Single store | Multiple stores | **Slices in single store** - easier cross-slice access |
| Nested updates | Spread operator | Immer middleware | **Immer** for deeply nested state (3+ levels) |
| Persistence | Manual localStorage | persist middleware | **persist middleware** with partialize |
| Multiple values | Multiple selectors | useShallow | **useShallow** for 2-5 related values |
| Server state | Zustand | TanStack Query | **TanStack Query** - Zustand for client-only state |
| DevTools | Always on | Conditional | **Conditional** - `enabled: process.env.NODE_ENV === 'development'` |

## Anti-Patterns & Integration

Forbidden patterns (store destructuring, derived state, server state, direct mutation) and React Query integration guidance.

Load Read("references/anti-patterns-and-integration.md") for anti-pattern examples and TanStack Query separation patterns.

## Related Skills

- `react-server-components-framework` - RSC hydration considerations with Zustand
- Server state: https://tanstack.com/query/latest/docs/framework/react/guides/does-this-replace-client-state
- Form state: https://react-hook-form.com/docs/useform

## Capability Details

### store-creation
**Keywords**: zustand, create, store, typescript, state
**Solves**: Setting up type-safe Zustand stores with proper TypeScript inference

### slices-pattern
**Keywords**: slices, modular, split, combine, StateCreator
**Solves**: Organizing large stores into maintainable, domain-specific slices

### middleware-stack
**Keywords**: immer, persist, devtools, middleware, compose
**Solves**: Combining middleware in correct order for immutability, persistence, and debugging

### selector-optimization
**Keywords**: selector, useShallow, re-render, performance, memoization
**Solves**: Preventing unnecessary re-renders with proper selector patterns

### persistence-migration
**Keywords**: persist, localStorage, sessionStorage, migrate, version
**Solves**: Persisting state with schema migrations between versions

## References

Load on demand with `Read("references/<file>")`:

| File | Content |
|------|---------|
| `ork-delta.md` | OrchestKit-specific rules: the corrected `zustand/shallow` label, the v5 floor, secret handling, graded slice typing |
| `anti-patterns-and-integration.md` | Forbidden patterns and React Query integration |

Other resources:
- Load: `Read("scripts/store-template.ts")` - Production-ready store template
- Load: `Read("checklists/zustand-checklist.md")` - Implementation checklist

© OrchestKit · MIT · yonatangross/orchestkit

Похожие скиллы

Всё по теме «Фронтенд и UI» →
zustand bobmatnyc Скилл по zustand: минимальный стейт-менеджер для React на хуках, без провайдеров и лишнего кода. Пригодится, когда глобальное состояние нужно, а Redux не хочется. CX Codex +1 485установок zustand-store-ts Microsoft Скилл задаёт шаблон стора Zustand на TypeScript: отдельные типы для состояния и действий, middleware subscribeWithSelector, селекторы. 3установок zustand-state-management Mindrally Задаёт правила архитектуры сторов Zustand в React и TypeScript: от нарезки слайсов до SSR и тестов. Помогает избежать лишних ререндеров и ошибок гидратации. CX Codex +1 959установок zustand-5 prowler-cloud Скилл с паттернами управления состоянием в Zustand 5: базовые хранилища, селекторы, persist-middleware и разделение логики на слайсы. Помогает писать чистый реактивный код без лишних ре-рендеров. CX Codex +1 911установок state-management agent-skills Скилл с готовыми паттернами TanStack Query v5 и Zustand v5: запросы, кеш, мутации, оптимистичные обновления и клиентские сторы. CX Codex +1 783установок frontend-state-management aj-geddes Скилл для работы с состоянием фронтенда: подсказывает, как организовать Redux, MobX, Zustand или Context API в приложении. CX Codex +1 480установок

Из того же набора11

devops-deployment Скилл для настройки CI/CD, контейнеризации и инфраструктуры как кода: подсказывает паттерны GitHub Actions, Docker, Helm и Terraform. CX Codex +1 1 600установок rag-retrieval Скилл с готовыми паттернами retrieval-augmented generation: гибридный поиск, HyDE, реранкинг, pgvector. Пригодится, когда строишь RAG-пайплайн и нужны рабочие схемы, а не теория. CX Codex +1 1 500установок ui-components Скилл задаёт правила разработки интерфейсов на базе shadcn/ui и Radix Primitives. Помогает строить дизайн-системы, настраивать стили v4 и связывать формы с Zod. CX Codex +1 1 500установок agent-orchestration Скилл с паттернами автономных циклов, координации нескольких агентов и мультисценарных прогонов. Пригодится, когда строите агентные пайплайны и выбираете фреймворк. CX Codex +1 1 400установок domain-driven-design Скилл для тактического DDD: сущности, объекты-значения, агрегаты и ограниченные контексты. Пригодится, когда бизнес-логика перестаёт помещаться в CRUD. CX Codex +1 1 300установок security-patterns Скилл с паттернами аутентификации, валидации ввода, защиты от инъекций и маскирования PII. Пригодится, когда пишете auth-флоу или закрываете OWASP Top 10. CX Codex +1 731установок langgraph Скилл с 41 правилом по LangGraph 1.x на Python: состояние, таймауты узлов, маршрутизация, супервизоры, чекпоинты. Пригодится, когда собираете пайплайн или мультиагентную систему. CX Codex +1 359установок write-prd Составляет требования к продукту из восьми разделов, пользовательские истории по INVEST и критерии приёмки в файле Markdown. CX Codex +1 329установок

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

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