documentation-site-setup
Set up documentation websites using Docusaurus, MkDocs, VitePress, GitBook, or static site generators. Use when creating docs sites, setting up documentation portals, or building static documentation.
$ 安裝
git clone https://github.com/aj-geddes/useful-ai-prompts /tmp/useful-ai-prompts && cp -r /tmp/useful-ai-prompts/skills/documentation-site-setup ~/.claude/skills/useful-ai-prompts// tip: Run this command in your terminal to install the skill
SKILL.md
name: documentation-site-setup description: Set up documentation websites using Docusaurus, MkDocs, VitePress, GitBook, or static site generators. Use when creating docs sites, setting up documentation portals, or building static documentation.
Documentation Site Setup
Overview
Set up professional documentation websites using popular static site generators like Docusaurus, MkDocs, VitePress, and GitBook.
When to Use
- Documentation website setup
- API documentation portals
- Product documentation sites
- Technical documentation hubs
- Static site generation
- GitHub Pages deployment
- Multi-version documentation
Docusaurus Setup
Installation
# Create new Docusaurus site
npx create-docusaurus@latest my-docs classic
cd my-docs
# Install dependencies
npm install
# Start development server
npm start
Project Structure
my-docs/
├── docs/ # Documentation pages
│ ├── intro.md
│ ├── tutorial/
│ │ ├── basics.md
│ │ └── advanced.md
│ └── api/
│ └── reference.md
├── blog/ # Blog posts (optional)
│ ├── 2025-01-15-post.md
│ └── authors.yml
├── src/
│ ├── components/ # React components
│ ├── css/ # Custom CSS
│ └── pages/ # Custom pages
│ ├── index.js # Homepage
│ └── about.md
├── static/ # Static assets
│ └── img/
├── docusaurus.config.js # Site configuration
├── sidebars.js # Sidebar configuration
└── package.json
Configuration
// docusaurus.config.js
module.exports = {
title: 'My Documentation',
tagline: 'Comprehensive documentation for developers',
url: 'https://docs.example.com',
baseUrl: '/',
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
favicon: 'img/favicon.ico',
organizationName: 'myorg',
projectName: 'my-docs',
presets: [
[
'classic',
{
docs: {
sidebarPath: require.resolve('./sidebars.js'),
editUrl: 'https://github.com/myorg/my-docs/tree/main/',
showLastUpdateTime: true,
showLastUpdateAuthor: true,
},
blog: {
showReadingTime: true,
editUrl: 'https://github.com/myorg/my-docs/tree/main/',
},
theme: {
customCss: require.resolve('./src/css/custom.css'),
},
},
],
],
themeConfig: {
navbar: {
title: 'My Docs',
logo: {
alt: 'Logo',
src: 'img/logo.svg',
},
items: [
{
type: 'doc',
docId: 'intro',
position: 'left',
label: 'Docs',
},
{
to: '/blog',
label: 'Blog',
position: 'left'
},
{
href: 'https://github.com/myorg/repo',
label: 'GitHub',
position: 'right',
},
],
},
footer: {
style: 'dark',
links: [
{
title: 'Docs',
items: [
{
label: 'Getting Started',
to: '/docs/intro',
},
{
label: 'API Reference',
to: '/docs/api/reference',
},
],
},
{
title: 'Community',
items: [
{
label: 'Discord',
href: 'https://discord.gg/example',
},
{
label: 'Twitter',
href: 'https://twitter.com/example',
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} My Company.`,
},
prism: {
theme: require('prism-react-renderer/themes/github'),
darkTheme: require('prism-react-renderer/themes/dracula'),
additionalLanguages: ['bash', 'diff', 'json'],
},
algolia: {
appId: 'YOUR_APP_ID',
apiKey: 'YOUR_SEARCH_API_KEY',
indexName: 'YOUR_INDEX_NAME',
},
},
};
Sidebar Configuration
// sidebars.js
module.exports = {
docs: [
'intro',
{
type: 'category',
label: 'Getting Started',
items: [
'getting-started/installation',
'getting-started/quick-start',
'getting-started/configuration',
],
},
{
type: 'category',
label: 'Guides',
items: [
'guides/authentication',
'guides/database',
'guides/deployment',
],
},
{
type: 'category',
label: 'API Reference',
items: [
'api/overview',
'api/endpoints',
'api/errors',
],
},
],
};
Versioning
# Create version 1.0
npm run docusaurus docs:version 1.0
# Files created:
# - versioned_docs/version-1.0/
# - versioned_sidebars/version-1.0-sidebars.json
# - versions.json
Deployment
# Build for production
npm run build
# Deploy to GitHub Pages
GIT_USER=<username> npm run deploy
MkDocs Setup
Installation
# Install MkDocs
pip install mkdocs
# Install Material theme
pip install mkdocs-material
# Create new project
mkdocs new my-docs
cd my-docs
# Start development server
mkdocs serve
Project Structure
my-docs/
├── docs/
│ ├── index.md
│ ├── getting-started.md
│ ├── api/
│ │ └── reference.md
│ └── guides/
│ └── tutorial.md
├── mkdocs.yml
└── requirements.txt
Configuration
# mkdocs.yml
site_name: My Documentation
site_url: https://docs.example.com
site_description: Comprehensive documentation
site_author: Your Name
repo_name: myorg/repo
repo_url: https://github.com/myorg/repo
edit_uri: edit/main/docs/
theme:
name: material
palette:
# Light mode
- media: "(prefers-color-scheme: light)"
scheme: default
primary: indigo
accent: indigo
toggle:
icon: material/brightness-7
name: Switch to dark mode
# Dark mode
- media: "(prefers-color-scheme: dark)"
scheme: slate
primary: indigo
accent: indigo
toggle:
icon: material/brightness-4
name: Switch to light mode
features:
- navigation.instant
- navigation.tracking
- navigation.tabs
- navigation.sections
- navigation.expand
- navigation.top
- search.suggest
- search.highlight
- content.code.annotate
- content.tabs.link
plugins:
- search
- minify:
minify_html: true
markdown_extensions:
- pymdownx.highlight:
anchor_linenums: true
- pymdownx.inlinehilite
- pymdownx.snippets
- pymdownx.superfences:
custom_fences:
- name: mermaid
class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format
- pymdownx.tabbed:
alternate_style: true
- admonition
- pymdownx.details
- pymdownx.emoji:
emoji_index: !!python/name:materialx.emoji.twemoji
emoji_generator: !!python/name:materialx.emoji.to_svg
- attr_list
- md_in_html
nav:
- Home: index.md
- Getting Started:
- Installation: getting-started/installation.md
- Quick Start: getting-started/quick-start.md
- Guides:
- Tutorial: guides/tutorial.md
- Best Practices: guides/best-practices.md
- API Reference:
- Overview: api/overview.md
- Endpoints: api/reference.md
extra:
social:
- icon: fontawesome/brands/github
link: https://github.com/myorg
- icon: fontawesome/brands/twitter
link: https://twitter.com/myorg
version:
provider: mike
Admonitions
!!! note
This is a note
!!! tip
This is a tip
!!! warning
This is a warning
!!! danger
This is dangerous
!!! info "Custom Title"
Custom admonition with title
Deployment
# Build site
mkdocs build
# Deploy to GitHub Pages
mkdocs gh-deploy
VitePress Setup
Installation
# Create project
mkdir my-docs
cd my-docs
# Initialize
npm init -y
npm install -D vitepress
# Create docs
mkdir docs
echo '# Hello VitePress' > docs/index.md
# Add scripts to package.json
{
"scripts": {
"docs:dev": "vitepress dev docs",
"docs:build": "vitepress build docs",
"docs:preview": "vitepress preview docs"
}
}
Configuration
// docs/.vitepress/config.js
export default {
title: 'My Documentation',
description: 'Comprehensive documentation',
themeConfig: {
nav: [
{ text: 'Guide', link: '/guide/' },
{ text: 'API', link: '/api/' },
{ text: 'GitHub', link: 'https://github.com/myorg/repo' }
],
sidebar: {
'/guide/': [
{
text: 'Getting Started',
items: [
{ text: 'Introduction', link: '/guide/' },
{ text: 'Installation', link: '/guide/installation' },
{ text: 'Quick Start', link: '/guide/quick-start' }
]
},
{
text: 'Advanced',
items: [
{ text: 'Configuration', link: '/guide/configuration' },
{ text: 'Deployment', link: '/guide/deployment' }
]
}
],
'/api/': [
{
text: 'API Reference',
items: [
{ text: 'Overview', link: '/api/' },
{ text: 'Endpoints', link: '/api/endpoints' }
]
}
]
},
socialLinks: [
{ icon: 'github', link: 'https://github.com/myorg/repo' }
],
editLink: {
pattern: 'https://github.com/myorg/repo/edit/main/docs/:path',
text: 'Edit this page on GitHub'
},
footer: {
message: 'Released under the MIT License.',
copyright: 'Copyright © 2025-present My Company'
},
search: {
provider: 'local'
}
}
}
GitBook Setup
Installation
# Install GitBook CLI
npm install -g gitbook-cli
# Initialize book
gitbook init
# Start development server
gitbook serve
Project Structure
my-docs/
├── README.md # Introduction
├── SUMMARY.md # Table of contents
├── book.json # Configuration
└── chapters/
├── chapter1.md
└── chapter2.md
Configuration
{
"title": "My Documentation",
"description": "Comprehensive documentation",
"author": "Your Name",
"language": "en",
"gitbook": "3.2.3",
"plugins": [
"search",
"prism",
"-highlight",
"github",
"edit-link",
"versions"
],
"pluginsConfig": {
"github": {
"url": "https://github.com/myorg/repo"
},
"edit-link": {
"base": "https://github.com/myorg/repo/edit/main",
"label": "Edit This Page"
}
}
}
Table of Contents
# Summary
* [Introduction](README.md)
## Getting Started
* [Installation](chapters/installation.md)
* [Quick Start](chapters/quick-start.md)
## Guides
* [Tutorial](chapters/tutorial.md)
* [Best Practices](chapters/best-practices.md)
## API Reference
* [Overview](chapters/api-overview.md)
* [Endpoints](chapters/api-endpoints.md)
GitHub Pages Deployment
Workflow
# .github/workflows/deploy-docs.yml
name: Deploy Documentation
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm ci
- name: Build documentation
run: npm run build
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./build
Custom Domain Setup
DNS Configuration
# Add CNAME record
docs.example.com -> username.github.io
GitHub Pages Settings
- Go to repository Settings > Pages
- Set source to
gh-pagesbranch - Add custom domain:
docs.example.com - Enable "Enforce HTTPS"
Search Integration
Algolia DocSearch
// docusaurus.config.js
module.exports = {
themeConfig: {
algolia: {
appId: 'YOUR_APP_ID',
apiKey: 'YOUR_SEARCH_API_KEY',
indexName: 'YOUR_INDEX_NAME',
contextualSearch: true,
searchParameters: {},
searchPagePath: 'search',
},
},
};
Local Search
# MkDocs
pip install mkdocs-material[search]
# VitePress (built-in)
# No additional setup needed
Best Practices
✅ DO
- Use consistent navigation structure
- Enable search functionality
- Add edit links to pages
- Include version selector for versioned docs
- Use syntax highlighting for code blocks
- Add dark mode support
- Optimize images and assets
- Enable analytics
- Add social media links
- Use responsive design
- Include breadcrumbs
- Add table of contents
- Test on mobile devices
❌ DON'T
- Use outdated frameworks
- Skip search functionality
- Forget mobile responsiveness
- Use slow-loading assets
- Skip accessibility features
- Ignore SEO optimization
Resources
Repository

aj-geddes
Author
aj-geddes/useful-ai-prompts/skills/documentation-site-setup
25
Stars
1
Forks
Updated6d ago
Added1w ago