Documentation you already wrote
Your team writes markdown for the AI. Concordance turns it into a wiki for the humans. Point it at your git repositories and get a site where every word of your business has a page: the note someone wrote, if any, and every passage, in every file, that mentions it.
Drag the handle. Left, one file of your repository, exactly as it is. Right, the page Concordance publishes for it — nothing was added to the markdown.
---
type: concept
status: stable
---
# Keyword page
Every word that crosses the publication threshold gets a page,
whether or not anyone wrote a note for it.
## Contents
The note itself, if one exists, then every passage that mentions
the word, grouped by file.
> A keyword page is never empty: the corpus fills it.
Every word that crosses the publication threshold gets a page, whether or not anyone wrote a note for it.
The note itself, if one exists, then every occurrence that mentions the word, grouped by file.
A keyword page is never empty: the corpus fills it.
Below three occurrences we do not publish a page.Publication thresholdconcept6
Cited · How many pages a build produces.Build pipelineconcept3
Keyword pages are written in the render step.Occurrenceconcept2
Cited · One line, one phrase, one file.Ordered by number of passages. “Cited” marks a link written in the page.
The rail is calculated, not written: the properties come from the file's own header, the related pages and their passage counts come from reading the corpus. Written links and recognised words stay visually distinct, so you always know which of the two you are looking at.
Start with the linter: it checks one repository on its own, before any site exists. The build comes next, and reads your repositories exactly as they are — no rewriting, no wikilinks, no frontmatter required, no server to run.
# 1 — check one repository, before you push. No site needed. npx @concordance-wiki/concordance lint # 2 — build the wiki from every source in concordance.yaml npx @concordance-wiki/concordance build # or turnkey, with the container image docker run --rm -v "$PWD:/wiki" concordancewiki/concordance build
Three steps, and nothing kept between two builds.
concordance.yaml lists the git
sources. Nothing else is required — and concordance lint already works
on a single repository without it.
dist/ is static: GitHub Pages, GitLab Pages,
a bucket, or a file on disk. Search works without a server.
The engine lives in one repository. The project's own wiki is built with Concordance from two content repositories and one configuration repository: copy the configuration to start yours. The split is a convenience, not a rule — one repository can hold several kinds of content, and a single kind can be spread across several repositories.
Nothing to migrate, nothing to rename. Three levels, and you stop wherever it is enough.
specs/screens/** becomes screens. Sources, domains, thresholds and
formatting live in concordance.yaml, never in your files.
Worth knowing before you install, rather than after.