Plan once. Build across every repo.
Batman drafts one plan across the repos you choose, files scoped tasks in each repo, and the fleet picks them up through the normal queue.
One request becomes one pull request per repo.
The diagram below shows what Batman keeps track of. Each repo gets its own task, Lucius picks it up on the next run, and each pull request merges on its own.
A plan, then a task per repo, then the work.
Batman reads one big feature request, drafts the plan, and posts it to Slack for approval. You react with the agreed emoji. Batman then files scoped tasks in the right repos. Lucius and the rest of the fleet claim those tasks through the normal queue, with the same worktree, spend, review, and merge gates as any other run.
The plan Batman drafts
A task it files in one repo
One label per stage. No database.
The same GitHub labels as a single-repo run, plus one extra label that ties each task back to the plan it came from.
agent:large-feature You add this to a feature request. Batman picks it up, drafts a plan, and posts it to Slack for approval.
bundle:<slug> Added to every task Batman files, so each one points back to the plan it belongs to.
agent:implement Each task starts with this label. Lucius can claim repo-sized tasks independently, each in its own worktree.
agent:done Added to a task when its pull request merges. You can use the completed tasks to close the parent feature request with a clear trail.
Test the architect before you spend anything.
Batman never files tasks without your approval. A dry run checks the local wiring without touching GitHub, Slack, an LLM, or your repos.