Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Maintain the collection

For a new skill, bug fix or development setup, start with CONTRIBUTING.md and AGENTS.md. skills.json registers portable packages; it does not enroll source updaters. Read-only PR checks validate the collection, package/module builds and explicit maintained providers. A reviewed merge makes a contribution available to users who choose to update their pin.

Development environment

The root Devenv environment supplies Python, Git, GitHub CLI, Zstandard, actionlint and Nix, plus two commands:

devenv info
devenv shell check-fast
devenv shell check-providers
nix flake check

check-fast runs offline collection validation, unit tests and workflow lint; check-providers also runs all six explicit maintained-source checks, including network-dependent regeneration. Entering the environment does not run either command, regenerate sources, install skills or start services. The environment was validated with Devenv 2.3.1 and the committed module/input pins.

devenv.lock owns project tooling; flake.lock owns distribution/test inputs. Update them deliberately and separately. The provider fixture under tests/devenv/ has its own lock and remains independent.

Reading the skill needs only a Markdown-capable agent. Offline validation needs Python 3.10 or newer; regeneration additionally needs Git, Nix with nix-command and flakes, and network access to upstream Git tags, source/build caches, and the versioned manual. Nix may build the pinned executable if a substitute is unavailable; no global package installation is required.

Run from the repository root:

python3 scripts/check.py
python3 -m unittest discover -s tests -p 'test_*.py'
python3 scripts/update.py --check

--check obtains Nix from the manifest’s exact upstream revision, regenerates in temporary storage, checks published manual pages/anchors, evaluates tests/language.nix with that executable, and compares bytes without modifying the package. The host Nix is only the bootstrap tool; it is not the documentation generator. Network failures are failures, not skipped checks.

Explicitly update on a task branch with either:

python3 scripts/update.py --release 2.35.2
python3 scripts/update.py --latest

--latest selects the highest numeric stable upstream tag and verifies that the source declares officialRelease = true before generating a changed version. Upstream currently publishes tags rather than GitHub Release objects, so the updater does not rely on /releases/latest. A moved/deleted pinned tag fails for investigation. An unchanged latest revision is a no-op; use --check to force regeneration of the current pin. Generation validates links before replacing files and restores previous bytes if replacement fails. Normal process failures are covered; filesystem/power-loss durability is not a database transaction.

Curated paths, headings, built-in names, and any missing upstream link definitions live under selection in sources.json. Selection edits require review; the bot cannot change them. The initial derivation selection supplies the upstream page’s missing system configuration-option link definition. Upstream source sections retain their wording; reference links, anchors, and incidental prose whitespace are adapted, while fenced code examples are preserved. Only the selected subset is bundled; linked manual pages follow the upstream major/minor documentation series, which may receive later patch-level updates. Exact copied-source provenance remains pinned to a full commit SHA.