Skip to content

Markdown Style Guide

This guide defines how Markdown is authored in this repository. It has two layers: the markdownlint rule set for structural hygiene, and two project conventions markdownlint cannot express.

markdownlint

The baseline is markdownlint with every rule on by default. The repository-root .markdownlint.jsonc is the machine-readable source of truth; run it with npx markdownlint-cli2 "docs/**/*.md".

Two rules are disabled, each for a documented reason:

  • MD013 (line length) is off, because arqix prose is written one sentence per line and a sentence may exceed any column limit (see below).
  • MD041 (first line must be a top-level heading) is off, because an arqix document carries its title in YAML frontmatter and its first body heading is the ## <Title> the frontmatter checker enforces, never an # H1.

Everything else stays on: heading increment (MD001), no trailing spaces or hard tabs (MD009, MD010), single blank lines (MD012), blank lines around headings, lists, and fenced code (MD022, MD031, MD032), a language on every fence (MD040), and a single trailing newline (MD047).

One sentence per line

Write each sentence on its own line, however long. Never wrap a sentence across several lines to fit a column width, and never put two sentences on one line. Separate paragraphs with a single blank line. This lets a reviewer comment on an individual sentence instead of an arbitrary wrapped fragment, and keeps diffs to the sentences that actually changed.

For a list item that needs more than one sentence, put each further sentence on its own continuation line, indented to the item's text.

Markers and directives above the block

An <!-- arqix:… --> marker or directive (arqix:include, arqix:references-artefact, arqix:documented-by, …) goes on its own whole line, placed directly above the block it annotates — like a code comment above the code it describes. Leave a blank line above the marker and none between the marker and its block, so the marker reads as attached to what follows.