Назад към всички

protobuf-grpc-designer

// Protocol Buffers and gRPC service definition with backward compatibility checks

$ git log --oneline --stat
stars:384
forks:73
updated:March 4, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
nameprotobuf-grpc-designer
descriptionProtocol Buffers and gRPC service definition with backward compatibility checks
allowed-toolsRead,Write,Edit,Glob,Grep,Bash

Protocol Buffers and gRPC Designer Skill

Overview

This skill specializes in designing Protocol Buffers schemas and gRPC service definitions with a focus on backward compatibility, performance, and cross-language interoperability.

Capabilities

  • Design .proto files following Google's style guide and best practices
  • Implement gRPC service definitions with streaming support
  • Validate wire format backward compatibility
  • Generate language-specific stubs for multiple targets
  • Configure proto linting and breaking change detection
  • Design efficient message structures for performance
  • Implement gRPC interceptors and middleware patterns

Target Processes

  • API Design Specification
  • Backward Compatibility Management
  • Multi-Language SDK Strategy

Integration Points

  • buf (schema registry, linting, breaking change detection)
  • protoc (Protocol Buffer compiler)
  • grpcurl (gRPC testing)
  • gRPC-Gateway (REST transcoding)
  • Connect (modern gRPC alternative)

Input Requirements

  • Service domain requirements
  • Message structure definitions
  • Streaming requirements (unary, server, client, bidirectional)
  • Target languages for code generation
  • Backward compatibility policy

Output Artifacts

  • .proto schema files
  • buf.yaml configuration
  • Generated language stubs
  • Breaking change analysis report
  • API documentation from proto comments

Usage Example

skill:
  name: protobuf-grpc-designer
  context:
    protoDirectory: ./proto
    targetLanguages:
      - go
      - python
      - typescript
    enableBufLint: true
    checkBreakingChanges: true
    streamingRequired: true

Best Practices

  1. Use package names that reflect domain boundaries
  2. Reserve field numbers when removing fields
  3. Use well-known types (Timestamp, Duration, etc.)
  4. Document all messages and fields with comments
  5. Version services through package names
  6. Implement proper error handling with Status codes