Skip to content

nuxt-content

Build typed, content-driven Nuxt applications with @nuxt/content. Use when working with content.config.ts, collections, queryCollection, Markdown or MDC rendering, content databases, hooks, custom sources, search, or Content v2 migrations.

2,813
installs
0 up / 0 down, score 0.00
votes
724
repo stars
Updated
less than a month ago
In the catalog since
1 Oct 2026
From
onmax/nuxt-skills
Get it through your agent npx skills add onmax/nuxt-skills@nuxt-content

Skill instructions

Rendered from the published SKILL.md, 55 lines.

Nuxt Content

Workflow

  1. Inspect the installed @nuxt/content version, content.config.ts, matching files under content/, and the Nuxt surface that consumes them. The branch is understood when the collection, source glob, schema, and consumer agree.
  2. Open the smallest matching guide below. Apply Nuxt Content guidance only to content-owned APIs; use Nuxt, Nuxt Studio, Nuxt UI, or Vue guidance when those packages own the remaining surface.
  3. Implement with typed collections and payload-backed Nuxt data loading. The change is complete when collection types resolve, the intended query returns the expected document shape, and the rendered route works in the target rendering mode.

Routing

Task Open
Collection types, schemas, indexes, local/remote sources, or locale prefixes Collections
Filtering, sorting, pagination, navigation, surroundings, or search Querying
Markdown, MDC, ContentRenderer, prose components, or code highlighting Rendering
Database adapters, markdown processing, renderer aliases, or deployment storage Configuration
Hooks, transformers, custom sources, raw content, debugging, or Content v2 migration Advanced
Visual editing, authentication, media, drafts, or Git publishing nuxt-studio skill
Writing or restructuring documentation prose document-writer skill

Baseline

// content.config.ts
import { defineCollection, defineContentConfig } from '@nuxt/content'
import { z } from 'zod'

export default defineContentConfig({
  collections: {
    docs: defineCollection({
      type: 'page',
      source: 'docs/**',
      schema: z.object({
        updatedAt: z.date().optional(),
      }),
    }),
  },
})
<script setup lang="ts">
const route = useRoute()
const { data: page } = await useAsyncData(route.path, () => {
  return queryCollection('docs').path(route.path).first()
})
</script>

<template>
  <ContentRenderer v-if="page" :value="page" />
</template>

Use npx nuxi typecheck to verify generated collection types. When a query is empty, confirm that its collection source includes the file—especially .navigation.yml—before changing query logic.