documentation

SkillDocs & knowledge

Lets your agent write technical docs like READMEs, API references, runbooks, and onboarding guides.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the documentation skill

About this capability

Use this skill when working with Firefox documentation,

What this skill tells your AI

The instructions your AI receives, as published by browserworks/waterfox in .agents/skills/documentation/SKILL.md and read by ahel’s review.

Overview

Firefox documentation is built using Sphinx through the ./mach doc command. Documentation sources are distributed throughout the repository and can be written in reStructuredText (.rst) or Markdown (.md).

The documentation system integrates:

  • Sphinx
  • MyST parser (for Markdown support, with colon fences, definition lists, field lists, and HTML admonitions enabled)
  • custom Mozilla tooling in tools/moztreedocs/ and docs/

Documentation builds into static HTML that is published to Firefox Source Docs.

Core Principles

  • Always reproduce documentation issues locally first using ./mach doc --no-serve --no-open.
  • Treat warnings seriously; they often indicate real navigation or reference problems.
  • Prefer small targeted builds while debugging.
  • Ensure new documentation is reachable through a toctree.
  • Keep documentation close to the code it describes when possible.

Recommended Workflow

1. Reproduce the issue locally

Start by building the documentation locally. Redirect output to a file rather than piping through tail/grep, since builds can be slow:

./mach doc --no-serve --no-open > /tmp/doc_build.txt 2>&1

Common commands:

  • ./mach doc --no-serve --no-open -- build entire tree
  • ./mach doc <path> --no-serve --no-open -- build a specific component (much faster)
  • ./mach doc <path> -- build and serve with livereload for iterative writing

Useful flags:

  • --no-autodoc -- skip Python/JS API generation for faster builds
  • --verbose -- run Sphinx in verbose mode for debugging
  • --disable-warnings-check -- ignore unexpected warnings during local development
  • --linkcheck -- validate all links in the documentation
  • -j JOBS -- control parallel build jobs (defaults to CPU count)

Documentation output is generated under:

obj-*/docs/html/

When debugging, prefer building only the relevant component instead of rebuilding everything.

2. Identify the type of Sphinx problem

Most documentation build issues fall into these categories:

  • navigation problems (toctree)
  • broken references
  • duplicate labels
  • include directive errors
  • autodoc import failures
  • uncategorized documentation (missing from docs/config.yml)
  • configuration issues

The build output from ./mach doc will normally indicate the failing file and line. If the build crashes, Sphinx writes backtraces to /tmp/sphinx-err-* files.

Always start by inspecting the referenced file and directive.

Documentation Layout

Key locations:

Main documentation root:

docs/

Component documentation often lives near the code, for example:

devtools/docs/
toolkit/docs/
browser/docs/

Important configuration files:

  • docs/config.yml -- categories, allowed warnings, redirects, JS source paths
  • docs/conf.py -- Sphinx configuration (extensions, theme, MyST settings)

Custom Mozilla Sphinx integration:

tools/moztreedocs/

How documentation is discovered

The build system discovers documentation directories via SPHINX_TREES variables in moz.build files. When adding documentation in a new location, you must add a SPHINX_TREES entry in the relevant moz.build.

Configuration: docs/config.yml

This file controls several critical aspects of the documentation build:

  • categories: Every documentation path must be assigned to a category. If a new doc path is not categorized here, the build fails with an "Uncategorized documentation" error.
  • allowed_warnings: Regex patterns for known/acceptable Sphinx warnings. Warnings matching these patterns are logged as "KNOWN" instead of causing build failures.
  • redirects: URL redirects for backward compatibility when documentation moves. Format: old/path: new/path.
  • js_source_paths: Directories where JSDoc generation is enabled (tree-wide JSDoc does not work).

Adding New Documentation

Typical process:

  1. Create a .rst or .md file in the appropriate directory. Prefer Markdown.

  2. Add the document to a parent toctree.

  3. Add the documentation path to the appropriate category in docs/config.yml.

  4. If adding docs in a new directory, ensure SPHINX_TREES is set in the relevant moz.build file.

  5. Follow the structure used by neighboring documentation.

  6. Build locally with:

    ./mach doc <path> --no-serve --no-open
    
  7. Resolve warnings before landing the change.

If the page does not appear in the generated navigation, verify that it is included in a toctree.

When moving documentation to a new URL, add an entry to the redirects section of docs/config.yml so old links continue to work.

Best Practices

  • Always build documentation locally before pushing.
  • Resolve warnings before landing documentation changes.
  • Keep documentation near the code it describes when appropriate.
  • Prefer literalinclude for code examples instead of copying code.
  • When debugging large documentation changes, build only the affected component.
  • Use --no-autodoc for faster iteration when not working on API docs.
  • If a new warning appears that is expected/acceptable, add a pattern to allowed_warnings in docs/config.yml.

Signals

GitHub stars
6k
Forks
430
Last commit
Sep 2026

ahel recommends instead

Advanced
Catalog kind
skill
Gateway key
documentation
Source
github.com/browserworks/waterfox