asdf

Manage per-project tool versions across languages using asdf and .tool-versions.

40|4|Updated Apr 19, 2026
One-click install
npx skills add https://github.com/jjmartres/ai-coding-agents --skill asdf
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: asdf
Source: https://github.com/jjmartres/ai-coding-agents/tree/main/shared/.ai-agents/skills/asdf
Command: npx skills add https://github.com/jjmartres/ai-coding-agents --skill asdf

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Manage and switch per-project tool versions across languages using asdf, ensuring reproducible development environments and streamlined onboarding.

Core Features & Use Cases

  • Multi-language version management: Install, switch, and pin versions for Node.js, Python, Go, Terraform, kubectl, Java, and more.
  • Project-local version resolution: Uses the .tool-versions file to automatically select versions as you navigate directories.
  • Migration & shell integration: Guidance for migrating from nvm, pyenv, rbenv, goenv, tfenv, and configuring Bash, Zsh, or Fish shells.

Quick Start

Install asdf, add the plugins you need, and set per-project versions via a .tool-versions file.

Frequently Asked Questions about asdf

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I manage multiple language versions for a single project?

Per-project tool version management allows you to pin language versions using a .tool-versions file, ensuring reproducible development environments across Node.js, Python, Go, and more.

Can I migrate from nvm or pyenv to a universal version manager?

Migration from nvm, pyenv, rbenv, goenv, and tfenv is supported with guidance for switching to a unified version manager, streamlining your onboarding and local development workflows.

How does .tool-versions work for automatic version switching?

The .tool-versions file enables project-local version resolution by automatically selecting the specified tool versions as you navigate directories, validating plugin presence and enforcing correct usage.

Does universal version management support Bash, Zsh, and Fish shells?

Shell integration is supported for Bash, Zsh, and Fish, ensuring that shims load deterministically across shells for consistent per-project tool execution in local development and CI pipelines.

What's the best way to ensure reproducible environments in CI pipelines?

Reproducible environments in CI pipelines are achieved by applying universal version management to install plugins, resolve per-project versions via .tool-versions, and enforce deterministic shim loading across shells.

Why are my tool versions not loading correctly across different directories?

Incorrect version loading often occurs when plugins are missing or .tool-versions is misconfigured; validating plugin presence and enforcing correct file usage ensures shims load deterministically.