Ga naar inhoud

Conventions

Docs contract (Diátaxis-light)

Every participating repo has a docs/ directory with index.md at its root and markdown only in that root or in how-to/, reference/ and explanation/ (ADRs under explanation/adr/NNNN-title.md). Every page carries front matter with status (current | draft | deprecated) and last_reviewed (ISO date); an owner field is forbidden. Minimum viable: index.md plus one reference page.

One language, and that language is English — repo content, docs, code and commit messages alike. Dutch was allowed for private and homelab repos until 2026-09-21; that exception is gone, because working in two languages is how Dutch ends up in code. A Dutch-language deliverable for a Dutch audience is a different thing and stays fine.

The full specification lives in openspec/archive/2026-07/add-docs-contract/; scripts/check_contract.py enforces the contract in CI.

Import list

inventory/repos.json is the single source of truth about which repos take part. scripts/gen_imports.py generates the mkdocs import blocks from it; CI fails on drift. Agents read the same list through handbook_mcp → list_repos (and roles and skills through read_role/read_skill, see use-the-ecosystem-mcp) — there is no second truth.

Licences and tooling

  • EUPL-1.2 for public content, unless a repo is already licensed otherwise (deviations are recorded in the inventory notes).
  • Python through uv, never pip directly.
  • Boring and auditable: standard tooling, explicit configuration, every decision traceable to a proposal or an ADR.

Public and private

Separated by sensitivity rather than by subject, and at repo level: a repo is public-ok or private-only; per-page filters do not exist. The private build (mkdocs.private.yml, not tracked in this repo) runs on the administration host and never goes to Pages.