agent-creator
Use when creating expert agents. Generates agent.md with frontmatter, hooks, required sections, and skill references.
Zustand v5 state management for React. Use when implementing global state, stores, persist, or client-side state.
$ npx -y skills add fusengine/agents --skill react-state --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/react-stateContext preview
The summary Claude sees to decide when to auto-load this skill.
Zustand v5 state management for React. Use when implementing global state, stores, persist, or client-side state.
name: react-state description: Zustand v5 state management for React. Use when implementing global state, stores, persist, or client-side state. versions: zustand: 5.0 react: 19 user-invocable: true references: references/installation.md, references/store-patterns.md, references/middleware.md, references/typescript.md, references/slices.md, references/auto-selectors.md, references/reset-state.md, references/subscribe-api.md, references/testing.md, references/migration-v5.md related-skills: react-19, react-forms, solid-react
<objective> Implements Zustand v5 global state management for React applications: the v5 currying syntax (`create<State>()((set) => ({...}))`), the selector pattern (`useStore((s) => s.field)`), `useShallow` for array/object selectors to prevent unnecessary re-renders, and middleware composition (devtools → persist → immer, order-sensitive for TypeScript).
Covers separating stores by domain (auth, cart, ui, theme) rather than one giant store, SOLID file organization (`store.ts`, `store.interface.ts`, `use-store.ts`), and forbidden patterns (persisting auth tokens, v4 syntax, skipping `useShallow`). This is the plain-React variant of Zustand (no App Router request-isolation concerns) — for Next.js App Router see nextjs-zustand, and for server state use TanStack Query instead of this skill. </objective>
Minimal, scalable state management with React 18+ useSyncExternalStore.
Before ANY implementation, spawn 3 agents in parallel, one `Agent` call each with a `name`:
1. **fuse-ai-pilot:explore-codebase** - Analyze existing stores and state patterns 2. **fuse-ai-pilot:research-expert** - Verify latest Zustand v5 docs via Context7/Exa 3. **mcp__context7__query-docs** - Check middleware and TypeScript patterns
After implementation, run **fuse-ai-pilot:sniper** for validation.
---
| Feature | Benefit | |---------|---------| | Minimal API | Simple create() function, no boilerplate | | React 18 native | useSyncExternalStore, no shims needed | | TypeScript first | Full inference with currying pattern | | Middleware stack | devtools, persist, immer composable | | Bundle size | ~2KB gzipped, smallest state library | | No providers | Direct store access, no Context wrapper |
---
1. **useShallow for arrays/objects** - Prevent unnecessary re-renders 2. **Currying syntax v5** - `create<State>()((set) => ({...}))` 3. **SOLID paths** - Stores in `modules/[feature]/src/stores/` 4. **Separate stores** - One store per domain (auth, cart, ui, theme) 5. **Server state elsewhere** - Use TanStack Query for server state
---
Stores organized by feature module:
| File | Purpose | Max Lines | |------|---------|-----------| | `store.ts` | Store creation with create() | 50 | | `store.interface.ts` | TypeScript interfaces | 30 | | `use-store.ts` | Custom hook with selector | 20 |
---
Double parentheses required for TypeScript inference. Currying pattern ensures full type safety.
Stack middlewares: devtools -> persist -> immer. Order matters for TypeScript types.
Always use `useStore((s) => s.field)` for performance. Use `useShallow` for array/object selectors.
---
| Need | Reference | |------|-----------| | Initial setup | [installation.md](references/installation.md) | | Store patterns | [store-patterns.md](references/store-patterns.md) | | Middleware | [middleware.md](references/middleware.md) | | TypeScript | [typescript.md](references/typescript.md) | | Slices pattern | [slices.md](references/slices.md) | | Auto selectors | [auto-selectors.md](references/auto-selectors.md) | | Reset state | [reset-state.md](references/reset-state.md) | | Subscribe API | [subscribe-api.md](references/subscribe-api.md) | | Testing | [testing.md](references/testing.md) | | Migration v4→v5 | [migration-v5.md](references/migration-v5.md) |
---
1. **Selector pattern** - Always use `useStore((s) => s.field)` for performance 2. **useShallow** - Wrap array/object selectors to prevent re-renders 3. **Separate stores** - One store per domain (auth, cart, ui, theme) 4. **Server data elsewhere** - Use TanStack Query for server state 5. **DevTools in dev only** - Wrap devtools in process.env check 6. **Partialize persist** - Only persist necessary fields, never tokens
---
| Pattern | Reason | Alternative | |---------|--------|-------------| | Persisting auth tokens | Security vulnerability | httpOnly cookies | | Without useShallow on objects | Excessive re-renders | `useShallow(selector)` | | v4 syntax | TypeScript inference broken | v5 currying `create<T>()()` | | Giant monolithic store | Hard to maintain | Slices or separate stores |
A plugin ecosystem that turns Claude Code into a supervised, multi-agent development environment.
Repo: fusengine/agents
Use when creating expert agents. Generates agent.md with frontmatter, hooks, required sections, and skill references.
Use when starting ANY development task -- feature, bug fix, refactor, hotfix (triggers: implement, create, build, fix, add feature, refactor, develop).
Use when creating a feature/component or adding functionality. Fires BEFORE APEX Analyze to refine requirements via structured questioning.
Use before a root-cause, done/verified claim, irreversible action, or 2nd-time fix reaches the owner (APEX or plain conversation); also fires at every…
Use when validating code quality after modifications -- SOLID compliance, DRY duplication, linter errors, architecture violations. Do NOT use for functional…
Use when an expert agent self-reviews and self-corrects code after the Execute phase, before sniper validation (BMAD-METHOD elicitation techniques).