Agent skill

Vue Nuxt

by ericrisco in ericrisco/rsc-harness

A skill your agent uses when building or reviewing a Vue 3 + Nuxt 4 app — <script setup reactivity, SSR/SSG/hybrid routeRules, the app/+server/ layout, SSR-safe fetching (useFetch/useAsyncData) and…

MITAuto-check passedFrontend & Design

Install Vue Nuxt

skills CLI
$ npx skills add ericrisco/rsc-harness --skill vue-nuxt -a claude-code

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

GitHub CLI
$ gh skill install ericrisco/rsc-harness vue-nuxt --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/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/vue-nuxt .claude/skills/vue-nuxt && 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
vue-nuxt
GitHub stars
167
Token cost
~4.2k tokens
SKILL.md length
1,462 words
Files
8 (incl. scripts, references)
Skills in repo
227
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when building or reviewing a Vue 3 + Nuxt 4 app — <script setup reactivity, SSR/SSG/hybrid routeRules, the app/+server/ layout, SSR-safe fetching (useFetch/useAsyncData) and…

  • Reviewing a Vue 3 + Nuxt 4 app — <script setup reactivity
  • SKILL.md covers First: detect Nuxt vs plain…, Composition API & reactivity…, Components & composables and The data-fetching boundary…, plus 8 more sections
  • Runs Shell scripts from its folder
  • SSR/SSG/hybrid routeRules

What it does

Vue Nuxt is an agent skill from ericrisco/rsc-harness. Use when building or reviewing a Vue 3 + Nuxt 4 app — <script setup reactivity, SSR/SSG/hybrid routeRules, the app/+server/ layout, SSR-safe fetching (useFetch/useAsyncData) and state (useState/Pinia), Nitro routes, hydration mismatches, Nuxt 3→4 migration. NOT React/RSC (that is nextjs), NOT a static islands site (that is astro).

Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including scripts and reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/data-and-state.md`).

It sits in Frontend & Design, covering Static sites and blogs. It works with Nuxt, Vue.js, Next.js and React. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.

When your agent uses it

  • Reviewing a Vue 3 + Nuxt 4 app — <script setup reactivity
  • SSR/SSG/hybrid routeRules
  • The app/+server/ layout
  • SSR-safe fetching (useFetch/useAsyncData) and state (useState/Pinia)

Example prompts

  • “/vue-nuxt”

Requirements

  • A Bash shell

What it can do on your machine

Read from SKILL.md and the folder at commit e3d5b33. 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 1 file in scripts/ (Shell), which the agent can run.

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

  • Network

    No URLs in SKILL.md.

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

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Vue Nuxt loads about 4.2k tokens when it runs, and up to ~8.9k if it reads all its reference files. Until then it costs about 89 tokens; SKILL.md has 1,462 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~89
When it runs · the whole SKILL.md, loaded when a task matches
~4.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.9k

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); the scripts in this folder are not scanned.

SKILL.md

The full file from ericrisco/rsc-harness at commit e3d5b33, republished under its MIT licence (© ericrisco). 1,462 words, ~4,167 tokens.

Download SKILL.mdSave it as .claude/skills/vue-nuxt/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.
name
vue-nuxt
description
Use when building or reviewing a Vue 3 + Nuxt 4 app — `<script setup>` reactivity, SSR/SSG/hybrid `routeRules`, the `app/`+`server/` layout, SSR-safe fetching (`useFetch`/`useAsyncData`) and state (`useState`/Pinia), Nitro routes, hydration mismatches, Nuxt 3→4 migration. NOT React/RSC (that is nextjs), NOT a static islands site (that is astro).
tags
vue, nuxt, frontend, web, ssr
recommends
design, deployment, secure-coding
origin
risco

Vue 3 + Nuxt 4 — Composition API, SSR, SSR-safe data & state

Build and review Vue 3 (<script setup> + Composition API) on the Nuxt 4 meta-framework: SSR/SSG/hybrid rendering, the app/ + server/ layout, SSR-safe fetching and state, Nitro server routes, and the reactivity discipline that keeps hydration correct. Nuxt's render model is whole-component render-then-hydrate — there is no React-style "server component" boundary, so never import RSC mental models here.

Not this skill: React / Next App Router / server actions → nextjs or react. Content-first site mixing frameworks/islands → astro; fine-grained signals → solid-js; compiler-first no-VDOM peer → svelte; angular. Backend not in Nitro/JS → fastapi, go, laravel. Test strategy beyond the Vitest + @vue/test-utils + @nuxt/test-utils setup named here → e2e-testing / testing-web. Generic security review → secure-coding; SEO/content strategy → marketing; component visual language → design.

First: detect Nuxt vs plain Vue, and the version

Never prescribe useFetch/useState/auto-imports in a project that does not have them. Detect before you write a line.

Signal in the repoVerdictWhat is available
nuxt.config.{ts,js,mjs} + app/ dir holding pages/,components/Nuxt 4 (current)full auto-imports, useFetch/useState, server/, routeRules
nuxt.config.* + root pages/,components/ (no app/)Nuxt 3 layoutsame APIs; flag the migration (see references/migration-nuxt4.md)
vite.config.* + createApp(...).mount(...), no nuxt.configplain Vue 3 SPAVue reactivity only — NO useFetch/useState/Nitro/auto-imports

Rule: in a plain-Vue SPA, fetch with the browser fetch/a client library inside onMounted or a composable, manage shared state with reactive/provide/Pinia — useFetch/useState do not exist there. Confirm nuxt is in package.json before reaching for any Nuxt API.

Composition API & reactivity core

Use <script setup lang="ts"> for every SFC. Prefer ref over reactive — ref survives destructuring through .value, works for primitives, and reads uniformly. Reach for reactive only for a grouped object you never destructure.

vue
<script setup lang="ts">
import { ref, computed, watch, onWatcherCleanup } from 'vue'

const count = ref(0)
const doubled = computed(() => count.value * 2)        // cached, recomputes on dep change

watch(count, async (next, _prev, onCleanup) => {        // explicit dep, gets old value
  const ctrl = new AbortController()
  onCleanup(() => ctrl.abort())                          // or onWatcherCleanup(...) (3.5)
  await fetch(`/api/log?n=${next}`, { signal: ctrl.signal })
})
</script>

watch vs watchEffect: use watch when you need the previous value or an explicit dependency; use watchEffect for "run now and re-run when anything I touched changes". Register teardown with onWatcherCleanup() (Vue 3.5) or the onCleanup arg to cancel stale async work — why: a watcher that fires faster than its async settles will otherwise apply an out-of-order result.

Reactive props destructure is stable in Vue 3.5 — the compiler rewrites count to props.count, so the binding stays reactive and you get clean default syntax:

vue
<script setup lang="ts">
const { count = 0, label } = defineProps<{ count?: number; label: string }>()
// `count`/`label` here ARE reactive — compiler maps them back to props.x
</script>

Two-way binding uses defineModel() (stable since 3.4), replacing the manual props+emit('update:x') pair. Template DOM refs use useTemplateRef('name') (3.5), not a manually-named ref.

vue
<script setup lang="ts">
import { useTemplateRef } from 'vue'
const model = defineModel<string>()          // parent: <Comp v-model="x" />
const input = useTemplateRef('inputEl')       // <input ref="inputEl">
</script>
Bad → Good: do not destructure a reactive()
vue
<script setup lang="ts">
import { reactive, toRefs } from 'vue'
const state = reactive({ name: 'a', age: 1 })

// Bad — `name` is a detached plain string; mutating state.name won't update it.
const { name } = state

// Good — keep the proxy, or toRefs to preserve reactivity per key.
const { name: nameRef } = toRefs(state)   // nameRef.value stays linked
// or just read state.name where you need it.
</script>

Deep reactivity, effect scope, advanced provide/inject, and render-function/JSX notes live in references/reactivity.md.

Components & composables

Type defineProps/defineEmits with generics, not the runtime object form — you get compile-time checking for free:

vue
<script setup lang="ts">
const props = defineProps<{ id: string; tags?: string[] }>()
const emit = defineEmits<{ select: [id: string]; close: [] }>()
defineExpose({ focus })   // only what a parent template-ref may call
</script>

Extract reusable logic into composables/useX.ts returning refs — a composable, never a mixin (why: mixins merge invisibly and collide on names; composables are explicit and tree-shakeable). No side effects at module scope (that runs once per server process and leaks across requests — see state below). Use typed provide/inject with an InjectionKey for dependency injection down a tree instead of prop-drilling.

The data-fetching boundary (core)

This is where most Nuxt bugs live. Pick deliberately:

APIUse it forSSR behavior
useFetch(url, opts)the common case — fetch a URL in a page/componentfetches once on server, transfers payload to client, no refetch on hydration
useAsyncData(key, fn)wrap custom logic / multiple $fetch calls / a non-URL sourcesame once-then-transfer; you control the fn
$fetch(url)inside event handlers, server routes, or after mounta plain request; NOT for top-level setup data
Bad → Good: bare $fetch in setup double-fetches on SSR
vue
<script setup lang="ts">
// Bad — runs on the server render AND again during client hydration (2× the API hit,
// possible mismatch). $fetch does not transfer a payload.
const product = await $fetch(`/api/products/${id}`)

// Good — one server fetch, payload serialized into the page, reused on hydration.
const { data: product, status, error, refresh } = await useAsyncData(
  `product:${id}`,                       // stable key → dedupe + shared ref across components
  () => $fetch(`/api/products/${id}`),
)
// equivalently for a plain URL: useFetch(`/api/products/${id}`, { key: `product:${id}` })
</script>

Key options: key (shared/deduped result — same key returns the same data/error/status ref, auto-cleaned on last unmount), lazy: true (don't block navigation), server: false (client-only fetch), transform (reshape before storing), pick (keep only listed fields — shrinks payload), watch/reactive keys (a ref/computed/getter key refetches when it changes). Type the result with useFetch<T>() / useAsyncData<T>(). In Nuxt 4 the returned data is a shallowRef — replace the whole value, don't deep-mutate, to trigger updates. Nuxt 4.2 adds AbortController signal support for request cancellation. Re-run with the returned refresh(), or invalidate broadly with refreshNuxtData(key).

Full option matrix, custom $api factory, optimistic UI, and error/pending patterns are in references/data-and-state.md.

SSR-safe state

On the server one Node process serves many requests. A module-level ref is created once and shared by every visitor — a textbook cross-request data leak.

ApproachPer-request?When
module-level ref/reactiveNO — leaks across requestsnever for request data; fine only for true constants
useState(key, init)yes — serialized after SSR, restored on hydration, shared by keylightweight shared value
Pinia store (@pinia/nuxt)yes — hydrated from Nuxt payloadstructured state, actions, multiple consumers
Bad → Good: module ref → useState
ts
// Bad — module scope: one instance for the whole server, shared between users.
import { ref } from 'vue'
export const user = ref(null)

// Good — per-request, hydration-safe, shared by key.
export const useUser = () => useState('user', () => null)

Pinia 3 (dropped Vue 2) with @pinia/nuxt auto-imports stores from app/stores/. Use the setup-store form; SSR state hydrates from the payload automatically:

ts
// app/stores/cart.ts
export const useCartStore = defineStore('cart', () => {
  const items = ref<Item[]>([])
  const count = computed(() => items.value.length)
  function add(i: Item) { items.value.push(i) }
  return { items, count, add }
})

Hydration mismatches

A mismatch means the server-rendered HTML differs from the client's first render. Common causes: Date.now()/new Date()/Math.random() in render, reading localStorage/window/document in setup, locale/timezone differences, invalid HTML nesting (<p> wrapping a <div>), and non-deterministic iteration order.

Fix kit: wrap genuinely client-only UI in <ClientOnly>; branch with import.meta.client / import.meta.server; do browser work in onMounted (never in setup body); and pin a server-generated value with useState so the client reuses the exact same value instead of recomputing it.

vue
<template>
  <ClientOnly><LiveClock /></ClientOnly>
</template>
<script setup lang="ts">
const seed = useState('seed', () => Math.random())   // generated once on server, reused on client
onMounted(() => { /* safe: window/localStorage here */ })
</script>

Nitro server routes

Files in server/api/* and server/routes/* run on Nitro (Nuxt's server engine). Name by method with .get.ts/.post.ts. Validate input; throw createError for HTTP errors.

ts
// server/api/products/[id].get.ts
export default defineEventHandler(async (event) => {
  const id = getRouterParam(event, 'id')
  const { fields } = getQuery(event)
  if (!id) throw createError({ statusCode: 400, statusMessage: 'id required' })
  const config = useRuntimeConfig()              // private keys server-only
  const data = await fetchFromDb(id, config.dbUrl)
  if (!data) throw createError({ statusCode: 404, statusMessage: 'Not found' })
  return data
})

useRuntimeConfig() exposes top-level keys only on the server; only config.public.* reaches the browser bundle. Rule: a secret in runtimeConfig.public (or any NUXT_PUBLIC_* env) ships to every client — keep API keys, DB URLs, and tokens at the top level, never under public. Type calls to your own API with $fetch<ProductDto>('/api/...'). Handlers, route-rule recipes, middleware, and defineCachedEventHandler caching live in references/nitro-and-rendering.md.

Show full SKILL.md (543 more words)Show less

Rendering strategy

Set per-route rendering in nuxt.config.ts with routeRules; the right mix is usually hybrid, not all-SSR.

ts
export default defineNuxtConfig({
  routeRules: {
    '/':            { prerender: true },             // SSG at build
    '/blog/**':     { swr: 3600 },                   // stale-while-revalidate cache 1h
    '/products/**': { isr: true },                   // incremental static regeneration
    '/admin/**':    { ssr: false },                  // client-only SPA island
    '/old':         { redirect: '/new' },
    '/api/**':      { headers: { 'cache-control': 's-maxage=60' } },
  },
})

nuxt build produces an SSR server; nuxt generate prerenders a fully static site. The Nitro preset chooses the deploy target (node-server, vercel, netlify, cloudflare-pages, …) — pick the preset here, then hand platform specifics to deployment, vercel, netlify, or cloudflare.

Performance

  • shallowRef/shallowReactive for large payloads/lists — skip deep proxy cost; replace the whole value to update. Why: deep reactivity on a 10k-row array is pure overhead.
  • v-memo to freeze a subtree on stable deps; v-once for render-once static content.
  • defineAsyncComponent and Nuxt's auto Lazy<Component> prefix to code-split below the fold.
  • <NuxtImg> / @nuxt/image for responsive, optimized images (a top LCP lever).
  • Shrink the SSR payload with pick/transform on useFetch/useAsyncData.
  • Vue 3.6 Vapor Mode (compile-time, no-VDOM, opt-in per component via <script setup vapor>) is a 2026 preview targeting mid-2026 stable — treat as opt-in, not the default.
  • Targets: LCP < 2.5s, CLS < 0.1, INP < 200ms.

Anti-patterns → STOP

SmellWhy it is wrongDo instead
await $fetch() for page data in setupruns on server AND client → double API hit, mismatchuseAsyncData(key, () => $fetch(...)) / useFetch
Module-level ref/reactive for shared stateone instance per server process → leaks across requestsuseState(key, init) or a Pinia store
window/localStorage/document in setup bodyundefined on server → hydration mismatchonMounted, import.meta.client, or <ClientOnly>
Treating Nuxt like Next RSC ("use server", server components)Vue has no RSC boundary; whole component renders + hydratesmodel it as SSR + client hydration
Destructuring a reactive() objectdetaches the value from the proxy → loses reactivitytoRefs(), or read state.x, or prefer ref
Secret in runtimeConfig.public / NUXT_PUBLIC_*shipped into the client bundletop-level runtimeConfig, server-only
useFetch/useState in a plain-Vue (non-Nuxt) appthose auto-imports don't exist thereclient fetch in onMounted + Pinia/provide
<ClientOnly> wrapping everything to "fix" mismatcheskills SSR, hurts SEO/LCP, hides the real bugfind the non-deterministic source; pin with useState
Same fetch in two components without a shared keyduplicate requests, divergent refsone stable key → shared deduped result
ref(hugeArray) / deep reactive on big listsper-element proxy overheadshallowRef/shallowReactive, replace whole value

Verify

scripts/verify.sh runs from the project root. With a nuxt.config.{ts,js,mjs} it runs nuxi typecheck (fallback vue-tsc --noEmit), the package lint script if present, vitest run if Vitest is present, then nuxi build; with no Nuxt config, vue-tsc --noEmit, lint, vitest, then vite build. Keep strict: true in tsconfig so the typecheck is worth running. Every missing tool is a yellow SKIP, never a failure; everything is read-only except the final build, which writes .nuxt//.output/ (or dist/). No installs, no network mutations, safe to re-run, exits 0 on a clean/empty target.

Project grounding (02-DOCS + CLAUDE.md)

In a project with a 02-DOCS/ layer (the harness Karpathy wiki), read 02-DOCS/wiki/stack/vue-nuxt.md first and stay consistent with it. If it is missing or stale, create/update it with this app's real choices — rendering mode per route (routeRules), the useFetch/useAsyncData conventions, useState vs Pinia, the Nitro preset/deploy target, the design-system hookup — bump its Updated date, and link it from a ## Knowledge map section in the root CLAUDE.md (creating that section, and CLAUDE.md itself, if absent). No 02-DOCS/ layer? Skip silently. Technical conventions are recorded, not gated — never block the task.

Nuxt 3 → 4 deltas (app/ move, compatibilityVersion, shared-key data, shallowRef payload, renamed APIs) and Vue 3.4 → 3.5 changes are in references/migration-nuxt4.md.

© ericrisco, 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 7 other files (scripts, references) in skills/vue-nuxt of ericrisco/rsc-harness.

  • SKILL.md
  • evals/README.md
  • evals/cases.yaml
  • references/data-and-state.md
  • references/migration-nuxt4.md
  • references/nitro-and-rendering.md
  • references/reactivity.md
  • scripts/verify.sh

Open the folder on GitHubat commit e3d5b33

Compare with similar skills

Vue Nuxt 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.

Vue Nuxt compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Vue Nuxt this skillericrisco/rsc-harness167—~4.2kAutomated safety check: PassMIT
App BuilderUndertone0809/rudder292—~2kAutomated safety check: PassApache-2.0
Sanity Best Practicesrobotostudio/turbo-start-sanity182—~940Automated safety check: PassMIT
Launch With AWSaws/agent-toolkit-for-aws2.8k—~3.2kAutomated safety check: PassApache-2.0
Cloudbase Sites RuntimeTencentCloudBase/CloudBase-AI-Toolkit1.1k—~5kAutomated safety check: NotesMIT
Docs LookupProgrammerAnthony/Expert-Coding-Harness235—~640Automated safety check: PassMIT

Similar skills

  • App Builder

    Undertone0809/rudder

    Create and iteratively improve local web products from natural-language requests, then prepare them to run as Rudder Apps.

    292 GitHub stars~2k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Sanity Best Practices

    robotostudio/turbo-start-sanity

    Sanity development best practices for schema design, GROQ queries, TypeGen, Visual Editing, images, Portable Text, Studio structure, localization, migrations, Sanity Functions, Blueprints, and…

    182 GitHub stars~940 tokensUpdated 3 days ago
    Frontend & DesignAuto-check passed
  • Launch With AWS

    aws/agent-toolkit-for-aws

    Official

    Migrates vibe-coded web applications to AWS. An agent skill from aws/agent-toolkit-for-aws.

    2.8k GitHub stars~3.2k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Cloudbase Sites Runtime

    TencentCloudBase/CloudBase-AI-Toolkit

    A skill your agent uses when the user wants to develop, run, preview, save, deploy, or roll back a CloudBase Web app in this conversation as a Lovable/Codex-Sites-like vibe- coding session — i.e.

    1.1k GitHub stars~5k tokensUpdated yesterday
    MobileAuto-check: notes
  • Docs Lookup

    ProgrammerAnthony/Expert-Coding-Harness

    通过 Context7 MCP 获取库和框架的实时最新文档,而非依赖训练数据,防止 API 幻觉。适用于查询任何库或框架的用法、配置、示例代码。触发词:怎么用、怎么配置、API参考、文档、示例代码、用法、接口、库文档、框架文档、documentation、docs、how to use、API…

    235 GitHub stars~640 tokensUpdated 5 mo ago
    Frontend & DesignAuto-check passed
  • Cloudflare Workers Frameworks

    secondsky/claude-skills

    Framework integration for Cloudflare Workers. An agent skill from secondsky/claude-skills.

    227 GitHub stars~1.4k tokensUpdated 10 days ago
    Frontend & DesignAuto-check passed

More from ericrisco/rsc-harness

All 227 skills in this repo
  • Ab Testing

    ericrisco/rsc-harness

    A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…

    167 GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Accessibility

    ericrisco/rsc-harness

    A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…

    167 GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Ads

    ericrisco/rsc-harness

    A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…

    167 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Agent Eval

    ericrisco/rsc-harness

    A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…

    167 GitHub stars~3.2k tokensUpdated today
    Auto-check passed
  • AI Media

    ericrisco/rsc-harness

    A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…

    167 GitHub stars~3.3k tokensUpdated today
    Auto-check passed
  • Analytics

    ericrisco/rsc-harness

    A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.

    167 GitHub stars~2.8k tokensUpdated today
    Auto-check passed

Questions about Vue Nuxt

What does Vue Nuxt do?

A skill your agent uses when building or reviewing a Vue 3 + Nuxt 4 app — <script setup reactivity, SSR/SSG/hybrid routeRules, the app/+server/ layout, SSR-safe fetching (useFetch/useAsyncData) and…. Vue Nuxt is an agent skill from ericrisco/rsc-harness. Use when building or reviewing a Vue 3 + Nuxt 4 app — <script setup reactivity, SSR/SSG/hybrid routeRules, the app/+server/ layout, SSR-safe fetching (useFetch/useAsyncData) and state (useState/Pinia), Nitro routes, hydration mismatches, Nuxt 3→4 migration.

When should I use Vue Nuxt?

Vue Nuxt fits situations like: reviewing a Vue 3 + Nuxt 4 app — <script setup reactivity; SSR/SSG/hybrid routeRules; the app/+server/ layout; SSR-safe fetching (useFetch/useAsyncData) and state (useState/Pinia).

How do I install Vue Nuxt in Claude Code?

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

How do I install Vue Nuxt in Codex?

Run `npx skills add ericrisco/rsc-harness --skill vue-nuxt -a codex`. Or copy the skill folder (skills/vue-nuxt in ericrisco/rsc-harness) into .agents/skills/vue-nuxt in your project. Codex loads it when a task matches its description.

Can I use Vue Nuxt 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 ericrisco/rsc-harness --skill vue-nuxt -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vue-nuxt, .gemini/skills/vue-nuxt, .github/skills/vue-nuxt and .opencode/skills/vue-nuxt in your project.

What does Vue Nuxt need to run?

Going by SKILL.md and its folder, Vue Nuxt needs a shell for the scripts in its folder. Our summary lists: A Bash shell.

Does Vue Nuxt access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Vue Nuxt 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Vue Nuxt use?

Vue Nuxt is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Vue Nuxt use?

About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.8k tokens, read only when the agent opens those files.

What are the alternatives to Vue Nuxt?

Skills that share tags, products or a category with Vue Nuxt: App Builder (Undertone0809/rudder, 292 stars), Sanity Best Practices (robotostudio/turbo-start-sanity, 182 stars), Launch With AWS (aws/agent-toolkit-for-aws, 2.8k stars) and Cloudbase Sites Runtime (TencentCloudBase/CloudBase-AI-Toolkit, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Vue Nuxt?

ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 167 GitHub stars. The repository holds 227 skills in this directory. The repository was last updated on October 7, 2026.

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