Help us improve
Share bugs, ideas, or general feedback.
From nuxt-skills
Working with Nuxt Content v3: collections, remote sources, queryCollection API, MDC rendering, database config, hooks, i18n patterns, and LLMs integration.
npx claudepluginhub onmax/nuxt-skills --plugin nuxt-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/nuxt-skills:nuxt-contentThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Progressive guidance for content-driven Nuxt apps with typed collections and SQL-backed queries.
Configures Nuxt Content v3 Git-based CMS for Markdown/MDC content in Nuxt apps, with type-safe queries, Zod/Valibot validation, full-text search, SQL storage, and Nuxt Studio editing for blogs/docs.
Configures and works with Nuxt Studio, a self-hosted CMS for Nuxt Content sites. Covers auth providers, Git publishing, visual editing, media management, and AI content assistance.
Sets up Nuxt Studio module for visual content editing and CMS in Nuxt 3+ sites with @nuxt/content, covering installation, OAuth authentication (GitHub/GitLab/Google), Cloudflare subdomain deployment, and Monaco/TipTap editor config.
Share bugs, ideas, or general feedback.
Progressive guidance for content-driven Nuxt apps with typed collections and SQL-backed queries.
Working with:
content.config.ts, defineCollection)defineCollectionSource)queryCollection, navigation, search)<ContentRenderer>, prose components)content:file:beforeParse, content:file:afterParse)nuxt-llms)For writing documentation: use document-writer skill
For Nuxt basics: use nuxt skill
For NuxtHub deployment: use nuxthub skill (NuxtHub v1 compatible)
Read specific files based on current work:
Consider loading these reference files based on your task:
DO NOT load all files at once. Load only what's relevant to your current task.
| Concept | Purpose |
|---|---|
| Collections | Typed content groups with schemas |
| Page vs Data | page = routes + body, data = structured data only |
| Remote sources | source.repository for GitHub, defineCollectionSource for APIs |
| queryCollection | SQL-like fluent API for content |
| MDC | Vue components inside markdown |
| ContentRenderer | Renders parsed markdown body |
// content.config.ts
import { defineCollection, defineContentConfig, z } from '@nuxt/content'
export default defineContentConfig({
collections: {
blog: defineCollection({
type: 'page',
source: 'blog/**',
schema: z.object({
title: z.string(),
date: z.date(),
}),
}),
},
})
<!-- pages/blog/[...slug].vue -->
<script setup lang="ts">
const { data: page } = await useAsyncData(
() => queryCollection('blog').path(useRoute().path).first()
)
</script>
<template>
<ContentRenderer v-if="page" :value="page" />
</template>
Verify setup: Run npx nuxi typecheck to confirm collection types resolve. If queryCollection returns empty, check that content files exist in the path matching your source glob.
project/
├── content/ # Content files
│ ├── blog/ # Maps to 'blog' collection
│ └── .navigation.yml # Navigation metadata
├── components/content/ # MDC components
└── content.config.ts # Collection definitions
Main skill: ~300 tokens. Each sub-file: ~800-1200 tokens. Only load files relevant to current task.