← ClaudeAtlas

kora-grpc-clientlisted

Kora gRPC clients — GrpcClientModule with generated stubs injected as components, grpcClient.<Service> config, @Tag interceptors, streaming. Use when wiring an outbound gRPC call or adding gRPC metadata auth.
kora-projects/kora-skills · ★ 1 · API & Backend · score 72
Install: claude install-skill kora-projects/kora-skills
# Kora gRPC Client > **Kora sub-skill — obey the [kora-v1 meta rules](../../SKILL.md) on every task:** **R0** ensure `.kora-agent/` docs+examples are cloned · **R1** read this sub-skill before writing code · **R2** Kora APIs only — no Spring/Micronaut/Quarkus, no invented annotations or config keys · **R3** journal any incorrect Kora usage. Add comments/Javadoc only if asked. Generate gRPC client stubs from a `.proto` contract and inject them as components through `GrpcClientModule`. Kora wires the configured channel and the generated stubs into the application graph; your code just builds protobuf requests and calls stub methods. Read this first when: - enabling `GrpcClientModule` and injecting a generated `*BlockingStub`/`*FutureStub`/`*Stub`, - configuring a client under `grpcClient.<ServiceName>.*`, - adding a `ClientInterceptor` for metadata headers, auth, or logging, - making unary or streaming calls. ## Key facts (do not get these wrong) - **Stubs are injected directly by type — no `@Tag` on the constructor parameter.** Kora produces one stub per generated `*Grpc` class. Injecting `UserServiceGrpc.UserServiceBlockingStub` is enough. - **`@Tag(ServiceGrpc.class)` belongs on a `ClientInterceptor`**, to scope that interceptor to one service's client. It is not used for stub injection. - Annotations come from `ru.tinkoff.kora.common.*` (`@Component`, `@Tag`, `@KoraApp`), not from any `annotation.processor.*` package. - Plaintext vs TLS is chosen by the **URL scheme**