Documentation Guide
This guide explains how to contribute to Michelangelo's documentation site.
Quick Start
cd website
bun install
bun run start # Dev server at http://localhost:3003/
Create a new page:
- Add
docs/user-guides/my-guide.md(lowercase-kebab-case) - Start with
# Descriptive Title - Submit a PR
Running Locally
Prerequisites
- Bun - Install with
curl -fsSL https://bun.sh/install | bash
Commands
cd website
# Install dependencies
bun install
# Start dev server (hot reload)
bun run start
# Build for production (catches broken links)
bun run build
# Preview production build
bun run serve
File Structure
docs/
├── intro.md # Landing page (/)
├── images/ # Shared images
├── about/ # License
├── contributing/ # Developer guides
│ └── dev/ # Development docs
│ └── go/ # Go development
├── getting-started/ # Overview and setup
├── operator-guides/ # Platform operator docs
│ ├── jobs/ # Job system docs
│ └── ui/ # UI docs
│ └── configuration/ # UI config reference
└── user-guides/ # End-user tutorials
└── ml-pipelines/ # ML pipeline guides
Adding Content
File Naming
Use lowercase-kebab-case for all filenames:
my-new-guide.md(creates URL/user-guides/my-new-guide)- Never use spaces, underscores, or capital letters
Page Titles
Every page must start with a descriptive # Title:
# Deploying Models to Production
Content starts here...
Avoid generic titles:
# Introduction- too vague# Overview- too vague# 1. Introduction- save numbers for sub-sections
Numbered sub-sections are fine for tutorials:
# Deploying Models
Introduction paragraph...
## 1. Prepare Your Model
## 2. Configure the Pipeline
## 3. Deploy and Monitor
Frontmatter
Control sidebar order and display with YAML frontmatter:
---
sidebar_position: 2
sidebar_label: "Short Label"
---
# Full Page Title
Content...
| Field | Purpose |
|---|---|
sidebar_position | Order in sidebar (1, 2, 3...) |
sidebar_label | Shorter name for sidebar |
slug | Custom URL path |
Adding a New Section
- Create a folder:
docs/new-section/ - Add a
_category_.jsonfile:{
"label": "New Section",
"position": 5,
"collapsed": false
} - Add markdown files to the folder
Images
Place images in docs/images/ and reference them with relative paths:

For section-specific images, you can also co-locate them:
docs/
├── images/ # Shared images
│ └── architecture.png
├── user-guides/
│ └── images/ # Section-specific images
│ └── workflow-diagram.png
Reference co-located images:

Links
Use relative paths with .md extension for internal links:
[See the CLI guide](./cli.md)
[Back to setup](../getting-started/sandbox-setup.md)
- Always include the
.mdextension (Docusaurus converts them) - Relative paths work in both GitHub and the built site
- Avoid absolute paths like
/docs/page
Admonitions
Use callout blocks to highlight important information:
:::note
Helpful background information.
:::
:::tip
Suggestions to help the reader succeed.
:::
:::info
Additional context or details.
:::
:::warning
Potential issues or gotchas to watch out for.
:::
:::danger
Critical warnings about destructive actions.
:::
Style Guidelines
- Use bold for UI elements and emphasis
- Use
backticksfor code, commands, filenames, and paths - Use tables for feature comparisons
- Keep paragraphs short (3-5 sentences max)
- Use bullet lists for features, numbered lists for sequential steps
- Use admonitions for notes, tips, and warnings
Using AI
AI tools can help write and maintain documentation. If using Claude Code, run /update-docs to load the project's documentation guidelines.
Example Prompts
"Add a new guide for model deployment in docs/user-guides/"
"Fix any broken internal links in docs/operator-guides/"
"Add frontmatter to pages missing sidebar_position"
Tips
- Review output - Verify generated content for technical accuracy
- Test locally - Run
bun run buildbefore committing - Use the PR workflow - AI changes go through normal code review
Before Submitting
Before opening a PR, verify your changes:
cd website && bun run build
This catches:
- Broken internal links
- Invalid markdown syntax
- Missing referenced files
Checklist:
- File uses lowercase-kebab-case naming
- Page has a descriptive
# Title(not generic) - Internal links use relative paths with
.mdextension - Images are in
docs/images/or co-located -
bun run buildpasses without errors
Submitting Changes
- Fork the repository (external contributors) or create a branch (maintainers)
- Make your documentation changes
- Run
bun run buildto verify - Open a pull request against
main - Documentation deploys automatically after merge
Deployment
Documentation deploys automatically when changes to docs/ or website/ are pushed to main.
Automatic Deployment
The GitHub Actions workflow (.github/workflows/deploy-docs.yml):
- Installs Bun and dependencies
- Builds the static site
- Deploys to GitHub Pages
Manual Deployment
Trigger a deploy manually: GitHub Actions → "Deploy Docs" → "Run workflow"
Checking Status
- Build status: Check the Actions tab in GitHub
- Live site: https://michelangelo-ai.github.io/