Agent skill
install-tool
Use when a tool, CLI, or package is needed but not installed, or when the user asks to install/add a tool. Prefers mise for all installations.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/install-tool
SKILL.md
Install Tool
Arguments
$ARGUMENTS
Instructions
1. Identify the Tool
Parse the arguments for tool names and optional versions. If no version is specified, default to @latest.
2. Check If Already Installed
mise which <tool> 2>/dev/null || command -v <tool> 2>/dev/null
If the tool is already available, report its location and version. Stop unless the user explicitly wants a different version.
3. Search the Mise Registry
mise search <tool>
mise registry <tool>
mise search— fuzzy-searches the registry for matching toolsmise registry <tool>— shows the full backend path (e.g.,core:node,aqua:jqlang/jq)
If no results, check alternate names or ask the user.
4. Choose Scope
CRITICAL: Global installs must happen in dotfiles
Before proceeding, determine if this is a global install:
- Arguments include
--globalor-g - User explicitly asks for global install
- Tool is general-purpose (jq, ripgrep, etc.) and no local
mise.tomlexists
If global install is requested:
- Check if we're in the chezmoi source directory:
chezmoi_source=$(chezmoi source-path 2>/dev/null)
current_dir=$(pwd)
# Check if current directory is within chezmoi source directory
-
If NOT in dotfiles (current dir not within
chezmoi source-path):- REFUSE the install
- Tell the user: "Global tool installs must be done from your dotfiles repository to ensure they're tracked and reproducible. Please run
chezmoi cdfirst, then run/install-toolagain." - Stop execution
-
If in dotfiles:
- Proceed with
mise use --global - This will update
home/dot_config/mise/config.toml(the chezmoi source file) - Remind user to apply changes:
chezmoi apply ~/.config/mise/config.toml
- Proceed with
Decision tree for project-local installs:
- Inside a project directory with
mise.toml→ project-local (default) - No
mise.tomlexists → create one withmise use <tool>@<version>
5. Preview the Install
Always dry-run first:
mise use --dry-run <tool>@<version>
Report what will be installed and where the config will be written.
6. Execute
# Project-local (default)
mise use <tool>@<version>
# Global (only from within dotfiles)
mise use --global <tool>@<version>
# Then apply via chezmoi:
chezmoi apply ~/.config/mise/config.toml
# Pinned exact version (project-local)
mise use --pin <tool>@<version>
After global install, remind the user that the tool is now configured in their dotfiles and will be available everywhere after chezmoi apply.
7. Verify
mise which <tool>
<tool> --version # or equivalent
Confirm the tool is available and report the installed version.
When Mise Cannot Provide the Tool
If mise search and mise registry return no results:
- Stop and tell the user — do not fall back to brew/apt/npm/pipx
- Suggest alternatives:
- Check if it's available via a different name
- Use
ubibackend:mise use ubi:owner/repo - Use
aquabackend:mise use aqua:owner/repo - Use language-specific backend (see reference below)
- If mise truly cannot provide it, ask the user for approval before using any other installer
Mise Discovery Subcommands
| Command | Purpose |
|---|---|
mise search <name> |
Fuzzy-search the tool registry |
mise registry <name> |
Show full backend path for a tool |
mise registry --backend <be> |
List all tools for a specific backend |
mise ls-remote <tool> |
List available versions for a tool |
mise ls-remote <tool>@<prefix> |
Filter versions by prefix (e.g., node@20) |
mise tool <name> |
Show info: backend, installed/active versions, config source |
mise ls |
List all installed and active tool versions |
mise backends ls |
List all available backends |
Mise Backends Reference
| Backend | Prefix | Installs from | Example |
|---|---|---|---|
| core | core: |
Built-in support (node, python, go, etc.) | mise use node@22 |
| aqua | aqua: |
aqua registry — GitHub releases | mise use aqua:jqlang/jq |
| asdf | asdf: |
asdf plugin ecosystem | mise use asdf:mise-plugins/mise-poetry |
| cargo | cargo: |
Rust crates (crates.io) | mise use cargo:ripgrep |
| go | go: |
Go modules | mise use go:golang.org/x/tools/gopls |
| npm | npm: |
npm packages | mise use npm:prettier |
| pipx | pipx: |
Python packages (isolated envs) | mise use pipx:black |
| gem | gem: |
Ruby gems | mise use gem:rubocop |
| ubi | ubi: |
GitHub releases (universal) | mise use ubi:BurntSushi/ripgrep |
| vfox | vfox: |
vfox plugin ecosystem | mise use vfox:version-fox/vfox-node |
| conda | conda: |
Conda/mamba packages | mise use conda:scipy |
| dotnet | dotnet: |
.NET tools | mise use dotnet:fantomas |
| spm | spm: |
Swift packages | mise use spm:nicklockwood/SwiftFormat |
| http | http: |
Direct URL download | mise use http:https://example.com/tool.tar.gz |
Backend Selection Guide
- Check
mise searchfirst — most tools have a default backend - Core for major languages (node, python, ruby, go, java, etc.)
- Aqua for most CLI tools distributed as GitHub releases
- npm/pipx/cargo/go/gem for language-ecosystem packages
- ubi as a fallback for any GitHub release not in aqua
Examples
/install-tool jq → search, preview, install jq
/install-tool node@22 → install Node.js 22.x
/install-tool --global ripgrep → install ripgrep globally
/install-tool terraform jq go → install multiple tools
/install-tool cargo:stylua → install via cargo backend
/install-tool ubi:BurntSushi/ripgrep → install via ubi backend
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?