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.

tylercannon/agent-skills5 installsMITSynced Aug 26

Works with

Claude CodeCursorCodex CLIGitHub CopilotGemini CLI
---
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.

387.5k

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.

380.4k

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).

323.2k

← All Deployment & CI/CD skills

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY