Agent skill

Nuxt Core

by secondsky in secondsky/claude-skills

Nuxt 5 core framework with project setup, routing, SEO, error handling, and Vite 8/Nitro v3 configuration.

MITAuto-check passedDevelopment

Install Nuxt Core

skills CLI
$ npx skills add secondsky/claude-skills --skill nuxt-core -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install secondsky/claude-skills nuxt-core --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/secondsky/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/nuxt-v5/skills/nuxt-core .claude/skills/nuxt-core && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
nuxt-core
GitHub stars
227
Token cost
~3.1k tokens
SKILL.md length
542 words
Files
3
Skills in repo
169
Repo updated
First seen
Licence
MIT

At a glance

Nuxt 5 core framework with project setup, routing, SEO, error handling, and Vite 8/Nitro v3 configuration.

  • Creating Nuxt 5 apps
  • SKILL.md covers Quick Reference, Secure Installation, Directory Structure (Nuxt v5) and What's New in Nuxt 5, plus 5 more sections
  • Runs TypeScript scripts from its folder; calls bun, bunx and npm; needs API_SECRET
  • Setting up routing

What it does

Nuxt Core is an agent skill from secondsky/claude-skills. Nuxt 5 core framework with project setup, routing, SEO, error handling, and Vite 8/Nitro v3 configuration. Use when creating Nuxt 5 apps, setting up routing, or migrating config.

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `templates/nuxt.config.ts`).

It sits in Development. It works with Nuxt, Vite and npm. The repository describes itself as: Production-ready skills for Claude Code CLI - Cloudflare, React, Tailwind v4, and AI integrations. The licence is MIT.

When your agent uses it

  • Creating Nuxt 5 apps
  • Setting up routing
  • Migrating config

Example prompts

  • “/nuxt-core”

Requirements

  • Node.js
  • A credential in API_SECRET

What it can do on your machine

Read from SKILL.md and the folder at commit 8837836. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (TypeScript), which the agent can run.

    Shell commands in SKILL.md call:

    • bun
    • bunx
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use bunx and npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • API_SECRET

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Nuxt Core loads about 3.1k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 542 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~47
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from secondsky/claude-skills at commit 8837836, republished under its MIT licence (© secondsky). 542 words, ~3,123 tokens.

Download SKILL.mdSave it as .claude/skills/nuxt-core/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
nuxt-core
description
Nuxt 5 core framework with project setup, routing, SEO, error handling, and Vite 8/Nitro v3 configuration. Use when creating Nuxt 5 apps, setting up routing, or migrating config.
license
MIT
metadata.version
5.0.0
metadata.author
Claude Skills Maintainers
metadata.category
Framework
metadata.framework
Nuxt
metadata.framework-version
5.x
metadata.last-verified
2026-03-30

Nuxt 5 Core Fundamentals

Project setup, configuration, routing, SEO, and error handling for Nuxt 5 applications.

Note: As of 2026-08-03, Nuxt 5 is not yet stable (current stable line is Nuxt 4.x; see the nuxt-v4 plugin). This skill documents the upcoming Nuxt 5 APIs (Nitro v3, h3 v2, Vite 8/Rolldown). Treat version numbers below as targets, not pinned production releases.

Quick Reference

Version Requirements
PackageMinimumRecommended
nuxt5.0.05.x
vue3.5.03.5.x
nitro3.0.03.x
vite8.0.08.x
typescript5.0.05.x
Key Commands
bash
bunx nuxi@latest init my-app
bun run dev
bun run build
bun run preview
bun run postinstall
bunx nuxi typecheck
bunx nuxi add page about
bunx nuxi add component MyButton
bunx nuxi add composable useAuth

Secure Installation

Scaffolding tools like bunx nuxi init download and execute remote code. Before running, follow supply chain security best practices:

  • Block post-install scripts — npm config set ignore-scripts true (or Bun: disabled by default)
  • Cooldown period — Wait 7 days for new package versions to be vetted by the community
  • Audit before installing — Run socket package score npm <pkg> or use socket npm install <pkg> to check packages

Load the dependency-upgrade skill for full security configuration including Socket CLI integration, cooldown setup, lockfile validation, and CI enforcement.

Directory Structure (Nuxt v5)

my-nuxt-app/
├── app/                    # Default srcDir
│   ├── assets/             # Build-processed assets (CSS, images)
│   ├── components/         # Auto-imported Vue components
│   ├── composables/        # Auto-imported composables
│   ├── layouts/            # Layout components
│   ├── middleware/         # Route middleware
│   ├── pages/              # File-based routing
│   ├── plugins/            # Nuxt plugins
│   ├── utils/              # Auto-imported utility functions
│   ├── app.vue             # Main app component
│   ├── app.config.ts       # App-level runtime config
│   ├── error.vue           # Error page component
│   └── router.options.ts   # Router configuration
│
├── server/                 # Server-side code (Nitro v3)
│   ├── api/                # API endpoints
│   ├── middleware/         # Server middleware
│   ├── plugins/            # Nitro plugins
│   ├── routes/             # Server routes
│   └── utils/              # Server utilities
│
├── shared/                 # Shared code (app + server)
│   ├── utils/              # Auto-imported shared utils
│   └── types/              # Auto-imported shared types
│
├── public/                 # Static assets (served from root)
├── content/                # Nuxt Content files (if using)
├── layers/                 # Nuxt layers
├── modules/                # Local modules
├── .nuxt/                  # Generated files (git ignored)
├── .output/                # Build output (git ignored)
├── nuxt.config.ts          # Nuxt configuration
├── tsconfig.json           # TypeScript configuration
└── package.json            # Dependencies

What's New in Nuxt 5

AreaNuxt 4Nuxt 5
BundlerVite 6 (esbuild + Rollup)Vite 8 (Rolldown)
Server engineNitro v2 (h3 v1)Nitro v3 (h3 v2, Web Standard APIs)
Vite configSeparate client/server configsVite Environment API
JS runtimeJSX plugin included by defaultJSX plugin optional (on-demand)
Client-only placeholderEmpty <div>HTML comment node
callHookAlways returns PromiseMay return void (sync when possible)
clearNuxtStateSets to undefinedResets to initial default value
Page component namesAuto-generatedNormalized to match route names
experimental.externalVueAvailableRemoved (always mocked)

Configuration

Basic nuxt.config.ts
typescript
export default defineNuxtConfig({
  future: {
    compatibilityVersion: 5
  },

  devtools: { enabled: true },

  modules: [
    '@nuxt/ui',
    '@nuxt/content',
    '@nuxt/image'
  ],

  runtimeConfig: {
    apiSecret: process.env.API_SECRET,
    databaseUrl: process.env.DATABASE_URL,

    public: {
      apiBase: process.env.API_BASE || 'https://api.example.com',
      appName: 'My App'
    }
  },

  app: {
    head: {
      title: 'My Nuxt App',
      meta: [
        { charset: 'utf-8' },
        { name: 'viewport', content: 'width=device-width, initial-scale=1' }
      ]
    }
  },

  nitro: {
    preset: 'cloudflare_pages'
  },

  typescript: {
    strict: true,
    typeCheck: true
  }
})
Vite 8 / Rolldown Configuration

Nuxt 5 uses Vite 8 with Rolldown as the bundler. Use rolldownOptions instead of rollupOptions:

typescript
export default defineNuxtConfig({
  vite: {
    build: {
      rolldownOptions: {
        output: {
          manualChunks: {
            vendor: ['vue', 'vue-router']
          }
        }
      }
    },

    optimizeDeps: {
      include: []
    }
  }
})
Vite Environment API

Nuxt 5 uses the Vite Environment API for environment-specific config. Use configEnvironment and applyToEnvironment instead of separate client/server configs:

typescript
// Module/plugin authors - use Vite plugins instead of extendViteConfig
addVitePlugin(() => ({
  name: 'my-plugin',
  config(config) {
    // Global vite configuration
  },
  configEnvironment(name, config) {
    // Environment-specific config
    if (name === 'client') {
      config.optimizeDeps ||= {}
      config.optimizeDeps.include ||= []
      config.optimizeDeps.include.push('my-package')
    }
  },
  applyToEnvironment(environment) {
    return environment.name === 'client'
  },
}))
Optional JSX Support

@vitejs/plugin-vue-jsx is no longer installed by default. Install it only if needed:

bash
bun add -D @vitejs/plugin-vue-jsx

Nuxt will auto-detect .jsx/.tsx files and prompt installation.

Show full SKILL.md (211 more words)Show less
Runtime Config Usage
typescript
const config = useRuntimeConfig()
const apiBase = config.public.apiBase
const apiSecret = config.apiSecret

In server routes (v5 change): useRuntimeConfig() no longer accepts event:

typescript
// Nuxt 4
export default defineEventHandler((event) => {
  const config = useRuntimeConfig(event)
})

// Nuxt 5
export default defineEventHandler(() => {
  const config = useRuntimeConfig()
})
App Config vs Runtime Config
FeatureApp ConfigRuntime Config
Locationapp.config.tsnuxt.config.ts
Hot reloadYesNo
SecretsNoYes (server-only)
Use caseUI settings, themesAPI keys, URLs

Routing

File-Based Routing
app/pages/
├── index.vue              → /
├── about.vue              → /about
├── users/
│   ├── index.vue          → /users
│   └── [id].vue           → /users/:id
└── blog/
    ├── index.vue          → /blog
    ├── [slug].vue         → /blog/:slug
    └── [...slug].vue      → /blog/* (catch-all)

v5 Change: Page component names are now normalized to match their route names. This ensures consistent <KeepAlive> behavior.

Dynamic Routes
vue
<!-- app/pages/users/[id].vue -->
<script setup lang="ts">
const route = useRoute()
const userId = computed(() => route.params.id)
const { data: user } = await useFetch(`/api/users/${userId.value}`)
</script>

<template>
  <div>
    <h1>{{ user?.name }}</h1>
  </div>
</template>
Navigation
vue
<script setup>
const goToUser = (id: string) => {
  navigateTo(`/users/${id}`)
}
</script>

<template>
  <NuxtLink to="/about">About</NuxtLink>
  <NuxtLink :to="`/users/${user.id}`">View User</NuxtLink>
  <NuxtLink to="/dashboard" prefetch>Dashboard</NuxtLink>
</template>
Route Middleware
typescript
// app/middleware/auth.ts
export default defineNuxtRouteMiddleware((to, from) => {
  const { isAuthenticated } = useAuth()

  if (!isAuthenticated.value) {
    return navigateTo('/login')
  }
})
vue
<!-- app/pages/dashboard.vue -->
<script setup lang="ts">
definePageMeta({
  middleware: 'auth'
})
</script>
Global Middleware
typescript
// app/middleware/analytics.global.ts
export default defineNuxtRouteMiddleware((to, from) => {
  if (import.meta.client) {
    window.gtag?.('event', 'page_view', {
      page_path: to.path
    })
  }
})

SEO & Meta Tags

vue
<script setup lang="ts">
useSeoMeta({
  title: 'My Page Title',
  description: 'Page description for search engines',
  ogTitle: 'My Page Title',
  ogDescription: 'Page description',
  ogImage: 'https://example.com/og-image.jpg',
  ogUrl: 'https://example.com/my-page',
  twitterCard: 'summary_large_image'
})
</script>
Dynamic Meta Tags
vue
<script setup lang="ts">
const { data: post } = await useFetch(`/api/posts/${route.params.slug}`)

useSeoMeta({
  title: () => post.value?.title,
  description: () => post.value?.excerpt,
  ogImage: () => post.value?.image
})
</script>

Error Handling

Error Page
vue
<!-- app/error.vue -->
<script setup lang="ts">
import type { NuxtError } from '#app'

const props = defineProps<{
  error: NuxtError
}>()

const handleError = () => {
  clearError({ redirect: '/' })
}
</script>

<template>
  <div class="error-page">
    <h1>{{ error.statusCode }}</h1>
    <p>{{ error.message }}</p>
    <button @click="handleError">Go Home</button>
  </div>
</template>
Throwing Errors (App-side)

In the Vue part of your app (the app/ directory), createError continues to work:

typescript
throw createError({
  statusCode: 404,
  statusMessage: 'Page Not Found',
  fatal: true
})
Error Boundaries (Component-Level)
vue
<template>
  <NuxtErrorBoundary @error="handleError">
    <template #error="{ error, clearError }">
      <div>
        <h2>Something went wrong</h2>
        <p>{{ error.message }}</p>
        <button @click="clearError">Try again</button>
      </div>
    </template>
    <MyComponent />
  </NuxtErrorBoundary>
</template>
clearNuxtState Resets to Defaults (v5 Change)
typescript
// Nuxt 4: clearNuxtState sets state to undefined
// Nuxt 5: clearNuxtState resets state to its initial value

const count = useState('counter', () => 42)
count.value = 100

clearNuxtState('counter')
// Nuxt 5: count.value is now 42 (the default), not undefined

Common Anti-Patterns

Using process.env Instead of Runtime Config
typescript
// WRONG
const apiUrl = process.env.API_URL

// CORRECT
const config = useRuntimeConfig()
const apiUrl = config.public.apiBase
Missing Middleware Return
typescript
// WRONG
export default defineNuxtRouteMiddleware((to) => {
  if (!isAuthenticated.value) {
    navigateTo('/login')  // Missing return!
  }
})

// CORRECT
export default defineNuxtRouteMiddleware((to) => {
  if (!isAuthenticated.value) {
    return navigateTo('/login')
  }
})
Non-Reactive Route Params
typescript
// WRONG
const userId = route.params.id

// CORRECT
const userId = computed(() => route.params.id)

Troubleshooting

Build Errors / Type Errors:

bash
rm -rf .nuxt .output node_modules/.vite && bun install && bun run dev

Route Not Found:

  • Check file is in app/pages/
  • Verify file extension is .vue
  • Check for typos in dynamic params [id].vue

Vite Plugin Warnings:

  • Use configEnvironment + applyToEnvironment instead of server/client options
  • Deprecated extendViteConfig({ server }) will show warnings

JSX Not Working:

  • Install @vitejs/plugin-vue-jsx if using .jsx/.tsx files
  • nuxt-data: Composables, data fetching, state management
  • nuxt-server: Server routes, API patterns (Nitro v3)
  • nuxt-production: Performance, testing, deployment, migration

Templates Available

See templates/ directory for:

  • Production-ready nuxt.config.ts
  • app.vue with proper structure

Version: 5.0.0 | Last Updated: 2026-03-30 | License: MIT

© secondsky, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in plugins/nuxt-v5/skills/nuxt-core of secondsky/claude-skills.

  • SKILL.md
  • templates/app.vue
  • templates/nuxt.config.ts

Open the folder on GitHubat commit 8837836

Compare with similar skills

Nuxt Core next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Nuxt Core compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Nuxt Core this skillsecondsky/claude-skills227—~3.1kAutomated safety check: PassMIT
Performance ProfilingLiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator1.8k—~1.8kAutomated safety check: PassGPL-3.0
Upgrade Starter Kitworkadventure/map-starter-kit156—~1.3kAutomated safety check: NotesCustom licence
Pixijs Createpixijs/pixijs-skills347—~3.1kAutomated safety check: PassMIT
Version Bump and ReleaseescapeWu/perplexity-ai169—~528Automated safety check: PassMIT
Creating Luna Appmizchi/luna.mbt173—~1.4kAutomated safety check: PassNone

Similar skills

  • Performance Profiling

    LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator

    Run the headless app, catalog-load, and ZIP profilers and interpret the JSON the way a human would from window.profiler.report(), profile:load, and the ZIP console table.

    1.8k GitHub stars~1.8k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Upgrade Starter Kit

    workadventure/map-starter-kit

    Upgrade a WorkAdventure map repository to the latest version of the map-starter-kit (github.com/workadventure/map-starter-kit) - refreshes package.json dependencies, vite/tsconfig/build config, CI…

    156 GitHub stars~1.3k tokensUpdated 5 days ago
    DevelopmentAuto-check: notes
  • Pixijs Create

    pixijs/pixijs-skills

    A skill your agent uses when scaffolding a new PixiJS v8 project with the create-pixi CLI or adding PixiJS to an existing project.

    347 GitHub stars~3.1k tokensUpdated 5 days ago
    DevelopmentAuto-check passed
  • Version Bump and Release

    escapeWu/perplexity-ai

    Bumps a project version, updates both changelogs, builds the frontend, then commits, tags and pushes the release.

    169 GitHub stars~528 tokensUpdated 10 days ago
    DevelopmentAuto-check passed
  • Creating Luna App

    mizchi/luna.mbt

    A skill your agent uses when scaffolding a new standalone CSR app that uses luna (@lunaui/luna) outside the luna.mbt monorepo — running npx @lunaui/luna new, choosing TSX vs MoonBit, or fixing a…

    173 GitHub stars~1.4k tokensUpdated 21 days ago
    DevelopmentAuto-check passed
  • Flowfile Build and Environment Setup

    Edwardvaneechoud/Flowfile

    Recreates every Flowfile development and build environment from scratch, with exact version pins and an explanation of what each Makefile target really does.

    370 GitHub stars~7.3k tokensUpdated yesterday
    DevelopmentAuto-check: notes

More from secondsky/claude-skills

All 169 skills in this repo
  • Tanstack AI

    secondsky/claude-skills

    TanStack AI (alpha) provider-agnostic type-safe chat with streaming for OpenAI, Anthropic, Gemini, Ollama.

    227 GitHub starsUsed in 1 repo~3.6k tokens
    Auto-check: notes
  • Auto Animate

    secondsky/claude-skills

    AutoAnimate (@formkit/auto-animate) zero-config animations for React.

    227 GitHub stars~2.9k tokensUpdated 9 days ago
    Auto-check passed
  • Base UI React

    secondsky/claude-skills

    MUI Base UI unstyled React components with Floating UI. An agent skill from secondsky/claude-skills.

    227 GitHub stars~1.9k tokensUpdated 9 days ago
    Auto-check passed
  • Cloudflare Images

    secondsky/claude-skills

    This skill should be used when the user asks to "upload images to Cloudflare", "implement direct creator upload", "configure image transformations", "optimize WebP/AVIF", "create image variants"…

    227 GitHub stars~3.6k tokensUpdated 9 days ago
    Auto-check: notes
  • Cloudflare Nextjs

    secondsky/claude-skills

    Deploy Next.js to Cloudflare Workers via the OpenNext adapter (@opennextjs/cloudflare).

    227 GitHub stars~5.3k tokensUpdated 9 days ago
    Auto-check: notes
  • Cloudflare Sandbox

    secondsky/claude-skills

    Cloudflare Sandboxes SDK for secure code execution in Linux containers at edge.

    227 GitHub stars~4.5k tokensUpdated 9 days ago
    Auto-check passed

Works with

Categories

Questions about Nuxt Core

What does Nuxt Core do?

Nuxt 5 core framework with project setup, routing, SEO, error handling, and Vite 8/Nitro v3 configuration. Nuxt Core is an agent skill from secondsky/claude-skills. Nuxt 5 core framework with project setup, routing, SEO, error handling, and Vite 8/Nitro v3 configuration.

When should I use Nuxt Core?

Nuxt Core fits situations like: creating Nuxt 5 apps; setting up routing; migrating config.

How do I install Nuxt Core in Claude Code?

Run `npx skills add secondsky/claude-skills --skill nuxt-core -a claude-code`. Or copy the skill folder (plugins/nuxt-v5/skills/nuxt-core in secondsky/claude-skills) into .claude/skills/nuxt-core in your project. Claude Code loads it when a task matches its description.

How do I install Nuxt Core in Codex?

Run `npx skills add secondsky/claude-skills --skill nuxt-core -a codex`. Or copy the skill folder (plugins/nuxt-v5/skills/nuxt-core in secondsky/claude-skills) into .agents/skills/nuxt-core in your project. Codex loads it when a task matches its description.

Can I use Nuxt Core in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add secondsky/claude-skills --skill nuxt-core -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/nuxt-core, .gemini/skills/nuxt-core, .github/skills/nuxt-core and .opencode/skills/nuxt-core in your project.

What does Nuxt Core need to run?

Going by SKILL.md and its folder, Nuxt Core needs TypeScript for the scripts in its folder, the command-line tools its instructions call (bun, bunx and npm) and credentials named API_SECRET. Our summary lists: Node.js; A credential in API_SECRET.

Does Nuxt Core access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Nuxt Core safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Nuxt Core use?

Nuxt Core is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Nuxt Core use?

About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Nuxt Core?

Skills that share tags, products or a category with Nuxt Core: Performance Profiling (LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator, 1.8k stars), Upgrade Starter Kit (workadventure/map-starter-kit, 156 stars), Pixijs Create (pixijs/pixijs-skills, 347 stars) and Version Bump and Release (escapeWu/perplexity-ai, 169 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Nuxt Core?

secondsky (a GitHub user) maintains it in secondsky/claude-skills, which has 227 GitHub stars. The repository holds 169 skills in this directory. The repository was last updated on September 28, 2026.

Source: secondsky/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.