prompt engineering peaked at "bro, wtf"

Every agent needs a bro.

It started as a plugin. Now it's a system: one CLI, a plugin for every agent, hooks that gate, skills that teach, connectors to everything you run. Your agent plans, delegates, ships, gets reviewed โ€” and stops repeating the same mistake.

$ /plugin marketplace add ThePlenkov/bro
$ /plugin install bro@bro
your agent ยท ~/app ยท bro plugin on

the queue is the plan. specs before code, stacks before chaos.

โ””SessionStart ยท bro: ready queue waiting ยท a merged PR still owes review debt
>what now, bro?
โ—Bash(bro flow next)
โ””โ†’ claimed "cache the avatar endpoint"
โ”” loop: implement โ†’ PR โ†’ bro review act merge โ†’ close โ†’ bro flow next
โ—On it. No "shall I proceed?" โ€” the queue is the plan.
>and when I sleep?
โ—Bash(bro flow loop --label backend --max 5)
โ””claim โ†’ worktree โ†’ agent โ†’ gate โ†’ close โ†’ repeat
โ—Scoped to backend. The rest of the queue stays untouched.

real commands, dramatized agents.

The system

  1. clibro

    the mechanics your prompts kept forgetting. one command, one verdict.

  2. pluginsevery agent

    Claude, Codex, Cursor, Devin, OpenCode, Kilo, pi โ€” same bro inside.

  3. hooksthe lifecycle

    rehydrate on start, nudge on prompt, gate the stop. always fail-open.

  4. skillsthe policy

    thin wrappers: when to call bro, never how. the how lives in code.

  5. connectorsyour systems

    tasks, reviews, agents, models, events โ€” beads, GitHub, GitLab, Jira, tmux, Gas City, ACP.

bro writes bro

bd readybro flow nextPRbro review actmergebro review debtbro self retrospectbro self learn

bro is built with bro. Agents claim beads, ship through the act gate, sweep their own review debt, and turn retros into the next beads โ€” a hand-rolled script today is a bro command next week. The debt ledger is public.

Not another orchestrator

Fine, it orchestrates now. Still no swarm by default, no token bonfire. Your agent keeps its own session โ€” bro hooks into its lifecycle and keeps it honest. When you do want many agents, one facade spawns them โ€” native processes, tmux panes, Gas City, ACP providers โ€” under a fleet cap, and they reach you through a mailbox, not a wait loop. Long waits go to a background shell โ€” bro review act wait, bro review watch โ€” not even a subagent: zero tokens while the gate settles, and your agent keeps working. Gates, not loops.

The whole vocabulary

planning

bro next
what now? bro picks. you ship.
bro spec
spec before code. drift is debt, not a surprise.
bro stack
PRs on PRs. bro rebases the tower.
bro query
GitHub, GitLab, Jira โ€” one plan, one answer.

orchestration

bro loop
fine, bro drives. you review.
bro convoy
a molecule of steps, run to the end.
bro agents
spawn, respawn, stop, prune. one facade, every backend.
bro fleet
who's alive, who's lost, who's over the cap.
bro notify
write, don't wait. lands on the next tool call.
bro drive
unowned review threads get a fixer. merged only on green.
bro watch
one heartbeat. run it in the background, keep working.

review

bro act
done? prove it. threads, checks, mergeable.
bro debt
merged is not done. the ledger remembers.
bro judge
a calibrated verdict per thread. shadow until it earns trust.
bro guard
house rules as config. fire on the hook, not on hope.

self-reflection

bro wtf
log the frustration. verbatim. with receipts.
bro retrospect
every wtf owes a retro. every retro owes a task.
bro drill
go deeper. you must come back with a result.
bro learn
fool me once. the lesson fires next time, at the trigger.

plumbing

bro status
the whole board in one read. bro fleet serve puts it on HTTP.
bro work
one worktree per agent. no checkout fights.
bro plugins
wire bro into OpenCode, Kilo, pi.
bro doctor
what's broken in your setup, before an agent finds out.
bro sync
ledgers on a data ref, not in your diffs.
bro sweep
closed beads: harvested, archived, pruned.