bb-lanes
AGENTS.md2 starsChanged 26 days agoMITView on GitHub
This file is for every agent and person who works on bb Lanes. Read it before you change anything. SPEC.md describes what we are building. This file describes how we think while we build it. bb Lanes is an opinionated swarm manager for bb. It shows every agent thread as a lane on a live timeline, so you can see at a glance: It should just work the first time someone opens it. There is no setup step and nothing…
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,774 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
The file
We split this AGENTS.md into the rules it gives an agent
12 rules. About 0 are common, 9 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 46
Aim for clarity: Use the names bb already uses: thread, project, section, machine, turn.
- Distinctive: line 53
Decide and move on: When two options are close, pick one, write down why in the commit message, and keep going.
- Distinctive: line 60
Scope small and show the work: Prefer small commits and small pull requests.
- Distinctive: line 94
One density, one look: Add a size or theme option only after we have failed to find one layout that works everywhere.
- Distinctive: line 104
Every interactive element needs hover, press, focus, and disabled states, and all of them must be visible.
- Distinctive: line 106
Every action can be done with the keyboard.
- Very specific: line 112
Check your work in real bb with real data before you call it done.
- Distinctive: line 134
Write code that reads like the code around it.
- Very specific: line 137
Before you report, run npx tsc --noEmit, npx vitest run, and bb plugin build.
- Distinctive: line 146
Commit in small, logical steps.
- Distinctive: line 148
Do not push to a remote, install the plugin, or spawn threads unless the coordinator asks you to.
- Very specific: line 150
When you are unsure, make the decision that best fits this file, write down why, and keep going.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AGENTS.md
This file is for every agent and person who works on bb Lanes. Read it before
you change anything. SPEC.md describes what we are building. This file
describes how we think while we build it.
What we are building
bb Lanes is an opinionated swarm manager for bb. It shows every agent thread as a lane on a live timeline, so you can see at a glance:
- who is working
- who is waiting for you
- who failed
- how work moved between threads
It should just work the first time someone opens it. There is no setup step and nothing to configure before it is useful.
The look and feel come from the affectUI Agent Lanes component
(https://www.affectui.com/components/agent-lanes). It is a paid component, so
its source is not in this repository. Maintainers with a licence keep a local
copy in reference/affectui-agent-lanes/, which git ignores, and can run it
next to ours (see docs/fidelity.md). Where upstream has an answer,
we copy it exactly. Where upstream has no answer, we extend it in the same
style, so the new parts look like they were made by the same hand.
Where the inspiration comes from
We follow the Linear Method (https://linear.app/method/introduction). Each principle below is followed by what it means for this plugin.
Build for the people who use it. The person using Lanes is running a swarm of agents and wants to know where to look next. Every screen should answer that question. Do not add views that exist to produce reports about the swarm.
Purpose-built. Lanes does one job, which is watching and steering a swarm. We make the decisions so the user does not have to. When you are tempted to add a setting, choose the best behavior and ship that instead. A setting is a decision we failed to make.
Simple first, then powerful. The first view must be clear with no explanation. Power comes from keyboard paths, hover detail, and depth that you find as you use it. It does not come from menus of options.
Aim for clarity. Use the names bb already uses: thread, project, section, machine, turn. Do not invent new terms. Copy is short and literal, e.g., "Needs you", "Idle", "now".
Say no to busy work. Lanes should never ask the user to maintain it. Grouping, ordering, and filtering are automatic and sensible by default.
Decide and move on. When two options are close, pick one, write down why in the commit message, and keep going. A good decision now is better than a perfect decision later.
Create momentum. Ship in small, working steps. Every commit should leave
main building, type checking, and passing its tests.
Scope small and show the work. Prefer small commits and small pull requests. Show progress with screenshots of the real thing, not with descriptions of it.
Our opinions
These are decisions, not defaults. Change one only when the user asks, and record the change here.
- Hand-off lines have one fixed style per kind. Lines leave the sender's
lane at the moment inside the reply where the hand-off happened. They land
on the start of the target block. The styles are in
HANDOFF_LINESinshared/view.ts:- Created (a thread started another) is red, solid, and ends in a filled circle.
- Messaged (one agent told another) is blue, dashed, and ends in an arrow.
- Ended (a child finished or failed and bb told its parent) is red, solid, and ends in an open circle.
- Forked is neutral, dotted, and ends in an arrow.
- None of the lines has a start cap.
- A confirmed input has a hollow dot at its turn's start. Blue means a user initiated it; red means bb initiated it. These dots have no incoming line. An incoming hand-off keeps its existing marker instead of getting a second dot. Uncertain origins stay unmarked. Tool icons describe work within the turn; their group has one tooltip naming the tools.
- Threads open beside Lanes by default. The keyboard help includes a saved "Open to the side by default" checkbox, shared by all Lanes panes. Click or Enter follows that preference on every thread link; ⌘/Ctrl-click or ⌘/Ctrl-Enter reverses it.
- The default view shows active lanes, grouped by project. Active means the thread has a turn in the window or is busy now. Needs you comes first, then running, then the most recent activity.
- Time moves on its own. The window follows the clock unless you scroll back. Scrolling back to now resumes live mode.
- One density, one look. Add a size or theme option only after we have failed to find one layout that works everywhere.
Standards
Design and interaction
- Fidelity to upstream comes first. Match its sizes, spacing, type, colors,
shadows, and motion timings exactly. Measure them in the browser with
getComputedStyleand do not guess from screenshots. - Every interactive element needs hover, press, focus, and disabled states, and all of them must be visible.
- Every action can be done with the keyboard. Focus is never lost, and Esc always returns focus to where it came from.
- Motion only explains a change. It is never decoration. Respect
prefers-reduced-motion. - Light and dark mode both need to look right. Check both before you report that you are done.
- Check your work in real bb with real data before you call it done. The QA
scripts in
scripts/qa/take screenshots of the live pane. - This repository is public. Never commit a screenshot or fixture that shows
real threads, projects, or messages. Live screenshots go to
docs/fidelity/live/, which git ignores. Use the harness for anything committed. Never commit third-party source, including the upstream component.
Robustness
- Lanes must keep working when bb restarts, when a thread is deleted, when the connection drops, or when history is large. Treat every value from storage or from the network as untrusted until it is parsed.
- A failure in one thread must never stop the others from showing.
- Fast is a feature. Live sliding and panning run at 60 frames per second with 200 lanes. The window query answers in under 50 milliseconds.
Code
- The contracts in
shared/are the boundary between the server, the shell, and the timeline. Change them on purpose, keep the change small, and say so in your report. - Write code that reads like the code around it. Use clear names. Comment only where the reason is not obvious. Leave no dead code and no TODOs in shipped paths.
- Before you report, run
npx tsc --noEmit,npx vitest run, andbb plugin build. All three must pass.
How we work
- The coordinator thread owns
main, the contracts, and the installed copy of the plugin. Workers build on their own git worktree branch and report to the coordinator withbb thread tell <coordinator-id> --message-file <file>. - Stay inside the paths you own. The ownership table is in
SPEC.md. - Commit in small, logical steps. Each commit message explains why the change was made.
- Do not push to a remote, install the plugin, or spawn threads unless the coordinator asks you to.
- When you are unsure, make the decision that best fits this file, write down
why, and keep going. Ask only when the question is about what the user
wants and you cannot answer it from this file or from
SPEC.md.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

