Create complete documentation sites for projects. Use when asked to:\n\"create docs\", \"add documentation\", \"setup docs site\", \"generate docs\",\n\"document my project\", \"write docs\", \"initialize documentation\",\n\"add a docs folder\", \"create a docs website\". Generates Docus-based sites\nwith search, dark mode, MCP server, and llms.txt integration.\n
Install to Claude Code
npx -y skills add pleaseai/claude-code-plugins --skill create-docs --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Create Docs?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/pleaseai-create-docs-claude-code-plugins)More formats (shields.io, HTML) on the badges page.
---
description: "Create complete documentation sites for projects. Use when asked to:\n\"create docs\", \"add documentation\", \"setup docs site\", \"generate docs\",\n\"document my project\", \"write docs\", \"initialize documentation\",\n\"add a docs folder\", \"create a docs website\". Generates Docus-based sites\nwith search, dark mode, MCP server, and llms.txt integration.\n"
---
# 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
```
Scanned 9/5/2026
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!