wordbricks/onequery · Archived

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.

Installation

$ npx skills add wordbricks/onequery --skill protobuf

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from wordbricks/onequery · top by installs.

npx skills add wordbricks/onequery

Browse all from wordbricks/onequery

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 17
License LICENSE
Default branch main
Open issues 0
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,641 B
  • docs SUMMARY.md 246 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

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 [bestpractices.md](references/bestpractices.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:

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.

Quick Reference

Task Reference
Field types, enums, oneofs, maps [quickreference.md](references/quickreference.md)
Schema evolution, breaking changes [bestpractices.md](references/bestpractices.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 [buftoolchain.md](references/buftoolchain.md)
Migrating from protoc [migration.md](references/migration.md)
Lint errors, common issues [troubleshooting.md](references/troubleshooting.md)
Proto API review checklist [reviewchecklist.md](references/reviewchecklist.md)

Project Setup

New Project

  1. Create directory structure:

`` proto/ ├── buf.yaml ├── buf.gen.yaml └── company/ └── domain/ └── v1/ └── service.proto ``

  1. Use assets/buf.yaml as starting point
  2. Add buf.build/bufbuild/protovalidate as a dependency in buf.yaml and run buf dep update
  3. 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:

``protobuf reserved 4; reserved "oldfieldname"; ``

  1. 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.minlen, .string.maxlen
  • Numeric bounds: .int32.gte, .uint32.lte
  • Enum validation: .enum.definedonly, .enum.notin = 0
  • Repeated bounds: .repeated.minitems, .repeated.maxitems
  • 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)