Documentation Conventions
How documentation is organized across the punkt portal. Every repository that
contributes docs follows these rules (they’re also mirrored in each repo’s
CLAUDE.md).
The invariant
If it lives in docs/modules/, it is published documentation.
Everything else — process logs, plans, brainstorming — lives elsewhere in the repo.
What belongs (publish)
| Category | Contents |
|---|---|
Overview |
What the project is and who it’s for. |
Usage |
Install, configure, use, troubleshoot (user-facing). |
Reference |
API, CLI, configuration, data models. |
Architecture & Decisions |
Design overviews and Architecture Decision Records (ADRs). |
Operations |
Deployment, runbooks, backup / DR. |
Contributing |
Dev setup, build, test, release. |
What does NOT belong
Keep these in the repo but out of docs/modules/ — put them in a repo-level
notes/ folder (or docs/superpowers/, which is excluded):
-
AI/agent process artifacts — nightly & morning reports, devlogs, backlogs, sprint-status, autonomous-run logs, handovers,
implementation-artifacts, market-research scratch, dated status reports. -
Planning / brainstorming scratch.
|
The test: "Will a teammate deliberately look this up in three months?" |
Per-repo layout
docs/
antora.yml # component: name, title, version, start_page, nav
modules/
ROOT/
nav.adoc # left navigation (xref links, grouped by .Section)
pages/*.adoc # the pages — AsciiDoc, one "= Title" each
images/ # image::name[]
attachments/ # downloads
notes/ # NOT published — process/AI artifacts, plans
Products (versioned) publish versions from git tags; everything else rolls on the default branch (versionless).
Authoring
-
Write AsciiDoc (
.adoc), not Markdown. Exactly one level-0= Titleper page. -
New page → add the
.adocunderpages/and an* Titleline innav.adoc. -
Link within a component with
other.adoc; across components withcomponent::page.adoc.
Internationalization (i18n)
Multilingual sites use the language-as-version pattern: each language is a component version, and the portal’s version dropdown becomes a language switcher.
docs/
de/ antora.yml (version: de, display_version: Deutsch) + modules/ROOT/...
en/ antora.yml (version: en, display_version: English,
prerelease: true) + modules/ROOT/...
-
The playbook lists one source per language (
start_path: docs/de,docs/en). -
prerelease: trueon the non-default language makes the other the default ("latest") — e.g. Eventsanitäter is German-first, so English is the prerelease. -
Translate a page by creating it (same filename) under every language’s
pages/and adding it to eachnav.adoc; stub untranslated pages with a link to the other language (English version).