From moonrepo
Manages language and tool versions via proto: install, pin, configure .prototools, and use 800+ plugins. Replaces nvm, pyenv, rustup with a single CLI.
How this skill is triggered — by the user, by Claude, or both
Slash command
/moonrepo:protoThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
proto is a next-generation version manager for multiple programming languages. It provides a unified interface for managing Node.js, npm, pnpm, yarn, Bun, Deno, Rust, Go, Python, and 800+ tools via plugins.
proto is a next-generation version manager for multiple programming languages. It provides a unified interface for managing Node.js, npm, pnpm, yarn, Bun, Deno, Rust, Go, Python, and 800+ tools via plugins.
.prototools for team consistency# Linux, macOS, WSL
bash <(curl -fsSL https://moonrepo.dev/install/proto.sh)
# Specific version, non-interactive
bash <(curl -fsSL https://moonrepo.dev/install/proto.sh) 1.2.3 --yes
# Add to shell profile
eval "$(proto activate bash)" # Bash
eval "$(proto activate zsh)" # Zsh
proto install <tool> # Install tool
proto install node 20.10.0 # Install specific version
proto install node --build # Build from source (v0.45+)
proto run <tool> # Run with detected version
proto exec node pnpm -- cmd # Bootstrap multi-tool env (v0.53+)
proto pin <tool> <version> # Pin version locally
proto pin <tool> --global # Pin globally
proto versions <tool> # List available versions
proto outdated # Check for updates
proto clean # Remove unused tools
proto upgrade # Upgrade proto itself
proto diagnose # Identify installation issues
proto debug config # List all .prototools files
proto debug env # Show environment info
# .prototools
node = "20.10.0"
npm = "10.2.0"
pnpm = "8.12.0"
yarn = "4.0.0"
bun = "1.0.0"
deno = "1.40.0"
rust = "1.75.0"
go = "1.21.0"
python = "3.12.0"
[plugins]
my-tool = "https://example.com/plugin.wasm"
[settings]
auto-install = true
auto-clean = true
detect-strategy = "prefer-prototools"
[env]
NODE_ENV = "development"
| Format | Example | Description |
|---|---|---|
| Exact | "20.10.0" | Exact version |
| Major | "20" | Latest 20.x.x |
| Tilde | "~20.10" | Patch updates only |
| Alias | "stable" | Language-specific alias |
proto install node # Node.js runtime
proto install npm # npm package manager
proto install pnpm # pnpm package manager
proto install yarn # Yarn package manager
proto install bun # Bun runtime
proto install deno # Deno runtime
proto install rust # Rust (includes cargo)
proto install go # Go
proto install python # Python (includes pip)
proto run node 18.0.0PROTO_NODE_VERSION=18.0.0.prototools (current + parent dirs).nvmrc, .node-version, package.json engines.prototools: ~/.proto/.prototools# Pin to local .prototools
proto pin node 20.10.0
proto pin pnpm 8.12.0
# Pin globally (user default)
proto pin node 20 --global
# Install everything from .prototools
proto install
proto outdated # Check for updates
proto outdated --update --latest # Update .prototools
proto run node 18 -- script.js # Override version
PROTO_NODE_VERSION=18 proto run node # Via env var
Bootstrap an environment with multiple tools:
# Run command with multiple tools
proto exec node@24 pnpm@10 [email protected] -- pnpm run app:start
# Load tools from config
proto exec --tools-from-config -- npm test
# Interactive shell with activated tools
proto exec node pnpm -- bash
Compile tools from source (useful when pre-built binaries unavailable):
proto install ruby --build
proto install node --build
proto install python --build
Supported: Deno, Go, Moon, Node, Python, Ruby.
# .prototools
[settings.build]
install-system-packages = true
write-log-file = true
proto plugin add atlas "https://raw.githubusercontent.com/.../plugin.toml"
proto install atlas
proto plugin list # Show all plugins
proto plugin list --versions # With version info
[plugins]
# Remote TOML plugin
atlas = "https://example.com/atlas/plugin.toml"
# Remote WASM plugin
custom = "https://example.com/plugin.wasm"
# GitHub releases (recommended for distribution)
my-tool = "github://org/repo"
# Local development (WASM)
local = "file://./target/wasm32-wasip1/release/plugin.wasm"
Build plugins with proto_pdk crate targeting wasm32-wasip1:
# Build plugin
cargo build --target wasm32-wasip1 --release
# Test locally
proto install my-tool --log trace
Test configuration for local development:
# .prototools
[settings]
unstable-lockfile = true # Create .protolock for consistency
[plugins.tools]
my-tool = "file://./target/wasm32-wasip1/release/my_tool.wasm"
Required WASM functions:
register_tool - Metadata (name, type)download_prebuilt - Configure download/installlocate_executables - Define executable pathsload_versions - Fetch available versionsOptional: native_install, detect_version_files, parse_version_file
[settings]
# Auto-install missing tools
auto-install = true
# Auto-clean unused tools
auto-clean = true
# Version detection strategy
# first-available, prefer-prototools, only-prototools
detect-strategy = "prefer-prototools"
# Pin "latest" alias to local or global config
pin-latest = "local"
# Create .protolock for reproducible installs
unstable-lockfile = true
# Disable telemetry
telemetry = false
[settings.http]
# Configure proxies
proxies = ["https://internal.proxy"]
root-cert = "/path/to/cert.pem"
[settings.offline]
timeout = 500 # ms
| Variable | Description |
|---|---|
PROTO_HOME | Installation directory (default: ~/.proto) |
PROTO_LOG | Log level (trace, debug, info, warn, error) |
PROTO_*_VERSION | Override version for tool |
PROTO_ENV | Environment for config lookup |
PROTO_BYPASS_VERSION_CHECK | Skip version validation |
| Variable | Description |
|---|---|
PROTO_TEST | Enable test mode (loads test plugins) |
PROTO_DEBUG_COMMAND | Show detailed command execution |
PROTO_DEBUG_WASM | Enable WASM plugin debugging |
WASMTIME_BACKTRACE_DETAILS | Detailed WASM backtraces |
proto is the toolchain backend for moon. Configure in .moon/toolchains.yml (v2):
# .moon/toolchains.yml
javascript:
packageManager: "pnpm"
node:
version: "20.10.0"
Or pin moon itself via proto:
# .prototools
moon = "1.31.0"
# GitHub Actions
- uses: moonrepo/setup-toolchain@v0
with:
auto-install: true
For detailed configuration, consult:
references/config.md - Complete .prototools referencereferences/plugins.md - Plugin development guidereferences/commands.md - Full CLI referenceexamples/prototools-full.toml - Complete configurationexamples/plugin.toml - TOML plugin examplenpx claudepluginhub hyperb1iss/moonrepo-skill --plugin moonrepoGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Resolves in-progress git merge or rebase conflicts by analyzing history, understanding intent, and preserving both changes where possible. Runs automated checks after resolution.