protobuf-design

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Protocol Buffers Design Skill

Protocol Buffers 设计技能

When to Use This Skill

何时使用本技能

Use this skill when:
  • Designing gRPC services - Protocol Buffers (proto3) for typed service contracts
  • Schema definition - Messages, enums, services, streaming patterns
  • Implementing in C# - gRPC with ASP.NET Core
  • Schema evolution - Backward/forward compatibility, versioning
在以下场景使用本技能:
  • 设计gRPC服务 - 使用Protocol Buffers(proto3)定义类型化服务契约
  • Schema定义 - 消息、枚举、服务、流式模式
  • C#实现 - 结合ASP.NET Core的gRPC开发
  • Schema演进 - 向前/向后兼容性、版本控制

MANDATORY: Documentation-First Approach

强制要求:文档优先方法

Before creating protobuf definitions:
  1. Invoke
    docs-management
    skill
    for API contract patterns
  2. Verify proto3 syntax via MCP servers (context7 for latest spec)
  3. Base all guidance on Google's Protocol Buffers documentation
创建protobuf定义前:
  1. 调用
    docs-management
    技能
    获取API契约模式
  2. 通过MCP服务器验证proto3语法(使用context7获取最新规范)
  3. 所有指导均基于Google的Protocol Buffers官方文档

Why Protocol Buffers?

为什么选择Protocol Buffers?

BenefitDescription
EfficientBinary format, 3-10x smaller than JSON
TypedStrong typing with code generation
VersionedBuilt-in backward/forward compatibility
Cross-LanguageSupports C#, Java, Python, Go, etc.
gRPC IntegrationNative service definition for gRPC
优势描述
高效性二进制格式,体积比JSON小3-10倍
强类型支持强类型并可生成代码
可版本化内置向前/向后兼容性
跨语言支持C#、Java、Python、Go等多种语言
gRPC集成为gRPC提供原生服务定义

Proto3 Structure Overview

Proto3结构概述

protobuf
syntax = "proto3";

package ecommerce.orders.v1;

option csharp_namespace = "ECommerce.Orders.V1";

import "google/protobuf/timestamp.proto";

service OrderService {
  rpc GetOrder(GetOrderRequest) returns (Order);
  rpc ListOrders(ListOrdersRequest) returns (ListOrdersResponse);
  rpc WatchStatus(WatchRequest) returns (stream StatusUpdate);
}

enum OrderStatus {
  ORDER_STATUS_UNSPECIFIED = 0;
  ORDER_STATUS_DRAFT = 1;
  ORDER_STATUS_SUBMITTED = 2;
}

message Order {
  string id = 1;
  string customer_id = 2;
  OrderStatus status = 3;
  google.protobuf.Timestamp created_at = 4;
}
For complete template: See proto-syntax.md
protobuf
syntax = "proto3";

package ecommerce.orders.v1;

option csharp_namespace = "ECommerce.Orders.V1";

import "google/protobuf/timestamp.proto";

service OrderService {
  rpc GetOrder(GetOrderRequest) returns (Order);
  rpc ListOrders(ListOrdersRequest) returns (ListOrdersResponse);
  rpc WatchStatus(WatchRequest) returns (stream StatusUpdate);
}

enum OrderStatus {
  ORDER_STATUS_UNSPECIFIED = 0;
  ORDER_STATUS_DRAFT = 1;
  ORDER_STATUS_SUBMITTED = 2;
}

message Order {
  string id = 1;
  string customer_id = 2;
  OrderStatus status = 3;
  google.protobuf.Timestamp created_at = 4;
}
完整模板:请查看proto-syntax.md

Quick Reference

快速参考

gRPC RPC Types

gRPC RPC类型

PatternSyntaxUse Case
Unary
rpc Get(Req) returns (Resp)
Simple CRUD
Server Stream
rpc List(Req) returns (stream Resp)
Large results, updates
Client Stream
rpc Upload(stream Req) returns (Resp)
Batch uploads
Bidirectional
rpc Chat(stream Req) returns (stream Resp)
Real-time sync
For streaming patterns: See grpc-patterns.md
模式语法使用场景
一元RPC
rpc Get(Req) returns (Resp)
简单CRUD操作
服务器流式RPC
rpc List(Req) returns (stream Resp)
大数据结果、实时更新
客户端流式RPC
rpc Upload(stream Req) returns (Resp)
批量上传
双向流式RPC
rpc Chat(stream Req) returns (stream Resp)
实时同步
流式模式详情:请查看grpc-patterns.md

Naming Conventions

命名规范

ElementConventionExample
Packagelowercase.dots.version
ecommerce.orders.v1
ServicePascalCase + Service
OrderService
RPCPascalCase verb
CreateOrder
MessagePascalCase
OrderCreatedEvent
Fieldsnake_case
customer_id
EnumSCREAMING_PREFIX_VALUE
ORDER_STATUS_DRAFT
元素规范示例
包名小写+点+版本号
ecommerce.orders.v1
服务大驼峰+Service
OrderService
RPC方法大驼峰动词
CreateOrder
消息大驼峰
OrderCreatedEvent
字段小蛇形
customer_id
枚举大写下划线前缀值
ORDER_STATUS_DRAFT

Workflow

工作流程

  1. Identify Resources: What entities does the service manage?
  2. Define Messages: Data structures for each resource
  3. Design Service Methods: CRUD operations, queries, commands
  4. Add Streaming: Where real-time updates needed
  5. Document: Comments for all messages and fields
  6. Lint: Use Buf or protolint for consistency
  7. Version: Plan for schema evolution
  8. Generate: Create client/server code
  1. 识别资源:服务需要管理哪些实体?
  2. 定义消息:为每个资源设计数据结构
  3. 设计服务方法:CRUD操作、查询、命令
  4. 添加流式功能:在需要实时更新的场景中使用
  5. 文档编写:为所有消息和字段添加注释
  6. 代码检查:使用Buf或protolint保证一致性
  7. 版本规划:为Schema演进制定计划
  8. 代码生成:创建客户端/服务器代码

References

参考资料

Load on-demand based on need:
ReferenceLoad When
proto-syntax.mdCreating proto definitions, well-known types, advanced patterns
grpc-patterns.mdDesigning streaming services (server, client, bidirectional)
csharp-implementation.mdImplementing gRPC in .NET/C# with ASP.NET Core
schema-evolution.mdPlanning schema changes, Buf CLI, versioning
根据需求按需加载:
参考资料加载场景
proto-syntax.md创建proto定义、知名类型、高级模式
grpc-patterns.md设计流式服务(服务器、客户端、双向)
csharp-implementation.md在.NET/C#中结合ASP.NET Core实现gRPC
schema-evolution.md规划Schema变更、Buf CLI、版本控制

Related Skills (Cross-Plugin)

相关技能(跨插件)

PhaseSkillPluginPurpose
DESIGN
protobuf-design
(this skill)
formal-specificationArchitecture research, pattern selection
AUTHORINGN/Aspec-driven-developmentGap:
protobuf-authoring
not yet created
Workflow: Design (research gRPC patterns) → Author (create .proto files) → Generate (code generation)
Note: Unlike OpenAPI and AsyncAPI, protobuf authoring is typically straightforward enough that the design skill's C# implementation reference covers concrete creation. A dedicated
protobuf-authoring
skill may be added if demand warrants.
阶段技能插件用途
设计
protobuf-design
(本技能)
formal-specification架构研究、模式选择
编写spec-driven-development缺口:
protobuf-authoring
技能尚未创建
工作流:设计(研究gRPC模式)→ 编写(创建.proto文件)→ 生成(代码生成)
注意:与OpenAPI和AsyncAPI不同,protobuf编写通常足够简单,本技能中的C#实现参考已经涵盖了具体创建内容。如果需求增加,可能会添加专门的
protobuf-authoring
技能。

External References

外部参考

MCP Research

MCP研究

For current protobuf patterns and tools:
text
perplexity: "Protocol Buffers proto3" "gRPC service design patterns"
context7: "grpc" (for official documentation)
microsoft-learn: "gRPC ASP.NET Core" (for .NET implementation)
如需获取当前protobuf模式和工具信息:
text
perplexity: "Protocol Buffers proto3" "gRPC service design patterns"
context7: "grpc"(用于获取官方文档)
microsoft-learn: "gRPC ASP.NET Core"(用于.NET实现)

Version History

版本历史

  • v2.0.0 (2026-01-17): Refactored to progressive disclosure pattern
    • Extracted 4 reference files (~550 lines)
    • Hub reduced from 700 to ~130 lines
    • Updated NuGet package versions (Grpc.AspNetCore 2.71.0)
  • v1.0.0 (2025-12-26): Initial release

Last Updated: 2026-01-17
  • v2.0.0(2026-01-17):重构为渐进式披露模式
    • 提取4个参考文件(约550行)
    • 核心内容从700行精简至约130行
    • 更新NuGet包版本(Grpc.AspNetCore 2.71.0)
  • v1.0.0(2025-12-26):初始版本

最后更新时间:2026-01-17