Aller au contenu principal

Skill: state-management

Inline

State management patterns and implementation. Trigger when the user wants to manage global state, use Redux, Zustand, or other solutions.

Configuration​

PropertyValue
Contextinline
Pre-approved toolsNone declared: the project's permission settings apply
Triggerkeywords: state, management

Detailed description​

State Management (pointer)

Library APIs, install steps and idiomatic code drift on each release and are canonical at:

Decision tree (version-agnostic)​

Need shared state?
├── No → useState/useReducer
└── Yes →
├── Server state (fetch + cache + invalidate) → TanStack Query / SWR
├── Forms → React Hook Form
├── Small client state (<5 stores) → Zustand
├── Large client state (>5 stores) → Redux Toolkit
└── Theme/Auth singletons → Context + useReducer

Foundation discipline (keep across releases)​

  • Client vs server state: never put server state in a client store (Zustand/Redux). Use TanStack Query for fetched data; Zustand/Redux for UI state, filters, drafts.
  • Domain separation: one store per domain, not one global store. Easier to test and lazy-load.
  • Granular selectors: subscribe to slices, not whole stores — see [[dev-react-perf]] for re-render audit when a store change cascades.

See also​

  • dev-react-perf skill — re-render diagnosis when selectors are too broad
  • dev-tdd — store reducers/selectors test well in isolation (no DOM needed)
  • Redux Toolkit — from v2.12 the @reduxjs/toolkit npm package ships eight skills of its own (modern Redux, slices and selectors, state ownership, side effects, RTK Query, debugging, migration) under node_modules/@reduxjs/toolkit/skills/, versioned with the library you installed. Link the ones you need into .claude/skills/ with what they declare in requires: (modern-redux needs redux-dataflow); in a repository that versions .claude/, copy them instead. Screened: the 2.13.0 contents. Zustand, Jotai and TanStack Query ship none (2026-10-04).

Automatic triggering​

This skill is automatically activated when:

  • The matching keywords are detected in the conversation
  • The task context matches the skill's domain

Triggering examples​

  • "I want to state..."
  • "I want to management..."

Context inline​

Inline means the skill runs in the conversation (the default, no context key):

  • Sees the full history
  • Its work is visible as it happens
  • Right for almost every skill

See also​