mise-tool-management
Installation
SKILL.md
mise Tool Management
When to invoke
- Starting a new project and picking a version manager for binary CLI / build tools.
- Writing the first
.mise.toml. - Adding new binary tools (swiftlint, swiftformat, xcbeautify, gitleaks, lefthook, jq, yq, ...).
- Setting up CI (e.g. Xcode Cloud
ci_scripts/) that needs to call tools. - User asks "asdf vs mise", "why isn't Homebrew enough", "what about CI / local version drift".
Default decisions
- Adopt
mise(mise.jdx.dev) to manage binary CLI / build tools. - Dev machine and CI share the same
.mise.toml, committed to git. Both.mise.tomlandmise.toml(no leading dot) are valid config filenames — mise's own docs primarily spell itmise.toml— but this catalog's convention is the dotfile form. - Plugin backend priority: core plugin →
aqua:→github:/gitlab:(release assets) →asdf:(legacy).ubi:is deprecated — mise's own release-backend docs mark it "Legacy release installer (deprecated)". - Xcode Cloud has no mise preinstalled — its build environment ships only Homebrew, so a
ci_post_clone.shthat starts with a baremisecommand fails with "command not found". Xcode Cloud also runsci_post_clone.shwithci_scripts/as the working directory, so the script mustcd "$CI_PRIMARY_REPOSITORY_PATH"first or./bin/misewon't resolve. Commit a bootstrappedbin/mise(mise generate install-script --localize --write bin/mise— requires mise ≥ 2026.8.11; on older mise runmise self-update, or use the oldmise generate bootstrap --localize --write bin/mise, which newer mise keeps as a deprecated alias scheduled for removal in mise 2027.9.0) and call it explicitly: aftercd "$CI_PRIMARY_REPOSITORY_PATH", run./bin/mise trust && ./bin/mise install; subsequent tool invocations always go through./bin/mise exec -- <tool> <args>(seexcode-cloud-single-track-cifor the full hook). On a dev machine or any CI runner that already has mise onPATH, drop the./bin/prefix:mise exec -- <tool> <args>. - A freshly cloned repo or a freshly created git worktree starts with
.mise.tomluntrusted. On mise < 2026.8.9, or in paranoid / safe mode,mise install/mise exechard-error withConfig files in <dir> are not trusted. Trust them with 'mise trust'untilmise trusthas run once in that directory; from mise 2026.8.9, normal mode implicitly trusts the active config formise install/mise exec/mise run. A committedbin/misepins its own mise version, so keep runningmise trustbefore the firstmise install/mise execin every new agent worktree and CI checkout — harmless on new mise, required on old.