Files
endorsment/.github/skills/zustand-store-manager/SKILL.md

34 lines
1.2 KiB
Markdown

---
name: zustand-store-manager
description: "Generates typed Zustand stores (usePaperStore, useAuthStore) with devtools and persist middleware for localStorage."
license: MIT
triggers:
- "create zustand store"
- "generate usePaperStore"
- "persist zustand"
---
# Zustand Store Manager
When to use this skill
- Use when centralizing client state (papers, endorsements, likes, user profile) without a backend.
- Triggered by requests to scaffold or update stores, add persistence, or wire devtools.
Instructions
1. First Step: Create typed store files under `src/stores/` (e.g., `usePaperStore.ts`) using `create` from `zustand` and `persist`/`devtools` middleware.
2. Second Step: Expose actions and selectors that the UI will consume (`addEndorsement`, `toggleLike`, `fetchPapers` placeholder).
3. Third Step: Document how to access state in components and how to reset/seed state for tests.
Examples
- `usePaperStore` exposes `papers`, `loading`, `addEndorsement(paperId, endorser)` and `reset()`.
Notes
- Include clear type definitions for the store payloads to keep UI and store in sync.
- Recommend `zustand/middleware` persist name (`arxiv-social-storage`) and a migration strategy when types change.