Initial scaffold: Researcher Endorsement frontend
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
33
.github/skills/zustand-store-manager/SKILL.md
vendored
Normal file
33
.github/skills/zustand-store-manager/SKILL.md
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user