mcpField
M
mise

mise

github.com/oakossDevelopment20120 installsUpdated 10w ago
Repository

About mise

mise is a polyglot development tool manager for developers, using a project-level mise.toml to configure tool versions, environment variables, and tasks. It brings environment and task management into one CLI and installs tools through multiple backends.

Key features

  1. 01Manage versions across languages
  2. 02Configure project-specific environment variables
  3. 03Define tasks and task dependencies
  4. 04Install tools through multiple backends
  5. 05Watch tasks and rerun on changes

Use cases

  1. 01Pin multiple runtime versions for a project
  2. 02Create reproducible development environments
  3. 03Centralize build and test task definitions
  4. 04Run project tasks in CI

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/oakoss/agent-skills --skill mise

After installing, type/misein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
configuration.md
environment-variables.md
migration.md
task-patterns.md
task-runner.md
tool-management.md

Details

From the project README

Mise

Overview

Mise is a polyglot development tool manager that handles tool versions, environment variables, and task running in a single CLI. It replaces asdf, nvm, pyenv, direnv, and Makefiles with a unified mise.toml configuration per project.

When to use: Managing multiple language runtimes per project, defining reproducible dev environments, running project tasks with dependencies, replacing scattered .nvmrc/.python-version/.tool-versions files, automating CI pipelines.

When NOT to use: Container-only workflows where all tools live in Docker images, single-language projects already well-served by their native version manager, production runtime management (mise is a dev tool).

Version Resolution Order

Mise resolves tool versions by checking these sources in priority order:

  1. MISE_<TOOL>_VERSION environment variable
  2. mise.toml in current directory
  3. mise.toml in parent directories (walks up the tree)
  4. .tool-versions file (asdf compatibility)
  5. Legacy files (.nvmrc, .python-version, .ruby-version)
  6. ~/.config/mise/config.toml (global default)

Quick Reference

PatternCommand / ConfigKey Points
Install toolsmise installReads mise.toml, installs all listed tools
Pin tool versionmise use node@22Writes to mise.toml in current directory
Pin globallymise use -g node@22Writes to ~/.config/mise/config.toml
Run a taskmise run buildRuns task defined in mise.toml
Run with argsmise run test -- --watchPasses args after -- to the task
Watch modemise watch buildRe-runs task when sources change
List tasksmise tasksShows all available tasks
Set env vars[env] section in mise.tomlPer-directory, auto-activated on cd
Load .env file_.file = ".env"Loads dotenv into environment
Extend PATH_.path = ["./bin"]Prepends directories to PATH
List installedmise lsShows all installed tool versions
Outdated toolsmise outdatedShows tools with newer versions
Upgrade toolsmise upgradeUpgrades tools to latest within constraints
Trust configmise trustTrusts mise.toml in current directory
Tool backends"npm:prettier" / "cargo:cargo-machete"Install from npm, cargo, pipx, GitHub, etc.
Task dependenciesdepends = ["lint", "test"]Prerequisite tasks run first
Incremental buildsources + outputs on taskSkips task if outputs newer than sources
Exec without activatemise exec -- node app.jsRuns command with mise-managed tools
Diagnosticsmise doctorCheck installation and config health
Prune unusedmise pruneRemove tool versions not in any config
Generate hookmise generate git-pre-commitGenerate git pre-commit hook for tasks
Env-specific config.mise.staging.tomlActivated via MISE_ENV=staging
Shims for IDEsmise settings set shims_on_path truePATH-based shims for IDE compatibility

Common Mistakes

MistakeCorrect Pattern
Using mise install node@22 without mise usemise use node@22 both installs and pins to mise.toml
Editing .tool-versions manually with miseUse mise use to update; mise.toml is preferred over .tool-versions
Forgetting mise trust on new project cloneRun mise trust to activate untrusted config files
Using depends key for task dependenciesCurrent key is depends (array), not deps
Running mise run without activating miseRun mise activate in shell profile or use mise exec
Putting secrets directly in mise.tomlUse _.file = ".env.local" and gitignore the .env file
Expecting env vars without cd-ing into projectMise activates env on directory change; use mise env to debug
Using latest version in shared projectsPin specific major versions (node = "22") for reproducibility
Defining tasks in Makefile alongside miseConsolidate all tasks in mise.toml for one tool
Missing shebang in multi-line task scriptsAdd #!/usr/bin/env bash for explicit interpreter
Not using sources/outputs for slow tasksDefine source globs for incremental skipping and watch mode
Using mise activate in non-interactive scriptsUse mise exec or eval "$(mise env)" in scripts and CI

Delegation

  • Task pattern discovery: Use Explore agent
  • Configuration review: Use Task agent
  • CI pipeline integration: Use Task agent

If the rust skill is available, delegate Rust toolchain management patterns to it. If the python-uv skill is available, delegate Python version and virtual environment patterns to it. If the github-actions skill is available, delegate CI workflow patterns to it. If the docker skill is available, delegate containerized workflow patterns to it. If the pino-logging skill is available, delegate logging configuration patterns to it. If the sentry skill is available, delegate error monitoring setup patterns to it.

References

Comments

Markdown supported