Communitygithub.com

netresearch/go-development-skill

Skill para Agente: Padrões de desenvolvimento Go empresarial - serviços resilientes, testes | Compatível com Claude Code

O que é go-development-skill?

Este skill capacita agentes de IA (especificamente Claude Code) a aplicar padrões de desenvolvimento Go de nível empresarial ao revisar ou gerar código. Ele impõe tipagem segura, consistência de código, e práticas de teste rigorosas, com foco em evitar tipos genéricos (interface{}), uso de genéricos modernos, e isolamento de testes por tags de build. O skill exige a invocação de skills relacionados de segurança (OWASP), prontidão empresarial (OpenSSF/SLSA) e proteção de branch do GitHub, garantindo uma revisão holística. Ele fornece um conjunto de referências técnicas (arquitetura, logging, resiliência, etc.) e portões de qualidade com comandos pré-definidos (golangci-lint, go vet, staticcheck, govulncheck, go test -race) que devem ser executados antes de finalizar qualquer revisão.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add netresearch/go-development-skill

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Padrões de Desenvolvimento Go

Fluxo de Trabalho Obrigatório

Para revisões, invoque skills relacionados: security-audit (OWASP), enterprise-readiness (OpenSSF/SLSA), github-project (proteção de branch). Todos são obrigatórios.

Princípios Fundamentais

Segurança de Tipos

  • Evite: interface{} (use any), sync.Map, type assertions espalhadas, reflexão
  • Prefira: Genéricos [T any], errors.AsType[T] (Go 1.26), tipos concretos
  • Execute go fix ./... após atualizações

Consistência

  • Um padrão por domínio de problema
  • Corresponda aos padrões existentes do código
  • Refatore holisticamente ou não refatore
  • Precedência de configuração: padrões < arquivo de configuração < variáveis de ambiente < flags

Testes

  • Tags de build isolam camadas de teste: unitário (padrão), integration, e2e
  • Sempre use t.Parallel(), t.Helper(), subtestes orientados por tabela
  • Use log/slog diretamente – nunca o envolva em interfaces de Logger personalizadas

Convenções

  • Erros: minúsculas, sem pontuação (errors.New("entrada inválida"))
  • Nomenclatura: ID, URL, HTTP (não Id, Url, Http)
  • Encadeamento de erros: fmt.Errorf("falha ao processar: %w", err)

Referências

Git hooks: ls lefthook.yml 2>/dev/null && lefthook install || echo "Adicione lefthook — veja references/lefthook-template.md"

Carregue conforme necessário:

ReferênciaFinalidade
references/architecture.mdEstrutura de pacotes, gerenciamento de configuração, cadeias de middleware
references/logging.mdLogging estruturado com log/slog, migração do logrus
references/cron-scheduling.mdPadrões go-cron: jobs nomeados, atualizações em tempo de execução, contexto, resiliência
references/resilience.mdLógica de retry, encerramento gracioso, propagação de contexto
references/docker.mdPadrões de cliente Docker, pooling de buffers
references/ldap.mdIntegração LDAP/Active Directory
references/testing.mdEstratégias de teste, tags de build, testes orientados por tabela
references/linting.mdgolangci-lint v2, staticcheck, qualidade de código
references/api-design.mdOpções de bitmask, opções funcionais, builders
references/fuzz-testing.mdPadrões de fuzzing em Go, sementes de segurança
references/contracts-and-invariants.mdContratos, invariantes, testes de propriedade
references/mutation-testing.mdConfiguração do Gremlins, medição de qualidade de teste
references/makefile.mdInterface Makefile padrão para CI/CD
references/modernization.mdModernizadores Go 1.26, go fix, errors.AsType[T], wg.Go()
references/lefthook-template.mdlefthook.yml pronto para uso para git hooks de projetos Go
references/reusable-workflows.mdChamadores de workflow de Actions reutilizáveis, propagação de permissão, saídas de portão de liberação
references/single-build-release.mdRelease de build único: cross-compile uma vez, reutilize para release+container
references/awesome-go-submission.mdSubmissão awesome-go: corpo de PR analisado por CI, formato de entrada, colisões de nome

Portões de Qualidade

Execute antes de completar qualquer revisão:

golangci-lint run --timeout 5m    # Linting
go vet ./...                       # Análise estática
staticcheck ./...                  # Verificações adicionais
govulncheck ./...                  # Varredura de vulnerabilidades
go test -race ./...                # Detecção de corrida

Correções de Vulnerabilidades da Stdlib

Quando govulncheck relatar vulnerabilidades da stdlib: verifique a versão de correção via vuln.go.dev, atualize go X.Y.Z no go.mod, execute go mod tidy. Use branches de PR para repositórios com proteção de branch.


Contribuindo: Envie melhorias para https://github.com/netresearch/go-development-skill

Habilidades Relacionadas