ork-assess
Assess a code change, design, architecture, workflow, or competing options against explicit criteria and evidence. Use when a…
Next.js 16+ with React Server Components: App Router, Cache Components, streaming SSR, Server Actions. Use when building server-first Next.js apps.
Claude Code
$ npx -y skills add yonatangross/orchestkit --skill react-server-components-framework --agent claude-code
Codex
$ npx skills add yonatangross/orchestkit --skill react-server-components-framework -a codex -y
Cursor
$ npx skills add yonatangross/orchestkit --skill react-server-components-framework -a cursor -y
Gemini CLI
$ npx skills add yonatangross/orchestkit --skill react-server-components-framework -a gemini-cli -y
GitHub Copilot
$ npx skills add yonatangross/orchestkit --skill react-server-components-framework -a github-copilot -y
OpenCode
$ npx skills add yonatangross/orchestkit --skill react-server-components-framework -a opencode -y
Windsurf
$ npx skills add yonatangross/orchestkit --skill react-server-components-framework -a windsurf -y
name: react-server-components-framework
license: MIT
compatibility: "Claude Code 2.1.277+."
description: "Next.js 16+ with React Server Components: App Router, Cache Components, streaming SSR, Server Actions. Use when building server-first Next.js apps."
user-invocable: false
disable-model-invocation: false
targets:
- library: next.js
version: ">=16.3.7"
- library: react
version: ">=19.3.0"
metadata:
owner-agent: "frontend-ui-developer"
category: document-asset-creation
version: "1.5.0"
author: "OrchestKit"
complexity: "medium"
tags: "frontend, react, react-19.2, nextjs-16, server-components, streaming, cache-components, turbopack"
allowed-tools: "Read Glob Grep WebFetch WebSearch"
path_patterns: ["*.tsx", "*.jsx", "**/next.config.*", "**/app/**/*.tsx"]React Server Components (RSC) enable server-first rendering with client-side interactivity. This skill covers Next.js 16.2 LTS App Router patterns, Server Components, Server Actions, and streaming.
> **Next.js 16.2.6 / React 19.2.6 (security release, May 2026)** — Turbopack is the default bundler (no `--turbo` flag needed), Server Fast Refresh is on by default, and the new `cacheComponents` config flag replaces the legacy `experimental_ppr` escape hatch. For AI-agent debugging Next.js ships **Next DevTools MCP** — wire `npx -y next-devtools-mcp@latest` into `.mcp.json` (it connects via the dev server's `/_next/mcp` endpoint) to inspect render trees and cache boundaries mid-session.
**When to use this skill:**
---
| Feature | Server Component | Client Component | |---------|-----------------|------------------| | Directive | None (default) | `'use client'` | | Async/await | Yes | No | | Hooks | No | Yes | | Browser APIs | No | Yes | | Database access | Yes | No | | Client JS bundle | Zero | Ships to client |
**Key Rule**: Server Components can render Client Components, but Client Components cannot directly import Server Components (use `children` prop instead).
**Next.js 16 Cache Components (Recommended):**
import { cacheLife, cacheTag } from 'next/cache'
// Default — shared across all users (public CDN-cached)
async function CachedProducts() {
'use cache'
cacheLife('hours')
cacheTag('products')
return await db.product.findMany()
}
// Remote variant (16.2+) — always served from the edge/CDN, never rendered
// inline on the origin. Best for static product listings, marketing content.
async function MarketingHero() {
'use cache: remote'
cacheLife('days')
return <Hero />
}
// Private variant (16.2+) — cached per-user session. Never shared across
// users. Use for personalized dashboards with expensive computation.
async function UserDashboard({ userId }: { userId: string }) {
'use cache: private'
cacheLife('minutes')
cacheTag(`user:${userId}`)
return await loadDashboard(userId)
}
// Invalidate cache — v16 requires a cacheLife profile as the 2nd arg
import { revalidateTag } from 'next/cache'
revalidateTag('products', 'max') // or updateTag('products') for read-your-writesEnable via `next.config.ts`:
import type { NextConfig } from 'next'
const config: NextConfig = {
cacheComponents: true, // 16.2+ — replaces experimental_ppr flag
}
export default config**Legacy Fetch Options (Next.js 15):**
// Static (cached indefinitely)
await fetch(url, { cache: 'force-cache' })
// Revalidate every 60 seconds
await fetch(url, { next: { revalidate: 60 } })
// Always fresh
await fetch(url, { cache: 'no-store' })
// Tag-based revalidation
await fetch(url, { next: { tags: ['posts'] } })'use server'
export async function createPost(formData: FormData) {
const title = formData.get('title') as string
const post = await db.post.create({ data: { title } })
revalidatePath('/posts')
redirect("/posts/" + post.id)
}Route parameters and search parameters are now Promises that must be awaited:
// app/posts/[slug]/page.tsx
export default async function PostPage({
params,
searchParams,
}: {
params: Promise<{ slug: string }>
searchParams: Promise<{ page?: string }>
}) {
const { slug } = await params
const { page } = await searchParams
return <Post slug={slug} page={page} />
}**Note:** Also applies to `layout.tsx`, `generateMetadata()`, and route handlers. Complete migration guide: first-party `next-upgrade` / `vercel:next-upgrade` skill. House scars: `Read("references/ork-delta.md")`.
---
Load on demand with `Read("references/<file>")`: | File | Content | |------|---------| | `ork-delta.md` | House rules and scars: fabricated-API corrections from PR #2143, React 19 house conventions (2026-07-31 distillation) | | `tanstack-router-patterns.md` | React 19 features without Next.js, route-based data fetching, client-rendered app patterns | | `capability-details.md` | Keyword an
The Complete AI Development Toolkit for Claude Code. 115 skills, 36 agents, 163 hooks. Install `ork` for stable (v10.x).
Assess a code change, design, architecture, workflow, or competing options against explicit criteria and evidence. Use when a…
Compare plausible implementation, architecture, product, or operational approaches before committing to one. Use when a request…
Map an unfamiliar codebase, feature, architecture, data flow, or operational path with file-backed evidence. Use when a request…
Render an answer inline as compact ASCII or box-drawing art with semantic status icons. Use for status, inventories, budgets,…
Make an approved, scoped change and prove the affected behavior. Use when a request asks to implement, build, add, or land a…
Review a pull request or branch for correctness, regressions, security, operational risk, and missing evidence. Use when a…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.