mcpField
M
mise-configuration

mise-configuration

github.com/terrylica開発2165 回インストール1 日前に更新
リポジトリ

mise-configuration について

mise-configurationは、miseの`[env]`設定を軸にプロジェクト構成を整理するスキルです。環境変数や仮想環境、モノレポのハブ・スポーク構成を扱い、miseがなくても既定値でスクリプトを動かす方法を示します。

主な機能

  1. 01miseの`[env]`に設定を集約
  2. 02Python仮想環境の自動作成を設定
  3. 03ハブ・スポーク型でモノレポを構成
  4. 04miseなしでも既定値で動作
  5. 05必須変数と秘匿変数を設定
  6. 06Teraテンプレートと環境ディレクティブを利用

活用シーン

  1. 01ハードコード値をプロジェクト設定へ移行
  2. 02Pythonプロジェクトの環境を設定
  3. 03モノレポのサブフォルダーに設定を分割
  4. 04miseがない環境でもスクリプトを実行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/terrylica/cc-skills --skill mise-configuration

インストール後、Claude Code で/mise-configurationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
anti-patterns.md
evolution-log.md
github-tokens.md
hub-spoke-architecture.md
monorepo-workspace.md
patterns.md
task-orchestration.md

詳細

単一の信頼できる情報源としての mise 設定

後方互換性のあるデフォルト値を使い、mise の [env] を一元的な設定として使用します。

自己進化型スキル:このスキルは使用を通じて改善されます。手順に誤りがある場合、パラメーターが変化した場合、または回避策が必要になった場合は、先送りせず、すぐにこのファイルを修正してください。実際に再現できる問題がある場合にのみ更新してください。

このスキルを使用する場面

次のような場合に、このスキルを使用します。

  • mise.toml に環境変数を一元化する
  • mise で Python 仮想環境を自動作成するよう設定する
  • モノレポ向けにハブ・スポーク構成を実装する
  • 後方互換性のある環境設定パターンを作成する

基本原則

設定可能な値はすべて .mise.toml の [env] セクションで定義します。スクリプトでは、環境変数をデフォルト値にフォールバックさせて読み取ります。mise がインストールされていても、いなくても、同じコードパスが機能します。

重要なポイント:シェルで mise activate が設定されていると、mise は [env] の値を自動的に読み込みます。os.environ.get("VAR", "default") パターンを使用するスクリプトは、mise がある場合もない場合も同じように動作します。

クイックリファレンス

言語別パターン
言語パターン備考
Pythonos.environ.get("VAR", "default")文字列を返します。整数の場合は型変換してください
Bash${VAR:-default}標準の POSIX 展開
JavaScriptprocess.env.VAR || "default"falsy チェック。「0」に注意してください
Goos.Getenv("VAR") とデフォルト値未設定の場合は空文字列になります
Ruststd::env::var("VAR").unwrap_or()Result<String> を返します
特別なディレクティブ
ディレクティブ目的例
_.file.env ファイルから読み込む_.file = ".env"
_.pathPATH を拡張する_.path = ["bin", "node_modules/.bin"]
_.sourcebash スクリプトを実行する_.source = "./scripts/env.sh"
_.python.venvPython 仮想環境を自動作成する_.python.venv = { path = ".venv", create = true }

オプションを含むディレクティブの詳細な例(redact、tools、複数ファイル)については、コードパターンを参照してください。

Python 仮想環境の自動作成(重要)

Python 仮想環境を自動作成して有効化します。

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

このパターンはすべてのプロジェクトで使用されます。mise を有効化した状態でディレクトリに入ると、次のように動作します。

  1. .venv が存在しない場合は作成します
  2. 仮想環境を自動的に有効化します
  3. 仮想環境の高速作成に uv を使用できます

[settings] を使う方法:

[settings]
python.uv_venv_auto = true

ハブ・スポークアーキテクチャ(重要)

ドメイン固有のタスクをサブフォルダーの mise.toml ファイルに委譲し、ルートの mise.toml を簡潔に保ちます。モノレポ、ML/研究プロジェクト、インフラストラクチャ、データパイプラインに適用できます。

主なルール:

  • ハブは [tools] とオーケストレーションタスクを管理します
  • スポークはハブの [tools] を自動的に継承します
  • スポークの [env] はハブの [env] を拡張します(ドメインごとに上書きできます)
  • .mise.local.toml はディレクトリ単位で適用されます(シークレットはローカルに保持されます)

ディレクトリ構成、例、アンチパターンを含む詳細ガイド:ハブ・スポークアーキテクチャ

Wiki リファレンス:Pattern-mise-Configuration

モノレポのワークスペースパターン

uv ワークスペースを使用する Python モノレポでは、仮想環境はワークスペースのルートに作成されます。開発用依存関係は [dependency-groups](PEP 735)を使ってルートの pyproject.toml に集約してください。

詳細ガイド:モノレポのワークスペースパターン

テンプレート構文(Tera)

mise は Tera テンプレートを使用します。区切り文字は、式が {{ }}、文が {% %}、コメントが {# #} です。

組み込み変数
変数説明
{{config_root}}.mise.toml を含むディレクトリ
{{cwd}}現在の作業ディレクトリ
{{env.VAR}}環境変数
{{mise_bin}}mise バイナリへのパス
{{mise_pid}}mise プロセス ID
{{xdg_cache_home}}XDG キャッシュディレクトリ
{{xdg_config_home}}XDG 設定ディレクトリ
{{xdg_data_home}}XDG データディレクトリ

関数(get_env、exec、arch、read_file、hash_file)、フィルター(snakecase、trim、absolute)、条件分岐については、コードパターン - テンプレート構文をご覧ください。

必須変数と秘匿変数

[env]
# Required - fails if not set
DATABASE_URL = { required = true }
API_KEY = { required = "Get from https://example.com/api-keys" }

# Redacted - hides from output
SECRET = { value = "my_secret", redact = true }
_.file = { path = ".env.secrets", redact = true }

# Pattern-based redactions
redactions = ["*_TOKEN", "*_KEY", "PASSWORD"]

パターンの組み合わせや詳細な例については、コードパターン - 必須変数と秘匿変数をご覧ください。

遅延評価(tools = true)

デフォルトでは、ツールのインストール前に環境変数が解決されます。ツールが生成したパスにアクセスするには、tools = trueを使用してください。

[env]
GEM_BIN = { value = "{{env.GEM_HOME}}/bin", tools = true }
_.file = { path = ".env", tools = true }

[settings] と [tools]

[settings]
experimental = true
python.uv_venv_auto = true

[tools]
python = "<version>"
node = "latest"
uv = "latest"
rust = { version = "<version>", profile = "minimal" }

# SSoT-OK: mise min_version directive, not a package version
min_version = "2024.9.5"

設定の全リファレンスとバージョン固定のオプションについては、コードパターン - 設定とツールをご覧ください。

実装手順

  1. ハードコードされた値を特定する - タイムアウト、パス、しきい値、機能フラグ
  2. .mise.tomlを作成する - [env]セクションを追加し、変数を文書化する
  3. venvの自動作成を追加する - _.python.venv = { path = ".venv", create = true }
  4. スクリプトを更新する - 環境変数を使用し、元の値をデフォルトとして設定する
  5. ADRへの参照を追加する - コメント:# ADR: 2025-12-08-mise-env-centralized-config
  6. miseなしでテストする - デフォルト値を使用してスクリプトが動作することを確認する
  7. miseを使用してテストする - 有効化したシェルが.mise.tomlの値を使用することを確認する

GitHub トークンの複数アカウントパターン {#github-token-multi-account-patterns}

miseはGitHubトークンを管理しません(ADR 2026-06-21)。 miseの[env]によるディレクトリごとのGH_TOKEN 注入は廃止されています。GitHubのIDはリポジトリの originホストエイリアス([email protected]<account>:owner/repo)によって決まり、SSHキー、コミット ID(includeIf hasconfig:remote.*.url)、ghアカウントもすべてそこから導出されます。 ~/.zshrcのghラッパーは、環境に設定されたGH_TOKENをすべて除去します。スクリプトでトークンが必要な場合は、 その都度解決してください:GH_PAT="$(~/.claude/tools/bin/gh-token-for-repo)"。

詳細ガイド:GitHubの複数アカウント認証(ホストエイリアスモデル)

アンチパターン

アンチパターン理由代わりに
mise exec -- script.pymiseへの依存を強制するデフォルト値を設定した環境変数を使用する
.mise.toml内のシークレットリポジトリ内で見えるDopplerまたはredact = trueを使用する
スクリプトにデフォルト値がないmiseなしでは動作しない常に代替値を用意する
pueueジョブの[env]シークレットPueueはmiseのないクリーンなシェルを実行するpython-dotenvと.envファイルを使用する
SSH経由で__MISE_DIFFが漏れるリモートの信頼エラーSSHの前にunset __MISE_DIFFを実行する

非対話型シェルのシークレットに関する重要事項:アンチパターンガイド

タスクオーケストレーションとの統合

miseの設定中に複数ステップのプロジェクトワークフローを検出した場合は、依存関係を管理するタスク定義にmise-tasksスキルを呼び出してください。

検出のきっかけ:複数ステップのワークフロー、繰り返し実行するコマンド、依存関係チェーン、ファイル追跡型ビルド。

例を含む詳細ガイド:タスクオーケストレーション | mise-tasksスキル


追加リソース

ADR の参照先:mise の設定を実装する際は、プロジェクト内の docs/adr/YYYY-MM-DD-mise-env-centralized-config.md に ADR を作成してください。


トラブルシューティング

問題原因解決策
環境変数が読み込まれないmise が有効化されていないシェルの rc ファイルに mise activate を追加
venv が作成されないPython がインストールされていないmise install python を実行
タスクが見つからないmise.toml の場所が誤っているmise.toml がプロジェクトのルートにあることを確認
PATH が更新されないPATH に shims がない~/.zshenv に mise shims を追加
.file が読み込まれない.env ファイルがない.env ファイルを作成するか、.file ディレクティブを削除
サブフォルダーの設定が無視されるmin_version がないサブフォルダーの mise.toml に min_version を追加

実行後の振り返り

このスキルの処理が完了したら、終了する前に確認してください。

  1. コマンドは成功しましたか? — 失敗した場合は、失敗の原因となった手順またはエラー表を修正してください。
  2. パラメーターや出力に変更はありましたか? — 基盤となるツールのインターフェースに変更があった場合は、使用例とパラメーター表を実態に合わせて更新してください。
  3. 回避策が必要でしたか? — 別のフラグや追加手順などで対応した場合は、次回同じ回避策が不要になるよう、この SKILL.md を更新してください。

問題が実際に発生し、再現できる場合にのみ更新してください。推測に基づく更新は行わないでください。

コメント