Scaffold documentation governance
Scaffold documentation governance
How to treat files under docs/ after you copy this scaffold into your repository.
File classes
| Class | What it is | What you do |
|---|---|---|
| Structural README | README.md in a folder describing purpose, audience, owner, phase |
Keep. Update owners/paths to match your org. Do not delete unless you remove the whole folder. |
| Replace-me stub | Thin starter content (e.g. charter vision.md) marked Draft |
Replace with real content using the mapped upstream template (see KIT.md). |
| Example stub | example-*.md with placeholder fields (e.g. example-runbook.md) |
Replace or delete when your own content goes in that folder. |
| Template copy | Files you create from the upstream templates/ kit |
Add when the phase starts; do not invent a parallel structure. |
Placeholder (.gitkeep) |
Keeps empty dirs in Git | Keep until the first real file arrives; then delete .gitkeep. |
| Generated / CI artifacts | e.g. coverage reports | Publish from CI or link out; do not hand-maintain forever. |
Reference policy
Copied docs/ files must only use in-repo relative links (paths that exist in this product repository).
Teaching chapters, templates, examples, and the first-week pack live in the upstream Docs-as-Code Primer kit. They are listed in KIT.md — not linked via ../primer/... (those paths break after copy).
Stub policy
- Folder
README.mdfiles are structural, not product examples. They answer “what belongs here?” - They are not required reading after onboarding — follow the upstream
FIRST_WEEK.md(seeKIT.md). - Do not pre-fill every folder with fictional product prose in the scaffold. Filled samples live upstream under
examples/acme-export-platform/. - Select folders include example stubs (
example-*.md) — thin placeholder files with fields you fill in. These are a starting point, not real content. Replace or delete them when you add your own files. - If a structural README feels noisy, you may shorten it — but keep purpose + stream + a pointer to
KIT.md/ this file.
Charter stubs
Split files under internal/charter/ map 1:1 to sections of upstream templates/vision-charter.md. Mapping table: upstream appendix/phase-folder-map.md (see KIT.md).
| Stub file | Upstream template section |
|---|---|
vision.md |
Vision statement + KPIs |
scope.md |
Scope |
stakeholders.md |
Stakeholders & RACI |
constraints-assumptions.md |
Constraints + Assumptions |
risk-register.md |
Initial risk register |
When you reorganize
- Keep an in-repo note of your phase → folder map (optional: vendor
appendix/phase-folder-map.mdinto this repo). - Update
AGENTS.md(repo root) source-of-truth table. - Prefer redirects or “moved to” notes over silent deletes for the first release cycle.
Adding a new doc type
- Decide stream: internal / user / shared (upstream
primer/14-content-governance.md— seeKIT.md). - Place under the phase folder from the canonical map.
- Add or extend a template if the shape will repeat.
- Link in-repo resources from the folder README; list upstream template names via
KIT.md.
Versioning policy
Documentation is versioned with the code it describes. Until the first shipped
app release we publish a single “latest” site from main — every change is a
commit, so history is preserved and nothing needs to be frozen yet.
- Live site =
main.mainis the source of truth; the deploy pipeline publishes it to Cloudflare Pages. No long-lived doc branches for now. - Tag in lockstep with app releases. When the application cuts a release
(
vX.Y.Z), tag the docs repo at the matching commit (git tag v0.2.0 && git push origin v0.2.0). The tag is the frozen doc snapshot for that app release —git checkout v0.2.0reproduces exactly what was published. - Changelog every release. Add a
type: changelogentry underuser/changelog/for each released version (what changed, migrated, deprecated). Blume renders the/changelogtimeline and/changelog/rss.xmlfeed automatically. Seeuser/changelog/README.md. - Rollback = re-promote a Pages deployment. Every deploy has a stable hash URL; use the Cloudflare dashboard to roll back rather than reverting git.
- Adopt versioned docs only when needed. When two or more released app
versions need different docs, enable Blume’s version selector
(
navigation.selectorswithcontextKind: "version") and keep a docs branch per released series. Before that, it is overhead.
The end-to-end steps live in the Release and deploy runbook.