mise について
mise は、開発ツールのバージョン、環境設定、プロジェクトタスクを管理するスキルです。チームやコントリビューターのツールチェーンを揃え、ビルド、テスト、デプロイのワークフローを整理できます。
主な機能
- 01開発ツールのバージョン管理
- 02プロジェクト環境とローカル環境の設定
- 03プロジェクトタスクの定義と実行
- 04モノレポのパッケージ間でタスクを整理
- 05CI/CD とロックファイルの指針
活用シーン
- 01チーム内のツールバージョン統一
- 02リポジトリでの個人用ツール設定
- 03ビルド・テストタスクの定義
- 04モノレポ内のタスク整理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ neoeinstein/ claude-plugins --skill miseインストール後、Claude Code で/miseを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/ci-cd.mdconfiguration.mdmonorepo-tasks.mdtasks.mdtroubleshooting.md詳細
mise ツールチェーン管理
概要
mise は、開発ツールのバージョン、環境設定、プロジェクトタスクを管理します。チームメンバー間や CI でツールチェーンを統一し、ツールチェーンと併せてビルド/テスト/デプロイのワークフローを定義するために使用します。
基本原則: 2 つのモードがあります。管理しているリポジトリには mise.toml(コミット対象)、コントリビュートしているリポジトリには mise.local.toml(gitignore 対象)を使用します。
クイックリファレンス - 読み込む内容
| 次のような場合 | 読み込むもの |
|---|---|
| 既存のプロジェクトに mise を導入する | 代わりに mise:onboard-project スキルを使用してください |
| mise.toml を設定する、優先順位を理解する | references/configuration.md |
| タスクを定義する、ビルドを実行する、監視モードを使用する | references/tasks.md |
| タスク固有のツール要件を宣言する | references/tasks.md |
| モノレポ内のパッケージ全体でタスクを整理する | references/monorepo-tasks.md |
| フラットなタスクファイルをコンポーネントごとの定義に分割する | references/monorepo-tasks.md |
| 「command not found」や有効化の問題が発生した | references/troubleshooting.md |
| GitHub Actions、ロックファイルを設定する | references/ci-cd.md |
設定の使い分け
| シナリオ | 設定ファイル | コミット対象? |
|---|---|---|
| 自分のプロジェクトでチーム全体のツールを管理する | mise.toml | はい |
| 他者のリポジトリにコントリビュートする | mise.local.toml | いいえ(gitignore 対象) |
| ユーザー全体のデフォルト設定 | ~/.config/mise/config.toml | 該当なし |
基本原則
チーム設定には mise.toml を使用する: リポジトリを管理している場合は、プロジェクトで必要なツールチェーンを mise.toml で定義します。これをコミットしてください。全員が同じバージョンを使えます。
個人用ツールには mise.local.toml を使用する: 管理していないリポジトリにコントリビュートする場合は、個人のツール設定に mise.local.toml を使用します。慣例として、このファイルは gitignore 対象です。
必ず mise install を実行する: mise.toml があるプロジェクトをクローンした後、mise install を実行してツールをインストールしてください。これは自動では行われません。
Shims より有効化を優先する: 機能をすべて利用するには、シェルの rc ファイルで mise activate を使用してください。Shims も動作しますが、制限があります(ツールの呼び出し時を除き、環境変数を更新できません)。
再現性のために mise.lock をコミットする: ロックファイルを使うと、全員が同一のツールバージョンを使用でき、レート制限の問題も回避できます。
STOP — 合理化防止テーブル
これらのパターンに該当するコードを書く前に、STOPして再検討してください。
| これからしようとしていること | よくある合理化 | 代わりにすべきこと |
|---|---|---|
CI スクリプトに mise activate を追加する | 「ローカルでは動く」 | CI は非対話型です。mise x -- command または shims を使用してください。references/ci-cd.md を読み込んでください。 |
リポジトリで mise.lock をスキップする | 「'latest' を使っている」 | 「Latest」は変わります。再現性のためにロックファイルをコミットしてください。references/ci-cd.md を読み込んでください。 |
| レート制限後に CI から mise を削除する | 「デプロイを妨げている」 | より高い制限を利用するため、GITHUB_TOKEN を設定してください。mise を削除しても問題が移るだけです。references/troubleshooting.md を読み込んでください。 |
mise.local.toml をコミットする | 「チームもこれらのツールを使うべき」 | そのために mise.toml があります。ローカルファイルは個人用です。 |
アクティベーションに .bash_profile を使う | 「PATH を設定している場所だから」 | アクティベーションは .bashrc/.zshrc でのみ機能します。references/troubleshooting.md を読み込んでください。 |
| あらゆる場所でパッチバージョンを厳密に固定する | 「最大限の再現性」 | 代わりに mise.lock を使用してください。設定ファイルでバージョンを固定すると、更新が面倒になります。 |
1 つのタスクでしか必要ないツールをプロジェクトの [tools] に追加する | 「そのほうが簡単」/「みんなが使うかもしれない」 | tasks.<name>.tools に記述してください。そのタスクを実行しないコントリビューターは、インストールを省略できます。references/tasks.md を読み込んでください。 |
| 複数パッケージのプロジェクトですべてのタスクをルートの mise.toml に置く | 「そのほうがシンプル」/「確認するファイルが 1 つで済む」 | 各パッケージのタスクは、それぞれの mise.toml で管理してください。ルートはオーケストレーションを担います。references/monorepo-tasks.md を読み込んでください。 |
中間グループの設定で task_templates を定義する | 「テンプレートは、それを使うパッケージの近くに置くべき」 | テンプレートを解決できるのはルートの mise.toml からのみです。すべてのテンプレートをルートに移動してください。references/monorepo-tasks.md を読み込んでください。 |
usage フィールドで TOML 配列構文(choices=["a","b"])を使う | 「TOML ファイルだから」 | usage の内容は TOML ではなく KDL です。ブロック内で choices "a" "b" を使用してください。references/tasks.md を読み込んでください。 |
委譲時に { task = "...", env = {...} } の中で env を渡す | 「依存関係でサポートされている」 | 委譲オブジェクトがサポートするキーは task/tasks のみです。インライン引数またはタスクレベルの env を使用してください。references/tasks.md を読み込んでください。 |
よく使われるツール設定
Rust
[tools]
rust = { version = "latest", components = "clippy,rustfmt" }
"cargo:cargo-nextest" = "latest"
"cargo:cargo-watch" = "latest"
Node.js
[tools]
node = "lts"
"npm:pnpm" = "latest"
Python
[tools]
python = "3.12"
"pipx:poetry" = "latest"
よくある間違い
| 間違い | 修正方法 |
|---|---|
mise.local.toml をコミットする | .gitignore に追加する |
自分のリポジトリで mise.local.toml を使う | mise.toml を使う — コントリビューターにも役立つようにする |
クローン後に mise install を忘れる | プロジェクトのセットアップドキュメントに追加する |
CI で GITHUB_TOKEN が設定されていない | API のレート制限に対応するためトークンを設定する |
.bash_profile でアクティベーションする | 代わりに .bashrc または .zshrc を使う |