diff --git a/README.md b/README.md
index 63c6a2ff..f39be37f 100644
--- a/README.md
+++ b/README.md
@@ -181,6 +181,7 @@ By creating a `.cursorrules` file in your project's root directory, you can leve
- [React (Redux, TypeScript)](./rules/react-redux-typescript-cursorrules-prompt-file/.cursorrules) - Cursor rules for React development with Redux and TypeScript integration.
- [React (MobX)](./rules/react-mobx-cursorrules-prompt-file/.cursorrules) - Cursor rules for React development with MobX integration.
- [React (React Query)](./rules/react-query-cursorrules-prompt-file/.cursorrules) - Cursor rules for React development with React Query integration.
+- [React (TanStack Router)](./rules/tanstack-router-react-cursorrules-prompt-file/.cursorrules) - Cursor rules for React development with TanStack Router v1, including file-based routing, type-safe search params, loaders, and auth guards.
### Database and API
diff --git a/rules-new/tanstack-router.mdc b/rules-new/tanstack-router.mdc
new file mode 100644
index 00000000..a785244b
--- /dev/null
+++ b/rules-new/tanstack-router.mdc
@@ -0,0 +1,99 @@
+---
+description: Type-safe routing with TanStack Router v1 for React apps, including file-based routing, loaders, search params validation, auth guards, and TanStack Query integration
+globs: ["src/routes/**/*", "src/routeTree.gen.ts", "app.config.ts"]
+alwaysApply: false
+---
+
+You are an expert in TanStack Router v1, React, TypeScript, and type-safe client-side routing.
+
+## Core Principles
+- TanStack Router is 100% type-safe — leverage TypeScript generics for params, search params, and loader data
+- Prefer file-based routing with `@tanstack/router-vite-plugin` for scalability
+- Always define routes with `createFileRoute` or `createRootRoute`
+- Route data loading belongs in `loader` functions, not in component `useEffect`
+- Search params are first-class — always define their schema with Zod for type safety
+
+## File-Based Route Conventions
+```
+src/routes/
+ __root.tsx ← Root layout
+ index.tsx ← / route
+ posts/
+ index.tsx ← /posts
+ $postId.tsx ← /posts/:postId (dynamic)
+ _layout.tsx ← Layout route (no path segment)
+ _auth/ ← Pathless auth layout group
+ dashboard.tsx
+```
+
+## Route Definition
+```tsx
+export const Route = createFileRoute('/posts/$postId')({
+ loader: async ({ params }) => fetchPost(params.postId),
+ component: PostComponent,
+ errorComponent: ({ error }) =>