skills/nextjs/nextjs-architecture/SKILL.md
Structure Next.js projects with Feature-Sliced Design layers, domain-grouped slices, and strict import hierarchy. Use when organizing features into FSD layers, enforcing slice boundaries, or keeping page.tsx thin.
npx skillsauth add hoangnguyen0403/agent-skills-standard nextjs-architectureInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Warning: FSD introduces boilerplate. Use it only if project expected to grow significantly (e.g., 20+ features). For smaller projects, simple module-based structure preferred.
src/features/auth/login/ with ui/, model/, api/ segments.src/features/auth/login/index.ts.app/login/page.tsx (thin page).App (app/) -> Widgets -> Features -> Entities -> Shared
See implementation examples for thin page example.
app/ directory (App Router) only for Routing.page.tsx should only import Widgets/Features. No business logic (useEffect, fetch) directly in pages.src/components/LoginForm.tsx, src/hooks/useLogin.tssrc/features/auth/login/ containing both.App -> Widgets -> Features -> Entities -> Shared.Features or Pages. Move to Entities only when data/logic strictly reused across multiple differing features.shared/api, not entities.ui (Components), model (State/actions), api (Data fetching), lib (Helpers), config (Constants).components, hooks, services as segment names.For specific directory layout and layer definitions, see reference documentation.
[ ] Layer Imports: any layer import from layer ABOVE it? (App > Widgets > Features > Entities > Shared)
[ ] Page Logic: page.tsx thin, containing only Widgets/Features and zero useEffect/fetch?
[ ] RSC Boundaries: Server Components isolated from Client Components with proper 'use client' boundaries?
[ ] Public API: all access to slice performed via top-level index.ts (public API)?
[ ] Cross-Slice: slices within same layer (e.g., two features) import from each other directly? (Prohibited)
Server Actions: Place them in model/ folder of Feature (e.g., features/auth/model/actions.ts).
Data Access (DAL): Place logic in model/ folder of Entity (e.g., entities/user/model/dal.ts).
UI Components: Base UI (shadcn) belongs in shared/ui. Feature-specific UI belongs in features/*/ui.
page.tsx: Pages import Widgets/Features only; zero useEffect/fetch.features/auth/), not type (components/, hooks/).development
Summarizes GitHub PR, GitLab MR, or Azure DevOps PR metadata, review threads, changed files, and template completeness. Use during review-ticket or code-review workflows when PR/MR context exists.
tools
Development tools, linting, and build config for TypeScript. Use when configuring ESLint, Prettier, Jest, Vitest, tsconfig, or any TS build tooling.
development
Validate input, secure auth tokens, and prevent injection attacks in TypeScript. Use when validating input, handling auth tokens, sanitizing data, or managing secrets and sensitive configuration.
development
Apply modern TypeScript standards for type safety and maintainability. Use when working with types, interfaces, generics, enums, unions, or tsconfig settings.