Introducing nvim-beads: Manage beads in neovim
A few days ago my co-worker Bob turned me on to Beads. Beads is a step up from things like PLAN.md when managing work for coding agents, because it provides more structure, is easy for agents to parse, and provides things like progress tracking for multi-agent workflows.
I was intrigued by the setup because it seemed like a way to improve my agent’s ability to work autonomously, but I needed a way to try it out without stepping on top of some complex multi-person projects at work. I decided to use bd and a coding agent to implement a neovim plugin for managing beads.
The result is nvim-beads. Implementing this took about 106 commits over 3 hours of pairing between me and the Claude CLI. It’s written in technologies I know about but am not good at: Lua and the Neovim API. There’s no way I would have built something with this level of complexity in this environment in less than a week of good, solid work. It has tests - which I wouldn’t know how to write.
I don’t think it would have gotten built without Beads, either. The workflow of building a PLAN.md and then having an agent execute it works OK, but if the plan is large, you’re wasting a lot of context using it over and over again. Beads’ structure wastes less context on large plans, and make it easy to either blow away an agent and start again, or makes conversation compaction less of an issue. It also makes parallel agent workflows on multiple git worktrees easier to manage, because the agents can share beads state on one beads-specific branch while doing their work implementing those beads on feature branches.
I think the tech is worth trying, and this post from the author Steve Yegge is a good place to start. After that, read the best practices post.