
Nuxt Content
Configure Nuxt Content v3 collections, queries, MDC rendering, and database-backed CMS patterns in a Nuxt app.
Overview
Nuxt-content is an agent skill for the Build phase that implements Nuxt Content v3 collections, queries, MDC rendering, and CMS database configuration.
Install
npx skills add https://github.com/onmax/nuxt-skills --skill nuxt-contentWhat is this skill?
- defineCollection with local, remote, and API sources via defineCollectionSource
- queryCollection for navigation, search, and surroundings
- MDC rendering with ContentRenderer and prose components
- Database options: SQLite, PostgreSQL, D1, and LibSQL
- Hooks (content:file:beforeParse, afterParse), i18n content, NuxtStudio preview, and nuxt-llms integration
- Reference guidance spans 6+ areas: collections, querying, rendering, database, hooks, and i18n/LLMs
Adoption & trust: 1.7k installs on skills.sh; 674 GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You are building a Nuxt app with markdown or headless content but need v3 collections, typed queries, and rendering patterns without guessing the new SQL-backed APIs.
Who is it for?
Indie developers already on Nuxt who are adopting Content v3 for docs, blogs, or marketing sites with typed collections.
Skip if: Non-Nuxt stacks, greenfield Nuxt bootstrapping without content needs, or pure prose writing without touching content.config.ts or queries.
When should I use this skill?
Working with Nuxt Content v3, markdown content, CMS features, content.config.ts, queryCollection, MDC, or content hooks in Nuxt.
What do I get? / Deliverables
You apply v3-correct patterns for content.config.ts, queryCollection, ContentRenderer, hooks, i18n content, and optional LLM or NuxtStudio integration.
- Configured collections and sources
- Query and rendering patterns for pages
- Database and hook setup aligned to v3 docs
Recommended Skills
Journey fit
Build is the right phase because the skill implements content architecture and rendering inside the product codebase. Frontend subphase fits Nuxt pages, ContentRenderer, and collection-driven UI rather than backend-only APIs or ship-time testing.
How it compares
Skill package for Nuxt Content v3 mechanics—not a hosted headless CMS MCP server and not a substitute for the base nuxt skill.
Common Questions / FAQ
Who is nuxt-content for?
Solo and small-team Nuxt developers implementing content collections, search, and MDC-driven pages in the same repo as the app.
When should I use nuxt-content?
During Build when editing content.config.ts, remote collection sources, queryCollection navigation/search, database drivers, or i18n markdown trees in a Nuxt Content v3 project.
Is nuxt-content safe to install?
Review the Security Audits panel on this Prism page; remote collection sources and DB config can imply network and credential usage in your environment.
SKILL.md
READMESKILL.md - Nuxt Content
# Nuxt Content v3 Progressive guidance for content-driven Nuxt apps with typed collections and SQL-backed queries. ## When to Use Working with: - Content collections (`content.config.ts`, `defineCollection`) - Remote sources (GitHub repos, external APIs via `defineCollectionSource`) - Content queries (`queryCollection`, navigation, search) - MDC rendering (`<ContentRenderer>`, prose components) - Database configuration (SQLite, PostgreSQL, D1, LibSQL) - Content hooks (`content:file:beforeParse`, `content:file:afterParse`) - i18n multi-language content - NuxtStudio or preview mode - LLMs integration (`nuxt-llms`) **For writing documentation:** use `document-writer` skill **For Nuxt basics:** use `nuxt` skill **For NuxtHub deployment:** use `nuxthub` skill (NuxtHub v1 compatible) ## Available Guidance Read specific files based on current work: - **[references/collections.md](references/collections.md)** - defineCollection, schemas, sources, content.config.ts - **[references/querying.md](references/querying.md)** - queryCollection, navigation, search, surroundings - **[references/rendering.md](references/rendering.md)** - ContentRenderer, MDC syntax, prose components, Shiki - **[references/config.md](references/config.md)** - Database setup, markdown plugins, renderer options - **[references/studio.md](references/studio.md)** - NuxtStudio integration, preview mode, live editing ## Loading Files **Consider loading these reference files based on your task:** - [ ] [references/collections.md](references/collections.md) - if setting up collections, schemas, or content.config.ts - [ ] [references/querying.md](references/querying.md) - if using queryCollection, navigation, or search - [ ] [references/rendering.md](references/rendering.md) - if rendering markdown/MDC or working with ContentRenderer - [ ] [references/config.md](references/config.md) - if configuring database, markdown plugins, or renderer options - [ ] [references/studio.md](references/studio.md) - if integrating NuxtStudio or preview mode **DO NOT load all files at once.** Load only what's relevant to your current task. ## Key Concepts | 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 | ## Quick Start ```ts // 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(), }), }), }, }) ``` ```vue <!-- 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. ## Directory Structure ``` project/