Nextjs landing page
Skill Paldom/landing-page-builder-skills/skills/nextjs-landing-page
Implements a landing page in Next.js App Router with React + shadcn/ui + Tailwind - RSC/client-component boundaries, shadcn setup, next/image & next/font, and the streaming-metadata gotcha. Use when asked to build, scaffold, or fix a Next.js landing page, resolve 'use client' errors, set up shadcn, or fix a blank-head/unindexed page. Not for copy, visual design, animation, or SEO strategy.From its SKILL.md
npx -y skills add Paldom/landing-page-builder-skills --skill nextjs-landing-pageAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.8 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
nextjs-landing-page
Build the page in Next.js App Router with client boundaries at the leaves, so the bundle stays small and the copy stays server-rendered.
The failure this fixes
The single most-documented Next.js failure: putting "use client" too high — at
a layout.tsx or page shell. Because the directive is a module boundary,
everything imported below it (and everything those imports pull in) gets bundled
for the browser — community reports describe 200-400KB+ of dead client JS. Worse
for a landing page: a client-boundary layout strips server-rendered copy and
blocks metadata/generateMetadata (mutually exclusive with "use client" in
one file), so the initial HTML ships with a blank/late <head> and unindexed
content — the whole SEO point of Next.js, gone.
When to use / when NOT to use
Use to implement/scaffold/fix a Next.js App Router landing page: RSC boundaries,
shadcn/Tailwind setup, next/image/next/font, rendering strategy, and the
framework gotchas.
Not for: copy (landing-page-copywriting), section order
(landing-page-structure), palette/type (visual-design-system), animation
design (scroll-motion — this skill only wires the "use client" boundary it
needs), Core Web Vitals / SEO strategy (web-vitals-and-seo), or WCAG
(landing-page-accessibility).
Workflow
- Default to Server Components; push
"use client"to leaves. Everyapp/file is a Server Component (0 KB JS) unless marked. Keep hero copy, proof, pricing, and FAQ server-rendered; mark only the interactive leaf (a button, a form, the animated element). Auditing boundary placement is the highest-leverage bundle fix. - Keep server subtrees server-rendered inside client parents. Pass Server
Components as
childrento a Client Component and they stay on the server — the escape hatch for heavy/server-only logic. Usenext/dynamicfor heavy client-only libs (charts, themotionAPI);optimizePackageImportsfor many-export packages. - Choose rendering: SSG/ISR by default for marketing; SSR only for
genuinely personalized content; PPR /
use cache(Next 16) for mixed static+dynamic. Stream content, never stream metadata — an asyncgenerateMetadatathat resolves late injects the<head>after the initial HTML (an SEO bug). Keep metadata synchronous/fast. - Set up shadcn/Tailwind correctly. shadcn is open code (
npx shadcn addvendors source into your repo — you own it, upstream sync is manual). The July 2026 Base UI default, Tailwind v4@theme inline, and the layering model are version-dependent — seereferences/nextjs-implementation.mdand verify against the changelog. - Wire images and fonts for zero CLS.
next/imagewithpriorityon the LCP hero andsizesset;next/fontself-hosts and generates fallback metrics. Details in the reference. - Patch the critical CVE. Verify the app is on a Next.js/React version fixed for CVE-2025-55182 ("React2Shell") — see the reference and the official advisory.
The rules
"use client"is contagious up the import tree — it bundles the whole subtree, not just the leaf."use client"andmetadata/generateMetadatacannot coexist in one file.- Children-as-props keeps subtrees server-rendered even inside a client parent.
- SSG/ISR is the marketing default; server-only libs (markdown, formatting) ship zero bytes when kept in Server Components.
- Stream content, not metadata.
- shadcn output needs de-defaulting — v0/Cursor emit stock "grayscale PDF"
shadcn; theme the tokens (the aesthetic choices are
visual-design-system). - Vercel coupling is real — PPR/edge features are Vercel-tuned; note portability cost. For a zero-interactivity page, Astro's islands (~0-15 KB) beat Next's baseline — point there when the page won't grow into an app.
Output
A Next.js App Router landing page with client boundaries at the leaves, metadata
server-rendered and synchronous, next/image/next/font wired for zero CLS,
shadcn/Tailwind set up with themed tokens, SSG/ISR rendering, and version-gated
claims (Base UI, Tailwind v4, PPR, the CVE) checked against current docs.
References
references/nextjs-implementation.md- RSC boundary patterns, shadcn open-code- Base UI switch + Tailwind v4 gotchas, image/font specifics, PPR/rendering, CVE-2025-55182 details with fixed versions, and the fact ledger.
What ships with it: 2 files
10.4 KB alongside SKILL.md
evals/
- evals.json4.0 KB
references/
- nextjs-implementation.md6.4 KB