agentleFS
PaldomPaldom/mac-os-setup-skills/skills/dev-cli-tools/SKILL.md

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

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
  1. Distinctive:

    Ask which groups the user wants (default: all of core + git):

    line 39
  2. Very specific:

    After appending, read the tail of ~/.zshrc once to confirm the lines landed where intended (grep guards match commented lines too — eyes …

    line 82

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 ~/.zshrc idempotently (grep-guard); never restructure the file (that's zsh-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
ToolReplacesWhy it earns its place
ripgrep (rg)grep -rfastest code search, respects .gitignore
fdfindsane syntax, fast, ignores noise
fzf—fuzzy-pick anything: history, files, branches
batcatsyntax highlighting, line numbers, git marks
ezalscolors, git status, tree view (successor of dead exa)
zoxidecdfrecency jumps: z proj from anywhere
jq / yq—JSON / YAML surgery in pipelines
git-deltadiff pagerreadable side-by-side diffs
lazygit—full git TUI: stage hunks, rebase, browse
gh—GitHub from the terminal: PRs, issues, auth
htoptopusable 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 / zi

Notes: 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

  • exa is dead (formula removed) — anything recommending it is stale; eza is the maintained fork.
  • fzf without the --zsh source line looks "installed but broken" — the binary works, the keybindings don't.
  • zoxide before compinit breaks its completions; symptom: zi errors.
  • bat as cat alias with default style breaks piping expectations for some tools — --style=plain keeps output clean; never rely on aliases in scripts.
  • macOS ships BSD userland; GNU-flag muscle memory (ls --color) fails — these replacements sidestep that, or brew install coreutils for real GNU tools (g-prefixed).

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.