← Back to Skills Marketplace
goldath

Next.js 15 Best Practices

by Hjs102468 · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ Security Clean
134
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install nextjs-patterns
Description
Apply Next.js 15 best practices and modern patterns including App Router, Server Components, Server Actions, caching strategies, and performance optimization...
README (SKILL.md)

Next.js 15 Best Practices

Core Principles

  1. Default to Server Components — only add "use client" when you need interactivity or browser APIs
  2. Colocate by feature — keep components, hooks, and utils near the routes that use them
  3. Type everything — leverage TypeScript with strict mode enabled
  4. Cache deliberately — understand the four caching layers and opt in/out explicitly

Project Structure

app/
  (marketing)/        # route group: no URL segment
    page.tsx
  (dashboard)/
    layout.tsx
    [id]/
      page.tsx
  api/
    route.ts
components/
  ui/                 # shared, "dumb" UI components
  features/           # feature-specific components
lib/
  db.ts               # database client (singleton)
  auth.ts             # auth helpers
  utils.ts

Server vs. Client Components

// ✅ Server Component (default) — runs on server, no JS sent to client
export default async function ProductList() {
  const products = await db.product.findMany()
  return \x3Cul>{products.map(p => \x3Cli key={p.id}>{p.name}\x3C/li>)}\x3C/ul>
}

// ✅ Client Component — only when needed
"use client"
import { useState } from "react"
export function Counter() {
  const [n, setN] = useState(0)
  return \x3Cbutton onClick={() => setN(n + 1)}>{n}\x3C/button>
}

Data Fetching Patterns

// Parallel fetching (avoid sequential waterfalls)
export default async function Dashboard() {
  const [user, stats] = await Promise.all([
    fetchUser(),
    fetchStats(),
  ])
  return \x3CView user={user} stats={stats} />
}

// fetch with cache control
const data = await fetch("https://api.example.com/data", {
  next: { revalidate: 60 },   // ISR: revalidate every 60s
  // cache: "no-store"         // always fresh
  // cache: "force-cache"      // static, until manual revalidation
})

Server Actions

// app/actions.ts
"use server"
import { revalidatePath } from "next/cache"

export async function createPost(formData: FormData) {
  const title = formData.get("title") as string
  await db.post.create({ data: { title } })
  revalidatePath("/posts")
}

// app/posts/new/page.tsx
import { createPost } from "../actions"
export default function NewPost() {
  return (
    \x3Cform action={createPost}>
      \x3Cinput name="title" />
      \x3Cbutton type="submit">Create\x3C/button>
    \x3C/form>
  )
}

Metadata & SEO

// Static metadata
export const metadata = {
  title: "My App",
  description: "...",
}

// Dynamic metadata
export async function generateMetadata({ params }) {
  const post = await fetchPost(params.slug)
  return { title: post.title, description: post.excerpt }
}

Error & Loading States

// app/posts/loading.tsx  — automatic Suspense boundary
export default function Loading() {
  return \x3CSkeleton />
}

// app/posts/error.tsx  — automatic error boundary
"use client"
export default function Error({ error, reset }) {
  return \x3Cbutton onClick={reset}>Retry: {error.message}\x3C/button>
}

Performance Checklist

  • Images use next/image with explicit width/height
  • Fonts use next/font (zero layout shift)
  • Dynamic imports for heavy client components: dynamic(() => import(...))
  • generateStaticParams for known dynamic routes
  • Bundle analyzer run: ANALYZE=true next build
  • Partial Prerendering (PPR) considered for mixed static/dynamic pages

References

See references/ folder for routing patterns, caching deep-dive, and migration guide.

Usage Guidance
This skill appears to be a documentation/reference pack for Next.js 15 and is internally consistent. Before running any example commands you should: (1) confirm the author/source since the registry metadata has no homepage; (2) review any shell commands (npx/npm) before executing them locally; (3) never paste real secrets into example code — examples reference DATABASE_URL and NEXT_PUBLIC_API_URL but the skill does not need them; and (4) if you prefer the agent not to use this skill autonomously, adjust agent skill invocation settings (autonomous invocation is enabled by default but the skill itself does not request extra privileges).
Capability Analysis
Type: OpenClaw Skill Name: nextjs-patterns Version: 1.0.0 The skill bundle provides comprehensive documentation and code examples for Next.js 15 best practices, including App Router patterns, Server Actions, and caching strategies. All content across SKILL.md and the reference files is educational and aligns with official framework documentation without any indicators of malicious intent, prompt injection, or security risks.
Capability Assessment
Purpose & Capability
Name/description match contents: the skill is a collection of Next.js 15 patterns, migration notes, caching and routing guidance. There are no unexplained env vars, binaries, or installs required by the skill.
Instruction Scope
SKILL.md and reference files contain code examples and advice for building/reviewing apps. The instructions do not direct the agent to read local files, exfiltrate data, or call endpoints outside illustrative examples. Some examples reference db clients and process.env as typical sample code, but the skill does not instruct the agent to access actual credentials or system files.
Install Mechanism
No install spec and no code to write to disk (instruction-only). Guidance includes common commands (npx, npm) as examples for upgrading Next.js, which is expected for a migration guide; the skill itself does not perform downloads.
Credentials
Requires no environment variables or credentials. Reference docs mention typical env names (DATABASE_URL, NEXT_PUBLIC_API_URL) only as examples; nothing in the skill attempts to access or require user secrets.
Persistence & Privilege
always is false and there are no install hooks or configuration changes. The skill does not request persistent runtime presence or elevated privileges.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install nextjs-patterns
  3. After installation, invoke the skill by name or use /nextjs-patterns
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release
Metadata
Slug nextjs-patterns
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Next.js 15 Best Practices?

Apply Next.js 15 best practices and modern patterns including App Router, Server Components, Server Actions, caching strategies, and performance optimization... It is an AI Agent Skill for Claude Code / OpenClaw, with 134 downloads so far.

How do I install Next.js 15 Best Practices?

Run "/install nextjs-patterns" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Next.js 15 Best Practices free?

Yes, Next.js 15 Best Practices is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Next.js 15 Best Practices support?

Next.js 15 Best Practices is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Next.js 15 Best Practices?

It is built and maintained by Hjs102468 (@goldath); the current version is v1.0.0.

💬 Comments