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 kinogaki convert, and one entirely through the Kinogaki Server, an agent calling tools to build the Document Element by Element. 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 = "kinogaki"
    def "pages" {
        def "0" { str slug = "" str group = "kinogaki" str nav = "Overview" str doc = "overview" }
        def "1" { str slug = "why" str group = "kinogaki" str nav = "Why Prism" str doc = "why" }
    }
}

That is the whole of what the format does: it names and orders inputs. The format stays declarative: position is order, and a page either carries a field or it does not. The renderer does the computing.

Everything else is derived by the renderer, kinogaki-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

kinogaki-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 Kinogaki Core, which carries the codecs, documenting the very system that produced it. The landing page is hand-crafted for polish; the documentation is generated from Prism, to show a file format works by building on it.