Skip to content
Back to skills

Nextjs App Scaffold

ASecurity

Use this skill whenever the user wants to create or restructure a Next.js app with my standard stack (TypeScript, App Router, Tailwind CSS, shadcn/ui, Vitest, and Playwright E2E tests). Prefer this skill when the task involves starting a new frontend project or aligning an existing one to my conventions.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 29, 2026
developmenttypescriptreactvuenextjstestingapifrontendbackenddocumentation

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned May 29, 2026

npx -y skills add AgentiveCity/SkillFactory --skill nextjs-app-scaffold --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Nextjs App Scaffold?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Nextjs App Scaffold
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/agentivecity-nextjs-app-scaffold/badge)](https://www.skillsdirectory.com/skills/agentivecity-nextjs-app-scaffold)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "nextjs-app-scaffold"
description: "Use this skill whenever the user wants to create or restructure a Next.js app with my standard stack (TypeScript, App Router, Tailwind CSS, shadcn/ui, Vitest, and Playwright E2E tests). Prefer this skill when the task involves starting a new frontend project or aligning an existing one to my conventions."
---

# Next.js App Scaffold (TS + Tailwind + shadcn/ui + Playwright)

## Purpose

You are a specialized assistant that **bootstraps or restructures Next.js projects**
for the user using their **preferred frontend stack**:

- Next.js (App Router, TypeScript)
- Tailwind CSS
- shadcn/ui component library
- ESLint + Prettier
- Vitest (or Jest) + React Testing Library for unit/component tests
- Playwright for end-to-end tests

Use this skill to:

- Create new Next.js projects from scratch using the user's standard layout
- Add missing tooling (Tailwind, shadcn/ui, Vitest, Playwright) to an existing repo
- Refactor folder structure to match the conventions defined below

Do **not** use this skill for:

- Pure backend services with no Next.js frontend
- Non-React frontends
- Projects where the user explicitly requests a different framework or stack

If in doubt whether this applies, briefly check the repository structure
(or ask the user one concise question) and only use this skill
when a Next.js app is clearly desired.

---

## Defaults & Assumptions

Unless the user or a CLAUDE.md file explicitly says otherwise, assume:

- **Framework**: Next.js 14+ with the **App Router** (`app/` directory)
- **Language**: TypeScript everywhere (`.ts`, `.tsx`)
- **Package manager order of preference**:

  1. If CLAUDE.md or package.json clearly indicates `pnpm`, use `pnpm`
  2. Otherwise, if `yarn.lock` exists, use `yarn`
  3. Otherwise, default to `npm`

- **Styling**: Tailwind CSS with PostCSS
- **UI kit**: shadcn/ui with:
  - `components/` and `lib/` aligned with their official conventions
  - A default theme set up (e.g. `light/dark` mode, radius scale)
- **Testing**:
  - **Unit/component**: Vitest + React Testing Library
  - **E2E**: Playwright Test
- **Linting/formatting**:
  - ESLint configured for Next.js + TypeScript + Testing Library
  - Prettier formatting (optionally with Tailwind plugin)

If a CLAUDE.md file exists in the repo, treat its preferences as **authoritative**
and adapt these defaults to match it.

---

## When to Apply This Skill

Trigger this skill when the user asks for any of the following (or equivalent):

- “Create a new Next.js project for X”
- “Bootstrap a frontend app using my usual stack”
- “Set up a Next.js app with shadcn, Tailwind, and Playwright”
- “Restructure this repo into a clean Next.js + shadcn layout”
- “Add Playwright and Vitest to this Next.js project using my standards”

Do **not** apply this skill when:

- The project is not using Next.js
- The user explicitly wants a minimal setup without Tailwind or shadcn
- The user wants a non-React framework (e.g. Svelte, Vue)

---

## High-Level Workflow

When this skill is active, follow this workflow:

1. **Understand the context**

   - Check whether the user wants:
     - A brand new project, or
     - To upgrade / align an existing Next.js repo.
   - Skim the repo (if present) to see:
     - `package.json`
     - `app/` or `pages/`
     - Any testing or lint config already in place.

2. **Confirm or infer package manager**

   - Prefer `pnpm` if `pnpm-lock.yaml` exists or CLAUDE.md says so.
   - Otherwise, prefer `yarn` if `yarn.lock` exists.
   - Otherwise, default to `npm`.
   - Use that package manager consistently in all commands you run or suggest.

3. **Create or align the Next.js app**

   - For a new project:
     - Run a command like:
       - `pnpm create next-app@latest <project-name> --typescript --eslint --app --src-dir --import-alias "@/*"`
       - Adjust syntax for `npm`/`yarn` as needed.
   - For an existing project:
     - Confirm that `next`, `react`, and `react-dom` dependencies exist.
     - If an old `pages/` router is used and the user wants App Router, propose a
       **migration plan** before performing large structural changes.

4. **Set up Tailwind CSS**

   - Install Tailwind + PostCSS + Autoprefixer.
   - Initialize Tailwind config and content paths for `app/` and `src/`:
     - `app/**/*.{ts,tsx}`
     - `src/**/*.{ts,tsx}`
   - Create or update:
     - `tailwind.config.ts`
     - `postcss.config.mjs` (or equivalent)
     - Global stylesheet (e.g. `app/globals.css`) with Tailwind base/components/utilities.

5. **Set up shadcn/ui**

   - Install shadcn/ui per official instructions for the given Next.js version.
   - Configure:
     - `components/` and `lib/` directories for shadcn (e.g. `components/ui`, `lib/utils`).
     - A default theme (typography, radius, colors) appropriate for a typical SaaS UI.
   - Add at least one sample component:
     - e.g. a `<Button />` and a simple layout so the user can verify styling works.
   - Ensure imports are correct and tree-shakable.

6. **Configure ESLint & Prettier**

   - Ensure ESLint is configured with:
     - Next.js + React + TypeScript rules.
     - Testing Library / Jest or Vitest plugin if tests are present.
   - Add or update Prettier configuration:
     - Basic rules (line length, semi, quotes).
     - Tailwind plugin if Tailwind is used.
   - Wire lint/format scripts to `package.json`:
     - `"lint"` script for ESLint.
     - `"format"` script for Prettier.

7. **Set up testing**

   - **Unit/component (Vitest or Jest):**
     - If the repo already uses Jest and the user seems invested in it, keep Jest.
     - Otherwise, prefer Vitest (fast, TS-friendly, Vite-style API).
     - Configure:
       - A `tests/` or `__tests__/` folder structure.
       - React Testing Library helpers.
       - Example tests for a simple component and a page.
   - **E2E (Playwright):**
     - Install Playwright Test and initialize a default config file.
     - Create an example E2E spec that:
       - Starts the dev server (or assumes it is running).
       - Checks that the homepage loads and a basic UI interaction works.
     - Add NPM scripts:
       - `"test:e2e"` to run Playwright tests.
       - `"test:unit"` to run Vitest/Jest tests.
       - `"test"` to run all or a sensible subset.

8. **Establish project structure**

   For new projects, aim for something like:

   ```text
   app/
     layout.tsx
     page.tsx
     (marketing)/
       layout.tsx
       page.tsx
     (app)/
       dashboard/
         page.tsx
   src/
     components/
       ui/        # shadcn generated components
       layout/
       forms/
     lib/
       utils.ts
       types/
     hooks/
   tests/
     unit/
     e2e/         # or use playwright default folder
   ```
   **Prefer App Router patterns**
    - Shared layout components in app/layout.tsx.
    - Route groups for marketing vs app areas when appropriate.

    **Keep server and client components clearly annotated:**
    - Use "use client" only where necessary.

9. **Wire scripts and documentation**

   **Prefer App Router patterns**
    - Update package.json scripts to include:
       - "dev", "build", "start", "lint", "test", "test:unit", "test:e2e".
    
    **Create or update README.md with:**
    - How to install dependencies and run the dev server.
    - How to run unit tests and E2E tests.
    - Any special notes about shadcn, Tailwind, or Playwright usage.

10. **Final check and explanation**

   **Summarize what was created or changed:**
    - Update package.json scripts to include:
       - Folder structure.
       - Key configs.
       - How to start the dev server and run tests.
    - Highlight any decisions made (e.g. “I chose Vitest over Jest because…”).
    - If something is ambiguous (package manager, exact Next.js version), suggest a small follow-up question to the user and clearly mark it.
    

**Style & Quality Guidelines**
    - Always favor clarity and convention over cleverness.
    - Follow idiomatic Next.js App Router patterns:
       - Use server components by default.
       - Promote server actions and data fetching on the server whenever possible.
       - How to start the dev server and run tests.
    - Keep configuration files small and well-commented so the user can understand them.
    - Avoid introducing experimental flags or unstable Next.js features unless the user asks.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.