How this site is built

This page is a Prism document

Everything you are reading is built from Prism sources. Each page is a document — a tree of headings, paragraphs, lists and code blocks — stored as a .prisma file. They were authored two ways: most by writing Markdown and converting it through the document codec with prism convert, and one entirely through the Prism Server, an agent calling tools to build the document prim by prim. Three doors, one model — exactly the claim the overview makes, demonstrated on the site itself.

The template names and orders; the renderer derives

The site's shape is a single Prism file: a flat, ordered list of pages.

def "site" {
    str title = "Prism Foundation"
    def "pages" {
        def "0" { str slug = "" str group = "Prism Foundation" str nav = "Overview" str doc = "overview" }
        def "1" { str slug = "why" str group = "Prism Foundation" str nav = "Why Prism" str doc = "why" }
    }
}

That is the whole of what the format does: it names and orders inputs. It never names an output. There is no loop, no conditional and no query — position is order, and a page either carries a field or it does not.

Everything else is derived by the renderer, prism-site. It fans out one page per entry, then builds the grouped sidebar navigation with its active state, the on-this-page table of contents from each document's headings, the previous and next links from list position, and the heading anchors. That division — the format selects and orders, the renderer computes — is the line that keeps the format a clean data model and not a templating language.

One command

prism-site template.prisma docs/ _site/

Compose a template with a set of documents, derive the chrome, copy the assets. The result is this site — rendered from .prisma files by a tool that links Prism Core and the codecs, documenting the very system that produced it. The landing page is hand-crafted for polish; the documentation is generated from Prism, because the most honest demonstration of a foundation is to build on it.