Babysitter protobuf-grpc-designer
Protocol Buffers and gRPC service definition with backward compatibility checks
install
source · Clone the upstream repo
git clone https://github.com/a5c-ai/babysitter
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/a5c-ai/babysitter "$T" && mkdir -p ~/.claude/skills && cp -r "$T/library/specializations/sdk-platform-development/skills/protobuf-grpc-designer" ~/.claude/skills/a5c-ai-babysitter-protobuf-grpc-designer && rm -rf "$T"
manifest:
library/specializations/sdk-platform-development/skills/protobuf-grpc-designer/SKILL.mdsource content
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
- Use package names that reflect domain boundaries
- Reserve field numbers when removing fields
- Use well-known types (Timestamp, Duration, etc.)
- Document all messages and fields with comments
- Version services through package names
- Implement proper error handling with Status codes