Lunamux · Claude Code · Lunicle

A column that drains itself overnight.

Two skills. /watch-ai-dev arms a loop; /ai-dev runs one cycle of it. Every cycle empties the board's Ready for agent development column into reviewed pull requests — claimed, branched, built, browser-verified, opened by a bot, reviewed by a second agent, and mailed to you while you sleep.

Nothing here is speculative. The case study further down is one real ticket, LNL-185, going the whole way round — including the lap it had to do twice.

/watch-ai-dev /ai-dev cycle lock frozen snapshot 1 worktree · 1 port · 1 subagent rework, not redo
CLAUDE CODE — lunicle/main
The protocol

One sweep, message by message

Six participants. The one thing worth carrying away: only the main agent talks to the board. Subagents cannot — the Lunicle MCP is registered per project directory, and a sibling worktree is not one of them. So everything a subagent needs is written into its brief before it starts, and everything it learns comes back as four lines of text.

Press play, or click any message. Steps with a camera jump to the real screenshot.

The round trip

Four columns, and one arrow back

A ticket only ever moves under the main agent's hand, and only between these four places. The arrow back on the left is the interesting one: a ticket you push back into Ready for agent development with a comment is reworked on its existing pull request, never reimplemented from scratch.

Why it doesn't eat itself

Eight rules doing the load-bearing work

Sample case · LNL-185

“Missing padding in profile dialog”

A two-line ticket with a screenshot attached, filed at 00:17. By 00:29 it had a pull request; by 00:34 a review with two findings. The maintainer disagreed with nothing, said so, and pushed it back — and the next sweep answered the review on the same branch rather than starting over. Twelve frames, one ticket, both laps.

What you are left holding

The human keeps exactly one job

Deciding. The automation writes the code, opens the pull request, reviews it, files the findings inline, and mails you a summary — but it cannot approve anything. The pull request is filed by soderbjorn-agent[bot] precisely so that a human account is still free to be the approving reviewer, and GitHub keeps Merging is blocked up until one is.

“I agree with the code review, so please fix it accordingly.” — the entire maintainer input for the second lap of LNL-185.