Antigravity-awesome-skills zustand-store-ts
Create Zustand stores following established patterns with proper TypeScript types and middleware.
install
source · Clone the upstream repo
git clone https://github.com/sickn33/antigravity-awesome-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sickn33/antigravity-awesome-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/antigravity-awesome-skills/skills/zustand-store-ts" ~/.claude/skills/sickn33-antigravity-awesome-skills-zustand-store-ts-a14a13 && rm -rf "$T"
manifest:
plugins/antigravity-awesome-skills/skills/zustand-store-ts/SKILL.mdsource content
Zustand Store
Create Zustand stores following established patterns with proper TypeScript types and middleware.
Quick Start
Copy the template from assets/template.ts and replace placeholders:
→ PascalCase store name (e.g.,{{StoreName}}
)Project
→ Brief description for JSDoc{{description}}
Always Use subscribeWithSelector
import { create } from 'zustand'; import { subscribeWithSelector } from 'zustand/middleware'; export const useMyStore = create<MyStore>()( subscribeWithSelector((set, get) => ({ // state and actions })) );
Separate State and Actions
export interface MyState { items: Item[]; isLoading: boolean; } export interface MyActions { addItem: (item: Item) => void; loadItems: () => Promise<void>; } export type MyStore = MyState & MyActions;
Use Individual Selectors
// Good - only re-renders when `items` changes const items = useMyStore((state) => state.items); // Avoid - re-renders on any state change const { items, isLoading } = useMyStore();
Subscribe Outside React
useMyStore.subscribe( (state) => state.selectedId, (selectedId) => console.log('Selected:', selectedId) );
Integration Steps
- Create store in
src/frontend/src/store/ - Export from
src/frontend/src/store/index.ts - Add tests in
src/frontend/src/store/*.test.ts
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.