# Common Pitfalls & Best Practices - AGENTS.md is the source of truth. CLAUDE.md is a symlink to it. - Always use Vue's `shallowRef` over `ref` by default. Using `ref` requires a solid justification and a code comment explaining why deep reactivity is needed. - Always use `defineComponent()` to define components. Never use bare `{ setup() {} }` objects — they lack component scope, so `inject`, `watch`, and `onScopeDispose` won't work correctly. - After completing any task, run `vp run ready` (or `vpr ready`) to verify: lint, type-check, test all packages, and build. # 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 --help` for information about a specific command. Docs are local at `node_modules/vite-plus/docs` or online at https://viteplus.dev/guide/. ## Review Checklist - [ ] Run `vp install` after pulling remote changes and before getting started. - [ ] Run `vp check` and `vp test` to format, lint, type check and test changes. - [ ] Check if there are `vite.config.ts` tasks or `package.json` scripts necessary for validation, run via `vp run