nuxt-content

create-docs

2,556
234
# Install this skill:
npx skills add nuxt-content/docus --skill "create-docs"

Install specific skill from multi-skill repository

# Description

|

# SKILL.md


name: create-docs
description: |
Create complete documentation sites for projects. Use when asked to:
"create docs", "add documentation", "setup docs site", "generate docs",
"document my project", "write docs", "initialize documentation",
"add a docs folder", "create a docs website". Generates Docus-based sites
with search, dark mode, MCP server, and llms.txt integration.


Create Docs

Generate a complete, production-ready documentation site for any project.

Workflow

  1. Analyze - Detect package manager, monorepo structure, read context
  2. Initialize - Create docs directory with correct setup
  3. Generate - Write documentation pages using templates
  4. Configure - Set up AI integration (MCP, llms.txt)
  5. Finalize - Provide next steps with correct commands

Package Manager Reference

Detect from lock files, default to npm if none found:

Lock File PM Install Run Add
pnpm-lock.yaml pnpm pnpm install pnpm run pnpm add
package-lock.json npm npm install npm run npm install
yarn.lock yarn yarn install yarn yarn add
bun.lockb bun bun install bun run bun add

Use [pm] as placeholder in commands below.


Step 1: Analyze Project

Detect Project Structure

Check for:
β”œβ”€β”€ pnpm-workspace.yaml   β†’ pnpm monorepo
β”œβ”€β”€ turbo.json            β†’ Turborepo monorepo
β”œβ”€β”€ lerna.json            β†’ Lerna monorepo
β”œβ”€β”€ nx.json               β†’ Nx monorepo
β”œβ”€β”€ apps/                 β†’ Apps directory (monorepo)
β”œβ”€β”€ packages/             β†’ Packages directory (monorepo)
β”œβ”€β”€ docs/                 β†’ Existing docs (avoid overwriting)
β”œβ”€β”€ README.md             β†’ Main documentation source
└── src/ or lib/          β†’ Source code location

Determine Docs Location

Project Type Target Directory Workspace Entry
Standard project ./docs N/A
Monorepo with apps/ ./apps/docs apps/docs
Monorepo with packages/ ./docs docs
Existing docs/ folder Ask user or ./documentation β€”

Read Context Files

File Extract
README.md Project name, description, features, usage examples
package.json Name, description, dependencies, repository URL
src/ or lib/ Exported functions, composables for API docs

Detect i18n Requirement

Check if project needs multi-language docs:

Indicator Action
@nuxtjs/i18n in dependencies Use i18n template
locales/ or i18n/ folder exists Use i18n template
Multiple language README files Use i18n template
User explicitly mentions multiple languages Use i18n template
None of the above Use default template

Step 2: Initialize Docs

Create Directory Structure

Default template:

[docs-location]/
β”œβ”€β”€ app/                            # Optional: for customization
β”‚   β”œβ”€β”€ app.config.ts
β”‚   β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ layouts/
β”‚   └── pages/
β”œβ”€β”€ content/
β”‚   β”œβ”€β”€ index.md
β”‚   └── 1.getting-started/
β”‚       β”œβ”€β”€ .navigation.yml
β”‚       └── 1.introduction.md
β”œβ”€β”€ public/
β”‚   └── favicon.ico
β”œβ”€β”€ package.json
└── .gitignore

i18n template (if multi-language detected):

[docs-location]/
β”œβ”€β”€ app/
β”‚   └── app.config.ts
β”œβ”€β”€ content/
β”‚   β”œβ”€β”€ en/
β”‚   β”‚   β”œβ”€β”€ index.md
β”‚   β”‚   └── 1.getting-started/
β”‚   β”‚       β”œβ”€β”€ .navigation.yml
β”‚   β”‚       └── 1.introduction.md
β”‚   └── fr/                         # Or other detected languages
β”‚       β”œβ”€β”€ index.md
β”‚       └── 1.getting-started/
β”‚           β”œβ”€β”€ .navigation.yml
β”‚           └── 1.introduction.md
β”œβ”€β”€ nuxt.config.ts                  # Required for i18n config
β”œβ”€β”€ public/
β”‚   └── favicon.ico
β”œβ”€β”€ package.json
└── .gitignore

Create package.json

Default:

{
  "name": "[project-name]-docs",
  "private": true,
  "scripts": {
    "dev": "nuxt dev --extends docus",
    "build": "nuxt build --extends docus",
    "generate": "nuxt generate --extends docus",
    "preview": "nuxt preview --extends docus"
  },
  "dependencies": {
    "docus": "latest",
    "better-sqlite3": "^12.5.0",
    "nuxt": "^4.2.2"
  }
}

i18n (add @nuxtjs/i18n):

{
  "name": "[project-name]-docs",
  "private": true,
  "scripts": {
    "dev": "nuxt dev --extends docus",
    "build": "nuxt build --extends docus",
    "generate": "nuxt generate --extends docus",
    "preview": "nuxt preview --extends docus"
  },
  "dependencies": {
    "@nuxtjs/i18n": "^10.2.1",
    "docus": "latest",
    "better-sqlite3": "^12.5.0",
    "nuxt": "^4.2.2"
  }
}

Create nuxt.config.ts (i18n only)

```ts [nuxt.config.ts]
export default defineNuxtConfig({
modules: ['@nuxtjs/i18n'],
i18n: {
locales: [
{ code: 'en', language: 'en-US', name: 'English' },
{ code: 'fr', language: 'fr-FR', name: 'FranΓ§ais' }
],
defaultLocale: 'en'
}
})

### Create .gitignore

node_modules
.nuxt
.output
.data
dist

### Update Monorepo Configuration (if applicable)

#### pnpm Monorepo

1. Add docs to workspace and configure `onlyBuiltDependencies` (required for better-sqlite3):

```yaml [pnpm-workspace.yaml]
packages:
  - 'apps/*'
  - 'docs'

onlyBuiltDependencies:
  - better-sqlite3
  1. Add dev script to root package.json:

```json [package.json]
{
"scripts": {
"docs:dev": "pnpm run --filter [docs-package-name] dev"
}
}

Or with directory path:

```json [package.json]
{
  "scripts": {
    "docs:dev": "cd docs && pnpm dev"
  }
}

npm/yarn Monorepo

```json [package.json]
{
"workspaces": ["apps/*", "docs"],
"scripts": {
"docs:dev": "npm run dev --workspace=docs"
}
}

---

## Step 3: Generate Documentation

Use templates from [references/templates.md](references/templates.md).

**CRITICAL: MDC Component Naming**

All Nuxt UI components in MDC must use the `u-` prefix:

| Correct | Wrong |
|---------|-------|
| `::u-page-hero` | `::page-hero` |
| `::u-page-section` | `::page-section` |
| `:::u-page-feature` | `:::page-feature` |
| `:::u-button` | `:::button` |
| `::::u-page-card` | `::::page-card` |

Without the `u-` prefix, Vue will fail to resolve the components.

### Documentation Structure

content/
β”œβ”€β”€ index.md # Landing page
β”œβ”€β”€ 1.getting-started/
β”‚ β”œβ”€β”€ .navigation.yml
β”‚ β”œβ”€β”€ 1.introduction.md
β”‚ └── 2.installation.md
β”œβ”€β”€ 2.guide/
β”‚ β”œβ”€β”€ .navigation.yml
β”‚ β”œβ”€β”€ 1.configuration.md
β”‚ β”œβ”€β”€ 2.authentication.md
β”‚ └── 3.deployment.md
└── 3.api/ # If applicable
β”œβ”€β”€ .navigation.yml
└── 1.reference.md

### Generate Pages

1. **Landing page** (`index.md`) - Hero + features grid
2. **Introduction** - What & why, use cases
3. **Installation** - Prerequisites, install commands
4. **Guide pages** - Feature documentation with action-based H2 headings

For writing style, see [references/writing-guide.md](references/writing-guide.md).
For MDC components, see [references/mdc-components.md](references/mdc-components.md).

---

## Step 4: Configure AI Integration

Docus automatically includes MCP server (`/mcp`) and llms.txt generation. No configuration needed.

**Do NOT add AI Integration sections to the landing page.** These features work automatically.

Optionally mention in the introduction page:

```markdown
::note
This documentation includes AI integration with MCP server and automatic `llms.txt` generation.
::

Optional: app.config.ts

```ts [app/app.config.ts]
export default defineAppConfig({
docus: {
name: '[Project Name]',
description: '[Project description]',
url: 'https://[docs-url]',
socials: {
github: '[org]/[repo]'
}
}
})

### Optional: Theme Customization

If the project has a design system or brand colors, customize the docs theme.

#### Custom CSS

Create `app/assets/css/main.css`:

```css [app/assets/css/main.css]
@import "tailwindcss";
@import "@nuxt/ui";

@theme static {
  /* Custom font */
  --font-sans: 'Inter', sans-serif;

  /* Custom container width */
  --ui-container: 90rem;

  /* Custom primary color (use project brand color) */
  --color-primary-50: oklch(0.97 0.02 250);
  --color-primary-500: oklch(0.55 0.2 250);
  --color-primary-900: oklch(0.25 0.1 250);
}

Extended app.config.ts

```ts [app/app.config.ts]
export default defineAppConfig({
docus: {
name: '[Project Name]',
description: '[Project description]',
url: 'https://[docs-url]',
socials: {
github: '[org]/[repo]',
x: '@[handle]'
}
},
// Customize UI components
ui: {
colors: {
primary: 'emerald',
neutral: 'zinc',
},
pageHero: {
slots: {
title: 'font-semibold sm:text-6xl'
}
}
}
})

---

## Step 5: Finalize

Provide instructions using detected package manager.

### Standard Project

Documentation created in [docs-location]

To start:

cd [docs-location]
[pm] install
[pm] run dev

Available at http://localhost:3000

### Monorepo

Documentation created in [docs-location]

To start from root:

[pm] install
[pm] run docs:dev

Or from docs directory:

cd [docs-location]
[pm] run dev

Available at http://localhost:3000

### Features Included

- Full-text search
- Dark mode
- MCP server for AI tools (/mcp)
- LLM integration (/llms.txt)
- SEO optimized

### Next Steps

1. Review generated content
2. Add more guides in `content/2.guide/`
3. Customize theme in `app.config.ts`
4. Deploy to Vercel/Netlify/Cloudflare

### Suggest Follow-ups

After documentation is created, suggest enhancements:

Your documentation is ready!

Would you like me to:
- Customize the UI - Match your brand colors and style
- Enhance the landing page - Add feature cards, code previews, visuals
- Add i18n support - Multi-language documentation
- Set up deployment - Deploy to Vercel, Netlify, or Cloudflare

Let me know what you'd like to improve!

---

## Deployment

| Platform | Command | Output |
|----------|---------|--------|
| Vercel | `npx vercel --prod` | Auto-detected |
| Netlify | `[pm] run generate` | `.output/public` |
| Cloudflare Pages | `[pm] run generate` | `.output/public` |
| GitHub Pages | `[pm] run generate` | `.output/public` |

---

## Example: auth-utils

**Detected:** pnpm monorepo, package in packages/

**Generated structure:**

docs/
β”œβ”€β”€ content/
β”‚ β”œβ”€β”€ index.md
β”‚ β”œβ”€β”€ 1.getting-started/
β”‚ β”‚ β”œβ”€β”€ .navigation.yml
β”‚ β”‚ β”œβ”€β”€ 1.introduction.md
β”‚ β”‚ └── 2.installation.md
β”‚ β”œβ”€β”€ 2.guide/
β”‚ β”‚ β”œβ”€β”€ .navigation.yml
β”‚ β”‚ β”œβ”€β”€ 1.authentication.md
β”‚ β”‚ β”œβ”€β”€ 2.oauth-providers.md
β”‚ β”‚ └── 3.sessions.md
β”‚ └── 3.api/
β”‚ β”œβ”€β”€ .navigation.yml
β”‚ └── 1.composables.md
β”œβ”€β”€ public/
β”‚ └── favicon.ico
β”œβ”€β”€ package.json
└── .gitignore

**Inside `authentication.md`** (action-based H2 headings):
```markdown
## Add basic authentication
## Protect your routes
## Handle login redirects
## Customize the session

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.