Declare shiv packages as tool dependencies in mise.toml — with version pinning, per-project isolation, and zero setup beyond what mise already provides.
[plugins]
shiv = "https://github.com/KnickKnackLabs/vfox-shiv"
[tools]
"shiv:shimmer" = "0.0.1-alpha"
"shiv:notes" = "latest"One mise install. Plugin auto-installs from GitHub, shiv bootstraps in the background, packages clone and shim. The shiv-generated shim — with space-to-colon resolution, tab completions, and task map caching — is the binary mise puts on PATH.
The plugin is a thin adapter between mise's backend protocol and shiv's CLI. It doesn't reimplement shiv — it delegates.
mise install "shiv:shimmer@0.0.1-alpha"
│
├─ BackendListVersions
│ resolve "shimmer" → KnickKnackLabs/shimmer (via shiv sources)
│ list git tags + branch pseudo-version → ["main", "0.0.1-alpha"]
│
├─ BackendInstall
│ ensure shiv is bootstrapped (pinned to v0.5.0)
│ SHIV_PACKAGES_DIR=<install_path>/packages \
│ SHIV_BIN_DIR=<install_path>/bin \
│ mise -C <shiv> run install shimmer@v0.0.1-alpha
│
└─ BackendExecEnv
PATH += <install_path>/bin
The plugin maintains its own shiv clone at ~/.local/share/mise/shiv-backend/shiv/, pinned to v0.5.0 for reproducibility. This is separate from any user-installed shiv — the plugin's build infrastructure doesn't change unless you deliberately update it.
Version isolation comes from overriding shiv's path environment variables. Each version gets its own directory under mise's installs, so project A can pin shimmer@0.0.1-alpha while project B tracks the newest release with latest.
Git tags are listed as versions (v0.1.0 → 0.1.0). Mise's latest selector resolves to the newest listed release tag. A main pseudo-version is also listed for explicit default-branch tracking.
# See available versions
mise ls-remote shiv:shimmer
# Pin to a tag
mise use shiv:shimmer@0.0.1-alpha
# Track the newest release
mise use shiv:shimmer@latest
# Track the default branch explicitly
mise use shiv:shimmer@mainThe plugin reads package sources from ~/.config/shiv/sources/ (shared with your shiv installation) and falls back to the bundled sources.json in the bootstrapped shiv clone.
Environment variables
VFOX_SHIV_PATH Path to plugin's shiv clone
Default: ~/.local/share/mise/shiv-backend/shiv
VFOX_SHIV_REF Pinned shiv version for bootstrap
Default: v0.5.0
VFOX_SHIV_REPO Shiv repository URL
Default: https://github.com/KnickKnackLabs/shiv.git
git clone https://github.com/KnickKnackLabs/vfox-shiv.git
cd vfox-shiv && mise trust && mise install
mise run testMIT · Built with readme. Shiv gets a backend; mise gets a package manager.