Working the queue
Annotations released from a board become work items. These skills are how an agent session picks them up, fixes them in the repository, and closes the loop with proof.
/vitrinka:listen
Tunes a session into a board and works its queue continuously. The session is the worker half of an audit loop: someone annotates screens, you fix each one in this repository, attach visual proof, and go back to listening.
- Armed on the best rung the harness offers — a background Monitor on
vitrinka work watchin Claude Code (one line per new annotation, each line re-invokes the session), thevitrinka work listenhost for Codex, Gemini CLI and OpenCode, or one scoped drain that ends on idle — listening. - Idle costs nothing — while the queue is quiet it prints nothing and burns no context. Silence means healthy and idle, indefinitely.
- Auto-scoped — with no board argument it listens for exactly this repo and branch.
This replaced an in-model loop that had two fatal flaws: a finished turn cannot re-invoke itself over MCP, so the session that published the board never heard new work — and a looping session burned a context entry per idle heartbeat until it died by compaction.
/vitrinka:resolve
For an accumulated backlog rather than a live queue: someone swept the app, dropped dozens of annotations, and handed over the whole set.
- Groups before it fixes — a 65-item board is usually 8–12 real workstreams; five items asking for the same component are one rollout, not five fixes.
- One call for the whole picture — fetching each annotation individually burns tens of thousands of tokens on briefs you mostly do not need.
- Every item ends with proof and a status — a fixed annotation the board still shows as open is unfinished work.
/vitrinka:review
Reviews a board's screens — the whole board or one journey — and files findings, never fixes. By default the session is the reviewer: it reads each screen against the team's review brief (vitrinka review brief) and files one staged annotate batch. With eve (/vitrinka:review acme-audit checkout eve), Eve's judge and independent auditor review server-side and the session re-verifies each finding against the code. Findings wait for your Accept or Dismiss on the board; /vitrinka:resolve fixes the accepted ones — review toolkit.
/vitrinka:pair
Live pairing during user testing. The session supervises the app under test through vitrinka qa pair, listens for the recorder's ⌖ snaps, and fixes each bug while the tester keeps testing — then restarts the supervised stacks so the fix appears in the running app immediately.
When dispatch does not arrive
Board interactions are staged and released as a batch. If that release never reaches the session — the monitor was not armed, the lease went to another session, the wake line was lost — nothing is lost: get {kind: "questions", board} is the durable record of question answers and list {kind: "work", board | project+branch, status: "open"} of dispatched annotation work. Read them directly; neither arms a listener.