Boris — metadata for the next agent

This page is the breadcrumb the title promised. If you are a future agent dropped into this directory, read this first. It is also the "corner section": a condensed version lives in the corner card on every page of this site.

Identity

Key Value
Name Boris
Version boris/0.8.1 (./boris -V)
Binary ./boris in this directory (repo root)
Size 18,159,784 bytes (18 MB)
Kind Mach-O 64-bit executable, arm64
SHA-256 e72b3265172e00595410153acd763fe1319e96b0f460119ef3e096db3843ce40
Upstream github.com/drawmeanelephant/boris (per its own starter docs)

What Boris is

A static site compiler with an unusual amount of opinions:

  • Input. Markdown pages (default) with YAML frontmatter (title, parent, tags, relations, optional id). Also bounded Cooklang and Textile input modes.
  • Page graph. index.md is the trunk; children declare parent: index and become satellites. Wiki links like [[boris/metadata]] are real graph edges — a link to a missing page fails the build instead of dangling.
  • Themes. Closed layout slots: {{title}}, {{head}}, {{nav}}, {{breadcrumb}}, {{toc}}, {{content}}, {{footer}}, {{asset-url path}}. Default theme: themes/boris/.
  • Publication profiles. boris.json declares targets (name, output, public, theme). boris plan prints the normalized plan.
  • Atmosphere. The standard-site subcommand family publishes and verifies the site as AT Protocol records (secp256k1 signing, DID sessions, .well-known/atproto-did, app-password or browser OAuth login, smoke verification against an indexer). Comes with standard-site.json (replace the fake DID/URL before publishing).
  • Exports. Deterministic llms.txt, RAG pack (graph + entity catalog), IR mode (--out, default .boris/), multi-target HTML builds, watch mode, --no-rag for plain JSON IR.
  • Strictness. Content validation fails builds; layout selection falls back with warnings; verification surfaces are computed against the plan and fail closed on drift (--plan).

CLI surface

boris --input content --html-dir dist --theme themes/boris   build the site
boris plan --profile boris.json                             inspect the plan
boris watch ...                                             rebuild on change
boris init [DIR]                                            starter site
boris -V                                                    boris/0.8.1
boris standard-site plan|records|verify|login|sessions|logout|publish|smoke
boris standard-site login --app-password --handle HANDLE    (careful: broad write)

How this site was built

boris init .                                  # starter content/theme/profile
(edit content/*.md, themes/boris/*)
boris --input content --html-dir dist --theme themes/boris
scripts/export-search-data.sh                 # embed the search index (post-build)

The corner card on each page is part of the theme: themes/boris/layouts/main.html + themes/boris/assets/css/boris.css. Search runs client-side: the index boris writes to dist/_boris/search/search-index.json is embedded into dist/assets/js/search-data.js so it works even from file://.

Where things live (map for the next agent)

boris                         the compiler (this binary)
content/index.md              trunk — about opencode + deepseek flash 07/31
content/opencode/features.md  satellite — tool tour
content/model/deepseek-flash-0731.md  satellite — the model
content/companies/deepseek/   satellites — history, founders, origin
content/boris/metadata.md     satellite — this page
content/boris/prompts.md      satellite — the three prompts, verbatim
content/boris/limericks.md    satellite — two limericks about otters
themes/boris/                 starter theme (layouts + css + js)
boris.json                    publication profile
scripts/export-search-data.sh embeds the search index into the theme
dist/                         compiled output (git-ignorable)

Tips for the next agent

  • The starter site's own docs pages (content/guides/* from boris init) explain frontmatter and the graph contract.
  • Frontmatter fields: title, parent (entity id, e.g. index), tags, relations (e.g. [relates_to=guides/getting-started]).
  • Wiki link targets resolve by path or id; missing targets fail the build on purpose.
  • The standard-site family needs standard-site.json with a real DID/URL before publish; plan works fully offline.
  • Start here for the model story: deepseek flash 07/31.
  • The three prompts that built this site, verbatim: The three prompts. The otter situation: Two limericks about otters.