Mise
My personal agent skills for AI coding assistants
npx -y skills add akunzai/agent-skills --skill miseAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when setting up or managing a project's toolchain, language runtimes, or task running with mise (https://mise.jdx.dev/), when migrating a Makefile or npm scripts to mise tasks, or when wiring mise into CI or container builds.
SKILL.md
5.1 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
mise
Manage a project's dev tools, language runtimes, and tasks through a single
committed mise.toml. The official docs at https://mise.jdx.dev/ cover the full
surface; this skill captures the how we use it here decisions, not the
reference.
Quick start
One mise.toml per repo is the single source of truth for every tool, runtime,
and task. Pin versions explicitly, prefer built-in backends (aqua, github),
drive work through mise run <task>, and adopt in phases: host -> CI ->
containers.
Core conventions
- Single source of truth — one
mise.tomlat the repo root declares all tools, runtimes, and tasks. Do not split version declarations betweenmise.tomlandpackage.jsonpackageManager/corepack; remove the duplicate once migrated. - Pin explicitly — choose each tool's version deliberately for
reproducibility: a major or channel for runtimes (
python = "3.14",java = "temurin-25",node = "lts", which float the patch within a fixed line), andlatestfor low-risk, fast-moving tools — especially linters (shellcheck = "latest",actionlint = "latest",uv = "latest"), which benefit from always running the newest rules. - Tasks over Makefile/npm scripts — define
[tasks]withrun,description, anddependschains; run viamise run <task>. mise orchestrates multi-tool workflows, not just Node. - Built-in backends — prefer
aqua:andgithub:(built in, provenance-verified). Avoid the deprecatedubi:backend and external fetchers; migrateubi:owner/repo->github:owner/repo(same syntax). - Idiomatic version files — enable only when you need interop with existing
.nvmrc/.node-version/package.jsondevEngines.runtime:mise settings add idiomatic_version_file_enable_tools node. - Phased adoption — host first, then CI, then containers; keep the old path working until each phase is verified.
mise.toml patterns
[tools]
shellcheck = "latest" # linter: latest for the newest rules
actionlint = "latest" # linter: latest for the newest rules
uv = "latest" # low-risk, fast-moving
node = "lts" # runtime: LTS channel, floats the patch
java = "temurin-25" # runtime: Temurin major, floats the patch
python = "3.14" # runtime: pin the minor line
[tasks.test]
description = "Run all test scripts"
run = "..."
[tasks.lint]
description = "Run all linters"
depends = ["lint-shell", "lint-actions"]
Translate a Makefile or npm script target to a task verbatim — preserve shell
semantics (pipes, loops, $()), keep the existing names, and add depends to
model the ordering the old target relied on.
CI (GitHub Actions)
Use jdx/mise-action@v4; it reads the committed mise.toml and installs and
caches the pinned tools, replacing per-tool setup actions
(actions/setup-python, astral-sh/setup-uv, raven-actions/actionlint, …).
Run the actual work through tasks:
- uses: jdx/mise-action@v4
- run: mise run test
- run: mise run lint
Scope a job to only the tools it needs with install_args — with: { install_args: "node aube" } installs just those (versions still come solely from mise.toml), so
a JS job does not drag in unrelated toolchains like the dotnet SDK. The built-in
cache: true (on by default) caches the installed tool binaries.
Containers
- Pin the mise binary by version and verify its sha256; do not pipe
curl | bashin production images. - Pre-cache tools system-wide with
mise install --system(lands in/usr/local/share/mise) so a dropped-privilege runtime user (e.g. uid 1000) can find them; ensure the result is world-readable.
Gotchas
- Untrusted
mise.toml— mise refuses to load a config it has not been trusted to run; on a fresh checkoutmise installand tasks silently no-op until you runmise trustonce in the repo.jdx/mise-actiontrusts the config automatically, so this is a host-only first-run step. - Version-source fragmentation — keeping
packageManager/corepack alongsidemise.tomlcreates two version sources that drift. Consolidate tomise.toml. ubi:deprecation — it still works but warns; switch to the built-ingithub:backend (sameowner/reposyntax, with provenance verification).- Container tool visibility — tools installed into root's home are invisible
to a uid-dropped runtime user; use
mise install --systeminstead. - macOS Gatekeeper quarantine — precompiled binaries mise downloads on macOS
(e.g. PHP) can be quarantined and refuse to run. On a Gatekeeper warning, clear
the attribute on the installed path:
xattr -d com.apple.quarantine ~/.local/share/mise/installs/<tool>/<version>/....
Related
aube— the Node.js package manager installed and pinned through mise.