skills/dev-frontend/nextjs-fullstack/SKILL.md
Next.js fullstack development guidelines for React 19 and Next.js 15+. Use when building Next.js applications with Feature-Sliced Design, TailwindCSS v4, ShadCN, Jotai, React Query, and Supabase integration. Covers file naming, component architecture, testing with Vitest/Playwright, UI/UX design patterns, and Toss frontend principles.
npx skillsauth add seungwonme/.claude nextjs-fullstackInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use pnpm instead of npm, bunx instead of npx.
kebab-case (e.g., user-profile.tsx, auth-form.tsx)PascalCase for component names, kebab-case for filescamelCase├── app/ # Next.js App Router (routing only)
│ ├── (routes)/example/page.tsx # Re-export from FSD pages
│ └── api/ # API Route Handlers
└── src/
├── pages/ # FSD Pages Layer
├── widgets/ # Header, Sidebar, Footer
├── features/ # User scenarios (auth, checkout)
├── entities/ # Business entities (user, product)
└── shared/ # Shared resources
├── ui/ # ShadCN components
├── lib/ # Utilities
└── api/ # Supabase clients
Upper layers can only import from lower layers:
app → pages → widgets → features → entities → shared
// Import through public API only
import { UserCard } from '@/entities/user'; // Correct
import { UserCard } from '@/entities/user/ui/user-card'; // Wrong
| Category | Technology |
|----------|------------|
| UI Components | ShadCN (pnpm dlx shadcn@latest add [name]) |
| Icons | lucide-react |
| State Management | Jotai |
| Data Fetching | React Query |
| Styling | TailwindCSS v4 (globals.css only) |
| Testing | Vitest + Playwright |
| Database | Supabase |
// Default: Server Component (no directive needed)
export function ServerPage() {
return <div>Server rendered</div>;
}
// Client Component: explicit directive
'use client';
export function InteractiveButton() {
const [count, setCount] = useState(0);
return <button onClick={() => setCount(c => c + 1)}>{count}</button>;
}
const cookieStore = await cookies();
const headersList = await headers();
const params = await props.params;
const searchParams = await props.searchParams;
// src/features/auth/api/actions.ts
'use server';
export async function signIn(formData: FormData) {
// Server action logic
}
const ANIMATION_DELAY_MS = 300;
await delay(ANIMATION_DELAY_MS);
function SubmitButton() {
const isViewer = useRole() === 'viewer';
return isViewer ? <ViewerSubmitButton /> : <AdminSubmitButton />;
}
type ValidationResult = { ok: true } | { ok: false; reason: string };
function checkIsNameValid(name: string): ValidationResult {
if (name.length === 0) return { ok: false, reason: 'Name cannot be empty.' };
return { ok: true };
}
// vitest.config.mts
import { defineConfig } from 'vitest/config';
import react from '@vitejs/plugin-react';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths(), react()],
test: { environment: 'jsdom' },
});
// 1. Role and accessibility (preferred)
page.getByRole('button', { name: 'Login' });
page.getByLabel('Email');
// 2. Text
page.getByText('Create account');
// 3. Test ID (last resort)
page.getByTestId('submit-button');
tools
유튜브 콘텐츠 기획 및 알고리즘 전문가. 영상 주제 기획, 아웃라이어 전략, 시청자 풀 분석, 알고리즘 치트키가 필요할 때 사용.
research
유튜브 채널 운영 전문가. 콘텐츠 기획부터 제목/썸네일, 영상 제작, 채널 관리, 수익화, 영상 요약까지 전 영역 지원. Routes to the appropriate sub-skill. Trigger on "유튜브", "YouTube", "영상 기획", "콘텐츠 기획", "아웃라이어", "알고리즘", "썸네일", "제목 공식", "클릭률", "영상 제작", "원고", "인트로", "편집", "채널 브랜딩", "댓글 관리", "수익화", "키 콘텐츠", "풀링 콘텐츠", "객단가", "유튜브 정리", "영상 요약", "transcript 번역", "YouTube digest", "영상 퀴즈". Sub-skills — 기획 (콘텐츠 기획, 알고리즘 전략, 아웃라이어 제작, 시청자 풀 분석), 썸네일 (제목/썸네일 제작, 19가지 제목 공식, A/B 테스트), 제작 (원고 작성, 인트로 구성, 편집 기법, 시청자 참여 유도), 채널 (채널 브랜딩, 이미지 관리, 댓글 관리), 수익화 (키/풀링 콘텐츠, 상품 판매 전략, 객단가 최적화), 요약 (YouTube 영상 분석, transcript 추출/번역, 퀴즈, Deep Research).
development
Spec-driven development: interview the user in depth to produce a comprehensive technical spec. Use when the user says "spec", "스펙", "스펙 작성", "기능 정의", "요구사항 정리", "interview me", "spec this out", "feature spec", or wants to define a feature/project before implementation. Also triggers when a SPEC.md file is referenced.
tools
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.