Learn-skills.dev mise

Configure and use mise for dev tool management, environment variables, and task running. Use this skill when the user wants to set up project tooling with mise, manage tool versions (node, python, go, etc.), define tasks in mise.toml, configure environment variables per project, or asks about mise configuration, backends, hooks, or CLI commands.

install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/aaronflorey/agent-skills/mise" ~/.claude/skills/neversight-learn-skills-dev-mise && rm -rf "$T"
manifest: data/skills-md/aaronflorey/agent-skills/mise/SKILL.md
source content

Mise

Mise is a polyglot tool version manager and task runner. It manages dev tools, environment variables, and tasks for projects.

Core Concepts

Configuration:

mise.toml
in project root (or
.mise.toml
,
.config/mise/config.toml
). Config is hierarchical - child directories override parent settings.

Tools: Defined in

[tools]
section. Mise installs and activates correct versions per-directory.

Environment: Defined in

[env]
section. Set project-specific env vars that activate when entering directory.

Tasks: Defined in

[tasks]
section or as standalone scripts in
mise-tasks/
directory.

Quick Reference

Basic mise.toml structure:

[tools]
node = "22"
python = "3.12"

[env]
NODE_ENV = "development"

[tasks.build]
run = "npm run build"

Essential Commands

CommandDescription
mise use node@22
Install and set tool version in mise.toml
mise use -g node@22
Set global tool version
mise install
Install all tools from config
mise run <task>
Run a task
mise x -- <cmd>
Execute command with mise environment
mise ls
List installed tools
mise doctor
Diagnose mise setup

Tool Backends

Tools can be installed from various backends:

  • Core:
    node
    ,
    python
    ,
    go
    ,
    ruby
    (built-in)
  • npm:
    npm:prettier
    ,
    npm:eslint
  • pipx:
    pipx:black
    ,
    pipx:ruff
  • cargo:
    cargo:ripgrep
  • github:
    github:BurntSushi/ripgrep
  • aqua:
    aqua:hashicorp/terraform

When to Consult References

For detailed information, read the appropriate reference file:

  • Configuration options (tool options, env directives, settings):
    references/configuration.md
  • Task definition (toml tasks, file tasks, arguments, dependencies):
    references/tasks.md
  • CLI commands (all command flags and examples):
    references/cli.md
  • Hooks and advanced features:
    references/advanced.md

Common Patterns

Project with Node.js and Python

[tools]
node = "lts"
python = "3.12"

[env]
NODE_ENV = "development"
PYTHONDONTWRITEBYTECODE = "1"

[tasks.dev]
run = "npm run dev"

[tasks.test]
run = ["npm test", "pytest"]

Task with Dependencies

[tasks.build]
run = "npm run build"
sources = ["src/**/*.ts"]
outputs = ["dist/**/*.js"]

[tasks.deploy]
depends = ["build", "test"]
run = "./scripts/deploy.sh"

File Task (mise-tasks/build)

#!/usr/bin/env bash
#MISE description="Build the project"
#MISE depends=["lint"]
npm run build

Environment from .env file

[env]
_.file = ".env"
_.path = "./bin"

Shell Activation

Add to shell rc file to auto-activate mise:

# bash: ~/.bashrc
eval "$(mise activate bash)"

# zsh: ~/.zshrc  
eval "$(mise activate zsh)"

# fish: ~/.config/fish/config.fish
mise activate fish | source

Without activation, use

mise x -- <command>
or
mise run <task>
.