Skillshub generating-grpc-services
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/jeremylongshore/claude-code-plugins-plus-skills/generating-grpc-services" ~/.claude/skills/comeonoliver-skillshub-generating-grpc-services && rm -rf "$T"
manifest:
skills/jeremylongshore/claude-code-plugins-plus-skills/generating-grpc-services/SKILL.mdsource content
Generating gRPC Services
Overview
Generate gRPC service definitions, client/server stubs, and implementations from Protocol Buffer (protobuf)
.proto files. Scaffold unary, server-streaming, client-streaming, and bidirectional-streaming RPC methods with proper error status codes, interceptors for auth/logging, and health check service registration.
Prerequisites
- Protocol Buffers compiler (
) v3.21+ installedprotoc - Language-specific gRPC plugin:
(Node.js),grpc_tools_node_protoc_plugin
(Python), or Go gRPC plugingrpcio-tools
CLI for proto linting and breaking change detection (recommended)buf- gRPC testing tool:
,grpcurl
, or BloomRPCevans - TLS certificates for production transport security (mTLS recommended for service-to-service)
Instructions
- Read existing
files using Glob and Read, or design new service definitions with message types, RPC methods, and streaming patterns per service requirements..proto - Define proto3 message types with appropriate field types, using
for dates,google.protobuf.Timestamp
for dynamic fields, andgoogle.protobuf.Struct
for polymorphic messages.oneof - Compile
files with.proto
to generate language-specific stubs, server interfaces, and client libraries using the appropriate gRPC plugin.protoc - Implement server-side RPC handlers for each method, returning proper gRPC status codes (
,OK
,NOT_FOUND
,INVALID_ARGUMENT
) instead of generic errors.PERMISSION_DENIED - Add server interceptors for authentication (extracting JWT from metadata), request logging with correlation IDs, and deadline propagation across service calls.
- Implement health check service (
) and reflection service for runtime introspection by tools likegrpc.health.v1.Health
.grpcurl - Configure TLS transport security, preferring mutual TLS (mTLS) for service-to-service communication with certificate rotation support.
- Write integration tests using an in-process test server, validating all RPC methods including streaming scenarios with multiple messages and error conditions.
- Generate a REST-to-gRPC gateway using
annotations for HTTP/JSON clients that need to access gRPC services.grpc-gateway
See
${CLAUDE_SKILL_DIR}/references/implementation.md for the full implementation guide.
Output
- Protocol Buffer service and message definitions${CLAUDE_SKILL_DIR}/proto/
- Auto-generated stubs and client/server code${CLAUDE_SKILL_DIR}/generated/
- RPC method handler implementations${CLAUDE_SKILL_DIR}/src/services/
- Auth, logging, and metrics interceptors${CLAUDE_SKILL_DIR}/src/interceptors/
- Health check service implementation${CLAUDE_SKILL_DIR}/src/health/
- REST-to-gRPC gateway configuration (optional)${CLAUDE_SKILL_DIR}/gateway/
- Integration tests with in-process test server${CLAUDE_SKILL_DIR}/tests/
Error Handling
| Error | Cause | Solution |
|---|---|---|
| INVALID_ARGUMENT (3) | Request message fails field validation constraints | Return detailed error details with field-level violation descriptions |
| NOT_FOUND (5) | Requested resource does not exist | Include resource type and ID in error message metadata for client debugging |
| PERMISSION_DENIED (7) | Caller lacks required role or scope in JWT metadata | Return required permission in error details; log denied access attempt |
| DEADLINE_EXCEEDED (4) | RPC took longer than client-specified deadline | Propagate deadlines to downstream calls; implement cascading timeout budgets |
| UNAVAILABLE (14) | Server overloaded or downstream dependency unreachable | Client should retry with exponential backoff; server should implement backpressure |
Refer to
${CLAUDE_SKILL_DIR}/references/errors.md for comprehensive error patterns.
Examples
User management service: Define
UserService with CreateUser, GetUser, ListUsers (server-streaming for large result sets), and UpdateUser RPCs with field mask support for partial updates.
Real-time event stream: Bidirectional streaming RPC where clients subscribe to event topics and the server pushes filtered events, with flow control via client-side backpressure signals.
gRPC-Web frontend: Generate gRPC-Web compatible stubs for browser clients using Envoy proxy for HTTP/2 to gRPC translation, enabling direct proto-based communication from React/Vue applications.
See
${CLAUDE_SKILL_DIR}/references/examples.md for additional examples.
Resources
- gRPC documentation: https://grpc.io/docs/
- Protocol Buffers Language Guide: https://protobuf.dev/programming-guides/proto3/
- Buf CLI for proto management: https://buf.build/
- gRPC-Gateway: https://grpc-ecosystem.github.io/grpc-gateway/