mise について
miseは、開発者向けの複数言語対応ツール管理コマンドラインツールです。プロジェクト単位のmise.tomlでツールのバージョン、環境変数、タスクを設定し、環境とタスクを一元管理できます。
主な機能
- 01複数言語のツールバージョン管理
- 02プロジェクトごとの環境変数設定
- 03タスクと依存関係の定義
- 04複数バックエンドからのツール導入
- 05変更を監視してタスクを再実行
活用シーン
- 01プロジェクトの複数ランタイムの固定
- 02再現可能な開発環境の構築
- 03ビルドとテストのタスク定義の集約
- 04CIでのプロジェクトタスク実行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill miseインストール後、Claude Code で/miseを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/configuration.mdenvironment-variables.mdmigration.mdtask-patterns.mdtask-runner.mdtool-management.md詳細
Mise
概要
Mise は、ツールのバージョン、環境変数、タスクの実行を単一の CLI で管理するマルチ言語対応の開発ツールマネージャーです。asdf、nvm、pyenv、direnv、Makefiles を置き換え、プロジェクトごとに統一された mise.toml 設定を使用します。
使用する場面: プロジェクトごとに複数の言語ランタイムを管理する場合、再現可能な開発環境を定義する場合、依存関係のあるプロジェクトタスクを実行する場合、散在する .nvmrc/.python-version/.tool-versions ファイルを置き換える場合、CI パイプラインを自動化する場合。
使用しない場面: すべてのツールを Docker イメージ内に置くコンテナのみのワークフロー、言語ネイティブのバージョンマネージャーですでに十分に対応できている単一言語のプロジェクト、本番環境のランタイム管理(mise は開発ツールです)。
バージョン解決の優先順位
Mise は、次のソースを優先順位の高い順に確認して、ツールのバージョンを解決します。
MISE_<TOOL>_VERSION環境変数- カレントディレクトリの
mise.toml - 親ディレクトリの
mise.toml(ディレクトリツリーを上方向にたどります) .tool-versionsファイル(asdf との互換性用)- レガシーファイル(
.nvmrc、.python-version、.ruby-version) ~/.config/mise/config.toml(グローバルのデフォルト)
クイックリファレンス
| パターン | コマンド/設定 | 主なポイント |
|---|---|---|
| ツールをインストールする | mise install | mise.toml を読み込み、記載されているすべてのツールをインストールします |
| ツールのバージョンを固定する | mise use node@22 | 現在のディレクトリの mise.toml に書き込みます |
| グローバルに固定する | mise use -g node@22 | ~/.config/mise/config.toml に書き込みます |
| タスクを実行する | mise run build | mise.toml で定義されたタスクを実行します |
| 引数を付けて実行する | mise run test -- --watch | -- の後の引数をタスクに渡します |
| ウォッチモード | mise watch build | ソースが変更されるとタスクを再実行します |
| タスクを一覧表示する | mise tasks | 利用可能なすべてのタスクを表示します |
| 環境変数を設定する | mise.toml の [env] セクション | ディレクトリごとに設定され、cd 時に自動的に有効になります |
| .env ファイルを読み込む | _.file = ".env" | dotenv を環境変数に読み込みます |
| PATH を拡張する | _.path = ["./bin"] | ディレクトリを PATH の先頭に追加します |
| インストール済みのツールを一覧表示する | mise ls | インストール済みのすべてのツールのバージョンを表示します |
| 古いバージョンのツールを確認する | mise outdated | より新しいバージョンがあるツールを表示します |
| ツールをアップグレードする | mise upgrade | バージョン制約の範囲内でツールを最新バージョンにアップグレードします |
| 設定を信頼する | mise trust | 現在のディレクトリの mise.toml を信頼します |
| ツールのバックエンド | "npm:prettier" / "cargo:cargo-machete" | npm、cargo、pipx、GitHub などからインストールします |
| タスクの依存関係 | depends = ["lint", "test"] | 前提となるタスクが先に実行されます |
| インクリメンタルビルド | タスクの sources + outputs | ソースより出力が新しい場合、タスクをスキップします |
| 有効化せずに実行する | mise exec -- node app.js | mise が管理するツールを使ってコマンドを実行します |
| 診断 | mise doctor | インストールと設定の状態を確認します |
| 未使用のツールを整理する | mise prune | どの設定にも記載されていないツールのバージョンを削除します |
| フックを生成する | mise generate git-pre-commit | タスク用の git pre-commit フックを生成します |
| 環境固有の設定 | .mise.staging.toml | MISE_ENV=staging で有効になります |
| IDE 用のシム | mise settings set shims_on_path true | IDE との互換性のため、PATH ベースのシムを使用します |
よくある間違い
| 間違い | 正しいパターン |
|---|---|
mise use を使わずに mise install node@22 を使う | mise use node@22 はインストールと mise.toml への固定を同時に行います |
mise を使って .tool-versions を手動で編集する | mise use で更新します。.tool-versions より mise.toml が推奨されます |
新しいプロジェクトのクローン時に mise trust を忘れる | mise trust を実行して、信頼されていない設定ファイルを有効にします |
タスクの依存関係に depends キーを使う | 現在のキーは配列の depends であり、deps ではありません |
mise を有効にせず mise run を実行する | シェルのプロファイルで mise activate を実行するか、mise exec を使います |
| シークレットを mise.toml に直接記述する | _.file = ".env.local" を使い、.env ファイルを gitignore に追加します |
cd でプロジェクトに移動しないと環境変数が設定されないと思い込む | Mise はディレクトリの変更時に環境を有効にします。デバッグには mise env を使います |
共有プロジェクトで latest バージョンを使う | 再現性を確保するため、特定のメジャーバージョン(node = "22" など)に固定します |
| mise と併用して Makefile にタスクを定義する | 1 つのツールにまとめるため、すべてのタスクを mise.toml に集約します |
| 複数行のタスクスクリプトでシバンを付け忘れる | インタープリターを明示するため、#!/usr/bin/env bash を追加します |
時間のかかるタスクで sources/outputs を使わない | 差分実行時のスキップと監視モードのために、ソースの glob パターンを定義します |
非対話型スクリプトで mise activate を使う | スクリプトや CI では mise exec または eval "$(mise env)" を使います |
委任
- タスクパターンの調査:
Exploreエージェントを使います - 設定のレビュー:
Taskエージェントを使います - CI パイプラインとの統合:
Taskエージェントを使います
rustスキルが利用できる場合は、Rust ツールチェーン管理のパターンをそのスキルに委任します。python-uvスキルが利用できる場合は、Python のバージョンと仮想環境のパターンをそのスキルに委任します。github-actionsスキルが利用できる場合は、CI ワークフローのパターンをそのスキルに委任します。dockerスキルが利用できる場合は、コンテナ化されたワークフローのパターンをそのスキルに委任します。pino-loggingスキルが利用できる場合は、ロギング設定のパターンをそのスキルに委任します。sentryスキルが利用できる場合は、エラー監視のセットアップパターンをそのスキルに委任します。