one-line-installer-patterns
Installation
SKILL.md
One-Line Installer Patterns
When this pattern is the right tool
A curl … | bash install script is the right answer in a narrow set of cases. Outside that set, simpler distribution mechanisms exist and should be used.
Use this pattern when:
- The project is multi-language (Python + Node + Docker) and
uv tool installcannot do the job alone - The project requires system prerequisites that must be detected and clearly directed (Docker, Node via fnm/volta, jq, etc.)
- The intended audience is non-technical and cannot be expected to run more than one command
- The "real" install is
docker compose up, but the user needs a clean way to land the compose file, generate an.env, and start the stack
Don't use this pattern when:
- The project is a Python CLI → use
uv tool install git+...and seecli-packaging-patterns - The project is a Node CLI → publish to npm, document
npx <tool>orpnpm dlx <tool> - The project produces a single static binary → ship via GitHub releases, document
curl -L .../tool -o ~/.local/bin/tool && chmod +x ~/.local/bin/tool. This is the modern Go/Rust default. - The project is a pure containerized app → ship a
docker-compose.yml. The "install command" isdocker compose up -d. Plausible, n8n, and Outline all do this.