Imported from alexaapetrei/react-spa2023 (
AGENTS.md). Install upstream withnpx skills add alexaapetrei/react-spa2023. Copyright stays with the author.
Using Vite+, the Unified Toolchain for the Web
This project is using Vite+, a unified toolchain built on top of Vite, Rolldown, Vitest, tsdown, Oxlint, Oxfmt, and Vite Task. Vite+ wraps runtime management, package management, and frontend tooling in a single global CLI called vp. Vite+ is distinct from Vite, and it invokes Vite through vp dev and vp build. Run vp help to print a list of commands and vp <command> --help for information about a specific command.
Docs are local at node_modules/vite-plus/docs or online at https://viteplus.dev/guide/.
Built-in Commands vs Scripts
vp <name> runs a built-in command. vp run <name> runs a package.json script or a vite.config.ts task. Scripts cannot overwrite built-ins, so vp dev and vp run dev may do different things. Check package.json and vite.config.ts first, and run vp run <name> when the project defines a script or task with that name.
Tool Versions
Run vp toolchain to show versions and relationships in the active Vite+
release. Add a tool name to select part of the graph. For example, run
vp toolchain vite. Use --global to ignore the local vite-plus package. Use
vp why <package> to show the package-manager dependency graph.
Review Checklist
- Run
vp installafter pulling remote changes and before getting started. - Run
vp checkandvp testto format, lint, type check and test changes. - Check if there are
vite.config.tstasks orpackage.jsonscripts necessary for validation, run viavp run <script>. - If setup, runtime, or package-manager behavior looks wrong, run
vp env doctorand include its output when asking for help.
For any file search or grep in the current git indexed directory use fff tools
For state management, do not use useEffect if TanStack Router or TinyBase can express the same behavior.
- Prefer TanStack Router loaders, invalidation, route state, and navigation-driven state over
useEffect. - Prefer TinyBase reactive hooks, indexes, views, and store listeners over
useEffect. - Only use
useEffectfor behavior that cannot be expressed cleanly with Router or TinyBase.
