Create Docs
Generate a complete, production-ready documentation site for any project.
Workflow
- •Analyze - Detect package manager, monorepo structure, read context
- •Initialize - Create docs directory with correct setup
- •Generate - Write documentation pages using templates
- •Configure - Set up AI integration (MCP, llms.txt)
- •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)
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
- •Add docs to workspace and configure
onlyBuiltDependencies(required for better-sqlite3):
packages: - 'apps/*' - 'docs' onlyBuiltDependencies: - better-sqlite3
- •Add dev script to root package.json:
{
"scripts": {
"docs:dev": "pnpm run --filter [docs-package-name] dev"
}
}
Or with directory path:
{
"scripts": {
"docs:dev": "cd docs && pnpm dev"
}
}
npm/yarn Monorepo
{
"workspaces": ["apps/*", "docs"],
"scripts": {
"docs:dev": "npm run dev --workspace=docs"
}
}
Step 3: Generate Documentation
Use templates from 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
- •Landing page (
index.md) - Hero + features grid - •Introduction - What & why, use cases
- •Installation - Prerequisites, install commands
- •Guide pages - Feature documentation with action-based H2 headings
For writing style, see references/writing-guide.md. For MDC components, see 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:
::note This documentation includes AI integration with MCP server and automatic `llms.txt` generation. ::
Optional: 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:
@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
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
- •Review generated content
- •Add more guides in
content/2.guide/ - •Customize theme in
app.config.ts - •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):
## Add basic authentication ## Protect your routes ## Handle login redirects ## Customize the session