name: missing-tools description: Resolves missing CLI tools. Use when a command is unavailable, a shell reports command not found, or a tool must be run without installing it globally.
Missing Tools
Use this workflow when a command is unavailable in the current shell.
Priority Order
Try the current project's direnv environment:
direnv exec . <command>Use comma for tools from nixpkgs:
, <command>When comma may fetch from GitHub, also use the
nix-github-rate-limitskill.Use
nix runwhen a specific nixpkgs package is needed:nix run nixpkgs#<package> -- <args>When the command may fetch from GitHub, also use the
nix-github-rate-limitskill.Use
nix shellas the last resort:nix shell nixpkgs#<package> --command <command>When the command may fetch from GitHub, also use the
nix-github-rate-limitskill.
Notes
Never install missing tools globally. Do not use commands such as
npm install -g,npm i -g,pnpm add -g,yarn global add,bun add -g,uv tool install,brew install, or language-specific global installers to resolve a missing command.Prefer
direnv exec .first because project-local dev shells often already provide the right tool version and environment variables.Comma automatically finds and runs the nixpkgs package containing the requested command.
Use a Zsh login shell for normal agent commands because the dotfiles-managed Zsh environment loads direnv without requiring Fish syntax:
zsh -lc '<simple command>'Some user tools are only on Fish's PATH. If Zsh cannot find a command, resolve its absolute path through Fish and invoke that path from Zsh:
fish -lc 'command -v <tool>'Use
fish -lc '<simple command>'directly only when the command has no shell-specific syntax. Use Bash explicitly for Bash-specific syntax or a script with the appropriate shebang for complex commands.