protobuf
Use when working with Protocol Buffer (.proto) files, buf.yaml, buf.gen.yaml, or buf.lock. Covers proto design, buf CLI, gRPC/Connect services, protovalidate constraints, schema evolution, and troubleshooting lint/breaking errors.
By bufbuild · 472 installs
npx skills add bufbuild/claude-plugins --skill protobuf
Source repository · Upstream listing
Protocol Buffers
When You Need This Skill
Creating or editing .proto files
Setting up buf.yaml or buf.gen.yaml
Designing gRPC or Connect services
Adding protovalidate constraints
Troubleshooting buf lint or breaking change errors
Core Workflow
1. Match Project Style
Before 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.
2. Write Proto Code
Apply universal best practices from [best practices.md](references/best practices.md)
Add [protovalidate](references/protovalidate.md) constraints to every field—this is not optional for production APIs
For service templates, see [assets/](assets/)
3. Verify Changes
Always run after making changes:
Check for a Makefile first—many projects use make lint or make format .
Fix all errors before considering the change complete.
Quick Reference
Task Reference
Field types, enums, oneofs, maps [quick reference.md](references/quick reference.md)
Schema evolution, breaking changes [best practices.md](references/best practices.md)
Validation constraints [protovalidate.md](references/protovalidate.md)
Complete service examples [examples.md](references/examples.md), [assets/](assets/)
buf CLI, buf.yaml, buf.gen.yaml [buf toolchain.md](references/buf toolchain.md)
Migrating from protoc [migration.md](references/migration.md)
Lint errors, common issues [troubleshooting.md](references/troubleshooting.md)
Proto API review checklist [review checklist.md](references/review checklist.md)
Project Setup
New Project
1. Create directory structure:
2. Use assets/buf.yaml as starting point
3. Add buf.build/bufbuild/protovalidate as a dependency in buf.yaml and run buf dep update
4. Use assets/buf.gen. .yaml for code generation config
Code Generation Templates
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
Proto File Templates
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
Common Tasks
Add a new field
1. Use next sequential field number
2. Add [protovalidate](references/protovalidate.md) constraints: every field should have validation appropriate to its type (format validators, length bounds, numeric ranges, enum constraints, etc.)
3. Document the field
4. Run buf format w && buf lint
Remove a field
1. Reserve the field number AND name:
2. Run buf breaking against '.git branch=main' to verify
Add protovalidate constraints
Every field in a production API should have appropriate validation.
See [protovalidate.md](references/protovalidate.md) for the full reference.
Common constraints:
String formats: .string.uuid , .string.email , .string.uri , .string.pattern
String bounds: .string.min len , .string.max len
Numeric bounds: .int32.gte , .uint32.lte
Enum validation: .enum.defined only , .enum.not in = 0
Repeated bounds: .repeated.min items , .repeated.max items
Required fields: (buf.validate.field).required = true
Oneof required: (buf.validate.oneof).required = true
Verification Checklist
After making changes:
[ ] Every field has appropriate protovalidate constraints
[ ] buf format w (apply formatting)
[ ] buf lint (check style rules)
[ ] buf breaking against '.git branch=main' (if modifying existing schemas)