From configure-plugin
mise runtime/tool version manager - mise.toml, backends (pipx/aqua/npm/cargo/go), tasks, env, lockfile. Use when setting up, pinning runtimes/CLI tools, or migrating from asdf/nvm/pyenv/brew/Make.
How this skill is triggered — by the user, by Claude, or both
Slash command
/configure-plugin:configure-mise [--check-only] [--fix] [--global] [--migrate <source>][--check-only] [--fix] [--global] [--migrate <source>]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Set up and audit [mise](https://mise.jdx.dev/) as the unified manager for language runtimes, CLI tools, environment variables, and project tasks. mise replaces asdf/nvm/pyenv (runtimes), `cargo install`/`brew install` (CLI binaries), and Make/just (tasks) behind one `mise.toml`.
Set up and audit mise as the unified manager for language runtimes, CLI tools, environment variables, and project tasks. mise replaces asdf/nvm/pyenv (runtimes), cargo install/brew install (CLI binaries), and Make/just (tasks) behind one mise.toml.
| Use this skill when... | Use another approach when... |
|---|---|
Setting up mise.toml to pin a project's runtimes and CLI tools | Installing one tool ad-hoc — run mise use <tool>@<ver> directly |
Picking the right backend for a tool (core / pipx: / aqua: / npm: / cargo: / go:) | The project only needs Python/JS libraries — use /configure:package-management (uv/bun) |
Migrating from .tool-versions/asdf, .nvmrc, .python-version, Homebrew, or a Makefile | Defining build/test recipes only, no version management — use /configure:justfile or /configure:makefile |
Adding [tasks], [env], secret loading, or a mise.lock for reproducible installs | Running a specific runtime version once — mise exec <tool>@<ver> -- <cmd> (see global rule mise-stale-tool-copies / dependency-management) |
| Auditing an existing mise setup for pinning, lockfile, trust, and backend correctness | Configuring CI runtime install — that consumes the mise.toml this skill produces (jdx/mise-action) |
pwdfind . -maxdepth 2 \( -name 'mise.toml' -o -name '.mise.toml' -o -path './.config/mise.toml' -o -name 'mise.local.toml' \)find . -maxdepth 1 -name 'mise.lock'find . -maxdepth 2 \( -name '.tool-versions' -o -name '.nvmrc' -o -name '.python-version' -o -name '.ruby-version' -o -name '.go-version' \)find . -maxdepth 1 \( -name 'Makefile' -o -name 'justfile' -o -name 'Brewfile' \)Parse from command arguments:
--check-only: Audit and report; make no changes (CI/review mode).--fix: Apply the recommended config without prompting for each step.--global: Target the global config (~/.config/mise/config.toml) instead of a project mise.toml.--migrate <source>: Convert an existing setup into mise.toml. Sources: asdf (.tool-versions), nvm (.nvmrc), pyenv (.python-version), brew (Brewfile CLI tools), makefile (targets → [tasks]).mise installs every tool through a backend. Picking the right one mirrors the user's tool-install priority (dependency-management rule): mise first, with the most secure/fastest backend.
| Tool kind | Backend | Syntax | Why |
|---|---|---|---|
| Language runtime | core | python = ["3.12","3.13"], node = "lts", go = "1.23", rust = "latest" | Native version switching, the reason mise exists |
| Python CLI tool | pipx: | "pipx:ruff" = "latest" | Routed through uvx (fast); set pipx.uvx = true |
| Standalone CLI binary | aqua: | "aqua:BurntSushi/ripgrep" = "latest" | Checksums + SLSA provenance + Cosign — the secure default |
| Node global | npm: | "npm:typescript-language-server" = "latest" | When no aqua entry exists |
| Rust tool (no aqua) | cargo: | "cargo:tokei" = "latest" | Builds from source; prefer aqua if available |
| Go tool (no aqua) | go: | "go:golang.org/x/tools/gopls" = "latest" | Installs via go install |
| GitHub release (no aqua) | github: | "github:starship/starship" = "latest" | Direct release-asset fetch |
Rule of thumb: runtime → core; Python CLI → pipx:; everything else → aqua: first, falling back to npm:/cargo:/go:/github: only when the aqua registry lacks the tool. Verify aqua availability at https://github.com/aquaproj/aqua-registry.
From Context, classify the repo:
.tool-versions, .nvmrc, .python-version) → migration candidate.mise.toml → audit mode (Step 5).mise.toml.Detect which runtimes the project already implies: pyproject.toml/.python-version → Python; package.json/.nvmrc → Node; go.mod → Go; Cargo.toml → Rust.
| Target | File | Committed? |
|---|---|---|
| Project (default) | mise.toml at repo root | yes — pins the team to the same versions |
| Project, local overrides | mise.local.toml | no — add to .gitignore |
Global (--global) | ~/.config/mise/config.toml | n/a (dotfiles) |
Prefer the modern mise.toml name over legacy .mise.toml. Use mise.local.toml for machine-specific or secret-bearing overrides and ensure it is gitignored.
[tools] blockPin runtimes the project needs, then add CLI tools by backend (table above). Pin as loosely as safe: python = "3.13" (allow patch upgrades) for libraries; exact pins (opentofu = "1.11.2") for tools where reproducibility matters. Detect latest stable versions with WebSearch/mise ls-remote <tool> before writing.
Minimal example:
[tools]
python = "3.13"
node = "lts"
"pipx:ruff" = "latest"
"pipx:pre-commit" = "latest"
"aqua:jqlang/jq" = "latest"
"aqua:cli/cli" = "latest" # gh
[env], [tasks], [settings] as needed[env] — project env vars and PATH; load secrets from a gitignored file with _.file = ".env.local" (never inline secrets). See REFERENCE.md.[tasks] — migrate Makefile/just recipes here so mise run <task> replaces make <target>. Supports depends, alias, multi-line run. See REFERENCE.md for the full grammar.[settings] — set pipx.uvx = true whenever any pipx: tool is present (works around jdx/mise#7477); experimental = true for newer backends; legacy_version_file = true to keep honoring .tool-versions/.nvmrc during migration.--check-only)Report a compliance table:
mise Configuration Report
=========================
Config file mise.toml [PRESENT | MISSING]
Runtimes pinned python, node [PINNED | UNPINNED]
CLI backends aqua / pipx [SECURE | cargo-from-source | mixed]
pipx.uvx setting true [SET | MISSING (pipx tools present)]
Lockfile mise.lock [COMMITTED | MISSING]
Local overrides mise.local.toml [GITIGNORED | TRACKED ⚠ | n/a]
Trust trusted [TRUSTED | UNTRUSTED]
Legacy files remaining .tool-versions [MIGRATED | STILL PRESENT]
Overall: [N issues]
Checks: every runtime pinned; CLI tools prefer aqua: over cargo:/source builds; pipx.uvx = true present if any pipx: tool; mise.lock committed; mise.local.toml gitignored if present; config trusted (mise trust). If --check-only, stop here.
--fix or on confirmation)mise trust the config (required before mise will use a new/edited file).mise install to materialize tools.mise lock to generate/refresh mise.lock, then track it (git add mise.lock).mise.local.toml exists, ensure .gitignore covers it.mise doctor to verify the setup is healthy.--migrate <source>)| Source | Action |
|---|---|
asdf | Read .tool-versions, map each line to a [tools] entry, keep legacy_version_file = true, then remove .tool-versions once verified. asdf plugin names usually match mise core/aqua names. |
nvm | .nvmrc → node = "<ver>". |
pyenv | .python-version → python = "<ver>" (a list if multiple). |
brew | Move CLI tools (not casks/services/build-deps) from Brewfile to aqua:/core backends; leave GUI apps, fonts, daemons, and compilers in Homebrew. |
makefile | Convert each target to a [tasks.<name>] with run; map prerequisites to depends. See REFERENCE.md task grammar. |
Always verify with mise install && mise doctor before deleting the source file. See REFERENCE.md for per-source mapping tables and worked examples.
A committed mise.toml + mise.lock is consumed in CI by jdx/mise-action (mise install then mise run <task>), giving local↔CI parity (the local-ci-parity rule). Point the user to /configure:ci-workflows rather than writing the workflow here.
| Context | Command |
|---|---|
| Audit only | /configure:mise --check-only |
| Auto-configure | /configure:mise --fix |
| List installed tools (JSON) | mise ls --json |
| Show active versions | mise current |
| Available versions of a tool | mise ls-remote <tool> |
| Show outdated | mise outdated |
| Diagnose | mise doctor |
| Generate lockfile | mise lock |
| Flag | Description |
|---|---|
--check-only | Report status without modifying files |
--fix | Apply the recommended config without per-step prompts |
--global | Target ~/.config/mise/config.toml instead of project mise.toml |
--migrate <source> | Convert asdf/nvm/pyenv/brew/makefile into mise.toml |
# Audit an existing setup
/configure:mise --check-only
# Set up mise.toml for the current project
/configure:mise
# Auto-configure, no prompts
/configure:mise --fix
# Migrate an asdf project
/configure:mise --migrate asdf
# Convert Makefile targets into mise tasks
/configure:mise --migrate makefile
curl https://mise.run | sh) or note it is itself a Homebrew bootstrap tool; do not block the audit.mise trust after writing.pipx: tool fails to resolve: ensure uv is a mise-managed tool and pipx.uvx = true is set (jdx/mise#7477).org/repo name must match an aqua-registry entry; fall back to github:/cargo:/go: or core.~/.default-npm-packages re-seeding — see the global mise-stale-tool-copies rule.libatomic.so.1; gate node to platforms that have it (chezmoi-style os guard) or pin an older line./configure:package-management — uv/bun for Python/JS libraries (mise installs the runtimes; uv/bun manage deps)/configure:justfile, /configure:makefile — task runners mise's [tasks] can replace/configure:ci-workflows — CI that consumes mise.toml via jdx/mise-actiondependency-management (tool-install priority, mise exec vs mise use), mise-stale-tool-copies (per-version cleanup)[tasks]/[env]/[settings] grammar, backend cheat-sheet, migration mapping tablesnpx claudepluginhub laurigates/claude-plugins --plugin configure-pluginGenerates production-ready mise.toml configurations for local development and CI/CD, standardizing runtimes and replacing legacy version managers like asdf, nvm, and pyenv.
Guides on using mise to manage dev tool versions, environment variables, and project tasks. Activates when configuring reproducible development environments.