Skip to content

cabinet

A cabinet is two things. It is the cupboard in the study where the tome and the instruments are kept, and it is the body of people who do the work of keeping a house in order. This repository is both.

The tome is a set of vekna rituals for pull request and issue maintenance, installed as a package and cast from any repository on GitHub or GitLab, hosted or self-hosted. A pull request left open overnight drifts: the base moves under it, CI goes red, a reviewer's questions sit unanswered. A backlog drifts too: issues pile up untyped, unsized and unlinked. The rituals do those chores, and each one is an ordinary program whose loop, branches and stopping condition are code you can read. The agent is handed one bounded piece of work at a time.

The cabinet is a Claude Code plugin marketplace of skills for the chores around a repository that are not worth a ritual: filing an issue that will still make sense in six months, cutting a release with a changelog someone can act on. They run inside the agent session you already have open.

The rituals

Each is filed under a school of magic, the way a spellbook is.

  • heal.mine, heal.pr, heal.this (Evocation): to take your pull requests as far as they go, heal.mine side by side in worktrees of their own, or with --plan-only true to see what each needs next.
  • merge (Transmutation): to merge the base into a conflicting branch.
  • ci (Abjuration): to rerun, fix or cover your branch's red CI jobs.
  • answer (Enchantment): to work through the review threads on your branch with you.
  • review (Divination): to post the quality review on your branch.
  • guide (Divination): to post the manual smoke test on a branch with nothing else to do.
  • identify (Divination): when your backlog has piled up unrefined.
  • labels, labels.heal, labels.identify (Conjuration): once, to set a project up.

Rituals has each one in full, with its flags.

The skills

plugin what it does
issues writes, types, sizes and links issues; what identify follows
release-bump cuts a release: the version, the changelog, the docs
mkdocs-site sets up a MkDocs site, or upgrades one to the standard
smoke-test writes the fifteen-minute manual check for a web or CLI change
modern-python writes Python with the newest idioms the project's floor version allows

Plugins has what each does, step by step.

Install

The tome

cabinet is not on PyPI; it installs from its releases into the repository that wants the rituals:

poetry add --group dev https://github.com/fancysnake/cabinet/releases/download/v<version>/cabinet-<version>-py3-none-any.whl

A pinned release means a cast tonight runs the rituals you read yesterday. Releases after 4.0.0 carry the wheel; for an older one, or a commit not yet released, install from the git source instead:

poetry add --group dev git+https://github.com/fancysnake/cabinet.git#<tag-or-sha>

Then a .vekna.toml names the rituals and tells them what the repository is:

# .vekna.toml
[rituals]
modules = ["cabinet.rituals"]

[cabinet]
forge = "github"                      # or "gitlab"
gate = "mise run pr-fix"

Every [cabinet] key has a default; Configuration lists them all. With that in place:

vekna cast labels
vekna cast heal.mine

The cabinet

The skills come from the marketplace in this repository; Plugins has the two commands that add it and install a skill, and what each one does.

Where to go next

  • Rituals — what each one does, its flags, and loading only some of them.
  • Configuration — the [cabinet] section, the review skill, and the remote.
  • Agents — what an agent may and may not do during a cast. Worth reading before the first unattended one.
  • Plugins — the skills, what triggers each, and what it needs.
  • Architecture — the layout, for anyone sending a patch.
  • Changelog — what each release changed.