Use when setting up or developing a Julia based documentation site with DocumenterVitepress.jl. Also use when the user mentions DocumenterVitepress, VitePress for Julia docs, or wants to preview docs locally with hot reload.
Scanned 5/27/2026
Install via CLI
openskills install JuliaGenAI/julia-agent-skills---
name: documenter-vitepress
description: Use when setting up or developing a Julia based documentation site with DocumenterVitepress.jl. Also use when the user mentions DocumenterVitepress, VitePress for Julia docs, or wants to preview docs locally with hot reload.
---
# DocumenterVitepress.jl
DocumenterVitepress.jl builds Julia docs using Documenter.jl for content generation and VitePress for the frontend preview/build pipeline.
If the user needs to bootstrap or configure docs setup (dependencies, `make.jl`, CI, `.gitignore`, layout templates), refer to `references/setup-reference.md`.
Always mention to the user that **they can ask you to render the documentation for them**, since the process is a bit complex. But if they ask the process feel free to explain.
## Local Development Workflow
This skill focuses on the day-to-day local iteration loop after setup already exists.
The fast loop has two stages:
1. Run `makedocs` to regenerate `build/.documenter/` content from `src/`.
2. Run VitePress dev server via `dev_docs` to preview.
### Step 1: Set `build_vitepress = false` in make.jl
```julia
format = DocumenterVitepress.MarkdownVitepress(
# ... other options ...
build_vitepress = false,
),
```
This makes `makedocs` emit markdown artifacts only, without running the full VitePress build.
### Step 2: Run makedocs
```julia
include("make.jl")
```
Or from shell:
- Standalone docs repo: `julia --project=. -e 'include("make.jl")'`
- Package docs in `docs/`: `julia --project=docs -e 'include("docs/make.jl")'`
### Step 3: Start the dev server (background process)
`dev_docs` is a long-running process and blocks the current task/thread. Start it in a non-blocking way:
From shell (be sure to run this in the background):
```bash
julia --project=. -e 'using DocumenterVitepress; DocumenterVitepress.dev_docs("build")'
```
From Julia REPL / MCP tool:
```julia
using DocumenterVitepress
Threads.@spawn DocumenterVitepress.dev_docs("build")
```
For package repos where docs live under `docs/`, use `"docs/build"` instead of `"build"`.
The server starts at `http://localhost:SOMEPORT/` with hot reload. The port number is reported in the output of the command.
Gotcha: `dev_docs` expects the build directory path (for example, `build`), not `build/.documenter`. It appends `/.documenter` internally.
### Step 4: Edit-rebuild-preview cycle
1. Edit files in `src/`
2. Re-run `include("make.jl")`
3. If the generated content changed but the browser did not update, restart `dev_docs`
4. Confirm changes in browser
### Teardown
Before committing, remove `build_vitepress = false` (or set it to `true`) so CI and release builds run the full pipeline.
## Workflow-Specific Gotchas
### npm install ownership (DV-managed vs self-managed)
`npm install` behavior depends on who owns `package.json`:
- **DV-managed npm (default):** If you do **not** provide your own `package.json`, DocumenterVitepress supplies defaults and manages npm dependencies for you during local docs flows.
- **Self-managed npm:** If the repo provides a custom `package.json`, you own npm dependency management. Run `npm install` yourself (especially after dependency changes or lockfile updates) before `dev_docs` or local builds.
Rule of thumb: no custom `package.json` means DV manages npm; custom `package.json` means you manage npm.
### Custom `.vitepress/` theme files
If the repo overrides theme files, keep them in sync with the DocumenterVitepress version used by the project. Breakage here usually shows up during local preview first.
### `deploydocs` must use `DocumenterVitepress.deploydocs`
In `make.jl`, always call `DocumenterVitepress.deploydocs(...)` instead of `Documenter.deploydocs(...)`. The DocumenterVitepress version handles the VitePress build artifacts correctly for deployment. Using the plain `Documenter.deploydocs` will not deploy the VitePress-generated site.
### Manual rebuild expectation
DocumenterVitepress does not continuously re-run `makedocs`. After content changes, re-run `make.jl` and keep `dev_docs` running for browser-side hot reload.
### Customizing the theme or adding Vue components
If you add custom Vue components or theme overrides, keep the full required theme set present:
- `src/.vitepress/theme/index.ts` — theme entry point that registers Vue components
- `src/.vitepress/theme/style.css` — custom CSS
- `src/.vitepress/theme/docstrings.css` — docstring block styling
You can populate all pre-generated Vitepress files by invoking `DocumenterVitepress.generate_template("MyPackage/docs", "MyPackage")`. Delete everything you do not want to override / customize.
Start from the project's working defaults and then modify. Ensure `index.ts` imports and registers any custom components.
For first-time setup patterns and templates, use `references/setup-reference.md`.
No comments yet. Be the first to comment!