skilly. Buy ad slot
All skills
Community / AGENT SKILL

state-management

Vitammiin/agent-vorcl-flow
0 installs 2 GitHub stars
0

Клиентское состояние на Zustand — слайсы, селекторы, персист, экшены; граница «что НЕ поднимать в глобальный стор». Use при проектировании или правке клиентских сторов состояния во фронтенде.

BEFORE YOU INSTALL

Understand the trade-offs.

SECURITY REVIEW

Not yet assessed

Review the original instructions and requested permissions before installing.

No security review is available for this catalog entry yet.

SKILL QUALITY

Not yet assessed

How clearly the skill guides your agent, how complete its workflow is, and how you can check the outcome.

No quality assessment is available for this catalog entry yet.

The full skill.

Original instructions from the publisher’s SKILL.md

# Навык: State management (Zustand)

Клиентское UI-состояние на **Zustand**. Серверные данные — в TanStack Query (`$data-fetching`).

## Что держать в сторе
- Только клиентское UI-состояние: модалки, вкладки, черновики форм, тема, флаги.
- **Не** держи серверные данные, производное состояние (селектор) и локальное состояние компонента.
- **Не** храни переведённые строки — держи ключи/текущую локаль, текст резолвь через слой перевода при рендере (`$i18n`).

## Структура
- Стор на фичу (`src/features/<feature>/stores`), не один god-store.
- Слайсы `(set, get) => ({...})` объединяй.
- Экшены — внутри стора.

## Селекторы и перфоманс
- Узкая подписка: `useStore(s => s.value)`.
- Несколько полей — `useShallow`.

## Персист и middleware
- `persist` с `partialize` и `version`/`migrate`; `devtools`; `immer`.

## Пример
```ts
export const useCartStore = create<CartState>()(
  persist(
    (set) => ({
      items: [],
      add: (item) => set((s) => ({ items: [...s.items, item] })),
      clear: () => set({ items: [] }),
    }),
    { name: "cart", partialize: (s) => ({ items: s.items }) },
  ),
);
```