From protobuf
Designs and edits .proto files, configures buf.yaml/gen.yaml/lock, builds gRPC/Connect services, adds protovalidate constraints, handles schema evolution, and troubleshoots buf lint/breaking errors.
How this skill is triggered — by the user, by Claude, or both
Slash command
/protobuf:protobufThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- Creating or editing `.proto` files
assets/Makefile.exampleassets/buf.gen.go-connect.yamlassets/buf.gen.go.yamlassets/buf.gen.java.yamlassets/buf.gen.python.yamlassets/buf.gen.ts.yamlassets/buf.gen.yamlassets/buf.lockassets/buf.yamlassets/proto/example/v1/book.protoassets/proto/example/v1/book_service.protoreferences/best_practices.mdreferences/buf_toolchain.mdreferences/examples.mdreferences/migration.mdreferences/protoc_toolchain.mdreferences/protovalidate.mdreferences/quick_reference.mdreferences/review_checklist.mdreferences/troubleshooting.md.proto filesbuf.yaml or buf.gen.yamlBefore writing proto code, review existing .proto files in the project.
Match conventions for naming, field ordering, structural patterns, validation, and documentation style.
If none exists, ask the user what style should be used or an existing library to emulate.
Always run after making changes:
buf format -w && buf lint
Check for a Makefile first—many projects use make lint or make format.
Fix all errors before considering the change complete.
| Task | Reference |
|---|---|
| Field types, enums, oneofs, maps | quick_reference.md |
| Schema evolution, breaking changes | best_practices.md |
| Validation constraints | protovalidate.md |
| Complete service examples | examples.md, assets/ |
| buf CLI, buf.yaml, buf.gen.yaml | buf_toolchain.md |
| Migrating from protoc | migration.md |
| Lint errors, common issues | troubleshooting.md |
| Proto API review checklist | review_checklist.md |
Create directory structure:
proto/
├── buf.yaml
├── buf.gen.yaml
└── company/
└── domain/
└── v1/
└── service.proto
Use assets/buf.yaml as starting point
Add buf.build/bufbuild/protovalidate as a dependency in buf.yaml and run buf dep update
Use assets/buf.gen.*.yaml for code generation config
| Template | Use For |
|---|---|
buf.gen.go.yaml | Go with gRPC |
buf.gen.go-connect.yaml | Go with Connect |
buf.gen.ts.yaml | TypeScript with Connect |
buf.gen.python.yaml | Python with gRPC |
buf.gen.java.yaml | Java with gRPC |
Located in assets/proto/example/v1/:
| Template | Description |
|---|---|
book.proto | Entity message, BookRef oneof, enum |
book_service.proto | Full CRUD with batch ops, pagination, ordering |
buf format -w && buf lintreserved 4;
reserved "old_field_name";
buf breaking --against '.git#branch=main' to verifyEvery field in a production API should have appropriate validation. See protovalidate.md for the full reference.
Common constraints:
.string.uuid, .string.email, .string.uri, .string.pattern.string.min_len, .string.max_len.int32.gte, .uint32.lte.enum.defined_only, .enum.not_in = 0.repeated.min_items, .repeated.max_items(buf.validate.field).required = true(buf.validate.oneof).required = trueAfter making changes:
buf format -w (apply formatting)buf lint (check style rules)buf breaking --against '.git#branch=main' (if modifying existing schemas)npx claudepluginhub bufbuild/claude-plugins --plugin protobufDefines proto contracts for gRPC services: field numbering, naming conventions, error modeling with google.rpc.Status, streaming patterns, and backward compatibility.
Generates gRPC service definitions, stubs, and implementations from Protocol Buffers. Supports streaming RPCs, interceptors, health checks, TLS, tests, and REST gateways for high-performance APIs.