This directory contains installation metadata for all development tools managed by this project.
Each tool has its own JSON file: catalog/<tool>.json
Download and install binary from GitHub releases.
Required fields:
binary_name: Name of the binary executabledownload_url_template: URL template with{version},{os},{arch}placeholders
Optional fields:
github_repo: GitHub repository (owner/name) for version lookupversion_url: Direct URL to fetch latest version stringfallback_url_template: Alternative download URL if primary failsarch_map: Architecture name mappings (e.g.,{"x86_64": "amd64"})
Example: kubectl.json, fd.json, ripgrep.json
Download and install HashiCorp products from releases.hashicorp.com.
Required fields:
product_name: HashiCorp product name (terraform, vault, consul, etc.)binary_name: Name of the binary executablegithub_repo: GitHub repository for version lookup
Optional fields:
arch_map: Architecture name mappings
Example: terraform.json
Install AWS CLI using official installer.
Required fields:
installer_url: URL to AWS CLI installer zipbinary_name: Name of the binary (usually "aws")
Example: aws.json
Install Python tools via uv tool install.
Required fields:
package_name: PyPI package name
Example: semgrep.json, ruff.json, black.json
Install tools via system package managers (apt, brew, dnf, pacman).
Required fields:
binary_name: Name of the binary executablepackages: Object with package names per manager
Optional fields:
notes: Installation notes (e.g., "comes with Python")
Example: pipx.json, yarn.json, sponge.json
- Create
catalog/<tool>.jsonwith appropriate metadata - The tool will automatically be available via
make install-<tool>,make upgrade-<tool>,make uninstall-<tool>, andmake reconcile-<tool> - No need to create a custom install script!
Currently 103 tools are cataloged.
INSTALL_STRATEGY: Where to install tools (USER, GLOBAL, CURRENT, PROJECT)USER(default): Install to ~/.local/binGLOBAL: Install to /usr/local/bin (requires sudo)CURRENT: Keep tool where currently installedPROJECT: Install to ./.local/bin
# Install a tool
scripts/install_tool.sh kubectl
# With custom strategy
INSTALL_STRATEGY=GLOBAL scripts/install_tool.sh terraform
# Via guide.sh (interactive upgrade)
make upgradeAll 103 tools have catalog entries. The generic installer (scripts/install_tool.sh) reads a tool's catalog JSON and delegates to the appropriate method-specific installer under scripts/installers/. Tools with complex installation needs (python, node, docker, rust, etc.) use install_method: "dedicated_script" to route to their existing bespoke scripts.
See ADR-007 for the full architectural decision record.