/documenter-vitepress
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.
$ npx -y skills add JuliaGenAI/julia-agent-skills --skill documenter-vitepress --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/documenter-vitepress
Context preview
The summary Claude sees to decide when to auto-load this skill.
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.
SKILL.md
documenter-vitepress.SKILL.mdname: 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
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
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):
julia --project=. -e 'using DocumenterVitepress; DocumenterVitepress.dev_docs("build")'From Julia REPL / MCP tool:
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`.
Read more
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
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
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):
julia --project=. -e 'using DocumenterVitepress; DocumenterVitepress.dev_docs("build")'From Julia REPL / MCP tool:
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`.
Community-maintained Agent Skills for Julia development. Installable into Claude Code, Codex CLI, Cursor, Gemini CLI, Windsurf, and any tool supporting the Agent Skills standard.

