К основному содержанию
правило официальный · GitHub

tanstack-start-shadcn-tailwind — правило для GitHub Copilot

Правило задаёт Copilot стек TanStack Start, Shadcn/ui и Tailwind CSS и требует валидировать внешние данные через Zod.

Установить в GitHub Copilot · Вручную: положить файлы Все способы и платформы ↓
.github/instructions/tanstack-start-shadcn-tailwind.instructions.md
Открыть на GitHub

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

Файл описывает, как писать код в проекте на TanStack Start: TypeScript в strict-режиме, функциональные компоненты, Shadcn/ui вместо самописных кнопок и карточек, Tailwind для вёрстки. Внешние данные проходят через Zod-схемы, которые лежат в src/lib/schemas.ts. Тип any запрещён.

Загрузка данных разведена по назначению. Начальные данные для рендера, SSR и SEO берутся из route loaders, а часто обновляемые и второстепенные — из TanStack Query. У каждого маршрута в src/routes/ должны быть error и pending boundaries. Импорты внутри проекта идут через алиас @/.

Правило подключается как файл инструкций, а не как пакет. Для GitHub Copilot это .github/instructions/tanstack-start-shadcn-tailwind.instructions.md. Если в проекте нет TanStack Start, Shadcn/ui и Tailwind, применять его не к чему: Copilot будет навязывать структуру src/routes/ и алиас @/ в чужом коде.

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

  • задать Copilot единый стиль кода в проекте на TanStack Start
  • вынести валидацию внешних данных в Zod-схемы
  • разделить загрузку данных между route loaders и TanStack Query
  • добавить error и pending boundaries на все маршруты
  • заменить самописные компоненты на Shadcn/ui

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

  • Создай маршрут /users/$id с loader, errorBoundary и pendingBoundary по правилам проекта
  • Опиши Zod-схему пользователя в src/lib/schemas.ts и провалидируй ответ API
  • Перепиши этот компонент на Shadcn/ui и Tailwind, импорты через @/

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

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

.github/instructions/tanstack-start-shadcn-tailwind.instructions.md

Поле applyTo задаёт, к каким файлам применять

По шагам, с командами для каждой платформы: AGENTS.md и CLAUDE.md: что это, кто читает и какой выбрать

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

Весь набор →
java-debugging Скилл ведёт агента по методике поиска причины бага в Java: воспроизвести, сузить, проверить гипотезу, подключить отладчик. Пригодится, когда логи уже не помогают. 1установок vue Правило задаёт Copilot стандарты Vue 3: Composition API, <script setup>, реактивность, Pinia и Vue Router. Пригодится, когда агент пишет компоненты в вашем стиле. ★ 40 418звёзд репо update-docs-on-code-change Правило для GitHub Copilot, которое напоминает обновлять README.md и документацию, когда меняется код. Пригодится, если доки у вас отстают от реальности. ★ 40 418звёзд репо terraform-azure Правило задаёт Copilot стиль и ограничения при работе с Terraform на Azure: структура файлов, модули AVM, запрет на секреты в состоянии. ★ 40 418звёзд репо swift-mcp-server Правило задаёт Copilot шаблоны для сборки MCP-серверов на Swift через официальный SDK: инструменты, ресурсы, промпты и транспорты. ★ 40 418звёзд репо shell Правило, которое заставляет GitHub Copilot писать чистые и безопасные shell-скрипты. Применяется к файлам *.sh автоматически. ★ 40 418звёзд репо scala2 Правило задаёт Copilot стиль Scala по гайду Databricks: неизменяемость, чистые функции, именование. Пригодится, если пишете на Scala 2.12 или 2.13. ★ 40 418звёзд репо rust-mcp-server Правило задаёт Copilot ориентиры при написании MCP-серверов на Rust через официальный SDK rmcp. Пригодится, когда проект на Rust и нужен свой MCP-сервер. ★ 40 418звёзд репо

Похожие

shadcn sanjeed5 Правило для Cursor задаёт команде единый стиль работы с shadcn/ui: структура папок, типы, варианты через CVA, формы на React Hook Form и Zod. Пригодится, когда компонентов становится много. ★ 3 579звёзд репо tanstack-start-best-practices DeckardGer Свод правил и паттернов для full-stack приложений на TanStack Start. Помогает настраивать серверные функции, сессии и потоковый SSR. CX Codex +1 9 800установок bun-tanstack-start secondsky Скилл подсказывает агенту, как поднять full-stack приложение на TanStack Start с рантаймом Bun: роутинг, серверные функции, сборка. CX Codex +1 414установок tanstack-start jezweb Скилл собирает фуллстек-приложение на TanStack Start и Cloudflare Workers с нуля: SSR, файловый роутинг, D1, авторизация. Пригодится, когда нужен рабочий каркас без клонирования шаблона. CX Codex +1 2 500установок sentry-tanstack-start-sdk getsentry Пошагово настраивает Sentry в проектах на TanStack Start React. Скилл проверяет структуру файлов, подключает трейсинг, отслеживание ошибок и запись сессий. CX Codex +1 1 900установок shadcn-svelte huntabyte Скилл помогает работать с shadcn-svelte: добавлять компоненты, составлять интерфейсы, исправлять стили и отлаживать проекты. Нужен, если вы пишете UI на Svelte с использованием shadcn-svelte или планируете начать. CX Codex +1 6 700установок

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

Все правила IDE по теме «Фронтенд и UI» →

Вопросы о tanstack-start-shadcn-tailwind

Как установить tanstack-start-shadcn-tailwind в GitHub Copilot?

Создайте файл .github/instructions/tanstack-start-shadcn-tailwind.instructions.md в репозитории. Правило подхватится по маске applyTo из frontmatter.

Что делает tanstack-start-shadcn-tailwind?

Задаёт Copilot правила разработки на TanStack Start: TypeScript strict, Shadcn/ui, Tailwind, Zod для внешних данных и route loaders для начальной загрузки.

Какие файлы попадают под действие правила?

Маска applyTo охватывает **/*.ts, **/*.tsx, **/*.js, **/*.jsx, **/*.css, **/*.scss и **/*.json.

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

tanstack-start-shadcn-tailwind.instructions.md · MIT
---
description: 'Guidelines for building TanStack Start applications'
applyTo: '**/*.ts, **/*.tsx, **/*.js, **/*.jsx, **/*.css, **/*.scss, **/*.json'
---

# TanStack Start with Shadcn/ui Development Guide

You are an expert TypeScript developer specializing in TanStack Start applications with modern React patterns.

## Tech Stack
- TypeScript (strict mode)
- TanStack Start (routing & SSR)
- Shadcn/ui (UI components)
- Tailwind CSS (styling)
- Zod (validation)
- TanStack Query (client state)

## Code Style Rules

- NEVER use `any` type - always use proper TypeScript types
- Prefer function components over class components
- Always validate external data with Zod schemas
- Include error and pending boundaries for all routes
- Follow accessibility best practices with ARIA attributes

## Component Patterns

Use function components with proper TypeScript interfaces:

```typescript
interface ButtonProps {
  children: React.ReactNode;
  onClick: () => void;
  variant?: 'primary' | 'secondary';
}

export default function Button({ children, onClick, variant = 'primary' }: ButtonProps) {
  return (
    <button onClick={onClick} className={cn(buttonVariants({ variant }))}>
      {children}
    </button>
  );
}
```

## Data Fetching

Use Route Loaders for:
- Initial page data required for rendering
- SSR requirements
- SEO-critical data

Use React Query for:
- Frequently updating data
- Optional/secondary data
- Client mutations with optimistic updates

```typescript
// Route Loader
export const Route = createFileRoute('/users')({
  loader: async () => {
    const users = await fetchUsers()
    return { users: userListSchema.parse(users) }
  },
  component: UserList,
})

// React Query
const { data: stats } = useQuery({
  queryKey: ['user-stats', userId],
  queryFn: () => fetchUserStats(userId),
  refetchInterval: 30000,
});
```

## Zod Validation

Always validate external data. Define schemas in `src/lib/schemas.ts`:

```typescript
export const userSchema = z.object({
  id: z.string(),
  name: z.string().min(1).max(100),
  email: z.string().email().optional(),
  role: z.enum(['admin', 'user']).default('user'),
})

export type User = z.infer<typeof userSchema>

// Safe parsing
const result = userSchema.safeParse(data)
if (!result.success) {
  console.error('Validation failed:', result.error.format())
  return null
}
```

## Routes

Structure routes in `src/routes/` with file-based routing. Always include error and pending boundaries:

```typescript
export const Route = createFileRoute('/users/$id')({
  loader: async ({ params }) => {
    const user = await fetchUser(params.id);
    return { user: userSchema.parse(user) };
  },
  component: UserDetail,
  errorBoundary: ({ error }) => (
    <div className="text-red-600 p-4">Error: {error.message}</div>
  ),
  pendingBoundary: () => (
    <div className="flex items-center justify-center p-4">
      <div className="animate-spin rounded-full h-8 w-8 border-b-2 border-primary" />
    </div>
  ),
});
```

## UI Components

Always prefer Shadcn/ui components over custom ones:

```typescript
import { Button } from '@/components/ui/button';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';

<Card>
  <CardHeader>
    <CardTitle>User Details</CardTitle>
  </CardHeader>
  <CardContent>
    <Button onClick={handleSave}>Save</Button>
  </CardContent>
</Card>
```

Use Tailwind for styling with responsive design:

```typescript
<div className="flex flex-col gap-4 p-6 md:flex-row md:gap-6">
  <Button className="w-full md:w-auto">Action</Button>
</div>
```

## Accessibility

Use semantic HTML first. Only add ARIA when no semantic equivalent exists:

```typescript
// ✅ Good: Semantic HTML with minimal ARIA
<button onClick={toggleMenu}>
  <MenuIcon aria-hidden="true" />
  <span className="sr-only">Toggle Menu</span>
</button>

// ✅ Good: ARIA only when needed (for dynamic states)
<button
  aria-expanded={isOpen}
  aria-controls="menu"
  onClick={toggleMenu}
>
  Menu
</button>

// ✅ Good: Semantic form elements
<label htmlFor="email">Email Address</label>
<input id="email" type="email" />
{errors.email && (
  <p role="alert">{errors.email}</p>
)}
```

## File Organization

```
src/
├── components/ui/    # Shadcn/ui components
├── lib/schemas.ts    # Zod schemas
├── routes/          # File-based routes
└── routes/api/      # Server routes (.ts)
```

## Import Standards

Use `@/` alias for all internal imports:

```typescript
// ✅ Good
import { Button } from '@/components/ui/button'
import { userSchema } from '@/lib/schemas'

// ❌ Bad
import { Button } from '../components/ui/button'
```

## Adding Components

Install Shadcn components when needed:

```bash
npx shadcn@latest add button card input dialog
```

## Common Patterns

- Always validate external data with Zod
- Use route loaders for initial data, React Query for updates
- Include error/pending boundaries on all routes
- Prefer Shadcn components over custom UI
- Use `@/` imports consistently
- Follow accessibility best practices

© github · MIT · github/awesome-copilot

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

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

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