Use conventional commits:
feat: add user profile page
fix: correct modal z-index on mobile
refactor: extract field styles to shared module
docs: update component API reference
test: add Button loading state tests
chore: update panda css to v1.9
- Create a feature branch:
git checkout -b feat/my-feature - Make changes, run checks:
bun run typecheck bun run test -- --run - Commit with conventional commit message
- Push and open PR
-
bun run typecheckpasses -
bun run test -- --runpasses - No unused imports or dead code
- No
anytypes without justification
- File created in
src/components/ui/ComponentName.tsx - Uses
cva()for variants,css()for static styles - Wraps BaseUI primitive if interactive (Dialog, Select, etc.)
- Accepts
classNameprop for composition - Accepts
refas a regular prop (React 19 — noforwardRef) - Exported from
src/components/ui/index.ts - Types exported (
ComponentNameProps) - No
styled()— onlycss()/cva() - z-index values are only -1, 0, or 1
If available, use:
qmd— quick file reading, faster than cat for exploring the codebaseast-grep— structural code search/refactoring (find allcva()usages, rename patterns, etc.)
When splitting work across sub-agents:
- One agent per feature/file group — avoid two agents editing the same file
- Barrel exports last — the agent that creates the component should update
index.ts - Tests alongside implementation — don't defer tests to a separate agent
- Share context via files — write decisions to a scratch file if agents need to coordinate