I had a backlog of specs ready to build, a Claude subscription with hours to spare, and between the two: me. Forgetting to press go.
The fix turned out to be... a kanban board. Yes, really. A kanban board for Claude Code and my other coding agents, made from the notes, tasks and labels I already had in Vist.
It started with curiosity, as these things do. I've been wondering for a while how far I can push the loop between my notes and my coding agent without losing track of what's going on, and without giving up the final say on what gets merged. (Not "let the AI build my startup while I sleep". I'm not that brave.)
I was the bottleneck
My routine looked very productive. On paper. I'd think a feature through with an assistant, write a plan note, create a task and link the two. Sometimes I'd only get as far as a placeholder task and half a spec, to pick up later.
Then I wouldn't pick it up. Or I'd remember on a Thursday evening, open Claude Code, and spend the first ten minutes looking for the note with the spec in it. Again.
Meanwhile Claude gives me a five-hour usage window, plus a weekly counter. The weekly one I rarely hit. The five-hour one is what stops me. Unused window? Gone. Paid for, not used. Sigh.
The agent wasn't the slow part. I was.
The loop built the board
Here's the weird bit, so let me get it out of the way. The board was built by the pipeline it now shows... One plan note, split into three phases with their own acceptance criteria. Four pull requests from Claude Code, all on agent/ branches, and I reviewed and merged all four on 12 October.
Halfway through I changed my mind about one thing: the board should be a toggle in Settings, not a button on the tasks page. I wrote that into the plan note, and the next phase picked it up. Bootstrapping is weird.
Bonus: while planning, an agent found a bug in Vist's own MCP label filter that could have wiped labels. Claude Code fixed it first, before any of the board work. Thanks, agent!
Notes, tasks and one label
I didn't want yet another tool. I build a notes app; the irony would be too much. No queue service, no orchestration dashboard, no extra account to keep in sync. Vist already has notes, tasks, labels and an MCP server, and Claude Code can use all of them. So this is MCP task management for AI agents without an extra product: just a convention on top of what's there.
- A plan is a Vist note: goal, scope, approach, and acceptance criteria that can actually be tested.
- Each plan gets a task linked to it, with a
repo:label so the agent knows where to work. - The stage lives in one
agent:*label on the task.
agent:idea → agent:ready → agent:in-progress → agent:pr-open
→ agent:needs-review
→ agent:blocked
→ completed (after I merge)
Two rules matter more than the rest. Only I set agent:ready. And the agent opens pull requests but never merges them. Completing the task after the merge is mine too. That's where I stay the boss. Middle management, but still.
Why labels and not a status field? Through MCP, a Vist task is either incomplete or completed. Labels were already there, every agent can read them, and they're easy to swap. Not glamorous, but it works.
/vist-next: one task, one PR
The agent side is a Claude Code command called /vist-next. It's literally a Markdown file. No framework, no SDK. Each run it takes the top of my Claude Code backlog in Vist:
- checks whether it was halfway through something, and resumes that first
- picks one
agent:readytask, highest priority first, skipping anything that depends on a task that isn't done - reads the plan, and blocks the task with a reason if the acceptance criteria are missing or vague
- swaps the label to
agent:in-progressand works on a branch calledagent/<task-id>-<slug> - runs the tests, opens a PR, writes what it did in the note's Agent log, and sets
agent:pr-open,agent:needs-revieworagent:blocked
One task per run, on purpose. If it hits a usage limit it stops without touching labels, and the next run carries on. I always start with /vist-next dry-run, which tells me what it would do and changes nothing.
Then I wanted to see it
Once tasks started moving without me, the list view wasn't enough. Six labels across a dozen tasks in a flat list? My eyes gave up. I wanted to see what's waiting for me, what the agent is working on, and why something got stuck.
So Vist's board view now has label boards next to the old status board (release note). The Agent pipeline board has one column per stage, and each card shows:
- the repo, as a chip
- the PR link, and whether it's open, draft, merged or closed
- when the agent last wrote to the log, and what it did
- the blocked reason, if there is one
- a Stale badge if a task has been in progress for more than six hours without a log entry
None of this needs a GitHub integration. It comes from the Agent log in the plan note, which the agent writes anyway. When the agent swaps a label through MCP or the CLI, the board refreshes by itself. I can also drag a card, or use the Move to… menu, and the label swaps. Boom.
What isn't done yet
The part that really takes me out of the way is running /vist-next on a schedule, every couple of hours, so ready tasks get picked up whether I remember or not. That's what I'm setting up next. It isn't running yet. Unattended runs need Claude Code's permissions set up so a run never stops to ask, and I'm not letting it loose overnight until that's solid.
Until then I start runs by hand. It's one command now, though, and the board tells me when it's worth running.
The board shipped in Vist 2.0, together with steps and Markdown notes on tasks. Those have their own docs page.
Before you copy this
- The plan has to be good. Vague acceptance criteria get the task blocked, which is the right outcome but not a fun one.
- One
agent:*label per task. Everything else on the task is left alone. - The board is desktop and tablet only.
- PR state on a card is what the agent logged, not a live check against GitHub.
Minimal on purpose
No extra tool, just notes, tasks and a coding harness, with a board to look at them. If you try this (with Vist or without), I'd love to hear where it breaks. The labels, the board and the /vist-next steps (with the full command file to copy) are in the docs. And it works on every plan, including Free.