tanstack-router-best-practices — Claude Code skill: TanStack Router
A rule set for TanStack Router in React: type safety, data loading, search params, navigation. Useful once routing in a project grows past a few pages.
npx skills add DeckardGer/tanstack-agent-skills --skill tanstack-router-best-practices -a claude-code
npx skills add DeckardGer/tanstack-agent-skills --skill tanstack-router -a claude-codeWhat tanstack-router-best-practices does
The skill splits its rules into priority tiers. Type safety and route organization come first, then router config, data loading, search params and error handling, with navigation, code splitting, preloading and route context below. Rules carry prefixes like ts-, load-, search- and nav-.
Every rule lives in its own file under rules/. The format repeats: why the pattern matters, a bad example, a good example, and a note on when to apply or skip it. Your agent pulls the relevant file while you set up routes, wire loaders or untangle URL state.
This targets React apps that already use TanStack Router. Several data-loading rules assume TanStack Query — queryOptions inside loaders, ensureQueryData. No Query in the project? Skip those entries, the rest stands on its own.
What it helps with
- register the router type for global inference
- lay out routes as files and nested levels
- set up loaders and cache control with
loaderDeps - validate search params and give them defaults
- split critical data from the rest in a loader
Example prompts for the agent
- Set up file-based routing in TanStack Router following the skill rules
- Check my loaders — am I using
loaderDepsandensureQueryDatacorrectly? - Walk through the search params on this route and add validation plus defaults
How to install tanstack-router-best-practices
1Skills CLI (Vercel)
npx skills add DeckardGer/tanstack-agent-skills --skill tanstack-router-best-practices -a claude-codenpx skills add DeckardGer/tanstack-agent-skills --skill tanstack-router -a claude-code2Manually: put the files in place
~/.claude/skills/tanstack-router/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/tanstack-router/
1Skills CLI (Vercel)
npx skills add DeckardGer/tanstack-agent-skills --skill tanstack-router -a codex2Manually: put the files in place
.agents/skills/tanstack-router/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add DeckardGer/tanstack-agent-skills --skill tanstack-router -a cursor2Manually: put the files in place
.cursor/skills/tanstack-router/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install DeckardGer/tanstack-agent-skills tanstack-router2Manually: put the files in place
.github/skills/tanstack-router/SKILL.md1Skills CLI (Vercel)
npx skills add DeckardGer/tanstack-agent-skills --skill tanstack-router -a gemini-cli2Platform CLI
gemini skills install https://github.com/DeckardGer/tanstack-agent-skills --path skills/tanstack-routerManually: put the files in place
.devin/skills/tanstack-router/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add DeckardGer/tanstack-agent-skills --skill tanstack-router -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about tanstack-router-best-practices
How do I install tanstack-router-best-practices in Claude?
Run npx skills add DeckardGer/tanstack-agent-skills --skill tanstack-router-best-practices -a claude-code. The skill file then lands at ~/.claude/skills/tanstack-router/SKILL.md.
What does tanstack-router-best-practices do?
It hands your agent a set of TanStack Router rules covering type safety, route organization, loaders, search params, navigation, code splitting and preloading. Each rule ships with bad and good code examples.
Does the skill require TanStack Query?
No, but some data-loading rules build on Query — queryOptions in loaders and ensureQueryData. Without Query those entries simply do not apply.
Source text
SKILL.md · MIT
--- name: tanstack-router-best-practices description: TanStack Router best practices for type-safe routing, data loading, search params, and navigation. Activate when building React applications with complex routing needs. --- # TanStack Router Best Practices Comprehensive guidelines for implementing TanStack Router patterns in React applications. These rules optimize type safety, data loading, navigation, and code organization. ## When to Apply - Setting up application routing - Creating new routes and layouts - Implementing search parameter handling - Configuring data loaders - Setting up code splitting - Integrating with TanStack Query - Refactoring navigation patterns ## Rule Categories by Priority | Priority | Category | Rules | Impact | |----------|----------|-------|--------| | CRITICAL | Type Safety | 4 rules | Prevents runtime errors and enables refactoring | | CRITICAL | Route Organization | 5 rules | Ensures maintainable route structure | | HIGH | Router Config | 1 rule | Global router defaults | | HIGH | Data Loading | 6 rules | Optimizes data fetching and caching | | HIGH | Search Params | 5 rules | Enables type-safe URL state | | HIGH | Error Handling | 1 rule | Handles 404 and errors gracefully | | MEDIUM | Navigation | 5 rules | Improves UX and accessibility | | MEDIUM | Code Splitting | 3 rules | Reduces bundle size | | MEDIUM | Preloading | 3 rules | Improves perceived performance | | LOW | Route Context | 3 rules | Enables dependency injection | ## Quick Reference ### Type Safety (Prefix: `ts-`) - `ts-register-router` — Register router type for global inference - `ts-use-from-param` — Use `from` parameter for type narrowing - `ts-route-context-typing` — Type route context with createRootRouteWithContext - `ts-query-options-loader` — Use queryOptions in loaders for type inference ### Router Config (Prefix: `router-`) - `router-default-options` — Configure router defaults (scrollRestoration, defaultErrorComponent, etc.) ### Route Organization (Prefix: `org-`) - `org-file-based-routing` — Prefer file-based routing for conventions - `org-route-tree-structure` — Follow hierarchical route tree patterns - `org-pathless-layouts` — Use pathless routes for shared layouts - `org-index-routes` — Understand index vs layout routes - `org-virtual-routes` — Understand virtual file routes ### Data Loading (Prefix: `load-`) - `load-use-loaders` — Use route loaders for data fetching - `load-loader-deps` — Define loaderDeps for cache control - `load-ensure-query-data` — Use ensureQueryData with TanStack Query - `load-deferred-data` — Split critical and non-critical data - `load-error-handling` — Handle loader errors appropriately - `load-parallel` — Leverage parallel route loading ### Search Params (Prefix: `search-`) - `search-validation` — Always validate search params - `search-type-inheritance` — Leverage parent search param types - `search-middleware` — Use search param middleware - `search-defaults` — Provide sensible defaults - `search-custom-serializer` — Configure custom search param serializers ### Error Handling (Prefix: `err-`) - `err-not-found` — Handle not-found routes properly ### Navigation (Prefix: `nav-`) - `nav-link-component` — Prefer Link component for navigation - `nav-active-states` — Configure active link states - `nav-use-navigate` — Use useNavigate for programmatic navigation - `nav-relative-paths` — Understand relative path navigation - `nav-route-masks` — Use route masks for modal URLs ### Code Splitting (Prefix: `split-`) - `split-lazy-routes` — Use .lazy.tsx for code splitting - `split-critical-path` — Keep critical config in main route file - `split-auto-splitting` — Enable autoCodeSplitting when possible ### Preloading (Prefix: `preload-`) - `preload-intent` — Enable intent-based preloading - `preload-stale-time` — Configure preload stale time - `preload-manual` — Use manual preloading strategically ### Route Context (Prefix: `ctx-`) - `ctx-root-context` — Define context at root route - `ctx-before-load` — Extend context in beforeLoad - `ctx-dependency-injection` — Use context for dependency injection ## How to Use Each rule file in the `rules/` directory contains: 1. **Explanation** — Why this pattern matters 2. **Bad Example** — Anti-pattern to avoid 3. **Good Example** — Recommended implementation 4. **Context** — When to apply or skip this rule ## Full Reference See individual rule files in `rules/` directory for detailed guidance and code examples.
© DeckardGer · MIT · DeckardGer/tanstack-agent-skills