- Stack: TypeScript + React (TanStack Start), with Drizzle ORM, shadcn/ui, and Better Auth.
- Use shadcn CLI (
pnpm ui add <component>) for adding new UI components & primitives. - Use
lucide-reactfor UI icons (useIconsuffix, e.g.import { Loader2Icon } from "lucide-react"); for brand icons use@icons-pack/react-simple-icons(e.g.SiGithub). - Don't build after every little change. If
pnpm lintpasses; assume changes work.
- TanStack patterns - Routing, data fetching, loaders, server functions, environment shaking
- Auth patterns - Route guards, middleware, auth utilities
- TypeScript conventions - Casting rules, prefer type inference
- Workflow - Workflow commands, validation approach
Before substantial work:
- Skill check: run
pnpm intent list, or use skills already listed in context. - Skill guidance: if one local skill clearly matches the task, run
pnpm intent load <package>#<skill>and follow the returnedSKILL.md. - Multiple matches: prefer the most specific local skill for the package or concern you are changing; load additional skills only when the task spans multiple packages or concerns.
Use pnpm tanstack (aliased to pnpm dlx @tanstack/cli@latest) to look up TanStack documentation. Always pass --json for machine-readable output.
# List TanStack libraries (optionally filter by --group state|headlessUI|performance|tooling)
pnpm tanstack libraries --json
# Fetch a specific doc page
pnpm tanstack doc router framework/react/guide/data-loading --json
pnpm tanstack doc query framework/react/overview --docs-version v5 --json
# Search docs (optionally filter by --library, --framework, --limit)
pnpm tanstack search-docs "server functions" --library start --json
pnpm tanstack search-docs "loaders" --library router --framework react --json