| name | page-generator |
| description | Code-generation skill. Use only when creating or updating public routes, pages, page shells, or metadata-driven Next.js App Router pages in this repo. |
| metadata | {"family":"code","owner":"engineering","last_reviewed":"2026-04-30T00:00:00.000Z","version":"1.0.0"} |
Page Generator
This is a code-generation skill. Use it only when the output is shipped page code.
Use When
- creating a new page
- adding a dynamic route
- moving page composition out of
src/app
- generating page code from a product/content request
Required Pattern
Route files in src/app must stay thin.
Allowed route responsibilities:
- read params
- call
notFound()
- export
metadata or generateMetadata
- export
generateStaticParams
- render a feature-owned page or shell
Required Placement
- route entrypoint:
src/app/.../page.tsx
- page composition:
src/features/<feature>/...
- feature data:
src/features/<feature>/data/...
Reuse Before Creating
Check these first:
src/features/tools/shared/ui/ToolPageShell.tsx
src/features/roles/shared/layout/RolePageShell.tsx
src/features/career-hub/shared/layout/StandardPageLayout.tsx
src/features/career-hub/shared/layout/ContentPageShell.tsx
src/features/career-hub/shared/layout/IndustryPageShell.tsx
src/features/career-hub/shared/layout/SeasonalPageShell.tsx
Required Metadata
Use helpers from:
Prefer specialized helpers when applicable.
Required Schema Sources
src/shared/seo/JsonLd.tsx
src/features/career-hub/shared/seo/EnhancedSchema
Forbidden Patterns
- large route composition inside
src/app/*/page.tsx
- new page data under
src/lib/data/*
- new feature UI under
src/components/career-hub/*
- hand-rolled metadata when an existing helper fits
Minimal Approved Route Pattern
import type { Metadata } from "next";
import FeaturePage from "@/features/some-feature/FeaturePage";
import { generateSEOMetadata } from "@/lib/seo/metadata";
export const metadata: Metadata = generateSEOMetadata({
title: "Example",
description: "Example description",
canonical: "https://indeedflex.com/example",
});
export default function Page() {
return <FeaturePage />;
}
Completion Checklist
- Route file is thin.
- Composition lives in
src/features.
- Metadata uses current helpers.
- Data is in the owning feature.
- Existing shell was reused if possible.