ilya-valasiuk/agent-skills · Archived

structuring-nextjs-app-router

Standardize and preserve Next.js App Router project structure across `src/`, including route files, page composition, API modules, server actions, hooks, providers, helpers, and shared utilities.

First seen May 29, 2026

Installation

$ npx skills add ilya-valasiuk/agent-skills --skill structuring-nextjs-app-router

Summary

  • Standardize and preserve Next.js App Router project structure across `src/`, including route files, page composition, API modules, server actions, hooks, providers, helpers, and shared utilities.
  • Use this skill whenever the user asks to add, move, rename, refactor, or review files in a Next.js App Router codebase, especially if the task affects file placement, page architecture, or folder naming.

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from ilya-valasiuk/agent-skills · top by installs.

npx skills add ilya-valasiuk/agent-skills

Browse all from ilya-valasiuk/agent-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

License LICENSE
Default branch main
Open issues 0
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,212 B
  • docs SUMMARY.md 436 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 8 installs

SKILL.md

Next.js App Router Structure

Use this skill to place new code in the correct part of a Next.js App Router repo and to keep architecture consistent during refactors.

Goals

  • Keep src/app focused on routing concerns and thin route files
  • Keep page UI in src/components/<page-name>/<PageName>.tsx
  • Group domain logic by responsibility instead of mixing fetchers, actions, hooks, and view code
  • Preserve consistent naming: kebab-case folders, PascalCase component files

Workflow

1. Check whether the repo already follows this convention

Inspect nearby files before creating or moving anything.

  • If the repo already follows this structure, continue with it.
  • If the repo differs in a small accidental way, prefer nudging the new work toward this structure.
  • If the repo uses a clearly different deliberate architecture, preserve the existing pattern unless the user asked to migrate or standardize it.

2. Classify the requested work

Decide what kind of artifact the user needs:

  • route file or route metadata
  • page-level UI
  • shared component
  • API client logic
  • server action
  • hook
  • context or provider
  • helper, utility, constant, type, or layout

Then place it using [references/REFERENCE.md](references/REFERENCE.md).

3. Keep app/ thin

When editing src/app, prefer route files that do orchestration rather than UI implementation.

  • page.tsx should load data, read params, call helpers/actions as needed, and render page components from src/components/...
  • layout.tsx, template.tsx, error.tsx, loading.tsx, and not-found.tsx should stay focused on route behavior
  • do not bury large presentational sections directly inside route files unless the repo already intentionally does that

4. Place view code in components/

  • shared UI goes under src/components/common/<component-name>/
  • page-specific UI goes under src/components/<page-name>/
  • nested component composition goes inside components/ subfolders

If the task is mainly about building or restructuring React components, also follow the building-components skill if it is available.

5. Keep domain logic separated by concern

  • API client fetchers and query hooks belong in src/api
  • server mutations belong in src/actions
  • project-specific helper logic belongs in src/helpers
  • generic reusable utilities belong in src/utils
  • app-wide constants and types belong in src/constants and src/types

Do not mix these concerns just because a file is convenient to reach from a page.

Placement Rules

Follow the full placement matrix in [references/REFERENCE.md](references/REFERENCE.md).

High-value defaults:

  • Put route handlers in src/app/api/**/route.ts
  • Put page UI in src/components/<page-name>/<PageName>.tsx
  • Put domain API code in src/api/<domain>/module.ts, queries.ts, and types.ts
  • Put server actions in src/actions/<domain>/index.ts
  • Put contexts in src/context/<context-name>/
  • Put providers in src/providers/<provider-name>/

Naming Rules

  • Folders: kebab-case
  • React component files: PascalCase
  • Context files: <ContextName>Context.tsx
  • Provider files: <ProviderName>Provider.tsx
  • Hook files: useX.ts

Match exported names to filenames whenever practical.

Refactor Behavior

When the user asks to reorganize or standardize a Next.js repo:

  • move files toward this structure gradually
  • keep imports consistent after moves
  • avoid broad churn outside the requested area
  • do not invent new top-level src/ categories unless the repo already has them or the user asked for them

Validation Checklist

Before finishing, verify:

  • route files stay in src/app
  • page UI is not trapped inside page.tsx without a good reason
  • domain logic is stored under the right top-level src/ folder
  • folder and file names follow the convention
  • new files match nearby import/export patterns

Examples

Example 1

Input: "Add a new Services page in a Next.js App Router app."

Expected structure:

  • src/app/[[locale]]/services/page.tsx
  • src/components/services/Services.tsx
  • optional nested UI in src/components/services/components/...

Example 2

Input: "Create blog query hooks and fetchers."

Expected structure:

  • src/api/blog/module.ts
  • src/api/blog/queries.ts
  • src/api/blog/types.ts
  • optional src/api/blog/constants.ts
  • optional src/api/blog/helpers.ts

Add optional domain files when the logic clearly belongs to that domain rather than to shared API utilities.

Example 3

Input: "Add a contact form server action."

Expected structure:

  • src/actions/contact/index.ts
  • optional src/actions/contact/types.ts
  • optional src/actions/contact/constants.ts
  • optional src/actions/contact/helpers.ts