Get the FREE Ultimate OpenClaw Setup Guide →

Nextjs Senior Dev

npx machina-cli add skill hackermanishackerman/claude-skills-vault/nextjs-senior-dev --openclaw
Files (1)
SKILL.md
8.4 KB

Next.js Senior Developer

Transform into Senior Next.js 15+/16 Engineer for production-ready App Router applications.

When to Use

  • Scaffolding new Next.js App Router projects
  • RSC vs Client Component decisions
  • Server Actions and data fetching patterns
  • Performance optimization (CWV, bundle, caching)
  • Middleware and authentication setup
  • Next.js 15/16 migration or audit

Version Notes

VersionKey Changes
Next.js 16middleware.tsproxy.ts, Node.js runtime only, Cache Components
Next.js 15fetch uncached by default, React 19, Turbopack stable

Triggers

CommandPurpose
/next-initScaffold new App Router project
/next-routeGenerate route folder (page, layout, loading, error)
/next-auditAudit codebase for patterns, security, performance
/next-optOptimize bundle, images, fonts, caching

Reference Files (20 Total)

Load based on task context:

Core References

CategoryReferenceWhen
Routingreferences/app_router.mdRoute groups, parallel, intercepting
Componentsreferences/components.mdRSC vs Client decision, patterns
Datareferences/data_fetching.mdfetch, cache, revalidation, streaming
Securityreferences/security.mdServer Actions, auth, OWASP
Performancereferences/performance.mdCWV, images, fonts, bundle, memory
Middlewarereferences/middleware.mdAuth, redirects, Edge vs Node

Architecture & Quality

CategoryReferenceWhen
Architecturereferences/architecture.mdFile structure, feature-sliced design
Shared Componentsreferences/shared_components.mdDRY patterns, composition, reusability
Code Qualityreferences/code_quality.mdError handling, testing, accessibility

Features & Integrations

CategoryReferenceWhen
SEO & Metadatareferences/seo_metadata.mdgenerateMetadata, sitemap, OpenGraph
Databasereferences/database.mdPrisma, Drizzle, queries, migrations
Authenticationreferences/authentication.mdAuth.js, sessions, RBAC
Formsreferences/forms.mdReact Hook Form, Zod, file uploads
i18nreferences/i18n.mdnext-intl, routing, RTL support
Real-Timereferences/realtime.mdSSE, WebSockets, polling, Pusher
API Designreferences/api_design.mdREST, tRPC, webhooks, versioning

DevOps & Migration

CategoryReferenceWhen
Deploymentreferences/deployment.mdVercel, Docker, CI/CD, env management
Monoreporeferences/monorepo.mdTurborepo, shared packages, workspaces
Migrationreferences/migration.mdPages→App Router, version upgrades
Debuggingreferences/debugging.mdDevTools, profiling, error tracking

Core Tenets

1. Server-First

Default to Server Components. Use Client only when required.

RSC when: data fetching, secrets, heavy deps, no interactivity
Client when: useState, useEffect, onClick, browser APIs

2. Component Archetypes

PatternRuntimeMust Have
page.tsxServerasync, data fetching
*.action.tsServer"use server", Zod, 7-step security
*.interactive.tsxClient"use client", event handlers
*.ui.tsxEitherPure presentation, stateless

3. 7-Step Server Action Security

"use server"
// 1. Rate limit (IP/user)
// 2. Auth verification
// 3. Zod validation (sanitize errors!)
// 4. Authorization check (IDOR prevention)
// 5. Mutation
// 6. Granular revalidateTag() (NOT revalidatePath)
// 7. Audit log (async)

4. Data Fetching Strategy

Static → generateStaticParams + fetch
ISR → fetch(url, { next: { revalidate: 60 }})
Dynamic → fetch(url, { cache: 'no-store' })
Real-time → Client fetch (SWR)

Next.js 15 Change: fetch is UNCACHED by default (opposite of 14).

5. Caching

TypeScopeInvalidation
Request MemoizationRequestAutomatic
Data CacheServerrevalidateTag()
Full Route CacheServerRebuild
Router CacheClientrouter.refresh()

Prefer revalidateTag() over revalidatePath() to avoid cache storms.

6. Feature-Sliced Architecture

For large apps (50+ routes), use domain-driven structure:

src/
├── app/           # Routing only
├── components/    # Shared UI (ui/, shared/)
├── features/      # Business logic per domain
│   └── [feature]/
│       ├── components/
│       ├── actions/
│       ├── queries/
│       └── hooks/
├── lib/           # Global utilities
└── types/         # Global types

7. Component Sharing Rules

Used 3+ places?Contains business logic?Action
YesNoMove to components/ui/ or shared/
YesYesKeep in features/
NoAnyKeep local (_components/)

8. State Management Hierarchy

State TypeToolExample
URL StatesearchParamsFilters, pagination
Server StateServer ComponentsUser data, posts
Form StateuseFormStateForm submissions
UI StateuseStateModals, dropdowns
Shared ClientContext/ZustandTheme, cart

Rule: Prefer URL state for shareable/bookmarkable state.

9. DRY with createSafeAction

// lib/safe-action.ts - Reuse for all Server Actions
export const createPost = createSafeAction(schema, handler, {
  revalidateTags: ["posts"]
})

Eliminates duplicate auth/validation/error handling.

Anti-Patterns

Don'tDo
"use client" at tree rootPush boundary down to leaves
API routes for server dataDirect DB in Server Components
useEffect for fetchingServer Component async fetch
revalidatePath('/')Granular revalidateTag()
Trust middleware aloneValidate at data layer too
Prop drill 5+ levelsContext or composition
any typesProper types or unknown
Barrel exports in featuresDirect imports
localStorage for authhttpOnly cookies
Global caches (memory leak)LRU cache or React cache()

Middleware: Deny by Default

// middleware.ts - Public routes MUST be allowlisted
const publicRoutes = ['/login', '/register', '/api/health']
if (!publicRoutes.some(r => pathname.startsWith(r))) {
  // Require auth
}

CRITICAL: Upgrade to Next.js 15.2.3+ (CVE-2025-29927 fix).

Scripts

ScriptPurpose
scripts/scaffold_route.pyGenerate route folder w/ all files

Templates

FilePurpose
templates/page.tsxStandard async page
templates/layout.tsxLayout w/ metadata
templates/action.ts7-step secure Server Action
templates/loading.tsxLoading UI skeleton
templates/error.tsxError boundary

Assets

FilePurpose
assets/next.config.tsProduction config w/ security headers
assets/middleware.tsDeny-by-default auth (Next.js 15)
assets/proxy.tsDeny-by-default auth (Next.js 16+)

Quick Reference: Senior Code Review

Before merging any PR, verify:

Performance

  • No unnecessary "use client"
  • Images use next/image with dimensions
  • Heavy components dynamic imported
  • Parallel fetching (Promise.all)

Security

  • Server Actions validate with Zod
  • Auth in actions (not just middleware)
  • IDOR prevention (user owns resource)
  • No secrets in client bundles

Architecture

  • Components in correct layer
  • No cross-feature imports
  • DRY patterns used (createSafeAction)
  • URL state for shareable state

Quality

  • No any types
  • Error boundaries present
  • Loading states for async
  • Accessibility (semantic HTML, alt text)

Source

git clone https://github.com/hackermanishackerman/claude-skills-vault/blob/main/.claude/skills/nextjs-senior-dev/SKILL.mdView on GitHub

Overview

Equips engineers to build production-ready Next.js App Router apps (15/16), enforce RSC patterns, audit codebases, and optimize performance. It covers scaffolding, routing decisions, data fetching, middleware, and migrations.

How This Skill Works

Provides practical guidance on initializing App Router projects, choosing between server components and client components, and implementing Server Actions with secure data fetching and caching. Emphasizes performance tuning, middleware setup, and migration patterns to align with Next.js 15/16 features.

When to Use It

  • Scaffolding new Next.js App Router projects
  • RSC vs Client Component decisions
  • Server Actions and data fetching patterns
  • Performance optimization (CWV, bundle, caching)
  • Middleware and authentication setup

Quick Start

  1. Step 1: Scaffold a new App Router project with /next-init
  2. Step 2: Create route scaffolds (page.tsx, layout.tsx, loading, error) and decide RSC vs Client
  3. Step 3: Implement a Server Action with Zod validation and basic caching

Best Practices

  • Server-first by default; use Client only for interactivity
  • Use 'use server' actions with Zod validation and security checks
  • Structure routes with page.tsx as Server and action.ts for server logic
  • Optimize CWV, bundle size, images, fonts, and caching
  • Follow migration patterns for Pages→App Router and keep dependencies updated

Example Use Cases

  • Scaffold a new App Router project with /next-init
  • Audit and refactor a codebase to enforce RSC patterns
  • Implement Server Actions for form submissions with server-only logic
  • Optimize a page bundle and enable caching for data fetching
  • Configure middleware for authentication and redirects in App Router

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers