К основному содержанию
скилл CX Codex

tanstack-start · tanstack-skills — скилл для Claude Code: что делает и как установить

Скилл помогает создавать и сопровождать приложения на фреймворке TanStack Start с потоковым SSR, серверными функциями и маршрутизацией.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add tanstack-skills/tanstack-skills --skill tanstack-start -a claude-code
Открыть на GitHub

Что делает tanstack-start

Скилл даёт ассистенту инструкции по разработке на фреймворке TanStack Start. В основе стека лежат TanStack Router, сборщик Vinxi (Vite и Nitro), а также пакет @tanstack/react-start. Инструмент обучает модель правильно организовывать структуру папок app/routes, настраивать файл app.config.ts и генерировать дерево маршрутов в routeTree.gen.ts.

Для бэкенда скилл описывает создание RPC-вызовов через createServerFn с валидацией данных через Zod, цепочки createMiddleware для контекста авторизации и API-маршруты через createAPIFileRoute. Для рендеринга задаются правила стриминга с разделением критических и отложенных данных через defer и Suspense.

Фреймворк находится в статусе Release Candidate, поэтому поддержка React Server Components пока в активной разработке. Серверные функции обязаны возвращать только сериализуемые данные и не могут захватывать клиентские переменные из замыканий, иначе сборка завершится ошибкой.

Какие задачи решает

  • настроить потоковый SSR с отложенной загрузкой данных через defer
  • создать типобезопасные серверные функции с валидацией через Zod
  • организовать файловую маршрутизацию и контекст авторизации в middleware
  • сконфигурировать пресеты развёртывания Nitro для Node.js или бессерверных сред

Примеры запросов агенту

  • Настрой серверную функцию с методом POST и валидацией Zod для создания пользователя
  • Добавь middleware проверки сессии пользователя и передай user в контекст
  • Сделай маршрут дашборда с потоковым SSR и компонентом Suspense для медленных данных

Как установить tanstack-start

1Через Skills CLI (Vercel)

npx skills add tanstack-skills/tanstack-skills --skill tanstack-start -a claude-code

2Вручную: положить файлы

~/.claude/skills/tanstack-start/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/tanstack-start/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора12

tanstack-table Скилл учит агента настраивать headless-таблицы на TanStack Table v8. Он помогает правильно собрать сортировку и фильтрацию без поломки рендеров. CX Codex +1 5 400установок tanstack-router Скилл по TanStack Router для React и Solid: файловый роутинг, поисковые параметры и загрузка данных с проверкой типов. CX Codex +1 4 900установок tanstack-form Скилл учит ассистента создавать формы на базе TanStack Form с типизацией TypeScript, валидацией через Zod или Valibot и динамическими массивами полей. CX Codex +1 4 300установок tanstack-pacer Скилл подсказывает агенту, как подключить TanStack Pacer: дебаунс, троттлинг, лимиты запросов, очереди и батчинг в одном пакете. CX Codex +1 3 900установок tanstack-virtual Скилл подсказывает агенту, как подключить TanStack Virtual и рисовать только видимые строки в больших списках, таблицах и сетках. CX Codex +1 2 500установок tanstack-devtools Скилл учит агента подключать единую панель отладки TanStack в проектах на React. Помогает настроить плагины для Query, Router и рабочих процессов TanStack AI. CX Codex +1 2 300установок tanstack-store Скилл по TanStack Store: реактивный стор без привязки к фреймворку, адаптеры для React, Vue, Solid, Angular и Svelte. Пригодится, когда агент пишет состояние на @tanstack/store. CX Codex +1 1 800установок tanstack-cli Скилл проводит агента через создание проекта TanStack Start: подбирает интеграции, генерирует структуру и подсказывает по деплою. CX Codex +1 1 700установок

Другие версии tanstack-start

Похожие

clerk-tanstack-patterns clerk Подсказывает агенту, как подключить Clerk к TanStack React Start: защита маршрутов, createServerFn, лоадеры и middleware. CX Codex +1 15 500установок tanstack-start-best-practices DeckardGer Свод правил и паттернов для full-stack приложений на TanStack Start. Помогает настраивать серверные функции, сессии и потоковый SSR. CX Codex +1 9 800установок react-start TanStack Правила и шаблоны для проектов на TanStack Start с React. Помогает агенту писать изоморфный код, настраивать Vite и связывать серверные функции с UI. CX Codex +1 454установок start-core TanStack Скилл объясняет базовую структуру TanStack Start: Vite-плагин, роутер, корневой маршрут и серверные функции. Нужен при создании или проверке Start-проекта. CX Codex +1 447установок sentry-tanstack-start-sdk getsentry Пошагово настраивает Sentry в проектах на TanStack Start React. Скилл проверяет структуру файлов, подключает трейсинг, отслеживание ошибок и запись сессий. CX Codex +1 1 900установок bun-tanstack-start secondsky Скилл подсказывает агенту, как поднять full-stack приложение на TanStack Start с рантаймом Bun: роутинг, серверные функции, сборка. CX Codex +1 414установок

Рядом в теме «Фронтенд и UI»

Всё по теме «Фронтенд и UI» →

Вопросы о tanstack-start

Как установить tanstack-start в Claude Code?

Выполните команду npx skills add tanstack-skills/tanstack-skills --skill tanstack-start -a claude-code. Файл навыка сохранится по пути ~/.claude/skills/tanstack-start/SKILL.md.

Что делает скилл tanstack-start?

Он предоставляет агенту правила и примеры кода для работы с TanStack Start: от файлового роутинга и middleware до серверных RPC-функций и деплоя через пресеты Nitro.

Поддерживает ли фреймворк React Server Components?

Поддержка RSC находится в активной разработке. Разработчики планируют выпустить её как обратно совместимое дополнение в ветке v1.x.

Исходный текст

SKILL.md · MIT
---
name: tanstack-start
description: Full-stack React framework powered by TanStack Router with SSR, streaming, server functions, and deployment to any hosting provider.
---

# TanStack Start Skills

## Overview

TanStack Start is a full-stack React framework built on TanStack Router, powered by Vite and Nitro (via Vinxi). It provides server-side rendering, streaming, server functions (RPC), middleware, API routes, and deploys to any platform via Nitro presets.

**Package:** `@tanstack/react-start`
**Router Plugin:** `@tanstack/router-plugin`
**Build Tool:** Vinxi (Vite + Nitro)
**Status:** RC (Release Candidate)
**RSC Support:** React Server Components support is in active development and will land as a non-breaking v1.x addition

## Installation & Project Setup

```bash
npx @tanstack/cli create my-app
# Or manually:
npm install @tanstack/react-start @tanstack/react-router react react-dom
npm install -D @tanstack/router-plugin typescript vite vite-tsconfig-paths
```

### Project Structure

```
my-app/
  app/
    routes/
      __root.tsx          # Root layout
      index.tsx           # / route
      posts.$postId.tsx   # /posts/:postId
      api/
        users.ts          # /api/users API route
    client.tsx            # Client entry
    router.tsx            # Router creation
    ssr.tsx               # SSR entry
    routeTree.gen.ts      # Auto-generated route tree
  app.config.ts           # TanStack Start config
  tsconfig.json
  package.json
```

### Configuration (`app.config.ts`)

```typescript
import { defineConfig } from '@tanstack/react-start/config'
import viteTsConfigPaths from 'vite-tsconfig-paths'

export default defineConfig({
  vite: {
    plugins: [
      viteTsConfigPaths({ projects: ['./tsconfig.json'] }),
    ],
  },
  server: {
    preset: 'node-server', // 'vercel' | 'netlify' | 'cloudflare-pages' | etc.
  },
  tsr: {
    appDirectory: './app',
    routesDirectory: './app/routes',
    generatedRouteTree: './app/routeTree.gen.ts',
  },
})
```

## Server Functions (`createServerFn`)

Server functions provide type-safe RPC calls between client and server.

### Basic Server Functions

```typescript
import { createServerFn } from '@tanstack/react-start'

// GET (data fetching, cacheable)
const getUsers = createServerFn()
  .handler(async () => {
    const users = await db.query.users.findMany()
    return users
  })

// POST (mutations, side effects)
const createUser = createServerFn({ method: 'POST' })
  .validator((data: { name: string; email: string }) => data)
  .handler(async ({ data }) => {
    const user = await db.insert(users).values(data).returning()
    return user
  })
```

### With Zod Validation

```typescript
import { z } from 'zod'

const updateUser = createServerFn({ method: 'POST' })
  .validator(
    z.object({
      id: z.string(),
      name: z.string().min(1),
      email: z.string().email(),
    })
  )
  .handler(async ({ data }) => {
    // data is fully typed: { id: string; name: string; email: string }
    return await db.update(users).set(data).where(eq(users.id, data.id))
  })
```

## Middleware

### Creating Middleware

```typescript
import { createMiddleware } from '@tanstack/react-start'

const loggingMiddleware = createMiddleware().handler(async ({ next }) => {
  console.log('Request started')
  const result = await next()
  console.log('Request completed')
  return result
})
```

### Auth Middleware with Context

```typescript
const authMiddleware = createMiddleware().handler(async ({ next }) => {
  const request = getWebRequest()
  const session = await getSession(request)

  if (!session?.user) {
    throw redirect({ to: '/login' })
  }

  // Pass typed context to handler
  return next({ context: { user: session.user } })
})
```

### Chaining Middleware

```typescript
const adminMiddleware = createMiddleware()
  .middleware([authMiddleware])
  .handler(async ({ next, context }) => {
    // context.user is typed from authMiddleware
    if (context.user.role !== 'admin') {
      throw redirect({ to: '/unauthorized' })
    }
    return next({ context: { isAdmin: true } })
  })

// Usage
const adminAction = createServerFn({ method: 'POST' })
  .middleware([adminMiddleware])
  .handler(async ({ context }) => {
    // context: { user: User; isAdmin: boolean }
    return { success: true }
  })
```

## API Routes (Server Routes)

```typescript
// app/routes/api/users.ts
import { createAPIFileRoute } from '@tanstack/react-start/api'

export const APIRoute = createAPIFileRoute('/api/users')({
  GET: async ({ request }) => {
    const users = await db.query.users.findMany()
    return Response.json(users)
  },
  POST: async ({ request }) => {
    const body = await request.json()
    const user = await db.insert(users).values(body).returning()
    return new Response(JSON.stringify(user), { status: 201 })
  },
})
```

## SSR Strategies

### Streaming SSR (Default)

```typescript
export const Route = createFileRoute('/dashboard')({
  loader: async () => ({
    criticalData: await fetchCriticalData(),
    deferredData: defer(fetchSlowData()),
  }),
  component: Dashboard,
})

function Dashboard() {
  const { criticalData, deferredData } = Route.useLoaderData()
  return (
    <div>
      <CriticalSection data={criticalData} />
      <Suspense fallback={<Loading />}>
        <Await promise={deferredData}>
          {(data) => <SlowSection data={data} />}
        </Await>
      </Suspense>
    </div>
  )
}
```

## Deployment

### Supported Platforms (Nitro Presets)

```typescript
// app.config.ts
export default defineConfig({
  server: {
    preset: 'node-server',        // Self-hosted Node.js
    // preset: 'vercel',          // Vercel
    // preset: 'netlify',         // Netlify
    // preset: 'cloudflare-pages', // Cloudflare Pages
    // preset: 'aws-lambda',      // AWS Lambda
    // preset: 'deno-server',     // Deno Deploy
    // preset: 'bun',             // Bun
  },
})
```

## Best Practices

1. **Use validators for all server function inputs** - runtime safety and TypeScript inference
2. **Compose middleware** for cross-cutting concerns (auth, logging, rate limiting)
3. **Use `createServerFn` GET** for data fetching (cacheable, preloadable)
4. **Use `createServerFn` POST** for mutations and side effects
5. **Use `beforeLoad`** for route-level auth guards
6. **Use `defer()`** for non-critical data to improve TTFB
7. **Set `defaultPreload: 'intent'`** on the router for instant navigation
8. **Co-locate server functions** with the routes that use them

## Common Pitfalls

- Server functions cannot close over client-side variables (they're extracted to separate bundles)
- Data returned from server functions must be serializable
- Forgetting `await` in loaders leads to streaming issues
- Importing server-only code in client bundles causes build errors
- Missing `declare module '@tanstack/react-router'` loses all type safety

© tanstack-skills · MIT · tanstack-skills/tanstack-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой