asdf-runtime-version-updater
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.
Works with
---
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.
license: MIT
---
# ASDF Runtime Version Updater
Update language runtime versions consistently across your project.
## Workflow
1. **Parse current versions** - Read `.tool-versions` to get current runtime versions
2. **Find latest version** - Run `asdf latest <runtime>` to get the latest available version
3. **Update `.tool-versions`** - Update the version in `.tool-versions`
4. **Install new version** - Run `asdf install` to install the runtime
5. **Find version references** - Search for files referencing the old version
6. **Update all references** - Update versions consistently across all files
7. **Verify project** - Install deps, build, format check, and run tests
## Version Lookup
```bash
# 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
```dockerfile
# 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:
```dockerfile
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:
```bash
grep -E "^ARG\s+(ELIXIR|OTP|ERLANG|NODE|PYTHON|RUBY)_VERSION=" Dockerfile*
```
### GitHub Workflows (`.github/workflows/*.yml`)
```yaml
# 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:
```yaml
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:
```bash
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:
```bash
# 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**:
```bash
# 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
```bash
mix deps.clean --all
mix deps.get
mix compile --warnings-as-errors
mix format --check-formatted
mix test
```
### Node.js
```bash
npm install
npm run build
npm run lint
npm test
```
### Python
```bash
pip install -e ".[dev]"
python -m build
ruff check .
pytest
```
### Ruby
```bash
bundle install
bundle exec rake build
bundle exec rubocop
bundle exec rspec
```
### Go
```bash
go mod download
go build ./...
go fmt ./...
go test ./...
```
## Resources
For detailed patterns per runtime, see [runtime-patterns.md](references/runtime-patterns.md).More Deployment & CI/CD skills
azure-enterprise-infra-planner
microsoft/azure-skills
Architect and provision enterprise Azure infrastructure from workload descriptions. For cloud architects and platform engineers planning networking, identity, security, compliance, and multi-resource topologies with WAF alignment. Generates Bicep or Terraform directly (no azd). WHEN: 'plan Azure infrastructure', 'architect Azure landing zone', 'design hub-spoke network', 'plan multi-region DR topology', 'set up VNets firewalls and private endpoints', 'subscription-scope Bicep deployment', 'Azure Backup for VM workloads'. PREFER azure-prepare FOR app-centric workflows.
azure-kubernetes-app-deploy
microsoft/azure-skills
Use when deploying an existing web application or API to an already-running Azure Kubernetes Service cluster. Detects the framework, generates a Dockerfile and Kubernetes manifests, validates against AKS Deployment Safeguards, and deploys with verification. WHEN: deploy app to AKS, deploy to existing AKS cluster, containerize app for Kubernetes, generate K8s manifests for Azure, set up CI/CD for AKS, my AKS deployment is failing safeguard checks, I have a Django/Express/Spring Boot app to run on AKS. DO NOT USE FOR: creating or provisioning an AKS cluster (use azure-kubernetes), assessing migration to AKS Automatic (use azure-kubernetes-automatic-readiness), or deploying to non-AKS targets like Web Apps, Container Apps, or Functions.
finetuning
microsoft/azure-skills
Fine-tune models on Microsoft Foundry using SFT (supervised), DPO (preference), or RFT (reinforcement with graders). Covers dataset preparation, training job submission, deployment, and evaluation. USE FOR: fine-tune, SFT, DPO, RFT, training data, grader, distillation, fine-tuned model, training job, large file upload, calibrate grader, deploy fine-tuned model, evaluate fine-tuned model. DO NOT USE FOR: general model deployment without fine-tuning (use deploy-model), agent creation (use agents), prompt optimization without training (use prompt-optimizer).

