A control plane for AI coding tools
One source of truth.
Many agents.
Every editor and CLI brought its own dotfile. AGENTS.md,
CLAUDE.md, .cursor/rules, .opencode,
.mcp.json. BetterBaseline reads them all, tells you what
you've actually got, and quietly keeps them in line.
What bb sees.
Run bb list in a repo and it walks the tree once,
cataloguing every agentic file every supported tool would pick up.
No daemons, no project config to write first.
$ bb list BetterBaseline — detected metadata /Users/you/project Claude Code (4 files) config .claude/settings.json skill .claude/skills/review.md mcp .mcp.json instructions CLAUDE.md OpenCode (2 files) skill .opencode/skills/example.md config opencode.json AGENTS.md (cross-tool) (1 file) instructions AGENTS.md Not detected: Cursor, Aider, Continue
Tools it speaks.
Each adapter knows the files a given tool actually reads, so detection matches the tool's real behaviour — not a guess from a filename.
- Claude Code CLAUDE.md · .claude/** · .mcp.json
- OpenCode opencode.json · .opencode/**
- Cursor .cursor/rules/**.mdc · .cursorrules
- Aider CONVENTIONS.md · .aider.conf.yml
- Continue .continue/config.*
- AGENTS.md AGENTS.md · GEMINI.md
Why baseline.
-
See what each tool will actually load
Stop spelunking through six dotfiles to remember which instructions a teammate's editor will see.
-
Validate before the agent misbehaves
bb validateflags missing references, broken skill manifests, and drift between cross-tool files. -
Keep one shared baseline
Write your conventions once. Project the same rules into the formats each tool expects, instead of copy-pasting six times.
How to start.
# Requires Go 1.24+ $ git clone https://codeberg.org/whirlwin/better-baseline $ cd better-baseline/cli $ go build -o bb ./cmd/bb $ ./bb list
Status: early preview.
The Go rewrite ships bb list and bb validate;
the other subcommands still live in the TypeScript reference under
src/.
Ethos
“Your agent files are configuration. Treat them like the rest of your config — readable, validated, version-controlled, shared.” BetterBaseline · design notes
The small print.
License
MIT. Use it anywhere, ship it anywhere.
Runtime
Single Go binary. No daemon, no server.
Telemetry
None. bb never phones home.
Tools
Adapters live in one file — adding a new one is a small patch, not a fork.