---
name: mise-tool-management-33eb83a1fa0e
user-invocable: false
description: Use when managing development tool versions with Mise. Covers installing tools, version pinning, and replacing language-specific version managers.
allowed-tools:
  - Read
  - Write
  - Edit
  - Bash
  - Grep
  - Glob
---

# Mise - Tool Management

Managing development tool versions across projects with Mise as a unified version manager.

## Basic Tool Installation

### Installing Tools

```bash
# Install specific version
mise install node@20.10.0
mise install python@3.12.0
mise install rust@1.75.0

# Install latest version
mise install node@latest
mise install python@latest

# Install from .tool-versions or mise.toml
mise install
```

### Setting Tool Versions

```bash
# Set global version
mise use --global node@20

# Set project version
mise use node@20.10.0
mise use python@3.12 rust@1.75

# Use latest
mise use node@latest
```

## Tool Configuration in mise.toml

### Basic Tool Definitions

```toml
# mise.toml
[tools]
node = "20.10.0"
python = "3.12.0"
rust = "1.75.0"
terraform = "1.6.0"
```

### Version Prefixes

```toml
[tools]
# Latest patch version
node = "20.10"

# Latest minor version
node = "20"

# Latest version
node = "latest"

# Prefix notation
terraform = "1.6"  # Latest 1.6.x
```

### Multiple Versions

```toml
[tools]
# Use multiple versions
node = ["20.10.0", "18.19.0"]
python = ["3.12", "3.11", "3.10"]
```

```bash
# Switch between versions
mise shell node@18.19.0
```

## Tool-Specific Configuration

### Node.js Configuration

```toml
[tools]
node = { version = "20.10.0", postinstall = "corepack enable" }
```

### Python with Virtual Environments

```toml
[tools]
python = "3.12"

[env]
_.python.venv = { path = ".venv", create = true }
```

### Custom Tool Sources

```toml
[tools]
# From specific registry
"cargo:eza" = "latest"
"npm:typescript" = "5.3"

# From git repository
my-tool = "git:https://github.com/org/tool.git"
```

## Supported Languages & Tools

### Core Tools

```toml
[tools]
# Languages
bun = "1.0"
deno = "1.38"
elixir = "1.15"
erlang = "26.1"
go = "1.21"
java = "21"
node = "20.10"
python = "3.12"
ruby = "3.3"
rust = "1.75"
zig = "0.11"

# Infrastructure
terraform = "1.6"
kubectl = "1.28"
awscli = "2.13"
```

### Package Managers

```toml
[tools]
"npm:pnpm" = "8.10"
"npm:yarn" = "4.0"
"cargo:cargo-binstall" = "latest"
"go:github.com/golangci/golangci-lint/cmd/golangci-lint" = "latest"
```

## Tool Version Strategies

### Lock to Specific Versions

```toml
# Production: Pin exact versions
[tools]
node = "20.10.0"
terraform = "1.6.4"
```

### Use Ranges for Flexibility

```toml
# Development: Use minor version ranges
[tools]
node = "20"      # Any 20.x
python = "3.12"  # Any 3.12.x
```

### Latest for Experimentation

```toml
# Experimental projects
[tools]
rust = "latest"
bun = "latest"
```

## Managing Tool Aliases

### Creating Aliases

```bash
# Set alias for current directory
mise alias set node lts 20.10.0

# Set global alias
mise alias set --global python3 python@3.12
```

### Using Aliases in Configuration

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

## Tool Verification

### Check Installed Tools

```bash
# List installed tools
mise list

# Check current versions
mise current

# Verify tool installation
mise doctor
```

### Tool Information

```bash
# Show tool details
mise ls-remote node

# List available versions
mise ls-remote python

# Check latest version
mise latest node
```

## Migration from Other Version Managers

### From asdf

```bash
# Mise reads .tool-versions files
cat .tool-versions
# nodejs 20.10.0
# python 3.12.0

# Migrate to mise.toml
mise use node@20.10.0 python@3.12.0
```

### From nvm

```bash
# Read from .nvmrc
cat .nvmrc
# 20.10.0

mise use node@$(cat .nvmrc)
```

### From pyenv

```bash
# Read from .python-version
mise use python@$(cat .python-version)
```

## Best Practices

### Pin Production Dependencies

```toml
# Good: Explicit production versions
[tools]
node = "20.10.0"
terraform = "1.6.4"
postgres = "16.1"
```

### Document Required Tools

```toml
# mise.toml - All project dependencies in one place
[tools]
node = "20.10.0"
python = "3.12.0"
terraform = "1.6.4"
kubectl = "1.28.0"

[env]
PROJECT_NAME = "my-app"
```

### Use Tool-Specific Settings

```toml
[tools]
# Enable corepack for package managers
node = { version = "20.10.0", postinstall = "corepack enable" }

# Create Python virtual environment
python = { version = "3.12", venv = ".venv" }
```

### Verify Tool Installation

```bash
# In CI/CD pipelines
mise install --check
mise doctor

# Verify specific tools
mise current node
mise current python
```

## Common Patterns

### Monorepo Tool Management

```toml
# Root mise.toml - shared tools
[tools]
node = "20.10.0"
terraform = "1.6.4"

# packages/api/mise.toml - additional tools
[tools]
"npm:typescript" = "5.3"
"npm:prisma" = "5.7"

# packages/web/mise.toml
[tools]
"npm:next" = "14.0"
```

### Development vs Production

```toml
# mise.toml - production tools
[tools]
node = "20.10.0"
postgres = "16.1"

# mise.local.toml - development tools (gitignored)
[tools]
"npm:nodemon" = "latest"
"cargo:cargo-watch" = "latest"
```

### Tool Updates Strategy

```bash
# Check for updates
mise outdated

# Update to latest patch version
mise upgrade node

# Update all tools
mise upgrade

# Update with constraints
mise use node@20  # Updates to latest 20.x
```

## Anti-Patterns

### Don't Mix Version Managers

```bash
# Bad: Using multiple version managers
nvm use 20
mise use node@20  # Conflicts

# Good: Use only Mise
mise use node@20
```

### Don't Hardcode Tool Paths

```bash
# Bad: Hardcoded paths
/Users/me/.local/share/mise/installs/node/20.10.0/bin/node

# Good: Use mise shims or mise exec
mise exec -- node
mise x -- node
```

### Don't Skip Version Constraints

```toml
# Bad: No version specified
[tools]
node = "latest"  # Can break on updates

# Good: Specify constraints
[tools]
node = "20.10.0"  # Explicit
# OR
node = "20"  # Controlled range
```

### Don't Ignore Tool Dependencies

```toml
# Bad: Missing required tools
[tools]
terraform = "1.6"
# Missing: kubectl, helm for deployment

# Good: Include all dependencies
[tools]
terraform = "1.6.4"
kubectl = "1.28.0"
helm = "3.13.0"
```

## Advanced Patterns

### Conditional Tool Installation

```toml
[tools]
# Install based on platform
node = "20.10.0"
python = "3.12"

# Platform-specific tools
[tools."cargo:watchexec-cli"]
platforms = ["linux", "darwin"]
version = "latest"
```

### Tool Installation Hooks

```toml
[tools]
node = {
  version = "20.10.0",
  postinstall = '''
    corepack enable
    npm install -g npm@latest
  '''
}
```

### Backend Selection

```toml
# Use specific backend for tools
[tools]
# Use core backend (faster)
node = "core:20.10.0"

# Use asdf plugin
ruby = "asdf:3.3.0"
```

## Related Skills

- **task-configuration**: Defining tasks that use managed tools
- **environment-management**: Managing environment variables with tools


---
Source attribution: TheBushidoCollective
Original project: https://github.com/TheBushidoCollective/han/blob/19caa51d5fd144ef6b2764f2332f4c856aa5d1af/plugins/tools/mise/skills/tool-management/SKILL.md
License: Apache-2.0
License information: https://www.apache.org/licenses/LICENSE-2.0
Original upstream instructions; downloaded from Mega AI Hub.

## Upstream license notice

# Functional Source License, Version 1.1, ALv2 Future License

## Abbreviation

FSL-1.1-ALv2

## Notice

Copyright 2025 The Bushido Collective

## Terms and Conditions

### Licensor ("We")

The party offering the Software under these Terms and Conditions.

### The Software

The "Software" is each version of the software that we make available under
these Terms and Conditions, as indicated by our inclusion of these Terms and
Conditions with the Software.

### License Grant

Subject to your compliance with this License Grant and the Patents,
Redistribution and Trademark clauses below, we hereby grant you the right to
use, copy, modify, create derivative works, publicly perform, publicly display
and redistribute the Software for any Permitted Purpose identified below.

### Permitted Purpose

A Permitted Purpose is any purpose other than a Competing Use. A Competing Use
means making the Software available to others in a commercial product or
service that:

1. substitutes for the Software;

2. substitutes for any other product or service we offer using the Software
   that exists as of the date we make the Software available; or

3. offers the same or substantially similar functionality as the Software.

Permitted Purposes specifically include using the Software:

1. for your internal use and access;

2. for non-commercial education;

3. for non-commercial research; and

4. in connection with professional services that you provide to a licensee
   using the Software in accordance with these Terms and Conditions.

### Patents

To the extent your use for a Permitted Purpose would necessarily infringe our
patents, the license grant above includes a license under our patents. If you
make a claim against any party that the Software infringes or contributes to
the infringement of any patent, then your patent license to the Software ends
immediately.

### Redistribution

The Terms and Conditions apply to all copies, modifications and derivatives of
the Software.

If you redistribute any copies, modifications or derivatives of the Software,
you must include a copy of or a link to these Terms and Conditions and not
remove any copyright notices provided in or with the Software.

### Disclaimer

THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR
PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.

IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE
SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES,
EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.

### Trademarks

Except for displaying the License Details and identifying us as the origin of
the Software, you have no right under these Terms and Conditions to use our
trademarks, trade names, service marks or product names.

## Grant of Future License

We hereby irrevocably grant you an additional license to use the Software under
the Apache License, Version 2.0 that is effective on the second anniversary of
the date we make the Software available. On or after that date, you may use the
Software under the Apache License, Version 2.0, in which case the following
will apply:

Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.



# Mega AI Hub resource metadata

Creator / publisher: TheBushidoCollective
Original project: https://github.com/TheBushidoCollective/han/blob/19caa51d5fd144ef6b2764f2332f4c856aa5d1af/plugins/tools/mise/skills/tool-management/SKILL.md
Attribution basis: Source repository record

Fields of work: Development & Engineering
Roles: Backend Developer, DevOps / SRE, Full-Stack Developer
Specialties: Backend, DevOps
Tools: Mise
Country applicability: Country not specified
Classification basis: Source catalog labels
Instruction SHA-256: 77f2eadeaccacc16cab4d6b01b5972e9947893e8e88afbd4f0c6e6e18bbdf264
