Implement GitOps workflows with ArgoCD and Flux for automated, declarative Kubernetes...
npx skills add tylercannon/agent-skills --skill "asdf-runtime-version-updater"
Install specific skill from multi-skill repository
# Description
Update language runtime versions in .tool-versions files (asdf) and propagate changes to Dockerfiles, GitHub Actions workflows, and other version-referencing files. Use when: (1) updating a project's language runtime version(s), (2) synchronizing versions across .tool-versions, Dockerfiles, and CI/CD configs, or (3) migrating to a new runtime version.
# SKILL.md
name: asdf-runtime-version-updater
description: "Update language runtime versions in .tool-versions files (asdf) and propagate changes to Dockerfiles, GitHub Actions workflows, and other version-referencing files. Use when: (1) updating a project's language runtime version(s), (2) synchronizing versions across .tool-versions, Dockerfiles, and CI/CD configs, or (3) migrating to a new runtime version."
ASDF Runtime Version Updater
Update language runtime versions consistently across your project.
Workflow
- Parse current versions - Read
.tool-versionsto get current runtime versions - Find latest version - Run
asdf latest <runtime>to get the latest available version - Update
.tool-versions- Update the version in.tool-versions - Install new version - Run
asdf installto install the runtime - Find version references - Search for files referencing the old version
- Update all references - Update versions consistently across all files
- Verify project - Install deps, build, format check, and run tests
Version Lookup
# Get latest version for a runtime
asdf latest nodejs # e.g., 22.13.1
asdf latest python # e.g., 3.13.2
asdf latest ruby # e.g., 3.4.2
asdf latest elixir # e.g., 1.19.5-otp-28
asdf latest erlang # e.g., 28.3.1
File Patterns
.tool-versions Format
nodejs 22.13.1
python 3.13.2
ruby 3.4.2
elixir 1.19.5-otp-28
erlang 28.3.1
Dockerfile Patterns
# Node.js
FROM node:22.13.1-alpine
FROM node:22-alpine
# Python
FROM python:3.13.2-slim
FROM python:3.13-slim
# Ruby
FROM ruby:3.4.2-alpine
# Elixir (often uses erlang base)
FROM elixir:1.19.5-otp-28
FROM hexpm/elixir:1.19.5-erlang-28.3.1-alpine-3.21.0
Dockerfile ARG Patterns
Some Dockerfiles use ARG for version configuration:
ARG ELIXIR_VERSION=1.19.5
ARG OTP_VERSION=28.3.1
ARG DEBIAN_VERSION=trixie-20260112-slim
ARG BUILDER_IMAGE="docker.io/hexpm/elixir:${ELIXIR_VERSION}-erlang-${OTP_VERSION}-debian-${DEBIAN_VERSION}"
Search for these patterns:
grep -E "^ARG\s+(ELIXIR|OTP|ERLANG|NODE|PYTHON|RUBY)_VERSION=" Dockerfile*
GitHub Workflows (.github/workflows/*.yml)
# Node.js
- uses: actions/setup-node@v4
with:
node-version: '22.13.1'
node-version-file: '.tool-versions'
# Python
- uses: actions/setup-python@v5
with:
python-version: '3.13.2'
# Ruby
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.4.2'
# Elixir
- uses: erlef/setup-beam@v1
with:
elixir-version: '1.19.5'
otp-version: '28.0'
GitHub Workflow Job Containers
Jobs can also specify container images directly:
jobs:
test:
runs-on: ubuntu-latest
container:
image: hexpm/elixir:1.19.5-erlang-28.3.1-alpine-3.23.3
build:
runs-on: ubuntu-latest
container: node:22.13.1-alpine
Search for these patterns:
grep -rE "^\s*(image:|container:)" .github/workflows/
Other Version Files
| Runtime | Files |
|---|---|
| Node.js | .nvmrc, .node-version, package.json (engines, @types/node) |
| Python | .python-version, pyproject.toml, setup.py |
| Ruby | .ruby-version, Gemfile |
Search Patterns
Use these patterns to find version references:
# Find version references in project
grep -r "22.13.1" . # Specific version
grep -rE "node[:-]?22" . # Node.js major version patterns
grep -rE "python[:-]?3\.13" . # Python minor version patterns
Example Update
Before (.tool-versions):
elixir 1.18.0-otp-27
erlang 27.2.4
Steps:
# Check latest versions
asdf latest elixir # 1.19.5-otp-28
asdf latest erlang # 28.3.1
# Update .tool-versions, then:
asdf install
After (.tool-versions):
elixir 1.19.5-otp-28
erlang 28.3.1
Then update all other files (Dockerfile, GitHub workflows, etc.) to match.
Verification
After updating versions, verify the project still works:
Elixir/Phoenix
mix deps.clean --all
mix deps.get
mix compile --warnings-as-errors
mix format --check-formatted
mix test
Node.js
npm install
npm run build
npm run lint
npm test
Python
pip install -e ".[dev]"
python -m build
ruff check .
pytest
Ruby
bundle install
bundle exec rake build
bundle exec rubocop
bundle exec rspec
Go
go mod download
go build ./...
go fmt ./...
go test ./...
Resources
For detailed patterns per runtime, see runtime-patterns.md.
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.