dev-cli-tools
Skill0 starsChanged 3 months agoMITView on GitHub
Installs a curated modern CLI toolbelt on macOS - ripgrep, fd, fzf, bat, eza, zoxide, jq, git-delta, lazygit, gh - plus the shell integration lines each needs. Use for "install CLI tools", "better ls/cat/grep replacements", "a nicer git diff pager or git TUI", "set up fzf/zoxide", "terminal toolbelt". Not for installing Homebrew itself, GUI apps, cloud CLIs, language runtimes, or prompt themes.
- Installs packages
In this repository21 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- add-skillSkill
- publish-repoSkill
- ai-dev-toolsSkill
- cloud-dev-setupSkill
- docker-on-macSkill
- dotfiles-setupSkill
- editor-setupSkill
- git-ssh-identitySkill
- homebrew-setupSkill
- language-runtimesSkill
- mac-dev-appsSkill
- mac-maintenanceSkill
- macos-defaultsSkill
- macos-dev-setupSkill
- macos-security-baselineSkill
- macos-system-prepSkill
- mobile-dev-setupSkill
- web-dev-setupSkill
- zsh-setupSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 39
Ask which groups the user wants (default: all of core + git):
- Very specific: line 82
After appending, read the tail of ~/.zshrc once to confirm the lines landed where intended (grep guards match commented lines too — eyes …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Dev CLI Tools
Installs the modern CLI toolbelt and — the part everyone forgets — the shell
integration lines that make half of these tools actually work. Encodes the
2026 state of the ecosystem (eza not exa, fzf --zsh not the install
script, zoxide after compinit).
When NOT to use
- Homebrew missing/broken →
homebrew-setup(prerequisite) - Prompt/theme/plugins →
zsh-setup - GUI apps →
mac-dev-apps· cloud CLIs →cloud-dev-setup· AI agent CLIs →ai-dev-tools· runtimes →language-runtimes - Using the tools (jq queries, ripgrep patterns) → native competence
Prerequisites
command -v brew must succeed; otherwise stop and point at
homebrew-setup.
Safety rails
- Append init lines to
~/.zshrcidempotently (grep-guard); never restructure the file (that'szsh-setup's job). - Aliases that shadow system commands (
ls→eza,cat→bat) are opt-in: offer, don't impose. Never alias in scripts' path (aliases are interactive-only anyway, but say so).
Workflow
1. Install the curated set
Ask which groups the user wants (default: all of core + git):
# Core search/navigation/viewing
brew install ripgrep fd fzf bat eza zoxide tree wget jq yq
# Git experience
brew install gh git-delta lazygit
# System monitoring
brew install htop # or btop for the fancier one
# Optional: synced, searchable shell history (owns Ctrl-R when enabled)
# brew install atuin # + eval "$(atuin init zsh)" in ~/.zshrc; default local-only| Tool | Replaces | Why it earns its place |
ripgrep (rg) | grep -r | fastest code search, respects .gitignore |
| fd | find | sane syntax, fast, ignores noise |
| fzf | — | fuzzy-pick anything: history, files, branches |
| bat | cat | syntax highlighting, line numbers, git marks |
| eza | ls | colors, git status, tree view (successor of dead exa) |
| zoxide | cd | frecency jumps: z proj from anywhere |
| jq / yq | — | JSON / YAML surgery in pipelines |
| git-delta | diff pager | readable side-by-side diffs |
| lazygit | — | full git TUI: stage hunks, rebase, browse |
| gh | — | GitHub from the terminal: PRs, issues, auth |
| htop | top | usable process monitor |
2. Shell integration (the step that makes them work)
Append each exactly once (grep-guarded), in the "tool inits" section of
~/.zshrc:
# zoxide needs compinit. Oh My Zsh runs it; a STOCK .zshrc may not - ensure it first:
grep -qE 'compinit|oh-my-zsh.sh' ~/.zshrc || echo 'autoload -Uz compinit && compinit' >> ~/.zshrc
grep -q 'fzf --zsh' ~/.zshrc || echo 'source <(fzf --zsh)' >> ~/.zshrc # Ctrl-R history, Ctrl-T files, Alt-C cd
grep -q 'zoxide init' ~/.zshrc || echo 'eval "$(zoxide init zsh)"' >> ~/.zshrc # AFTER compinit; provides z / ziNotes: fzf --zsh is the current integration (fzf ≥ 0.48; the old
~/.fzf/install script is legacy). zoxide's init must run after compinit
— in an Oh My Zsh setup, anywhere after source $ZSH/oh-my-zsh.sh is fine.
After appending, read the tail of ~/.zshrc once to confirm the lines
landed where intended (grep guards match commented lines too — eyes beat
grep here), then verify behavior in a fresh shell.
3. Optional aliases (ask first)
--icons needs a Nerd Font selected in the terminal (→ zsh-setup);
drop the flag otherwise.
alias ls='eza --icons'
alias ll='eza -l --git --icons'
alias la='eza -la --git --icons'
alias cat='bat --style=plain'
alias lg='lazygit'4. delta as git's pager (if the user wants pretty diffs)
git config --global core.pager delta
git config --global interactive.diffFilter 'delta --color-only'
git config --global delta.navigate true # n / N jump between files(Full git config strategy lives in git-ssh-identity; this is delta's
self-contained block, straight from delta's docs.)
5. gh auth
gh is installed here; authentication (gh auth login) belongs to
git-ssh-identity — point there rather than half-doing it.
6. Verify
sh "${CLAUDE_SKILL_DIR}/scripts/check.sh"Then in a new shell: Ctrl-R opens fzf's history search; z <dir-frag>
jumps after one visit; rg --version prints.
Output spec
Done means: requested tools installed, integration lines present exactly once, Ctrl-R/z work in a fresh shell, aliases applied only if chosen, and nothing outside the toolbelt was touched.
Gotchas
exais dead (formula removed) — anything recommending it is stale; eza is the maintained fork.- fzf without the
--zshsource line looks "installed but broken" — the binary works, the keybindings don't. - zoxide before compinit breaks its completions; symptom:
zierrors. - bat as
catalias with default style breaks piping expectations for some tools —--style=plainkeeps output clean; never rely on aliases in scripts. - macOS ships BSD userland; GNU-flag muscle memory (
ls --color) fails — these replacements sidestep that, orbrew install coreutilsfor real GNU tools (g-prefixed).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

