nextjs-app-router-patterns — скилл для Next.js: что делает
Помогает строить приложения на Next.js App Router: выбирать режим рендеринга, организовывать маршруты и получать данные. Подойдёт при миграции с Pages Router или работе с Server Components.
/plugin marketplace add wshobson/agents
/plugin install frontend-mobile-development@claude-code-workflowsЧто делает nextjs-app-router-patterns
Скилл описывает Server и Client Components, статический и динамический рендеринг, потоковую загрузку и соглашения по файлам в app/. Также разбирает параллельные и перехватывающие маршруты, кеширование и Server Actions. Примеры охватывают загрузку данных через fetch и настройку корневого layout.
Подробные примеры вынесены в references/details.md. Начинать предлагается с Server Components, добавляя 'use client' только для интерактивности и браузерных API. Для медленных источников данных нужны границы Suspense и состояния загрузки. Ставьте скилл, если проект использует App Router; для проекта на другом фреймворке он не по адресу.
Какие задачи решает
- перенести приложение с Pages Router на App Router
- выбрать Server или Client Component для страницы
- настроить потоковую загрузку медленных данных
- организовать параллельные маршруты с отдельными состояниями загрузки
- добавить мутации через Server Actions
Примеры запросов агенту
- Перенеси этот раздел с Pages Router на App Router и предложи структуру файлов.
- Проверь, какие компоненты здесь должны быть Server Components, а где нужен `'use client'`.
- Настрой загрузку данных через `fetch` и добавь Suspense для медленного источника.
Как установить nextjs-app-router-patterns
1Через маркетплейс плагинов
/plugin marketplace add wshobson/agents/plugin install frontend-mobile-development@claude-code-workflows2Через Skills CLI (Vercel)
npx skills add wshobson/agents --skill nextjs-app-router-patterns -a claude-code3Вручную: положить файлы
~/.claude/skills/nextjs-app-router-patterns/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/nextjs-app-router-patterns/
1Через Skills CLI (Vercel)
npx skills add wshobson/agents --skill nextjs-app-router-patterns -a codex2Вручную: положить файлы
.agents/skills/nextjs-app-router-patterns/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add wshobson/agents --skill nextjs-app-router-patterns -a cursor2Вручную: положить файлы
.cursor/skills/nextjs-app-router-patterns/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install wshobson/agents nextjs-app-router-patterns2Вручную: положить файлы
.github/skills/nextjs-app-router-patterns/SKILL.mdКомандой платформы
gemini skills install https://github.com/wshobson/agents --path plugins/frontend-mobile-development/skills/nextjs-app-router-patternsВручную: положить файлы
.devin/skills/nextjs-app-router-patterns/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Похожие
Вопросы о nextjs-app-router-patterns
Как установить nextjs-app-router-patterns в Claude Code?
Выполните npx skills add wshobson/agents --skill nextjs-app-router-patterns -a claude-code.
Что делает nextjs-app-router-patterns?
Подсказывает, как строить приложения на Next.js App Router: работать с компонентами, маршрутами, рендерингом, загрузкой данных и Server Actions.
Можно ли использовать скилл при миграции с Pages Router?
Да. Среди описанных сценариев есть переход с Pages Router на App Router.
Исходный текст
SKILL.md · MIT
---
name: nextjs-app-router-patterns
description: Master Next.js 14+ App Router with Server Components, streaming, parallel routes, and advanced data fetching. Use when building Next.js applications, implementing SSR/SSG, or optimizing React Server Components.
---
# Next.js App Router Patterns
Comprehensive patterns for Next.js 14+ App Router architecture, Server Components, and modern full-stack React development.
## When to Use This Skill
- Building new Next.js applications with App Router
- Migrating from Pages Router to App Router
- Implementing Server Components and streaming
- Setting up parallel and intercepting routes
- Optimizing data fetching and caching
- Building full-stack features with Server Actions
## Core Concepts
### 1. Rendering Modes
| Mode | Where | When to Use |
| --------------------- | ------------ | ----------------------------------------- |
| **Server Components** | Server only | Data fetching, heavy computation, secrets |
| **Client Components** | Browser | Interactivity, hooks, browser APIs |
| **Static** | Build time | Content that rarely changes |
| **Dynamic** | Request time | Personalized or real-time data |
| **Streaming** | Progressive | Large pages, slow data sources |
### 2. File Conventions
```
app/
├── layout.tsx # Shared UI wrapper
├── page.tsx # Route UI
├── loading.tsx # Loading UI (Suspense)
├── error.tsx # Error boundary
├── not-found.tsx # 404 UI
├── route.ts # API endpoint
├── template.tsx # Re-mounted layout
├── default.tsx # Parallel route fallback
└── opengraph-image.tsx # OG image generation
```
## Quick Start
```typescript
// app/layout.tsx
import { Inter } from 'next/font/google'
import { Providers } from './providers'
const inter = Inter({ subsets: ['latin'] })
export const metadata = {
title: { default: 'My App', template: '%s | My App' },
description: 'Built with Next.js App Router',
}
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
<html lang="en" suppressHydrationWarning>
<body className={inter.className}>
<Providers>{children}</Providers>
</body>
</html>
)
}
// app/page.tsx - Server Component by default
async function getProducts() {
const res = await fetch('https://api.example.com/products', {
next: { revalidate: 3600 }, // ISR: revalidate every hour
})
return res.json()
}
export default async function HomePage() {
const products = await getProducts()
return (
<main>
<h1>Products</h1>
<ProductGrid products={products} />
</main>
)
}
```
## Detailed patterns and worked examples
Detailed pattern documentation lives in `references/details.md`. Read that file when the navigation tier above is insufficient.
## Best Practices
### Do's
- **Start with Server Components** - Add 'use client' only when needed
- **Colocate data fetching** - Fetch data where it's used
- **Use Suspense boundaries** - Enable streaming for slow data
- **Leverage parallel routes** - Independent loading states
- **Use Server Actions** - For mutations with progressive enhancement
### Don'ts
- **Don't pass serializable data** - Server → Client boundary limitations
- **Don't use hooks in Server Components** - No useState, useEffect
- **Don't fetch in Client Components** - Use Server Components or React Query
- **Don't over-nest layouts** - Each layout adds to the component tree
- **Don't ignore loading states** - Always provide loading.tsx or Suspense
© Seth Hobson · MIT · wshobson/agents