Loading...
Loading...
This skill should be used when the user asks to "install proto", "configure proto", "manage tool versions", "pin versions", "set up .prototools", "install node version", "install rust version", "install python version", "proto plugins", or mentions proto commands, .prototools file, or multi-language version management.
npx skill4agent add hyperb1iss/moonrepo-skill proto.prototools# 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)" # Zshproto 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 | | Exact version |
| Major | | Latest 20.x.x |
| Tilde | | Patch updates only |
| Alias | | 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 runtimeproto install rust # Rust (includes cargo)
proto install go # Goproto install python # Python (includes pip)proto run node 18.0.0PROTO_NODE_VERSION=18.0.0.prototools.nvmrc.node-versionpackage.json.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 installproto outdated # Check for updates
proto outdated --update --latest # Update .prototoolsproto run node 18 -- script.js # Override version
PROTO_NODE_VERSION=18 proto run node # Via env var# Run command with multiple tools
proto exec node@24 pnpm@10 ruby@3.4 -- pnpm run app:start
# Load tools from config
proto exec --tools-from-config -- npm test
# Interactive shell with activated tools
proto exec node pnpm -- bashproto install ruby --build
proto install node --build
proto install python --build# .prototools
[settings.build]
install-system-packages = true
write-log-file = trueproto plugin add atlas "https://raw.githubusercontent.com/.../plugin.toml"
proto install atlasproto 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"proto_pdkwasm32-wasip1# Build plugin
cargo build --target wasm32-wasip1 --release
# Test locally
proto install my-tool --log trace# .prototools
[settings]
unstable-lockfile = true # Create .protolock for consistency
[plugins.tools]
my-tool = "file://./target/wasm32-wasip1/release/my_tool.wasm"register_tooldownload_prebuiltlocate_executablesload_versionsnative_installdetect_version_filesparse_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 |
|---|---|
| Installation directory (default: |
| Log level (trace, debug, info, warn, error) |
| Override version for tool |
| Environment for config lookup |
| Skip version validation |
| Variable | Description |
|---|---|
| Enable test mode (loads test plugins) |
| Show detailed command execution |
| Enable WASM plugin debugging |
| Detailed WASM backtraces |
.moon/toolchains.yml# .moon/toolchains.yml
javascript:
packageManager: "pnpm"
node:
version: "20.10.0"# .prototools
moon = "1.31.0"# GitHub Actions
- uses: moonrepo/setup-toolchain@v0
with:
auto-install: truereferences/config.mdreferences/plugins.mdreferences/commands.mdexamples/prototools-full.tomlexamples/plugin.toml