Authoring: writing and editing topics

Before you write

  • Read the style rules and spec/conventions.md at the repository root.
  • Check spec/structure.md at the repository root to see where the topic fits and what number it should have.

Writing a new topic

  1. Pick the part and the next free decimal number in that part. Numbering is contiguous, so a new topic usually takes the next number after the last one in its part.
  2. Create locales/en-gb-oxendict/topics/PP-CC-slug.md (zero-padded, dash-separated prefix, for example 02-01-...) from the topic template. Write it in Oxford spelling (see spec/oxford-spelling.md); never edit the other three locales directly.
  3. Write to the template. Every content topic needs all of its sections: overview, key principles, recommendations, trade-offs (with a table), discussion questions, a sector lens (startup, small business, enterprise, government), examples (one enterprise and one government), business case, anti-patterns, a five-level maturity model, discussion ideas, key takeaways, and references.
  4. Name the gaming vector. Every metric family needs an explicit answer to “how does a team make this number look good without improving the thing it measures, and what guardrail catches that” (see topic 1.2).
  5. Define terms on first use. Add Wikipedia links to key concepts on first mention, in prose only.
  6. Cross-reference related topics by decimal, for example “(topic 2.1).”
  7. Add the topic to spec/structure.md.
  8. If the part introduction (N.0) lists its topics, add a bullet there.
  9. Run python3 tools/localize.py to derive the topic into en-001, en-gb, and en-us.
  10. Run just nav, then just test.

Editing an existing topic

  • Keep the section order and headings intact. The tests check that content topics still have every required section.
  • Preserve inline definitions, Wikipedia links, tables, and the references list unless the edit is specifically about them.
  • Do not introduce em-dashes or the forbidden phrases. If you are rephrasing, reword rather than dropping in a dash.
  • Run python3 tools/localize.py afterwards to re-derive en-001, en-gb, and en-us from the edited en-gb-oxendict source.

Renaming or renumbering

  • Rename the file in locales/en-gb-oxendict/, update its # N.M Title heading, update spec/structure.md, and update every cross-reference that points to the old number.
  • Run python3 tools/localize.py to rename the file in the other three locales too (it derives all four from the same relative paths).
  • Run just nav and just test. The tests will flag a mismatch between the H1 and the file name, a numbering gap, a locale drifted from the source, or a broken link.

Tone reminder

Write like an experienced colleague who wants the reader to succeed. Warm, plain, direct, and useful. Short sentences. No filler.