react-state-management — скилл для Claude Code
Помогает выбрать и настроить управление состоянием в React: локальное, глобальное, серверное, URL и состояние форм.
/plugin marketplace add wshobson/agents
/plugin install frontend-mobile-development@claude-code-workflowsЧто делает react-state-management
Скилл разбирает управление состоянием в React по категориям. Он сопоставляет локальное состояние с useState и useReducer, глобальное с Redux Toolkit, Zustand и Jotai, а серверные данные с React Query, SWR и RTK Query. Также затрагивает URL-состояние и состояние форм.
Внутри есть критерии выбора для небольших и крупных приложений, примеры Zustand с devtools и persist, рекомендации по селекторам, нормализации данных и разделению клиентского и серверного состояния. Отдельно разобраны оптимистичные обновления, отладка и переход с legacy Redux на Redux Toolkit.
Ставьте его, когда нужно принять решение по архитектуре состояния или провести миграцию. Для задачи вне React он не нужен.
Какие задачи решает
- выбрать библиотеку для глобального состояния React
- разделить серверное и клиентское состояние
- настроить Zustand с сохранением данных
- найти причину лишних перерисовок
- перенести legacy Redux на Redux Toolkit
Примеры запросов агенту
- Выбери между Redux Toolkit, Zustand и Jotai для этого React-приложения и объясни решение.
- Раздели состояние в проекте на локальное, глобальное и серверное, предложи схему с React Query.
- Покажи, как перенести этот legacy Redux reducer на Redux Toolkit.
Как установить react-state-management
1Через маркетплейс плагинов
/plugin marketplace add wshobson/agents/plugin install frontend-mobile-development@claude-code-workflows2Через Skills CLI (Vercel)
npx skills add wshobson/agents --skill react-state-management -a claude-code3Вручную: положить файлы
~/.claude/skills/react-state-management/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/react-state-management/
1Через Skills CLI (Vercel)
npx skills add wshobson/agents --skill react-state-management -a codex2Вручную: положить файлы
.agents/skills/react-state-management/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add wshobson/agents --skill react-state-management -a cursor2Вручную: положить файлы
.cursor/skills/react-state-management/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install wshobson/agents react-state-management2Вручную: положить файлы
.github/skills/react-state-management/SKILL.mdКомандой платформы
gemini skills install https://github.com/wshobson/agents --path plugins/frontend-mobile-development/skills/react-state-managementВручную: положить файлы
.devin/skills/react-state-management/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Похожие
Вопросы о react-state-management
Как установить react-state-management в Claude Code?
Выполните npx skills add wshobson/agents --skill react-state-management -a claude-code. Файл скилла появится в ~/.claude/skills/react-state-management/SKILL.md.
Что делает react-state-management?
Скилл помогает проектировать состояние React-приложения и выбирать между Redux Toolkit, Zustand, Jotai, React Query и связанными решениями.
Какие платформы поддерживает react-state-management?
Скилл рассчитан на Claude Code, Codex и Cursor. В инструкциях также есть команды для GitHub Copilot и Gemini CLI.
Исходный текст
SKILL.md · MIT
---
name: react-state-management
description: Master modern React state management with Redux Toolkit, Zustand, Jotai, and React Query. Use when setting up global state, managing server state, or choosing between state management solutions.
---
# React State Management
Comprehensive guide to modern React state management patterns, from local component state to global stores and server state synchronization.
## When to Use This Skill
- Setting up global state management in a React app
- Choosing between Redux Toolkit, Zustand, or Jotai
- Managing server state with React Query or SWR
- Implementing optimistic updates
- Debugging state-related issues
- Migrating from legacy Redux to modern patterns
## Core Concepts
### 1. State Categories
| Type | Description | Solutions |
| ---------------- | ---------------------------- | ----------------------------- |
| **Local State** | Component-specific, UI state | useState, useReducer |
| **Global State** | Shared across components | Redux Toolkit, Zustand, Jotai |
| **Server State** | Remote data, caching | React Query, SWR, RTK Query |
| **URL State** | Route parameters, search | React Router, nuqs |
| **Form State** | Input values, validation | React Hook Form, Formik |
### 2. Selection Criteria
```
Small app, simple state → Zustand or Jotai
Large app, complex state → Redux Toolkit
Heavy server interaction → React Query + light client state
Atomic/granular updates → Jotai
```
## Quick Start
### Zustand (Simplest)
```typescript
// store/useStore.ts
import { create } from 'zustand'
import { devtools, persist } from 'zustand/middleware'
interface AppState {
user: User | null
theme: 'light' | 'dark'
setUser: (user: User | null) => void
toggleTheme: () => void
}
export const useStore = create<AppState>()(
devtools(
persist(
(set) => ({
user: null,
theme: 'light',
setUser: (user) => set({ user }),
toggleTheme: () => set((state) => ({
theme: state.theme === 'light' ? 'dark' : 'light'
})),
}),
{ name: 'app-storage' }
)
)
)
// Usage in component
function Header() {
const { user, theme, toggleTheme } = useStore()
return (
<header className={theme}>
{user?.name}
<button onClick={toggleTheme}>Toggle Theme</button>
</header>
)
}
```
## Detailed patterns and worked examples
Detailed pattern documentation lives in `references/details.md`. Read that file when the navigation tier above is insufficient.
## Best Practices
### Do's
- **Colocate state** - Keep state as close to where it's used as possible
- **Use selectors** - Prevent unnecessary re-renders with selective subscriptions
- **Normalize data** - Flatten nested structures for easier updates
- **Type everything** - Full TypeScript coverage prevents runtime errors
- **Separate concerns** - Server state (React Query) vs client state (Zustand)
### Don'ts
- **Don't over-globalize** - Not everything needs to be in global state
- **Don't duplicate server state** - Let React Query manage it
- **Don't mutate directly** - Always use immutable updates
- **Don't store derived data** - Compute it instead
- **Don't mix paradigms** - Pick one primary solution per category
## Migration Guides
### From Legacy Redux to RTK
```typescript
// Before (legacy Redux)
const ADD_TODO = "ADD_TODO";
const addTodo = (text) => ({ type: ADD_TODO, payload: text });
function todosReducer(state = [], action) {
switch (action.type) {
case ADD_TODO:
return [...state, { text: action.payload, completed: false }];
default:
return state;
}
}
// After (Redux Toolkit)
const todosSlice = createSlice({
name: "todos",
initialState: [],
reducers: {
addTodo: (state, action: PayloadAction<string>) => {
// Immer allows "mutations"
state.push({ text: action.payload, completed: false });
},
},
});
```
© Seth Hobson · MIT · wshobson/agents