What happens to review velocity when every repo declares the same commands, constraints and conventions — and how we compile it per tool.
baselane team · May 28, 2026 · 6 min read
Ask a platform team how many repos have an AGENTS.md or CLAUDE.md, and most can answer. Ask how many of those files agree with each other, and the honest answer is usually "we don't know." Forty repos, forty files, each written by whoever set up that repo's AI tooling first, on whatever day they happened to do it. That's not a policy — it's an archaeology project waiting to happen.
None of this shows up as an incident. It shows up as friction that everyone in the org has learned to route around: a reviewer who knows repo A uses a different test command than repo B and mentally translates every time they context-switch, an agent that confidently runs the wrong build command because the file it read was written before the build system changed, a new hire who reads one repo's AI instructions and assumes they generalize. Every one of these is small. All of them together is why AI-assisted review takes longer than it should, and why nobody can say with confidence what "the standard" actually is.
baselane's answer is to stop treating each repo's agent instructions as something to author by hand at all. A repo declares its commands, constraints and conventions once, in one canonical spec. From that single source, baselane compiles the format each tool actually expects: an AGENTS.md for the emerging cross-tool convention, a CLAUDE.md that includes it, Cursor rules, Copilot instructions — same content, different shape, because every tool insists on its own file and its own front matter.
Here's roughly what that compilation looks like for the two Claude-facing files in this repo, for instance:
AGENTS.md # canonical: commands, conventions, where things live
CLAUDE.md # @AGENTS.md — a one-line include, not a fork
.cursor/rules/* # compiled from the same source, Cursor's format
Nobody edits CLAUDE.md directly and lets it drift from AGENTS.md. There's one place a convention gets written down, and every tool-specific file is a compiled view of it.
The one hard constraint on this compilation step: it must never clobber what a developer already wrote by hand. If a repo has custom notes in its CLAUDE.md outside baselane's managed region, those survive every update untouched. The compiler merges its managed section in and leaves the rest exactly as it found it. A standard that silently overwrites a team's own documentation isn't a standard anyone will trust twice.
None of this requires giving up per-repo differences that are real — a repo genuinely on pytest should say pytest, not pretend to be a Vitest repo because that's what the template said. The point isn't uniformity for its own sake. It's that the shape of the declaration is identical everywhere, so the differences that remain are the ones that actually matter.