proto
Skill7 starsChanged 10 months agoApache-2.0View on GitHub
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.
3 other projects use a version of this.
Adopted by
Most recently taken up by
- compozy/compozytheir own version, first seen Nov 1, 2026
- lgy1027/specflow-agent-packtheir own version, first seen Nov 1, 2026
- Ruisi-Lu/proto-skilltheir own version, first seen Sep 29, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- compozy/compozy★ 2.9ksame name
- lgy1027/specflow-agent-pack★ 4same name
- Ruisi-Lu/proto-skill★ 2same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 238
Test configuration for local development:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
proto - Pluggable Multi-Language Version Manager
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.
When to Use proto
- Managing language/tool versions across projects
- Pinning versions in
.prototoolsfor team consistency - Installing and running tools without global pollution
- Replacing nvm, pyenv, rustup, gvm with a single tool
Installation
# 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 --yesShell Setup
# Add to shell profile
eval "$(proto activate bash)" # Bash
eval "$(proto activate zsh)" # ZshQuick Reference
Core Commands
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 infoConfiguration: .prototools
# .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"Version Specifiers
| 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 |
Supported Tools (Built-in)
JavaScript/TypeScript
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 runtimeSystems Languages
proto install rust # Rust (includes cargo)
proto install go # GoOther
proto install python # Python (includes pip)Version Detection Order
- CLI argument:
proto run node 18.0.0 - Environment variable:
PROTO_NODE_VERSION=18.0.0 - Local
.prototools(current + parent dirs) - Ecosystem files:
.nvmrc,.node-version,package.jsonengines - Global
.prototools:~/.proto/.prototools
Common Workflows
Pin Versions for Team
# Pin to local .prototools
proto pin node 20.10.0
proto pin pnpm 8.12.0
# Pin globally (user default)
proto pin node 20 --globalInstall All Tools
# Install everything from .prototools
proto installCheck for Updates
proto outdated # Check for updates
proto outdated --update --latest # Update .prototoolsRun with Specific Version
proto run node 18 -- script.js # Override version
PROTO_NODE_VERSION=18 proto run node # Via env varProto Exec (v0.53+)
Bootstrap an environment with multiple tools:
# 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 -- bashBuild From Source (v0.45+)
Compile tools from source (useful when pre-built binaries unavailable):
proto install ruby --build
proto install node --build
proto install python --buildSupported: Deno, Go, Moon, Node, Python, Ruby.
# .prototools
[settings.build]
install-system-packages = true
write-log-file = truePlugins
Add Third-Party Plugin
proto plugin add atlas "https://raw.githubusercontent.com/.../plugin.toml"
proto install atlasList Plugins
proto plugin list # Show all plugins
proto plugin list --versions # With version infoPlugin Sources
[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"WASM Plugin Development
Build plugins with proto_pdk crate targeting wasm32-wasip1:
# Build plugin
cargo build --target wasm32-wasip1 --release
# Test locally
proto install my-tool --log traceTest 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 versions
Optional: native_install, detect_version_files, parse_version_file
Settings
[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 # msEnvironment Variables
| 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 |
Development/Testing Variables
| 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 |
Integration with moon
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"CI/CD Integration
# GitHub Actions
- uses: moonrepo/setup-toolchain@v0
with:
auto-install: trueAdditional Resources
For detailed configuration, consult:
references/config.md- Complete .prototools referencereferences/plugins.md- Plugin development guidereferences/commands.md- Full CLI reference
Examples
examples/prototools-full.toml- Complete configurationexamples/plugin.toml- TOML plugin example
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

