Plans
Commands that take structured input share one envelope: a TOML file with
a kind that routes to the owning plugin.
kind = "retrospect" # routes to the retrospect plugin
[retro]what = "the deploy broke" # required — one linewhy = "CI ran a different Node than prod"scope = "project"
[[actions]]title = "pin the Node version in CI"sink = "workaround" # backlog | memory | agentic-documents | …bro run <plan.toml>
Section titled “bro run <plan.toml>”- Parses the TOML document
- Reads
kind→ finds the plugin by name - Validates the payload against the plugin’s
planSchema - Executes via the plugin’s
runPlan
Unknown kinds are rejected with the list of known ones; a plugin without
planSchema/runPlan says so instead of guessing. Validation is
aggregate — every problem in the file is reported at once, not one error
per run.
bro retrospect schema prints the commented template for its kind.
retrospect
Section titled “retrospect”Retro plans — [retro] what/why/scope/wtf/evidence plus [[actions]]
fanned out to prevention beads by sink.
Batch thread verdicts on the open PR — the fix/reject/defer triage as
one plan instead of N act resolve/reply calls:
kind = "act"pr = 66 # optional — names the PR in defer beads
[[threads]]thread_id = "PRRT_..."action = "resolve" # resolve | reply | defercomment = "fixed in abc123" # required for reply; optional elsewhere
[[threads]]thread_id = "PRRT_..."action = "defer" # → debt bead + reply + resolvetitle = "the bead's title" # required for deferdefer creates a debt-labeled bead linked by --external-ref to the
thread — if the bead can’t be created, the thread is not resolved.
A failed verdict doesn’t abort the rest; failures are listed at the end.
Batch triage verdicts for the review-debt ledger — replaces N
interactive bro debt set calls:
kind = "debt"
[[verdicts]]thread_id = "PRRT_..."status = "wontfix" # open|claimed|done|wontfix|duplicatenotes = "infra flake, not ours"
[[verdicts]]thread_id = "PRRT_..."status = "done"fix_pr = 58 # the PR that landed the fixWhy TOML
Section titled “Why TOML”Diff-friendly, comment-friendly, and forgiving for agents writing it by hand — a plan is usually drafted in chat, pasted to a file, and run.