nuxt-content / create-docs
Install for your project team
Run this command in your project directory to install the skill for your entire team:
mkdir -p .claude/skills/create-docs && curl -L -o skill.zip "https://fastmcp.me/Skills/Download/1561" && unzip -o skill.zip -d .claude/skills/create-docs && rm skill.zip
Project Skills
This skill will be saved in .claude/skills/create-docs/ and checked into git. All team members will have access to it automatically.
Important: Please verify the skill by reviewing its instructions before using it.
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.
0 views
0 installs
Skill Content
---
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:**
```json
{
"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`):
```json
{
"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
```
2. 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 {
/* 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
```