Claude Code mod
The opt-in vitrinka mod keeps the session's board, epic and task in Claude Code's prompt footer and opens them, the work tree, your brainstorms and both inbox lanes with /vt, without spending a model turn.
What it draws
The vitrinka-mod plugin is a Claude Code mod: it draws on Claude Code's own surface instead of teaching the agent anything, so it ships no skill and adds nothing to the MCP catalogue. It reads the files the vitrinka CLI keeps for the session and draws from them; the model never prints a link for it, and nothing it shows costs a token.
- The compass — the session's board, epic and task in the prompt footer as
◆ board · ▲ epic · ● task. Each chip is a link to the exact address the server returned. A narrow terminal drops the epic, then the board. An empty or stale slot says why — not bound, signed out, unreachable, as of a time — and names its fix. - The
/vtpane — the work tree around the task (epic, story and task, each with its state and who holds it), your brainstorms with their open, staged, sent and decided counts and a way into Studio, the two inbox lanes kept apart (Needs you and Ready for this session), the bound sprint, the todos that are ripe and the task's pull requests with their checks. It refreshes on a tick while it is open and shows its age. - The hand-back — the block a hand-back prints is drawn folded, with Raw to unfold the whole text; the stored record is unchanged.
The footer draws in the terminal and the desktop app; the pane draws on every surface.
The /vt verbs
| Verb | What it does |
|---|---|
/vt | Opens the pane. |
/vt task, /vt epic, /vt board | Opens that slot's address in the browser. |
/vt copy task (or epic, board) | Copies the address. |
/vt board <board> | Picks the session's board, by its slug or address. Your pick outranks the board the brainstorming skill declares, and a clash between them is drawn. |
/vt board clear | Drops your pick. |
/vt refresh | Reads everything again. |
A verb answers with a toast and leaves no row in the transcript, so the model reads nothing and no turn is spent.
Installing it
The mod is opt-in and Claude Code only. Enable it like a module — mod is its name there, and the plugin name works too:
vitrinka setup modules enable mod # installs vitrinka-mod@kit
vitrinka setup modules disable mod # removes itvitrinka setup modules list shows it beside the modules, vitrinka doctor reports it like any plugin and vitrinka update refreshes it with the rest. Restart Claude Code sessions to load it. Two options are set from /plugin configure vitrinka-mod@kit: compass (the footer, on by default) and tickSeconds (the pane's refresh, 30 by default).
To try a working copy without installing it, load the tree for one session — plugins/mod in a checkout of the vitrinka source, plugins/vitrinka-mod in a checkout of the kit:
claude --plugin-dir plugins/modUnder managed Claude Code
Where an organization manages Claude Code, a plugin a person installs does not run hooks on Claude Code's own events — the mod's SessionStart and FileChanged. Only a plugin the organization turns on in managed settings runs them, and with allowManagedHooksOnly no person-installed plugin runs any hook at all, the PM plugin's work-loop hooks included. The recipe lists the kit and the plugins in the managed settings file (/Library/Application Support/ClaudeCode/managed-settings.json on macOS, /etc/claude-code/managed-settings.json on Linux, C:\Program Files\ClaudeCode\managed-settings.json on Windows), under their exact plugin@marketplace ids:
{
"extraKnownMarketplaces": {
"kit": { "source": { "source": "github", "repo": "henderson-tech/vitrinka-kit" } }
},
"enabledPlugins": {
"vitrinka@kit": true,
"vitrinka-pm@kit": true,
"vitrinka-mod@kit": true
}
}Without that listing the mod still works: it checks its files every 15 seconds, so the compass catches up within that window instead of the moment a file changes.
Air-gapped: a marketplace mirror
The kit is a git repository, so an estate without internet access serves it from its own git server and registers the mirror under the same name, kit; every @kit id then installs from it.
git clone --mirror https://github.com/henderson-tech/vitrinka-kit.git
git -C vitrinka-kit.git push --mirror https://git.example.internal/tools/vitrinka-kit.git
claude plugin marketplace add https://git.example.internal/tools/vitrinka-kit.git
vitrinka setup modules enable modUnder managed settings, point the kit entry at the mirror instead — "source": { "source": "git", "url": "https://git.example.internal/tools/vitrinka-kit.git" } — and strictKnownMarketplaces can keep every other source out. Refresh the mirror when a release ships, then vitrinka update brings each machine along.
The mod itself makes no network call. It reads the session's files and runs the vitrinka CLI, which reaches only the deployment it is signed in to — on an air-gapped deployment, your own.