cli-standardization/CLAUDE.md

1.7 KiB

CLI Standardization

Ansible project to deploy a modern CLI environment (Fish + Starship + modern coreutils) to Arch and Ubuntu/Debian hosts.

What it installs

  • Fish shell 4.x (PPA on Ubuntu, pacman on Arch)
  • Starship prompt (official binary installer)
  • fzf — fuzzy finder
  • zoxide — smarter cd
  • bat — cat with syntax highlighting
  • eza — modern ls
  • fd — modern find
  • ripgrep — fast grep
  • Fisher plugin manager + plugins

Dev workflow

# Lint
ansible-lint playbook.yml

# Syntax check
ansible-playbook playbook.yml --syntax-check

# Dry run
ansible-playbook playbook.yml -i inventory.yml --check --diff

# Deploy
ansible-playbook playbook.yml -i inventory.yml
ansible-playbook playbook.yml -i inventory.yml --limit manjaro-dev

Role structure

roles/cli_modern/
├── defaults/main.yml          # All configurable variables
├── tasks/
│   ├── main.yml               # Task dispatcher
│   ├── packages-archlinux.yml # Arch/Manjaro packages
│   ├── packages-debian.yml    # Ubuntu/Debian packages + Fish PPA
│   ├── starship.yml           # Starship binary install
│   ├── fisher.yml             # Fisher + plugin sync
│   ├── config.yml             # Deploy config templates
│   └── default-shell.yml      # Set Fish as login shell
└── templates/
    ├── config.fish.j2         # Fish shell config
    ├── starship.toml.j2       # Starship prompt config
    └── fish_plugins.j2        # Fisher plugin list

Configuration

All options are in roles/cli_modern/defaults/main.yml. Override per-host in host_vars/ or per-group in group_vars/.