Skip to content

Docs Development

The documentation site is built with MkDocs Material. It combines hand-written Markdown pages, generated reference pages, a generated interactive fixes page, and executed notebooks.

Setup

Use the project development environment:

conda env create -f environment.yml
conda activate woodpecker
make dev

For docs-only dependencies:

pip install -e ".[docs]"

Build The Site

Build the generated docs artifacts and run a strict MkDocs build:

make docs

Serve the site locally:

make docs-serve

Both targets regenerate references before running MkDocs.

Generated Artifacts

These files are generated and should be updated through their scripts:

Artifact Generator
docs/FIXES.md scripts/generate_fix_catalog.py
docs/FIXES.json scripts/generate_fix_catalog.py
docs/recipe-reference.md scripts/generate_recipe_catalog.py
docs/recipe-reference.json scripts/generate_recipe_catalog.py
docs/fixes.html scripts/generate_fix_webpage.py

The interactive fixes page uses the Jinja template at scripts/templates/fixes.html.jinja.

Notebooks

Notebook examples live in docs/notebooks/ and are rendered by mkdocs-jupyter during the docs build. The notebooks use deterministic synthetic datasets so they can run in CI and in local docs builds.

When adding or editing notebooks, prefer examples that exercise the public API and can run without external climate data files.

Strict Builds

The docs build runs MkDocs in strict mode:

NO_MKDOCS_2_WARNING=1 mkdocs build --strict

Strict mode treats warnings as failures. This is useful for catching broken links, missing nav entries, and Markdown pages that do not resolve correctly inside the docs/ tree.

Source Layout

  • mkdocs.yml: site configuration, theme, plugins, and navigation.
  • docs/index.md: task-oriented documentation homepage.
  • docs/OVERVIEW.md: short conceptual overview for the docs site.
  • docs/*.md: hand-written docs pages and generated references.
  • docs/notebooks/: executed example notebooks.
  • scripts/: docs generation scripts.