It keeps itself coherent

A box is a directory of your data, kept under version control with a full history of changes (using git); a card is a markdown file with a structured header; the agent is the coding agent (Claude Code or Codex) that operates the box. A box is meant to grow for years, so it is built as hypertext: cards point at each other, at attachments, and at outside pages, and filenames carry meaning instead of being arbitrary. The system does the bookkeeping that keeps hypertext honest, so growth never turns the box into a pile of files that only look organized.

What it does for you

How it works, briefly

One shared rule parses every reference, wherever it appears: a header field, a line of body text, or an attachment path. It is written from the box root, or, for a card's own attachments, from that card, and checked against what exists; one that tries to escape the box is refused. One command checks the whole box, a list of files, or just what is about to be committed; another moves a card while rewriting every reference that pointed at it.

Limits

A dangling in-box reference is a warning, not a block, so a reorganization in progress does not stop a commit. What does block a commit is a card failing its own schema, or an attachment folder holding an unrecognized file. Outside web links are checked too, but looser: looked at once, in the background, the first time one appears, and a dead one is only a warning.

Go deeper

shape-it-later.md, ../concepts/enriched-markdown.md, ../concepts/cards.md, ../concepts/landmarks.md, ../contracts/box-layout.md, ../contracts/card-validation.md, ../reference/bbx-commands.md (for the curious: bbx validate, bbx mv)