finds.dev← search

// the find

uber/prototool

★ 5,035 · Go · MIT · updated Mar 2022

Your Swiss Army Knife for Protocol Buffers

Prototool is Uber's protobuf toolchain — lint, format, generate stubs, check for breaking changes, and call gRPC endpoints, all from one binary. It wraps protoc so you don't have to manage it yourself. The README opens by telling you to use Buf instead, which tells you everything you need to know about its current status.

- The breaking change detector is per-package, not per-file — moving a message between files in the same package doesn't count as breaking, which matches how real API versioning works.

- Uber's v2 style guide is baked in as a lint group, giving teams a real opinionated baseline rather than inventing their own proto conventions from scratch.

- Editor integration works at the file level — lint errors come back in file:line:column format, and the Vim plugin handles compile, lint, format, and template creation on save.

- Automatic protoc download and well-known types import management eliminates the usual setup friction of getting protoc and google/protobuf working across machines.

- Abandoned. Last commit was 2022, the maintainers themselves point you to Buf in the first paragraph of the README. You're inheriting a dead dependency.

- Protoc version is pinned in prototool.yaml — upgrading to proto3 optional fields, editions, or any post-2022 protoc feature means you're on your own.

- The breaking change detector doesn't output filename, line, or column in its results, so you can't pipe the output anywhere useful or surface it cleanly in CI.

- No Windows support — Linux and macOS only, which is a real gap for any shop where developers work on Windows.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →