Skip to content

Built-in Templates

Bivvy ships dozens of built-in templates for common development tools. When you run bivvy init, applicable templates are auto-detected based on files in your project, and you can also reference them by name in .bivvy/config.yml.

Every template is referenced by its full name (yarn-install, bundle-install, cargo-build, …). There are no short-name aliases. When two categories define the same name (e.g. version-bump), prefix it with the category (rust/version-bump).

System Package Managers

TemplatePlatformsDetectsCommand
brew-bundlemacOS, LinuxBrewfilebrew bundle install
apt-installLinuxapt-get availablesudo apt-get install -y
yum-installLinuxyum availablesudo yum install -y
pacman-installLinuxpacman availablesudo pacman -S --noconfirm

Windows Package Managers

TemplatePlatformsDetectsCommand
choco-installWindowschoco availablechoco install -y
scoop-installWindowsscoop availablescoop install

Version Managers

TemplatePlatformsDetectsCommand
mise-toolsmacOS, Linux, Windows.mise.toml, mise.tomlmise install
asdf-toolsmacOS, Linux.tool-versionsasdf install
volta-setupmacOS, Linux, Windowsvolta availablevolta install node
fnm-setupmacOS, Linux, Windows.nvmrc, .node-versionfnm install && fnm use
nvm-nodemacOS, Linux.nvmrcnvm install
rbenv-rubymacOS, Linux.ruby-versionrbenv install --skip-existing
pyenv-pythonmacOS, Linux.python-versionpyenv install --skip-existing

Ruby

TemplatePlatformsDetectsCommand
bundle-installmacOS, Linux, WindowsGemfilebundle install
rails-dbmacOS, Linux, Windowsbin/rails, config/routes.rbbundle exec rails db:prepare
ruby/version-bumpmacOS, Linux, Windowsbump "${bump}" --no-commit --no-tag

Node.js

TemplatePlatformsDetectsCommand
yarn-installmacOS, Linux, Windowsyarn.lockyarn install
npm-installmacOS, Linux, Windowspackage-lock.json, package.jsonnpm install
pnpm-installmacOS, Linux, Windowspnpm-lock.yamlpnpm install
bun-installmacOS, Linux, Windowsbun.lockbbun install
nextjs-buildmacOS, Linux, Windowsnext.config.js, next.config.mjs, next.config.tsnpx next build
vite-buildmacOS, Linux, Windowsvite.config.ts, vite.config.js, vite.config.mjsnpx vite build
remix-buildmacOS, Linux, Windowsremix.config.js, remix.config.tsnpx remix build
node/version-bumpmacOS, Linux, Windowsnpm version "${bump}" --no-git-tag-version

Python

TemplatePlatformsDetectsCommand
pip-installmacOS, Linux, Windowsrequirements.txt, pyproject.tomlpip install -r requirements.txt
poetry-installmacOS, Linux, Windowspoetry.lockpoetry install
uv-syncmacOS, Linux, Windowsuv.lockuv sync
django-migratemacOS, Linux, Windowsmanage.pypython manage.py migrate
alembic-migratemacOS, Linux, Windowsalembic.inialembic upgrade head
python/version-bumpmacOS, Linux, Windowsbump-my-version bump "${bump}" --no-commit --no-tag

PHP

TemplatePlatformsDetectsCommand
composer-installmacOS, Linux, Windowscomposer.jsoncomposer install
laravel-setupmacOS, Linux, WindowsLaravel project filescp -n .env.example .env; php artisan key:generate --force
php/version-bumpmacOS, Linux, WindowsUpdates version in composer.json

Rust

TemplatePlatformsDetectsCommand
cargo-buildmacOS, Linux, WindowsCargo.tomlcargo build
diesel-migratemacOS, Linux, Windowsdiesel.tomldiesel setup && diesel migration run
rust/version-bumpmacOS, Linux, Windowscargo set-version (requires cargo-edit)

Go

TemplatePlatformsDetectsCommand
go-mod-downloadmacOS, Linux, Windowsgo.modgo mod download
go/version-bumpmacOS, Linux, WindowsComputes the next semver Git tag (vX.Y.Z)

Swift

TemplatePlatformsDetectsCommand
swift-resolvemacOS, LinuxPackage.swiftswift package resolve
swift/version-bumpmacOSagvtool new-marketing-version …

Java

TemplatePlatformsDetectsCommand
maven-resolvemacOS, Linux, Windowspom.xmlmvn dependency:resolve
java/version-bumpmacOS, Linux, Windowsmvn versions:set -DnewVersion="${bump}" -DgenerateBackupPoms=false

Kotlin / Gradle

TemplatePlatformsDetectsCommand
gradle-depsmacOS, Linux, Windowsbuild.gradle, build.gradle.kts, settings.gradle*./gradlew dependencies
spring-boot-buildmacOS, Linux, Windowsapplication.properties, application.yml./gradlew build -x test
kotlin/version-bumpmacOS, Linux, WindowsUpdates version in gradle.properties or build.gradle.kts

Elixir

TemplatePlatformsDetectsCommand
mix-deps-getmacOS, Linux, Windowsmix.exsmix deps.get
elixir/version-bumpmacOS, Linux, WindowsUpdates version: in mix.exs

.NET

TemplatePlatformsDetectsCommand
dotnet-restoremacOS, Linux, Windows*.sln, *.csprojdotnet restore
dotnet/version-bumpmacOS, Linux, WindowsUpdates <Version> in *.csproj

Dart / Flutter

TemplatePlatformsDetectsCommand
dart-pub-getmacOS, Linux, Windowspubspec.yamldart pub get
flutter-pub-getmacOS, Linux, Windowspubspec.yaml (with Flutter SDK)flutter pub get

Deno

TemplatePlatformsDetectsCommand
deno-installmacOS, Linux, Windowsdeno.json, deno.jsoncdeno install

Database Migrations

TemplatePlatformsDetectsCommand
rails-dbmacOS, Linux, Windowsbin/rails, config/routes.rbbundle exec rails db:prepare
prisma-migratemacOS, Linux, Windowsprisma/schema.prismanpx prisma migrate dev
diesel-migratemacOS, Linux, Windowsdiesel.tomldiesel setup && diesel migration run
alembic-migratemacOS, Linux, Windowsalembic.inialembic upgrade head
django-migratemacOS, Linux, Windowsmanage.pypython manage.py migrate

Containers & Orchestration

TemplatePlatformsDetectsCommand
docker-compose-upmacOS, Linux, Windowscompose.yml, docker-compose.ymldocker compose up -d
helm-depsmacOS, Linux, WindowsChart.yamlhelm dependency update

Infrastructure as Code

TemplatePlatformsDetectsCommand
terraform-initmacOS, Linux, Windows*.tfterraform init
cdk-synthmacOS, Linux, Windowscdk.jsoncdk synth
pulumi-installmacOS, Linux, WindowsPulumi.yamlpulumi install
ansible-installmacOS, Linuxansible.cfg, playbook.ymlansible-galaxy install -r requirements.yml

Artifact Audits

Post-build security audits that scan for source maps, secrets, debug symbols, and other files that should not ship to production. See the Artifact Audits guide for usage examples.

TemplatePlatformsDetectsChecks
node-artifact-auditmacOS, Linux, Windowspackage.jsonSource maps, .env, secrets in JS, node_modules in dist
rust-artifact-auditmacOS, Linux, WindowsCargo.tomlDebug symbols, .pdb files, debug profile config
python-artifact-auditmacOS, Linux, Windowspyproject.tomlSecrets in wheels/sdists, .env, __pycache__, test files
go-artifact-auditmacOS, Linux, Windowsgo.modDWARF symbols, embedded paths, embedded secrets
java-artifact-auditmacOS, Linux, Windowspom.xmlSource in JARs, debug info, hardcoded secrets
dotnet-artifact-auditmacOS, Linux, Windows*.sln, *.csproj.pdb files, Development config, web.config debug=true
docker-artifact-auditmacOS, Linuxcompose.yml.env, .git, SSH keys, source maps in images
ruby-artifact-auditmacOS, Linux, WindowsGemfileCredentials in gems, master.key, broad globs
php-artifact-auditmacOS, Linux, Windowscomposer.jsonAPP_DEBUG=true, dev deps, phpinfo()
elixir-artifact-auditmacOS, Linuxmix.exsHardcoded secrets, dev/test config in release
swift-artifact-auditmacOS, LinuxPackage.swiftDebug symbols, dSYM bundles, embedded secrets

Cross-cutting Tools

TemplatePlatformsDetectsCommand
env-copymacOS, Linux, Windows.env.example, .env.sample, .env.templatecp -n .env.example .env (and fallbacks)
pre-commit-installmacOS, Linux.pre-commit-config.yamlpre-commit install

Monorepo / Workspace

TemplatePlatformsDetectsCommand
nx-buildmacOS, Linux, Windowsnx.jsonnpx nx reset && npx nx run-many --target=build --all --skip-nx-cache
turbo-buildmacOS, Linux, Windowsturbo.jsonnpx turbo build
lerna-bootstrapmacOS, Linux, Windowslerna.jsonnpx lerna bootstrap

Example Usage

steps:
deps:
template: brew-bundle
ruby:
template: bundle-install
depends_on: [deps]
node:
template: yarn-install
depends_on: [deps]

Template Details

Each template provides:

  • Command — the shell command to run
  • Completed checks — how Bivvy decides the step is already done (it skips when checks pass)
  • Watches — files whose changes mark the step dirty and force a re-run
  • Environment impactPATH or shell config changes the step makes

brew-bundle

Installs Homebrew packages from a Brewfile.

  • Platforms: macOS, Linux
  • Detects: Brewfile
  • Command: brew bundle install
  • Completion check: brew bundle check
  • Watches: Brewfile, Brewfile.lock.json

bundle-install

Installs Ruby gems from a Gemfile.

  • Platforms: macOS, Linux, Windows
  • Detects: Gemfile
  • Command: bundle install
  • Completion check: bundle check
  • Watches: Gemfile, Gemfile.lock

yarn-install

Installs Node.js dependencies using Yarn.

  • Platforms: macOS, Linux, Windows
  • Detects: yarn.lock
  • Command: yarn install
  • Completion check: yarn check --verify-tree
  • Watches: yarn.lock, package.json
  • Environment: sets NODE_ENV=development

npm-install

Installs Node.js dependencies using npm.

  • Platforms: macOS, Linux, Windows
  • Detects: package-lock.json, package.json
  • Command: npm install
  • Completion check: node_modules directory exists
  • Watches: package.json, package-lock.json
  • Environment: sets NODE_ENV=development

pnpm-install

Installs Node.js dependencies using pnpm.

  • Platforms: macOS, Linux, Windows
  • Detects: pnpm-lock.yaml
  • Command: pnpm install
  • Completion check: node_modules directory exists
  • Watches: package.json, pnpm-lock.yaml
  • Environment: sets NODE_ENV=development

bun-install

Installs Node.js dependencies using Bun.

  • Platforms: macOS, Linux, Windows
  • Detects: bun.lockb
  • Command: bun install
  • Completion check: node_modules directory exists
  • Watches: package.json, bun.lockb

volta-setup

Installs the pinned Node.js toolchain using Volta.

  • Platforms: macOS, Linux, Windows
  • Detects: volta command available
  • Command: volta install node
  • Completion check: volta which node
  • Watches: package.json

mise-tools

Installs tool versions using mise.

  • Platforms: macOS, Linux, Windows
  • Detects: .mise.toml, mise.toml
  • Command: mise install
  • Completion check: mise current
  • Watches: .mise.toml, mise.toml

asdf-tools

Installs tool versions using asdf.

  • Platforms: macOS, Linux
  • Detects: .tool-versions
  • Command: asdf install
  • Completion check: asdf current
  • Watches: .tool-versions

pip-install

Installs Python packages from requirements.txt.

  • Platforms: macOS, Linux, Windows
  • Detects: requirements.txt, pyproject.toml
  • Command: pip install -r requirements.txt
  • Completion check: pip check
  • Watches: requirements.txt

poetry-install

Installs Python dependencies using Poetry.

  • Platforms: macOS, Linux, Windows
  • Detects: poetry.lock
  • Command: poetry install
  • Completion check: poetry check
  • Watches: pyproject.toml, poetry.lock

uv-sync

Syncs Python dependencies using uv.

  • Platforms: macOS, Linux, Windows
  • Detects: uv.lock
  • Command: uv sync
  • Completion check: .venv directory exists
  • Watches: pyproject.toml, uv.lock

composer-install

Installs PHP packages from composer.json.

  • Platforms: macOS, Linux, Windows
  • Detects: composer.json
  • Command: composer install
  • Completion check: vendor directory exists
  • Watches: composer.json, composer.lock

laravel-setup

Bootstraps a Laravel project: creates .env from .env.example and generates the application key.

  • Platforms: macOS, Linux, Windows
  • Detects: Laravel project files
  • Command: cp -n .env.example .env 2>/dev/null; php artisan key:generate --force
  • Completion check: .env file exists
  • Watches: .env.example

cargo-build

Builds a Rust project using Cargo.

  • Platforms: macOS, Linux, Windows
  • Detects: Cargo.toml
  • Command: cargo build
  • Completion check: target directory exists
  • Watches: Cargo.toml, Cargo.lock

go-mod-download

Downloads Go module dependencies.

  • Platforms: macOS, Linux, Windows
  • Detects: go.mod
  • Command: go mod download
  • Completion check: go mod verify
  • Watches: go.mod, go.sum

swift-resolve

Resolves Swift Package Manager dependencies.

  • Platforms: macOS, Linux
  • Detects: Package.swift
  • Command: swift package resolve
  • Completion check: .build directory exists
  • Watches: Package.swift, Package.resolved

nvm-node

Installs the Node.js version pinned in .nvmrc using nvm.

  • Platforms: macOS, Linux
  • Detects: .nvmrc
  • Command: nvm install
  • Watches: .nvmrc

fnm-setup

Installs and activates the Node.js version pinned by .nvmrc or .node-version using fnm.

  • Platforms: macOS, Linux, Windows
  • Detects: .nvmrc, .node-version, or fnm available
  • Command: fnm install && fnm use
  • Completion check: fnm current
  • Watches: .nvmrc, .node-version

rbenv-ruby

Installs the Ruby version pinned in .ruby-version using rbenv.

  • Platforms: macOS, Linux
  • Detects: .ruby-version
  • Command: rbenv install --skip-existing
  • Completion check: rbenv version
  • Watches: .ruby-version

pyenv-python

Installs the Python version pinned in .python-version using pyenv.

  • Platforms: macOS, Linux
  • Detects: .python-version
  • Command: pyenv install --skip-existing
  • Completion check: pyenv version
  • Watches: .python-version

maven-resolve

Resolves Java dependencies using Maven.

  • Platforms: macOS, Linux, Windows
  • Detects: pom.xml
  • Command: mvn dependency:resolve
  • Completion check: target directory exists
  • Watches: pom.xml

gradle-deps

Downloads Gradle project dependencies via the Gradle wrapper.

  • Platforms: macOS, Linux, Windows
  • Detects: build.gradle, build.gradle.kts, settings.gradle, settings.gradle.kts
  • Command: ./gradlew dependencies
  • Completion check: .gradle directory exists
  • Watches: build.gradle, build.gradle.kts, settings.gradle*, gradle.properties

spring-boot-build

Builds a Spring Boot Gradle project (skipping tests).

  • Platforms: macOS, Linux, Windows
  • Detects: application.properties, application.yml
  • Command: ./gradlew build -x test
  • Completion check: build/libs directory exists
  • Watches: build.gradle, build.gradle.kts, src/main/resources/application.properties, src/main/resources/application.yml

mix-deps-get

Installs Elixir project dependencies.

  • Platforms: macOS, Linux, Windows
  • Detects: mix.exs
  • Command: mix deps.get
  • Completion check: deps directory exists
  • Watches: mix.exs, mix.lock

dotnet-restore

Restores .NET project dependencies.

  • Platforms: macOS, Linux, Windows
  • Detects: *.sln, *.csproj
  • Command: dotnet restore
  • Completion check: dotnet restore --no-restore reports nothing to do
  • Watches: *.sln, *.csproj, Directory.Build.props

dart-pub-get

Installs Dart package dependencies.

  • Platforms: macOS, Linux, Windows
  • Detects: pubspec.yaml
  • Command: dart pub get
  • Completion check: .dart_tool directory exists
  • Watches: pubspec.yaml, pubspec.lock

flutter-pub-get

Installs Flutter package dependencies.

  • Platforms: macOS, Linux, Windows
  • Detects: pubspec.yaml (with Flutter SDK dependency)
  • Command: flutter pub get
  • Completion check: .dart_tool directory exists
  • Watches: pubspec.yaml, pubspec.lock

deno-install

Caches Deno project dependencies.

  • Platforms: macOS, Linux, Windows
  • Detects: deno.json, deno.jsonc
  • Command: deno install
  • Completion check: deno.lock file exists
  • Watches: deno.json, deno.jsonc, deno.lock

nextjs-build

Builds a Next.js application to verify setup.

  • Platforms: macOS, Linux, Windows
  • Detects: next.config.js, next.config.mjs, next.config.ts
  • Command: npx next build
  • Completion check: .next directory exists
  • Watches: next.config.js, next.config.mjs, next.config.ts

vite-build

Builds a Vite project to verify setup.

  • Platforms: macOS, Linux, Windows
  • Detects: vite.config.ts, vite.config.js, vite.config.mjs
  • Command: npx vite build
  • Completion check: dist directory exists
  • Watches: vite.config.js, vite.config.ts, vite.config.mjs

remix-build

Builds a Remix application to verify setup.

  • Platforms: macOS, Linux, Windows
  • Detects: remix.config.js, remix.config.ts
  • Command: npx remix build
  • Completion check: build directory exists
  • Watches: remix.config.js, remix.config.ts, app/root.tsx

django-migrate

Runs Django database migrations.

  • Platforms: macOS, Linux, Windows
  • Detects: manage.py
  • Command: python manage.py migrate
  • Watches: manage.py, */migrations

rails-db

Prepares the Rails database (creates, migrates, seeds).

  • Platforms: macOS, Linux, Windows
  • Detects: bin/rails, config/routes.rb
  • Command: bundle exec rails db:prepare
  • Precondition: config/database.yml is present
  • Watches: db/migrate, db/seeds.rb, config/database.yml

prisma-migrate

Runs Prisma database migrations and regenerates the Prisma Client.

  • Platforms: macOS, Linux, Windows
  • Detects: prisma/schema.prisma
  • Command: npx prisma migrate dev
  • Watches: prisma/schema.prisma, prisma/migrations

diesel-migrate

Sets up the database and runs pending Diesel migrations (Rust).

  • Platforms: macOS, Linux, Windows
  • Detects: diesel.toml
  • Command: diesel setup && diesel migration run
  • Watches: diesel.toml, migrations

alembic-migrate

Upgrades the database to the latest Alembic migration revision.

  • Platforms: macOS, Linux, Windows
  • Detects: alembic.ini
  • Command: alembic upgrade head
  • Watches: alembic.ini, alembic/versions

docker-compose-up

Starts services defined in a Docker Compose file.

  • Platforms: macOS, Linux, Windows
  • Detects: compose.yml, compose.yaml, docker-compose.yml, docker-compose.yaml
  • Command: docker compose up -d
  • Completion check: docker compose ps reports a running service
  • Watches: compose.yml, compose.yaml, docker-compose.yml, docker-compose.yaml

helm-deps

Updates Helm chart dependencies.

  • Platforms: macOS, Linux, Windows
  • Detects: Chart.yaml
  • Command: helm dependency update
  • Completion check: charts/ directory exists
  • Watches: Chart.yaml, Chart.lock

terraform-init

Initializes a Terraform working directory.

  • Platforms: macOS, Linux, Windows
  • Detects: *.tf
  • Command: terraform init
  • Completion check: .terraform directory exists
  • Watches: *.tf, .terraform.lock.hcl

cdk-synth

Synthesizes CloudFormation templates from AWS CDK code.

  • Platforms: macOS, Linux, Windows
  • Detects: cdk.json
  • Command: cdk synth
  • Completion check: cdk.out directory exists
  • Watches: cdk.json

pulumi-install

Installs Pulumi project plugins and dependencies.

  • Platforms: macOS, Linux, Windows
  • Detects: Pulumi.yaml
  • Command: pulumi install
  • Completion check: pulumi plugin ls reports installed plugins
  • Watches: Pulumi.yaml, Pulumi.lock

ansible-install

Installs Ansible Galaxy roles and collections from a requirements.yml file.

  • Platforms: macOS, Linux
  • Detects: ansible.cfg, playbook.yml
  • Command: ansible-galaxy install -r requirements.yml
  • Precondition: requirements.yml is present
  • Watches: requirements.yml, ansible.cfg

env-copy

Copies an environment template (.env.example, .env.sample, or .env.template) to .env if it does not already exist.

  • Platforms: macOS, Linux, Windows
  • Detects: .env.example, .env.sample, .env.template
  • Command: tries cp -n .env.example .env, then falls back to .env.sample and .env.template
  • Completion check: .env file exists
  • Watches: .env.example, .env.sample, .env.template

pre-commit-install

Installs pre-commit hook scripts into your Git repository.

  • Platforms: macOS, Linux
  • Detects: .pre-commit-config.yaml
  • Command: pre-commit install
  • Completion check: .git/hooks/pre-commit file exists
  • Watches: .pre-commit-config.yaml

nx-build

Initializes an Nx workspace and builds all projects.

  • Platforms: macOS, Linux, Windows
  • Detects: nx.json
  • Command: npx nx reset && npx nx run-many --target=build --all --skip-nx-cache
  • Completion check: node_modules/.cache/nx directory exists
  • Watches: nx.json, workspace.json

turbo-build

Builds all packages in a Turborepo workspace.

  • Platforms: macOS, Linux, Windows
  • Detects: turbo.json
  • Command: npx turbo build
  • Completion check: node_modules/.cache/turbo directory exists
  • Watches: turbo.json, packages/*/package.json

lerna-bootstrap

Bootstraps a Lerna monorepo workspace.

  • Platforms: macOS, Linux, Windows
  • Detects: lerna.json
  • Command: npx lerna bootstrap
  • Watches: lerna.json, packages/*/package.json

version-bump templates

Each language category provides its own version-bump template that updates the version in that ecosystem’s manifest. They share the same input shape:

  • Input: bump (required) — patch, minor, major, or an explicit semver string like 1.5.0.

Reference the language-specific template by qualifying it with the category, since the unqualified version-bump resolves to the first match the registry finds:

steps:
bump-version:
template: rust/version-bump
inputs:
bump: minor

Available variants: ruby/version-bump, node/version-bump, python/version-bump, php/version-bump, rust/version-bump, go/version-bump, swift/version-bump, java/version-bump, kotlin/version-bump, elixir/version-bump, dotnet/version-bump.

Two ways to provide the bump value:

  1. Template input — set inputs: { bump: minor } directly on the step.
  2. Interactive prompt — add a prompts: block on the step.

Inputs are case-sensitive map keys, not environment variables, so something like BUMP=minor bivvy run does not feed the input.

steps:
bump-version:
template: rust/version-bump
prompts:
- key: bump
question: "Version bump type"
type: select
options:
- label: "Patch (x.y.Z)"
value: patch
- label: "Minor (x.Y.0)"
value: minor
- label: "Major (X.0.0)"
value: major

The Rust variant requires cargo-edit (cargo install cargo-edit); the Python variant requires bump-my-version; the Java variant uses the Maven versions plugin; the Swift variant uses agvtool. The Go variant computes the next semver Git tag and prints it to stdout — wire it into your release workflow to actually create the tag.

Install Templates

Install templates are used by the requirements system to install missing tools. They are triggered automatically when a requirement gap is detected and the user accepts the install prompt.

TemplateDescriptionPlatforms
brew-installInstall Homebrew package managermacOS, Linux
brew-elixirInstall Elixir using HomebrewmacOS, Linux
brew-goInstall Go using HomebrewmacOS, Linux
brew-nodeInstall Node.js using HomebrewmacOS, Linux
brew-phpInstall PHP using HomebrewmacOS, Linux
brew-pythonInstall Python using HomebrewmacOS, Linux
brew-rubyInstall Ruby using HomebrewmacOS, Linux
mise-installInstall mise version managermacOS, Linux
mise-elixirInstall Elixir using misemacOS, Linux
mise-nodeInstall Node.js using misemacOS, Linux
mise-phpInstall PHP using misemacOS, Linux
mise-pythonInstall Python using misemacOS, Linux
mise-rubyInstall Ruby using misemacOS, Linux
asdf-elixirInstall Elixir using asdfmacOS, Linux
asdf-nodeInstall Node.js using asdfmacOS, Linux
asdf-phpInstall PHP using asdfmacOS, Linux
asdf-pythonInstall Python using asdfmacOS, Linux
asdf-rubyInstall Ruby using asdfmacOS, Linux
fnm-nodeInstall Node.js using fnmmacOS, Linux, Windows
nvm-nodeInstall Node.js using nvmmacOS, Linux
volta-nodeInstall Node.js using VoltamacOS, Linux, Windows
pyenv-pythonInstall Python using pyenvmacOS, Linux
rbenv-rubyInstall Ruby using rbenvmacOS, Linux
rust-installInstall Rust toolchain via rustupmacOS, Linux, Windows
docker-installInstall Docker Desktop or Docker EnginemacOS, Linux, Windows
postgres-installInstall PostgreSQL server and client toolsmacOS, Linux
redis-installInstall Redis in-memory data storemacOS, Linux

brew-install

Installs Homebrew package manager.

  • Platforms: macOS, Linux
  • Command: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • Completion check: brew --version

docker-install

Installs Docker Desktop (macOS) or Docker Engine (Linux). On macOS, the template prints download instructions and exits with an error rather than installing automatically.

  • Platforms: macOS, Linux, Windows
  • Command: Platform-specific (manual on macOS, curl -fsSL https://get.docker.com | sh on Debian/Ubuntu)
  • Completion check: docker info

mise-install

Installs the mise version manager.

  • Platforms: macOS, Linux
  • Command: curl https://mise.run | sh
  • Completion check: mise --version

mise-node / mise-python / mise-ruby / mise-php / mise-elixir

Installs the named language using mise. Requires mise to be installed first.

  • Platforms: macOS, Linux
  • Requires: mise
  • Command: mise install <language>
  • Completion check: mise where <language>

asdf-node / asdf-python / asdf-ruby / asdf-php / asdf-elixir

Adds the asdf plugin (if missing) and installs the project’s pinned version. Requires asdf to be installed first.

  • Platforms: macOS, Linux
  • Requires: asdf
  • Command: asdf plugin add <language> 2>/dev/null; asdf install <language>
  • Completion check: asdf where <language>

brew-node / brew-python / brew-ruby / brew-go / brew-php / brew-elixir

Installs the named language using Homebrew. Requires brew to be installed first.

  • Platforms: macOS, Linux
  • Requires: brew
  • Command: brew install <language>

fnm-node

Installs the project’s Node.js version using fnm.

  • Platforms: macOS, Linux, Windows
  • Requires: fnm
  • Command: fnm install && fnm use

nvm-node

Installs the Node.js version pinned by .nvmrc using nvm.

  • Platforms: macOS, Linux
  • Requires: nvm
  • Command: nvm install

volta-node

Installs the project’s pinned Node.js version using Volta.

  • Platforms: macOS, Linux, Windows
  • Requires: volta
  • Command: volta install node

pyenv-python

Installs the Python version pinned by .python-version using pyenv (skipping if already present).

  • Platforms: macOS, Linux
  • Requires: pyenv
  • Command: pyenv install --skip-existing

rbenv-ruby

Installs the Ruby version pinned by .ruby-version using rbenv (skipping if already present).

  • Platforms: macOS, Linux
  • Requires: rbenv
  • Command: rbenv install --skip-existing

postgres-install

Installs PostgreSQL database server and client tools.

  • Platforms: macOS, Linux
  • Command: Platform-specific (Homebrew on macOS, apt-get on Debian/Ubuntu)
  • Completion check: pg_isready -q

redis-install

Installs Redis in-memory data store.

  • Platforms: macOS, Linux
  • Command: Platform-specific (Homebrew on macOS, apt-get on Debian/Ubuntu)
  • Completion check: redis-cli ping

rust-install

Installs the Rust toolchain via rustup.

  • Platforms: macOS, Linux, Windows
  • Command: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
  • Completion check: rustc --version

Overriding Template Defaults

You can override any field from a template in your step config:

steps:
deps:
template: bundle-install
env:
BUNDLE_WITHOUT: "production"
command: "bundle install --jobs=4"

The template provides the base configuration, and your overrides take precedence.