← ClaudeAtlas

add-clilisted

Add a new CLI binary (or wire missing auth/persistence for an existing one) to the toolbox image — Dockerfile layer + version ARG + opt-out flag + `internal/config/tools.go` entry + `smoke-test.sh` check + Renovate `customManager` + (when the CLI persists state) `~/.toolbox/<tool>` bind-mount in `internal/mountplan/defaults.go`. Use this whenever the user says things like "add <X> to the toolbox", "install <X> in the container", "put <X> in the image", "add <X> CLI", "wire auth for <X>", "persist <X> credentials", "save <X> authentication", or names a binary they want available inside `toolbox shell`. Also use it when an audit shows a CLI is in the Dockerfile but its credentials don't survive `toolbox stop` — that's the gws-style half-installed case this skill explicitly handles. Always perform the edits autonomously and finish with `/verify`; don't hand the user a checklist to apply themselves.
filippolmt/toolbox · ★ 0 · DevOps & Infrastructure · score 60
Install: claude install-skill filippolmt/toolbox
# /add-cli Wire a new CLI (or fix a half-wired one) into the toolbox image. The work is mechanical but spread across **six** files, and a missing entry in any of them silently regresses something — Renovate stops bumping the version, `IsDefaultTools` flips to false, smoke-test passes a broken binary, or `gh auth login` writes to a tmpfs that vanishes on `toolbox stop`. Doing it all in one shot is faster and safer than triaging the gap later. The pattern crystallised in commit `[gws auth mount]`: gws was already in the Dockerfile but `gws auth login` lost credentials on every container recreate because no `~/.toolbox/gws` mount existed and the OS keyring backend isn't available inside the container. The fix at the time touched `config.go` + `config_test.go` + Dockerfile (one ENV) and `/verify` came back green. After the Mount Plan refactor (CONTEXT.md), the equivalent edits today land in `internal/mountplan/defaults.go` (canonical mount list) + `internal/mountplan/defaults_test.go` (mount-count + `assertMount`) + Dockerfile. Same shape, new home. ## When to branch Before touching anything, classify the CLI into one of three states. Grep, don't guess: ```bash grep -n "<TOOL>_VERSION\|INSTALL_<TOOL>" internal/build/assets/Dockerfile grep -n "\"<tool>\"" internal/config/tools.go grep -n "<tool>" internal/build/assets/smoke-test.sh grep -n "\"~/.toolbox/<tool>\"" internal/mountplan/defaults.go grep -n "<TOOL>_VERSION" renovate.json ``` | State | What's there | What to do | |