mcpField
P
protobuf

protobuf

github.com/bufbuild开发20544 次安装19 周前更新
代码仓库

关于 protobuf

protobuf 是用于创建和维护 Protocol Buffers 模式与服务的技能,指导开发者遵循项目约定、添加验证规则、配置代码生成,并使用 buf 检查变更。

主要功能

  1. 01创建和编辑 .proto 模式
  2. 02配置 buf 和代码生成
  3. 03添加 protovalidate 约束
  4. 04设计 gRPC 和 Connect 服务
  5. 05检查格式、lint 和兼容性变更

适用场景

  1. 01为生产 API 模式添加字段
  2. 02搭建新的 protobuf 项目
  3. 03排查 buf lint 或兼容性错误

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/bufbuild/claude-plugins --skill protobuf

安装后在 Claude Code 中输入/protobuf确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
buf.gen.go-connect.yaml
buf.gen.go.yaml
buf.gen.java.yaml
buf.gen.python.yaml
buf.gen.ts.yaml
buf.gen.yaml
buf.lock
buf.yaml
Makefile.example
assets/proto/example/v1/
book_service.proto
book.proto
references/
best_practices.md
buf_toolchain.md
examples.md
migration.md
protoc_toolchain.md
protovalidate.md
quick_reference.md
review_checklist.md
troubleshooting.md

详细介绍

Protocol Buffers

何时需要此技能

  • 创建或编辑 .proto 文件
  • 设置 buf.yaml 或 buf.gen.yaml
  • 设计 gRPC 或 Connect 服务
  • 添加 protovalidate 约束
  • 排查 buf lint 或破坏性变更错误

核心工作流

1. 匹配项目风格

编写 proto 代码前,先检查项目中现有的 .proto 文件。 遵循现有的命名、字段顺序、结构模式、验证和文档风格约定。 如果项目中没有现有文件,请询问用户应采用哪种风格,或模仿哪个现有库。

2. 编写 Proto 代码
3. 验证变更

进行变更后务必运行:

buf format -w && buf lint

先检查是否有 Makefile——许多项目使用 make lint 或 make format。

修复所有错误后,才能认为变更已完成。

快速参考

任务参考
字段类型、枚举、oneof、映射quick_reference.md
Schema 演进、破坏性变更best_practices.md
验证约束protovalidate.md
完整服务示例examples.md、assets/
buf CLI、buf.yaml、buf.gen.yamlbuf_toolchain.md
从 protoc 迁移migration.md
Lint 错误、常见问题troubleshooting.md
Proto API 审核清单review_checklist.md

项目设置

新建项目
  1. 创建目录结构:

    proto/
    ├── buf.yaml
    ├── buf.gen.yaml
    └── company/
        └── domain/
            └── v1/
                └── service.proto
    
  2. 以 assets/buf.yaml 为起点

  3. 在 buf.yaml 中添加 buf.build/bufbuild/protovalidate 作为依赖,并运行 buf dep update

  4. 使用 assets/buf.gen.*.yaml 配置代码生成

代码生成模板
模板用途
buf.gen.go.yamlGo 和 gRPC
buf.gen.go-connect.yamlGo 和 Connect
buf.gen.ts.yamlTypeScript 和 Connect
buf.gen.python.yamlPython 和 gRPC
buf.gen.java.yamlJava 和 gRPC
Proto 文件模板

位于 assets/proto/example/v1/:

模板说明
book.proto实体消息、BookRef oneof、枚举
book_service.proto完整的 CRUD,包含批量操作、分页和排序

常见任务

添加新字段
  1. 使用下一个连续字段编号
  2. 添加 protovalidate 约束:每个字段都应根据其类型添加适当的验证(格式验证器、长度界限、数值范围、枚举约束等)
  3. 为字段编写文档
  4. 运行 buf format -w && buf lint
删除字段
  1. 保留字段编号和名称:
    reserved 4;
    reserved "old_field_name";
    
  2. 运行 buf breaking --against '.git#branch=main' 进行验证
添加 protovalidate 约束

生产 API 中的每个字段都应有适当的验证。 完整参考请参阅 protovalidate.md。

常见约束:

  • 字符串格式:.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
  • 必填 oneof:(buf.validate.oneof).required = true

验证清单

完成变更后:

  • 每个字段都有适当的 protovalidate 约束
  • buf format -w(应用格式化)
  • buf lint(检查风格规则)
  • buf breaking --against '.git#branch=main'(修改现有 schema 时)

评论

支持 Markdown