Install
openclaw skills install @bovinphang/fec-nextjs-project-standardUse when creating or reviewing Next.js 14+ App Router projects, file routes, layouts, server/client component boundaries, SSR/SSG/ISR, streaming, metadata, middleware, server actions, or Next-specific data fetching. For generic client React component architecture, apply the project's React conventio
openclaw skills install @bovinphang/fec-nextjs-project-standardFor repositories using Next.js 14+ with App Router.
Standardize engineering practices for App Router, SSR/SSG/ISR rendering modes, data acquisition, route layout, middleware and SEO metadata in Next.js 14+ projects to ensure server-side priority, performance optimization and maintainability.
'use client' only when browser API, interactive state or event handling is required.loading.tsx, error.tsx, not-found.tsx, metadata and sensitive logic for routing.src/
├── app/ # App Router
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Home page
│ ├── loading.tsx # Global loading UI
│ ├── error.tsx # Global error boundary
│ ├── not-found.tsx # 404
│ ├── globals.css
│ │
│ ├── (auth)/ # Routing group
│ │ ├── login/
│ │ │ └── page.tsx
│ │ └── register/
│ │ └── page.tsx
│ │
│ ├── (dashboard)/ # Dashboard routing group
│ │ ├── layout.tsx # Shared layout
│ │ ├── dashboard/
│ │ │ └── page.tsx
│ │ └── users/
│ │ ├── page.tsx
│ │ └── [id]/
│ │ └── page.tsx
│ │
│ └── api/ # API Routes
│ └── users/
│ └── route.ts
│
├── components/ # Shared components
├── lib/ # Tools, configuration
├── hooks/
├── services/
└── types/
| Patterns | Usage scenarios | Implementation methods |
|---|---|---|
| SSR | Dynamic, real-time data required | Default, fetch does not cache or cache: 'no-store' |
| SSG | Static content | generateStaticParams + static fetch |
| ISR | Periodically updated | revalidate or revalidatePath |
| CSR | Client interaction | 'use client' + useEffect or SWR/React Query |
async or fetch, without exposing useEffectuseEffect + useState, or SWR / React Queryloading.tsx and Suspense to wrap asynchronous blocks to provide streaming experienceforce-cache, no-store, revalidate, tag/path revalidation or user private data constraints(auth) does not change the URL, only affects the layout[id] cooperates with generateStaticParams to do SSGlayout.tsx wraps sub-routes to share UI and layoutpage.tsx is a leaf route and cannot be nestedmiddleware.tsmetadata or generateMetadatatitle, description, openGraph, twitter, etc.generateMetadata(params)'use client' only when client interaction is required.useState, useEffect, and browser API directly in server componentsnext/image for images and next/font for fontsNEXT_PUBLIC_ environment variable.loading.tsx / error.tsx, routing and layout, etc. are subject to this skill.'use client' component: combined and composite components, forms, client state, list virtualization, animation and keyboard/focus, etc., consistent with pure React projects, following the React rules in the project (such as .claude/rules/fec-react.md).app/ directory, page.tsx, layout.tsx, loading.tsx, error.tsx)