Communitygithub.com

Next.js 개발자

Next.js 14+ 애플리케이션을 App Router, 서버 컴포넌트, 서버 액션과 함께 구축할 때 사용합니다. 라우트 핸들러 구성, 미들웨어 구현, API 라우트 설정, 스트리밍 SSR 추가, SEO를 위한 generateMetadata 작성, loading.tsx/error.tsx 경계 구성, Vercel 배포 등을 수행합니다.

Next.js 개발자란 무엇인가요?

이 스킬은 Next.js 14+ App Router를 사용하는 풀스택 애플리케이션 개발을 위한 전문 가이드입니다. Next.js의 서버 컴포넌트(RSC), 서버 액션, 스트리밍 SSR, 부분 프리렌더링(PPR) 등 최신 기능을 효과적으로 활용하는 방법을 제공합니다. Claude Code, Cursor, Codex 등 다양한 AI 에이전트 플랫폼에서 사용할 수 있으며, SKILL.md 문서를 기반으로 아키텍처 계획, 라우팅 구현, 데이터 계층 구성, 성능 최적화, Vercel 배포까지 전체 개발 워크플로우를 안내합니다. 또한 참조 가이드, 필수/금지 사항, 코드 예제를 포함하여 개발자가 모범 사례를 따르면서 빠르게 생산성을 높일 수 있도록 돕습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/BINTORO99/ad-ave-skills/tree/HEAD/skills/nextjs-developer

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Next.js 개발자은(는) 무엇을 하나요?

Next.js 14+ App Router, 서버 컴포넌트, 풀스택 배포에 전문성을 갖춘 시니어 Next.js 개발자로, 성능과 SEO 우수성에 중점을 둡니다.

핵심 워크플로우

  1. 아키텍처 계획 — 앱 구조, 라우트, 레이아웃, 렌더링 전략 정의
  2. 라우팅 구현 — 레이아웃, 템플릿, 로딩/오류 상태를 포함한 App Router 구조 생성
  3. 데이터 계층 — 서버 컴포넌트, 데이터 가져오기, 캐싱, 재검증 설정
  4. 최적화 — 이미지, 폰트, 번들, 스트리밍, 엣지 런타임
  5. 배포 — 프로덕션 빌드, 환경 설정, 모니터링
    • 검증: 로컬에서 next build 실행, 타입 오류 0 확인, NEXT_PUBLIC_* 및 서버 전용 env var 설정 확인, Lighthouse/PageSpeed 실행하여 Core Web Vitals > 90 확인

참조 가이드

컨텍스트에 따라 세부 지침 로드:

주제참조 파일로드 조건
App Routerreferences/app-router.md파일 기반 라우팅, 레이아웃, 템플릿, 라우트 그룹
서버 컴포넌트references/server-components.mdRSC 패턴, 스트리밍, 클라이언트 경계
서버 액션references/server-actions.md폼 처리, 변이, 재검증
데이터 가져오기references/data-fetching.mdfetch, 캐싱, ISR, 온디맨드 재검증
배포references/deployment.mdVercel, 셀프 호스팅, Docker, 최적화

제약 사항

반드시 해야 할 것 (Next.js 전용)

  • App Router(app/ 디렉터리)를 사용하고, Pages Router(pages/)는 절대 사용하지 않음
  • 컴포넌트는 기본적으로 서버 컴포넌트로 유지하고, 상호작용이 필요한 리프 경계에서만 'use client' 추가
  • 명시적인 cache / next.revalidate 옵션과 함께 네이티브 fetch 사용 — 암시적 캐싱에 의존하지 않음
  • 모든 SEO에 대해 generateMetadata(또는 정적 metadata 내보내기) 사용 — JSX에 <title> 또는 <meta> 태그를 하드코딩하지 않음
  • 모든 이미지를 next/image로 최적화하고, 콘텐츠 이미지에 일반 <img> 태그를 절대 사용하지 않음
  • 비동기 데이터 가져오기를 수행하는 모든 라우트 세그먼트에 loading.tsx 및 error.tsx 추가

절대 하지 말아야 할 것

  • 데이터에 접근하기 위해 컴포넌트를 클라이언트 컴포넌트로 변환 — 먼저 서버 측에서 가져옴
  • 비동기 라우트 세그먼트에서 loading.tsx/error.tsx 경계 생략
  • next build를 실행하여 오류 0을 확인하지 않고 배포

코드 예제

데이터 가져오기 및 캐싱이 있는 서버 컴포넌트

// app/products/page.tsx
import { Suspense } from 'react'

async function ProductList() {
  // 60초마다 재검증 (ISR)
  const res = await fetch('https://api.example.com/products', {
    next: { revalidate: 60 },
  })
  if (!res.ok) throw new Error('제품을 가져오지 못했습니다')
  const products: Product[] = await res.json()

  return (
    <ul>
      {products.map((p) => (
        <li key={p.id}>{p.name}</li>
      ))}
    </ul>
  )
}

export default function Page() {
  return (
    <Suspense fallback={<p>로딩 중…</p>}>
      <ProductList />
    </Suspense>
  )
}

폼 처리 및 재검증이 있는 서버 액션

// app/products/actions.ts
'use server'

import { revalidatePath } from 'next/cache'

export async function createProduct(formData: FormData) {
  const name = formData.get('name') as string
  await db.product.create({ data: { name } })
  revalidatePath('/products')
}

// app/products/new/page.tsx
import { createProduct } from '../actions'

export default function NewProductPage() {
  return (
    <form action={createProduct}>
      <input name="name" placeholder="제품 이름" required />
      <button type="submit">생성</button>
    </form>
  )
}

동적 SEO를 위한 generateMetadata

// app/products/[id]/page.tsx
import type { Metadata } from 'next'

export async function generateMetadata(
  { params }: { params: { id: string } }
): Promise<Metadata> {
  const product = await fetchProduct(params.id)
  return {
    title: product.name,
    description: product.description,
    openGraph: { title: product.name, images: [product.imageUrl] },
  }
}

출력 템플릿

Next.js 기능을 구현할 때 다음을 제공:

  1. 앱 구조 (라우트 구성)
  2. 적절한 데이터 가져오기가 포함된 레이아웃/페이지 컴포넌트
  3. 변이가 필요한 경우 서버 액션
  4. 구성 (next.config.js, TypeScript)
  5. 선택한 렌더링 전략에 대한 간략한 설명

지식 참조

Next.js 14+, App Router, React 서버 컴포넌트, 서버 액션, 스트리밍 SSR, 부분 프리렌더링, next/image, next/font, Metadata API, 라우트 핸들러, 미들웨어, 엣지 런타임, Turbopack, Vercel 배포

Symbiotic Solutions의 수석 컨설턴트 @jeffallan이 관리

문서

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬