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.
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!