Pular para o conteúdo
Skillpedia
APIs e servidores (backend)48 mil · #3177

grpc-golang

Cria serviços gRPC seguros em Go. É útil para comunicação entre sistemas, garantindo segurança e monitoramento eficientes.

O que ela faz

Esta skill ajuda a criar serviços de comunicação seguros e eficientes em Go usando gRPC. Ela ensina a definir como os programas se comunicam, a garantir que a comunicação seja segura (mTLS) e a monitorar o que está acontecendo.

Quando usar

  • ✓Ao criar sistemas onde programas precisam conversar entre si de forma rápida e segura.
  • ✓Ao definir como diferentes partes de um software vão trocar informações.
  • ✓Ao construir APIs internas que precisam de alta performance e segurança.

Exemplo do que pedir para a IA

“Como posso configurar a comunicação segura (mTLS) entre meus serviços Go usando gRPC?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/grpc-golang/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/grpc-golang/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A skill guia você na definição dos contratos de comunicação (usando Protobuf e Buf), na configuração de segurança para que apenas serviços autorizados se comuniquem (mTLS) e na adição de ferramentas para monitorar o tráfego e o desempenho.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill grpc-golang

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/grpc-golang/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

gRPC Golang (gRPC-Go)

Visão Geral

Guia completo para projetar e implementar serviços gRPC de nível de produção em Go. Abrange padronização de contratos com Buf, segurança de camada de transporte via mTLS e observabilidade profunda com interceptores OpenTelemetry.

Use esta habilidade quando

  • Projetando comunicação de microsserviços com gRPC em Go.
  • Construindo APIs internas de alta performance usando Protobuf.
  • Implementando cargas de trabalho de streaming (unidirecional ou bidirecional).
  • Padronizando contratos de API usando Protobuf e Buf.
  • Configurando mTLS para autenticação de serviço a serviço.

Não use esta habilidade quando

  • Construindo APIs públicas puramente REST/HTTP sem requisitos de gRPC.
  • Modificando arquivos .proto legados sem a capacidade de introduzir uma nova versão de API (por exemplo, api.v2) ou garantir compatibilidade retroativa.
  • Gerenciando roteamento de tráfego de malha de serviço (por exemplo, Istio/Linkerd), que está fora do escopo do código da aplicação.

Guia Passo a Passo

  1. Confirmar Contexto Técnico: Identifique a versão do Go, a versão do gRPC-Go e se o projeto usa Buf ou protoc puro.
  2. Confirmar Requisitos: Identifique necessidades de mTLS, padrões de carga (unário/streaming), SLOs e limites de tamanho de mensagem.
  3. Planejar Esquema: Defina versionamento de pacotes (por exemplo, api.v1), tipos de recursos e mapeamento de erros.
  4. Projeto de Segurança: Implemente mTLS para autenticação de serviço a serviço.
  5. Observabilidade: Configure interceptores para rastreamento, métricas e logging estruturado.
  6. Verificação: Sempre execute verificações de buf lint e de alterações que quebram compatibilidade antes de finalizar a geração de código.

Consulte resources/implementation-playbook.md para padrões detalhados, exemplos de código e anti-padrões.

Exemplos

Exemplo 1: Definindo um Serviço e Mensagem (API v1)

syntax = "proto3";
package api.v1;
option go_package = "github.com/org/repo/gen/api/v1;apiv1";

service UserService {
  rpc GetUser(GetUserRequest) returns (GetUserResponse);
}

message User {
  string id = 1;
  string name = 2;
}

message GetUserRequest {
  string id = 1;
}

message GetUserResponse {
  User user = 1;
}

Melhores Práticas

  • ✅ Faça: Use Buf para padronizar sua toolchain e linting com buf.yaml e buf.gen.yaml.
  • ✅ Faça: Sempre use versionamento semântico em caminhos de pacotes (por exemplo, package api.v1).
  • ✅ Faça: Imponha mTLS para toda a comunicação interna de serviço a serviço.
  • ✅ Faça: Trate ctx.Done() em todos os manipuladores de streaming para evitar vazamentos de recursos.
  • ✅ Faça: Mapeie erros de domínio para códigos de status gRPC padrão (por exemplo, codes.NotFound).
  • ❌ Não faça: Retorne strings de erro internas brutas ou traces de pilha para clientes gRPC.
  • ❌ Não faça: Crie uma nova grpc.ClientConn por requisição; sempre reutilize conexões.

Solução de Problemas

  • Erro: Gen Inconsistente: Se o código gerado não corresponder ao esquema, execute buf generate e verifique a opção go_package.
  • Erro: Prazo do Contexto: Verifique os timeouts do cliente e certifique-se de que o servidor não está bloqueando infinitamente em manipuladores de streaming.
  • Erro: Handshake mTLS: Certifique-se de que o certificado CA está corretamente adicionado ao x509.CertPool em ambos os lados, cliente e servidor.

Limitações

  • Não cobre roteamento de tráfego de malha de serviço (configuração Istio/Linkerd).
  • Não cobre gRPC-Web ou integração gRPC baseada em navegador.
  • Assume Go 1.21+ e gRPC-Go v1.60+; versões mais antigas podem ter APIs diferentes (por exemplo, grpc.Dial vs grpc.NewClient).
  • Não cobre configuração de balanceador de carga ciente de gRPC L7 (por exemplo, Envoy, NGINX).
  • Não aborda registro de esquema Protobuf ou governança de esquema em larga escala além do lint do Buf.

Recursos

Habilidades Relacionadas

  • @golang-pro - Padrões gerais de Go e otimização de performance fora da camada gRPC.
  • @go-concurrency-patterns - Gerenciamento avançado do ciclo de vida de goroutines para manipuladores de streaming.
  • @api-design-principles - Estratégia de nomenclatura e versionamento de recursos antes de escrever arquivos .proto.
  • @docker-expert - Containerização de serviços gRPC e configuração de injeção de certificados TLS via segredos do Docker.
Perguntas frequentes

O que é gRPC e Protobuf?

gRPC é uma forma de fazer programas conversarem entre si pela rede, e Protobuf é uma linguagem para definir como as mensagens trocadas se parecem, tornando a comunicação mais eficiente.

O que é mTLS?

mTLS (mutual Transport Layer Security) é um tipo de segurança que garante que tanto o cliente quanto o servidor se identifiquem um ao outro antes de trocarem informações, protegendo contra acessos não autorizados.

O que é Buf?

Buf é uma ferramenta que ajuda a gerenciar e padronizar os arquivos de definição de mensagens (Protobuf), garantindo que todos sigam as mesmas regras e facilitando a geração de código.

Detalhes

Descrição original do autor

Build production-ready gRPC services in Go with mTLS, streaming, and observability. Use when designing Protobuf contracts with Buf or implementing secure service-to-service transport.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#3177
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas