mise-tasks について
mise-tasksは、miseの`[tasks]`設定でプロジェクトのワークフローを定義・実行するスキルです。依存関係、引数、ファイル追跡から、実験的なモノレポまで扱います。
主な機能
- 01`.mise.toml`でタスクを定義
- 02依存関係による実行順の設定
- 03`usage`による引数指定
- 04キャッシュ用のファイル追跡
- 05モノレポのタスクパターン設定
活用シーン
- 01ビルドとテストのワークフロー設定
- 02コマンド前後のタスク実行
- 03ソースと出力ファイルの追跡
- 04モノレポ内のタスク整理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill mise-tasksインストール後、Claude Code で/mise-tasksを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/advanced.mdarguments.mdbootstrap-monorepo.mdenv-integration.mdevolution-log.mdpatterns.mdpolyglot-affected.mdrelease-workflow-patterns.mdtask-levels.md詳細
mise タスクのオーケストレーション
依存関係の管理、引数の処理、ファイルの追跡を行いながら、mise の [tasks] セクションを使って複数ステップのプロジェクトワークフローをオーケストレーションします。
自己進化型スキル:このスキルは使用を通じて改善されます。指示が誤っていた、パラメーターが変化していた、または回避策が必要だった場合は、先延ばしにせず、すぐにこのファイルを修正してください。実際に再現可能な問題がある場合にのみ更新してください。
このスキルを使用するタイミング
明示的なトリガー:
- ユーザーが
mise tasks、mise run、[tasks]セクションに言及した場合 - ユーザーがタスクの依存関係(
depends、depends_post)を必要としている場合 - ユーザーが
.mise.tomlでワークフローの自動化を希望している場合 - ユーザーがタスク引数または
usage仕様に言及した場合
AI による検出トリガー(必須):
mise-configurationスキルが複数ステップのワークフロー(テストスイート、ビルドパイプライン、マイグレーション)を検出した場合、適切な[tasks]定義を生成するため、このスキルを必ず呼び出してください。
クイックリファレンス
タスク定義
[tasks.build]
description = "Build the project"
run = "cargo build --release"
タスクの実行
mise run build # Run single task
mise run test build # Run multiple tasks
mise run test ::: build # Run in parallel
mise r build # Short form
依存関係の種類
| 種類 | 構文 | 実行タイミング |
|---|---|---|
depends | depends = ["lint", "test"] | タスクの実行前 |
depends_post | depends_post = ["notify"] | タスクが正常に終了した後 |
wait_for | wait_for = ["db"] | 実行中の場合のみ待機 |
主なタスクプロパティ
| プロパティ | 目的 | 例 |
|---|---|---|
description | AI エージェントによる検出性(重要) | "Run pytest with coverage. Exits non-zero on failure." |
alias | 短縮名 | alias = "t" |
dir | 作業ディレクトリ | dir = "packages/frontend" |
env | タスク固有の環境変数(依存タスクには渡されません) | env = { LOG_LEVEL = "debug" } |
hide | mise tasks の出力から隠す | hide = true |
sources | キャッシュ用のファイル追跡 | sources = ["src/**/*.rs"] |
outputs | ソースより新しい場合はスキップ | outputs = ["target/release/myapp"] |
confirm | 実行前に確認を求める | confirm = "Delete all data?" |
quiet | mise の出力を抑制 | quiet = true |
silent | すべての出力を抑制 | silent = true |
raw | 標準入力/標準出力を直接使用(並列処理を無効化) | raw = true |
tools | タスク固有のツールバージョン | tools = { python = "3.9" } |
shell | カスタムシェル | shell = "pwsh -c" |
usage | 引数仕様(Tera より推奨) | タスク引数を参照 |
名前空間
mise run 'test:*' # All tasks starting with test:
mise run 'db:**' # Nested: db:migrate:up, db:seed:test
mise tasks --hidden # View hidden tasks (prefixed with _)
すべてのレベルの詳細な例とパターンについては、タスクレベルのリファレンスを参照してください。
レベル 10:モノレポ(実験的)
必要条件:MISE_EXPERIMENTAL=1 および experimental_monorepo_root = true
mise run //projects/frontend:build # Absolute from root
mise run :build # Current config_root
mise run //...:test # All projects
mise run '//projects/...:build' # Build all under projects/
サブディレクトリ内のタスクはパスプレフィックス付きで自動検出されます(packages/api/.mise.toml のタスクは packages/api:taskname になります)。
モノレポのドキュメント全体については、advanced.mdを参照してください。
レベル 11:Pants + mise を使用したポリグロットモノレポ
Python が中心のポリグロットモノレポ(10~50 パッケージ)では、ランタイム管理に mise、ビルドのオーケストレーションとネイティブな影響範囲の検出に Pants を組み合わせます。
| ツール | 役割 |
|---|---|
| mise | ランタイムのバージョン(Python、Node、Rust)+環境変数 |
| Pants | ビルドのオーケストレーション+ネイティブな影響範囲の検出+依存関係の推論 |
# Native affected detection (no manual git scripts)
pants --changed-since=origin/main test
pants --changed-since=origin/main lint
pants --changed-since=origin/main package
| 規模 | 推奨 |
|---|---|
| 10 パッケージ未満 | mise + カスタムの影響範囲検出(レベル 10 のパターン) |
| 10~50 パッケージ(Python が中心) | Pants + mise(このセクション) |
| 50 パッケージ以上 | Bazel を検討 |
Pants + mise の統合ガイドとツール比較の完全版については、polyglot-affected.md を参照してください。
[env] との統合
タスクは [env] の値を自動的に継承します。外部の環境変数ファイルには _.file を、シークレットには redact = true を使用します。
[env]
DATABASE_URL = "postgresql://localhost/mydb"
_.file = { path = ".env.secrets", redact = true }
[tasks._check-env]
hide = true
run = '[ -n "$API_KEY" ] || { echo "Missing API_KEY"; exit 1; }'
[tasks.deploy]
depends = ["_check-env"]
run = "deploy.sh" # $DATABASE_URL and $API_KEY available
環境変数の統合パターンの詳細については、環境変数の統合 を参照してください。
アンチパターン
| アンチパターン | 問題点 | 代わりに行うこと |
|---|---|---|
| /itp:go を mise タスクで置き換える | TodoWrite、ADR の追跡、チェックポイントがありません | プロジェクトのワークフローには mise タスクを、ADR 主導の開発には /itp:go を使用します |
| タスクにシークレットをハードコードする | セキュリティ上のリスクがあります | _.file = ".env.secrets" と redact = true を使用します |
| 巨大なモノリシックタスク | デバッグが難しく、再利用できません | 依存関係を持つ小さなタスクに分割します |
description を省略する、または簡素にする | AI エージェントは名前だけではタスクの目的を推測できません | 何を行うか、何が必要か、何を生成するか、いつ実行するかを詳しく記述します |
ビルドの depends を指定せずに公開する | DAG による防止が行われず、実行時エラーが発生します | 公開タスクに depends = ["build"] を追加します |
| すべてのフェーズを含めずにオーケストレーターを構成する | 「次に X を実行してください」というメッセージが無視されます | release:full の depends 配列にすべてのフェーズを含めます |
リリース固有のアンチパターンとパターンについては、リリースワークフローのパターン を参照してください。
相互参照:mise-configuration
前提条件:タスクを定義する前に、[env] セクションが設定されていることを確認してください。
規定事項:タスクを定義した後、[env] の SSoT パターンが適用されていることを確認するために、
mise-configurationスキル を呼び出してください。
mise-configuration スキルでは、以下について説明します。
[env]- デフォルト値を含む環境変数[settings]- mise の動作設定[tools]- バージョンの固定- 特殊なディレクティブ:
_.file、_.path、_.python.venv
追加リソース
- タスクレベルのリファレンス - レベル 1~9:基本タスク、依存関係、非表示タスク、引数、ファイル追跡、高度な実行、監視モード
- タスクのパターン - 実際のタスク例
- タスクの引数 - 使用方法の完全な仕様リファレンス
- 高度な機能 - モノレポ、監視、実験的機能
- 環境との統合 - [env] の継承と認証情報の読み込み
- ポリグロットの影響範囲 - Pants と mise の統合ガイドおよびツールの比較
- モノレポのブートストラップ - 自律型ポリグロットモノレポのブートストラップ用メタプロンプト
- リリースワークフローのパターン - リリースタスクの DAG パターン、公開前のビルドの強制
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| タスクが見つからない | タイプミスまたは mise.toml の誤り | mise tasks を実行して利用可能なタスクを一覧表示します |
| 依存関係が実行されない | 循環依存 | タスクの depends 配列に循環がないか確認します |
| ソースが機能しない | glob パターンの誤り | mise.toml の場所を基準とした相対パスを使用します |
| 監視がトリガーされない | ファイルが sources の一覧にない | ファイルパターンを sources 配列に追加します |
| 環境変数を利用できない | タスクのディレクトリが違う | mise.toml が cwd またはその親ディレクトリにあることを確認します |
| 実行時にエラーが発生する | スクリプトパスの問題 | 絶対パス、または mise.toml からの相対パスを使用します |
実行後の振り返り
このスキルの実行後、終了する前に確認してください。
- コマンドは成功しましたか? — 成功しなかった場合は、失敗の原因となった指示またはエラーテーブルを修正します。
- パラメーターや出力に変更はありましたか? — 基盤となるツールのインターフェースに変更があった場合は、使用例とパラメーターテーブルを更新して一致させます。
- 回避策が必要でしたか? — 独自に対応した場合(異なるフラグや追加手順など)は、次回同じ回避策が不要になるよう、この SKILL.md を更新します。
問題が実際に発生し、再現可能な場合にのみ更新してください。推測に基づく更新は行わないでください。