MCPInstall

nextjs

Next.js 16 App Router performance, caching, server components, server actions, routing, and codebase-hygiene best practices — plus a category-major review/refactor algorithm with codebase-level (remove/dedup/reuse) findings. This skill should be used when writing Next.js 16 App Router code, configuring caching with 'use cache', building Server Components, setting up parallel/intercepting routes, configuring next.config.js OR proxy.ts, OR auditing/refactoring a Next.js codebase (single file or whole repo). This skill does NOT cover generic React 19 patterns (use react skill) or non-Next.js server rendering.

Installs
1.2K
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/pproenca/dot-skills --skill nextjs
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads nextjs automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Next.js 16 App Router Best Practices

Comprehensive Next.js 16 App Router guide for AI agents. Contains 45 rules across 9 categories, prioritized by impact from critical (build optimization, caching strategy) through to cross-cutting codebase hygiene (dedup, dead routes, boundary coherence). Reflects Next.js 16 changes: 'use cache' directive replacing implicit caching, revalidateTag(tag, cacheLife) requirement, proxy.ts replacing middleware.ts, Turbopack persistent caching, App Router conventions.

Rule files describe pattern shapes (not API names) and open with a "Shapes to recognize" section listing 2–4 syntactic disguises the same break can wear. Selected high-value rules (those whose disguises are most common in practice — 'use cache', parallel-fetching, dynamic-imports, server-action-forms, client-boundary, server-vs-client-fetching) include an extra concrete "In disguise" incorrect/correct example pair to teach pattern detection beyond the grep-friendly cases.

When to Apply

  • Writing new Next.js 16 App Router code
  • Auditing or modernizing a Next.js codebase — single file, PR, or whole repo (see references/_review-algorithm.md)
  • Migrating from Next.js 15 to 16 (implicit caching → 'use cache', middleware.ts → proxy.ts, revalidateTag single-arg → with cacheLife)
  • Configuring caching strategies with 'use cache', unstable_cache, revalidateTag, revalidatePath
  • Implementing Server Components and parallel/colocated data fetching
  • Setting up parallel routes, intercepting routes, prefetching, proxy.ts
  • Creating Server Actions for form handling and mutations
  • Tuning 'use client' boundaries to minimize client bundle
  • Finding codebase-level issues that single-file rules can't see: duplicated server fetchers, near-duplicate routes/layouts, dead routes, 'use client' propagation across the route tree, prop-shape drift (see Category 9)

How to Review or Refactor a Codebase

When the user asks to review, refactor, modernize, or audit Next.js code — single file or whole repo — follow references/_review-algorithm.md. Do not improvise.

Four non-negotiables from that doc:

  1. Two modes — never refuse a whole-repo audit. Pick Mode A (scoped, ≤~20 files) or Mode B (whole-tree: inventory pass + targeted sweeps + full Category 9).
  2. Judgment over grep. Each rule names a pattern shape, not a syntactic marker. Read each rule's Shapes to recognize section before sweeping — grep finds the easy violations and misses the high-value ones (a layout marked 'use client' for one button; TanStack Query fetching initial page data; a route handler doing the work of a Server Action; a hand-rolled cache layer mimicking 'use cache'; sequential fetches hidden across parent/child Server Components).
  3. Category-major, not file-major — with forcing functions. Sweep one category at a time across all in-scope files in priority order (CRITICAL → … → CROSS-CUTTING). The algorithm requires a scope declaration, per-category progress lines, and a final coverage table (category × file/bucket, cells ∈ {clean, N findings, n/a}). A missing category in the output is immediately visible.
  4. Codebase-level findings come from Category 9. Single-file rules can't tell you "these two routes should be one" or "this server action is dead." Category 9 (Codebase Hygiene) sweeps the full inventory at the end and produces remove / dedup / reuse / consolidate findings.

Single-file ad-hoc questions ("is this caching strategy right?") can go straight to the relevant rule. The algorithm exists for the multi-file and whole-repo cases.

Rule Categories

#CategoryImpactRulesKey Topics
1Build & Bundle OptimizationCRITICAL5Turbopack, optimizePackageImports, dynamic imports, barrel files, serverExternalPackages
2Caching StrategyCRITICAL6'use cache', revalidateTag+cacheLife, fetch options, segment config
3Server Components & Data FetchingHIGH6Parallel fetching, streaming, colocation, preload, no-client-fetch, error handling
4Routing & NavigationHIGH5Parallel routes, intercepting routes, prefetching, proxy.ts, notFound()
5Server Actions & MutationsMEDIUM-HIGH5Server actions, useFormStatus, action-result errors, useOptimistic, revalidation
6Streaming & Loading StatesMEDIUM5Suspense placement, loading.tsx, error.tsx, skeleton matching, nested Suspense
7Metadata & SEOMEDIUM4generateMetadata, sitemap.ts, robots.ts, opengraph-image.tsx
8Client ComponentsLOW-MEDIUM4'use client' boundary, children pattern, hydration mismatch, next/script
9Codebase HygieneLOW-MEDIUM5Dedup server fetchers, route consolidation, dead routes/actions, 'use client' propagation, prop drift

Quick Reference

Critical patterns — get these right first:

  • Add 'use cache' to Server Components/functions whose results should be cached (Next.js 16 dropped implicit fetch caching)
  • Call revalidateTag(tag, cacheLife) with a profile — never the one-arg API
  • Configure optimizePackageImports for icon/utility libraries with flat-export surfaces
  • Don't disable Turbopack persistent caching
  • Wrap <form action={serverAction}> instead of POST-to-/api/...

Next.js 16 idioms (do NOT generate Next.js 15 patterns):

  • proxy.ts (Node runtime) — not middleware.ts (Edge)
  • Explicit 'use cache' — not implicit fetch caching
  • revalidateTag(tag, cacheLife) — not single-arg revalidateTag(tag)
  • Server Action + useActionState — not client fetch + useState
  • app/sitemap.ts — not hand-maintained public/sitemap.xml

Common single-file mistakes — avoid these anti-patterns:

  • Sequential await for independent data (use Promise.all or preload)
  • useEffect + fetch in a Client Component for initial page data
  • 'use client' at the layout level for one interactive button
  • Missing revalidatePath/revalidateTag after a mutating Server Action
  • Skeletons that don't match content dimensions (CLS hit)

Codebase-level patterns — surface these in Category 9 sweeps:

  • 2+ Server Components hitting the same upstream with drifting cache policies — extract to a shared cached fetcher
  • 2+ near-duplicate routes/layouts that should be one with a variant or dynamic segment — consolidate
  • Routes / route handlers / Server Actions with no inbound traffic for 90+ days — delete (after analytics check)
  • 'use client' propagating up the route tree because of one interactive leaf — demote layouts/parents to Server Components, leave a client island
  • Same concept under different route-param/search-param/prop names — converge on a canonical name (watch out for SEO redirects)

Table of Contents

  1. Build & Bundle Optimization — CRITICAL
    • 1.1 Import from the source module, not from a barrel index.ts — CRITICAL (2-10x faster dev startup)
    • 1.2 Declare package-flat-export libraries in optimizePackageImports — CRITICAL (200-800ms faster imports, 50-80% smaller bundles)
    • 1.3 Mark Node packages with native bindings as serverExternalPackages — HIGH
    • 1.4 Don't disable Turbopack's persistent caching — CRITICAL (5-10x faster cold starts)
    • 1.5 Split heavy components into separately loaded chunks — CRITICAL (30-70% smaller initial bundle)
  2. Caching Strategy — CRITICAL
    • 2.1 Make every server fetch declare its caching intent — HIGH
    • 2.2 Declare route-level caching via segment-config exports — MEDIUM-HIGH
    • 2.3 Mark cacheable Server Components/functions explicitly with 'use cache' — CRITICAL
    • 2.4 Call revalidateTag(tag, cacheLife) with a profile — CRITICAL
    • 2.5 Every Server Action that mutates must invalidate the routes/tags that surface it — HIGH
    • 2.6 Wrap per-request fetchers with React cache() for dedup — HIGH
  3. Server Components & Data Fetching — HIGH
    • 3.1 Independent server fetches run concurrently — sequential await is a waterfall — HIGH
    • 3.2 Wrap each independently-paced async leaf in its own <Suspense> — HIGH
    • 3.3 Each Server Component fetches the data it renders — HIGH
    • 3.4 Trigger critical data fetches at the top via a preload call — MEDIUM-HIGH
    • 3.5 Initial page data lands in HTML via a Server Component — never useEffect+fetch — MEDIUM-HIGH
    • 3.6 Contain async failures via error.tsx or ErrorBoundary — MEDIUM
  4. Routing & Navigation — HIGH
    • 4.1 Multi-region layouts use parallel-route slots — HIGH
    • 4.2 Modal/lightbox detail views use intercepting routes — HIGH
    • 4.3 Tune <Link prefetch> to traffic likelihood — MEDIUM-HIGH
    • 4.4 Network-boundary logic lives in proxy.ts — not middleware.ts — MEDIUM-HIGH
    • 4.5 Missing dynamic resource calls notFound() for real HTTP 404 — MEDIUM
  5. Server Actions & Mutations — MEDIUM-HIGH
    • 5.1 Mutations from forms run through Server Actions — not API routes + client fetch — MEDIUM-HIGH
    • 5.2 Submit buttons read parent-form pending state from useFormStatus — MEDIUM-HIGH
    • 5.3 Server Actions return a typed error/state result — never throw silently — MEDIUM-HIGH
    • 5.4 Mutations with predictable UI outcomes apply optimistically — MEDIUM
    • 5.5 Every Server Action invalidates the routes/tags that surface its data — MEDIUM
  6. Streaming & Loading States — MEDIUM
    • 6.1 Place Suspense around independently-paced subtrees — MEDIUM
    • 6.2 Every route has a loading.tsx adjacent to its page.tsx — MEDIUM
    • 6.3 Every route has an error.tsx next to it — MEDIUM
    • 6.4 Skeletons match the dimensions of the content they replace — MEDIUM
    • 6.5 Nest Suspense when content has a natural reveal order — LOW-MEDIUM
  7. Metadata & SEO — MEDIUM
    • 7.1 Dynamic routes export generateMetadata for per-resource SEO — MEDIUM
    • 7.2 Generate sitemaps from actual data — never hand-maintain XML — MEDIUM
    • 7.3 Make crawl rules explicit via app/robots.ts and per-page metadata — MEDIUM
    • 7.4 Generate per-page OG images via opengraph-image.tsx — LOW-MEDIUM
  8. Client Components — LOW-MEDIUM
    • 8.1 Push 'use client' down to the interactive leaf — LOW-MEDIUM
    • 8.2 Server content reaches inside a Client Component via children — LOW-MEDIUM
    • 8.3 SSR and client initial render must produce identical HTML — LOW-MEDIUM
    • 8.4 Wrap third-party scripts in next/script with the right strategy — LOW-MEDIUM
  9. Codebase Hygiene — CROSS-CUTTING (multi-file findings; required for whole-repo audits)
    • 9.1 Extract duplicated server-side fetchers/actions into a shared module — HIGH
    • 9.2 Consolidate near-duplicate routes/layouts/components — HIGH
    • 9.3 Delete unreachable routes, unused Server Actions, orphan utilities — MEDIUM-HIGH
    • 9.4 Audit 'use client' placement across the route tree — HIGH
    • 9.5 Converge on canonical names for the same concept across routes/components — MEDIUM-HIGH

References

  1. Next.js Documentation
  2. Next.js 16 Release Notes
  3. React Documentation
  4. Vercel Engineering Blog

Related Skills

  • For React 19 fundamentals (concurrent rendering, hooks, components), see react skill
  • For client-side form handling, see react-hook-form skill
  • For client data caching with TanStack Query, see tanstack-query skill

Full Compiled Document

For the complete guide with all rules expanded: AGENTS.md

FAQ

What does the nextjs skill do?

Next.js 16 App Router performance, caching, server components, server actions, routing, and codebase-hygiene best practices — plus a category-major review/refactor algorithm with codebase-level (remove/dedup/reuse) findings. This skill should be used when writing Next.js 16 App Router code, configuring caching with 'use cache', building Server Components, setting up parallel/intercepting routes, configuring next.config.js OR proxy.ts, OR auditing/refactoring a Next.js codebase (single file or whole repo). This skill does NOT cover generic React 19 patterns (use react skill) or non-Next.js server rendering.

How do I install nextjs?

Run npx skills add https://github.com/pproenca/dot-skills --skill nextjs in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/nextjs/ (personal) or .claude/skills/nextjs/ (project).

Which AI agents can use nextjs?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is nextjs safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains nextjs?

It is published by pproenca in pproenca/dot-skills. It has 1,176 recorded installs.

More from pproenca/dot-skills

View all →

zod

pproenca/dot-skills

Zod schema validation best practices for type safety, parsing, and error handling. This skill should be used when defining z.object schemas, using z.string validations, safeParse, or z.infer. This skill does NOT cover React Hook Form integration patterns (use react-hook-form skill) or OpenAPI client generation (use orval skill).

Frontend & Design7.1K installs

vitest

pproenca/dot-skills

Vitest testing framework patterns for test setup, async testing, mocking with vi., snapshots, and test performance (formerly test-vitest). This skill should be used when writing or debugging Vitest tests. This skill does NOT cover TDD methodology (use test-tdd skill), API mocking with MSW (use test-msw skill), or Jest-specific APIs.

Testing & QA6.2K installs

react-hook-form

pproenca/dot-skills

React Hook Form performance optimization for client-side form validation using useForm, useWatch, useController, useFieldArray, the subscribe() API, and the Watch / FormStateSubscribe / FieldArray render-prop components. Covers RHF 7.82 additions including resetDefaultValues() and the disabled field-array option. This skill should be used when building client-side controlled forms with React Hook Form library. This skill does NOT cover React 19 Server Actions, useActionState, or server-side form handling (use react-19 skill for those).

emilkowal-animations

pproenca/dot-skills

Emil Kowalski's animation best practices for web interfaces. Use when writing, reviewing, or implementing animations in React, CSS, or Framer Motion. Triggers on tasks involving transitions, easing, gestures, toasts, drawers, or motion.

Frontend & Design2.8K installs

nuqs

pproenca/dot-skills

nuqs (type-safe URL query state) best practices for Next.js and other React frameworks. This skill should be used when writing, reviewing, or refactoring code that uses nuqs for URL state management. Triggers on tasks involving useQueryState, useQueryStates, search params, URL state, query parameters, nuqs parsers, limitUrlUpdates, Standard Schema, NuqsAdapter, or Next.js routing with state.

Frontend & Design2.3K installs

clean-architecture

pproenca/dot-skills

Clean Architecture principles and best practices from Robert C. Martin's book. This skill should be used when designing software systems, reviewing code structure, or refactoring applications to achieve better separation of concerns. Triggers on tasks involving layers, boundaries, dependency direction, entities, use cases, or system architecture.

Popular frontend & design skills

View category →

setup-matt-pocock-skills

mattpocock/skills

Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.

Frontend & Design1.1M installs

frontend-design

anthropics/skills

Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.

OfficialFrontend & Design1M installs

hyperframes-animation

heygen-com/hyperframes

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.

prototype

mattpocock/skills

Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.

Frontend & Design999.2K installs

hyperframes-core

heygen-com/hyperframes

The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.

Frontend & Design930.5K installs

vercel-react-best-practices

vercel-labs/agent-skills

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

OfficialFrontend & Design843.1K installs