Use when the user asks to install, add, or set up a package, tool, CLI, or application
$ARGUMENTS: Space-separated package names to install.
When to escalate: For complex backend decisions, version conflicts, or security concerns, consult the Package Manager subagent.
For each package in $ARGUMENTS:
Check in order:
Mise registry:
mise registry | grep -i <package>
Known GUI/system apps: GUI applications → cask, system utilities → brew
Package type mapping:
| Package Type | Format |
|---|---|
| Aqua registry | "aqua:owner/repo" = "version" |
| GitHub releases | "github:owner/repo" = "version" |
| Python CLI | "pipx:package" = "version" |
| Node.js CLI | "npm:package" = "version" |
| GUI app | Add to casks list |
| System utility | Add to brews list |
GitHub tools (aqua/github):
gh release view --repo <owner>/<repo> --json tagName --jq .tagName
npm:
npm view <package> version
PyPI:
pip index versions <package> 2>/dev/null | head -1
Native mise:
mise ls-remote <tool> | tail -1
Mise tools → home/dot_config/mise/config.toml:
[tools] sectionHomebrew → home/.chezmoidata/packages.yaml:
packages.darwin.brews or packages.darwin.caskschezmoi diff
Expected: Only the intended manifest file changed. If unrelated changes appear, investigate.
Requires user approval:
chezmoi apply
CRITICAL: Always run chezmoi apply with no arguments. This triggers run_onchange_00-install-mise-tools.sh.tmpl which runs mise install. Targeted apply (chezmoi apply <file>) skips this script.
If the diff shows unrelated changes, ask the user how to proceed - do NOT attempt a partial apply.
git add <manifest-file>
git commit -m "feat: add <package-name>"
After all packages: Ask user "All packages installed and committed. Push to origin?"
latest, ranges, wildcards)home/ onlySee docs/package-management.md for complete backend documentation.