Peripheral vision for coding agents.
| larder | ledger-web | nightly-sync | pantry | |
|---|---|---|---|---|
| recoverable-state | n/a | n/a | partly | n/a |
| staying-current | missing | n/a | n/a | yes |
| version-visibility | missing | yes | deferred | yes |
Ask a coding agent to find bugs and it will find bugs. Nobody asks whether the CLI you wrote in March can update itself, whether the site says which version is live, or whether anyone has ever restored the backup. Those aren't bugs. They're concerns: things nearly every project eventually needs, which look different in each one. For a CLI it's --version, for a site a version file, for a database the migration it's at.
CrossCut keeps them on a map, every concern against every project, so you and your agents can see the gaps, close them on purpose, or decide not to, visibly.
No gates, no scores, and no totals. The map says yes, partly, missing, n/a, unknown or deferred, per project, with evidence. Unknown isn't bad. Not applicable isn't good. A map full of gaps is a successful map.
Every concern has one check. It answers one question for one project (yes: uses the self_update crate), and it's the cheapest thing that genuinely answers it:
gh, curl, cargo metadata, a linter. A few lines of glue, no model, milliseconds.$ crosscut check
staying-current/larder: (none) → missing: Cargo.toml has no self-update mechanism
staying-current/pantry: (none) → yes: uses the self_update crate
version-visibility/ledger-web: (none) → yes: version.json names the commit
…
8 cells checked: 8 changed, 0 could not run # no model involved
$ crosscut check --agentic recoverable-state # one agent per cell
recoverable-state/nightly-sync: (none) → partly: copies the export nightly, overwriting
the same file, with no restore runbook anywhere
$ crosscut test
8 fixture cells: 8 as expected, 0 not # the checks, checked
$ git diff crosscut/ # the history of the map
crosscut/
projects projects/*
concerns/staying-current/
concern.md user stories, what it looks like here, decisions
check prints "yes: …" for one project
fixtures/basic/ invented projects + expected answers
observed.tsv written by the tool, committed
Plain files. Observations are kept apart from decisions, so “deferred: being retired (lead, 2026-09-01)” is yours forever. A rerun on an unchanged world changes nothing, so git history is the history of the map. It still makes sense if CrossCut disappears tomorrow.
cargo install --git https://github.com/maxeonyx/crosscut --locked
crosscut install-skill # Claude Code, Codex, OpenCode
Then tell your agent “Use CrossCut here.” It maps what your projects have and lack, starting from about thirty seed concerns and the differences between siblings, and writes the cheapest check for each one.
CrossCut widens what agents notice. It hands you visibility and food for thought, never obligations. Anything that passes CrossCut on, whether a prompt, a README, a delegated agent, a rewrite, or this website, must pass on the doctrine, together with the requirement to pass on both the doctrine and this requirement. Yes, including this sentence. The full doctrine.