← ClaudeAtlas

grpclisted

gRPC service development. Protocol Buffers (protobuf), service definitions, streaming (unary, server, client, bidirectional), interceptors, and code generation for Node.js, Go, Java, and Python. USE WHEN: user mentions "gRPC", "protobuf", "Protocol Buffers", ".proto", "grpc-js", "tonic", "grpc-java", "service mesh RPC" DO NOT USE FOR: REST APIs - use `rest-api`; GraphQL - use `graphql`; WebSocket - use real-time skills
claude-dev-suite/claude-dev-suite · ★ 33 · AI & Automation · score 80
Install: claude install-skill claude-dev-suite/claude-dev-suite
# gRPC ## Proto Definition ```protobuf // proto/product.proto syntax = "proto3"; package product; service ProductService { rpc GetProduct(GetProductRequest) returns (Product); rpc ListProducts(ListProductsRequest) returns (stream Product); // Server streaming rpc UploadProducts(stream Product) returns (UploadResponse); // Client streaming rpc SyncProducts(stream SyncRequest) returns (stream SyncResponse); // Bidirectional } message Product { string id = 1; string name = 2; double price = 3; repeated string tags = 4; google.protobuf.Timestamp created_at = 5; } message GetProductRequest { string id = 1; } message ListProductsRequest { int32 page_size = 1; string page_token = 2; } message UploadResponse { int32 count = 1; } ``` ## Node.js (@grpc/grpc-js) ```typescript import * as grpc from '@grpc/grpc-js'; import * as protoLoader from '@grpc/proto-loader'; const packageDef = protoLoader.loadSync('proto/product.proto'); const proto = grpc.loadPackageDefinition(packageDef).product as any; // Server const server = new grpc.Server(); server.addService(proto.ProductService.service, { getProduct: (call: any, callback: any) => { const product = db.findProduct(call.request.id); callback(null, product); }, listProducts: (call: any) => { const products = db.listProducts(call.request); for (const p of products) call.write(p); call.end(); }, }); server.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), (