Community maintained proto plugins for third-party tools, written in the non-WASM TOML format.
Every plugin lives in tools/ as a single <tool>.toml file, and each one is
install-tested against Linux, macOS, and Windows in CI.
Add a plugin to your .prototools:
proto plugin add biome "https://raw.githubusercontent.com/moonrepo/community-plugins/master/tools/biome.toml"Or by hand:
[plugins.tools]
biome = "https://raw.githubusercontent.com/moonrepo/community-plugins/master/tools/biome.toml"Then install as usual:
proto install biome| Tool | Description |
|---|---|
| act | Run your GitHub Actions locally. |
| actionlint | Static checker for GitHub Actions workflow files. |
| atmos | Orchestration for Terraform, Helmfile, and other DevOps workflows. |
| bazel | A fast, scalable, multi-language and extensible build system. |
| biome | A performant toolchain for web projects. |
| caddy | Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS. |
| cmake | A cross-platform, open-source build system generator. |
| cosign | Code signing and transparency for containers and binaries. |
| dagger | Programmable CI/CD engine that runs your pipelines in containers. |
| dprint | A pluggable and configurable code formatting platform written in Rust. |
| flyctl | A command-line interface for fly.io. |
| gitleaks | A fast, light-weight, portable secret scanner for Git repositories. |
| grain | A strongly-typed functional language that compiles to WebAssembly. |
| gum | A tool for glamorous shell scripts. |
| hurl | Runs HTTP requests defined in a simple plain text format. |
| hyperfine | A command-line benchmarking tool. |
| infisical | The CLI for the open source secret management platform Infisical. |
| jira | An interactive command line tool for Atlassian Jira. |
| just | A handy way to save and run project-specific commands. |
| mage | A make/rake-like build tool using Go. |
| mkcert | Zero-config locally trusted development certificates. |
| ninja | A small build system with a focus on speed. |
| octopus | Command line interface for Octopus Deploy. |
| oxlint | A JavaScript linter that needs no configuration by default. |
| pixi | A fast package management tool for the conda ecosystem. |
| rattler-build | A fast Conda package builder. |
| ruff | An extremely fast Python linter and code formatter. |
| shellcheck | A static analysis tool for shell scripts. |
| shfmt | A shell formatter for POSIX Shell, Bash and mksh. |
| task | A task runner / build tool that aims to be simpler than GNU Make. |
| traefik | A modern HTTP reverse proxy and load balancer for microservices. |
| trufflehog | Find and verify credentials. |
| watchexec | Executes commands in response to file modifications. |
| wizer | The WebAssembly pre-initializer. |
Add a tools/<id>.toml file. The file name is the tool's ID, and unless you override it, it is
also the name proto expects the installed executable to have.
The available fields are documented under
non-WASM plugins, with the schema itself
defined in
internal-schema/src/schema.rs.
Unknown keys are silently ignored rather than rejected, so a typo fails quietly at install time —
worth a second look before opening a pull request.
Unique to this repository, and ignored by proto. It supplies the metadata used to list the tool in the proto registry:
[plugin]
description = "A performant toolchain for web projects."
homepage-url = "https://biomejs.dev/"
repository-url = "https://github.com/biomejs/biome"repository-url points at the tool's own source repository. Omit homepage-url when it would
be identical to repository-url.
- Declare
archson every platform. Without it an unsupported architecture fails with a download 404 instead of a clear "unsupported architecture" error. List only what upstream actually publishes. - Check the archive layout. If the binary sits inside a directory, set
archive-prefix; if it sits in a subdirectory such asbin/, setexe-path. These commonly differ between the Unix tarball and the Windows zip for the same release. - Add a
[platform.freebsd]section when upstream ships BSD builds. proto falls back to thelinuxentry for BSD hosts, which otherwise hands them a Linux binary. - Block self-updating tools with
[metadata] self-upgrade-commands, so the tool cannot replace the binary proto is managing. - Only add
checksum-urlif upstream publishes checksums for the whole version range you support. A missing checksum file is a hard install error, not a warning. - Anchor
version-pattern. Patterns are matched unanchored, so in a monorepo an unanchored pattern will happily match another product's tags. - Prefer
exe-pathover the deprecatedbin-path, and[install.exes.*]over the deprecated[install.primary]/[install.secondary].
Upstream projects rename release assets and retag more often than you would expect. Verify against a real release rather than assuming the existing file is still correct.
test-changed-plugins.yml runs on pull requests
and tests only the plugins the pull request touched.
test-plugins.yml tests everything on push to master,
or on demand. Both build their job matrix with the same script and hand it to the shared
install-plugins.yml, which installs one plugin per
job and then runs proto bin to confirm the executable was actually located — proto install
alone only warns when it cannot find the binary it just unpacked.
Platform coverage comes from each plugin's own archs lists, so a tool is never scheduled on a
runner it does not claim to support. To preview the plan:
# Everything
./scripts/plan-install-matrix.py
# Just what you changed
./scripts/plan-install-matrix.py biome ruffTo try a plugin locally before opening a pull request:
proto plugin add biome "file://./tools/biome.toml"
proto install biome
proto bin biome