GillMacedo/checking-go-version-bumps

Lista as alterações padrão do GODEBUG que ocorrem quando o go line no go.mod é elevado (ex.: go 1.21 para go 1.24), quais binários importam cada pacote afetado e as linhas godebug que mantêm o comportamento antigo. Use quando o usuário deseja alterar a diretiva go ou versão do Go no go.mod, revisa um PR ou alteração do Dependabot/Renovate que a eleva, pergunta o que quebra ou muda ao atualizar o Go, ou vê uma mudança de comportamento (roteamento ServeMux, TLS, x509, GOMAXPROCS) após uma atualização do Go.

O que é checking-go-version-bumps?

Esta skill ajuda desenvolvedores a entenderem e mitigarem as alterações de comportamento que ocorrem ao elevar a versão do Go (diretiva `go` no go.mod). Quando o `go line` é alterado, cada pacote principal recebe os padrões GODEBUG da nova versão, o que pode afetar pacotes como `net/http`, `crypto/tls`, `crypto/x509`, `net/url` e `runtime` sem nenhuma alteração no código. A skill executa uma ferramenta Go local (`godebugdiff.go`) que consulta a toolchain Go instalada para listar quais padrões GODEBUG mudam entre a versão atual e a de destino, e identifica quais binários importam os pacotes afetados. Ela não modifica o go.mod, não compila ou executa o código do usuário, e não usa a rede, a menos que explicitamente solicitado via `go mod download`. A saída inclui uma tabela com cada configuração, o que muda, quais binários são afetados e se o código realmente usa aquele caminho. A skill também orienta a recomendar pinning temporário (via bloco `godebug`) apenas para configurações das quais o código depende realmente, e a mencionar alterações importantes como a das variáveis de loop no Go 1.22 ou configurações específicas de runtime como `containermaxprocs` para contêineres com limites de CPU.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/GillMacedo/godebugdiff/tree/main/plugin/skills/checking-go-version-bumps

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

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

Documentação

Verificando um aumento de versão do Go

Elevar a linha go no go.mod altera mais do que apenas a versão da linguagem. Cada pacote principal recebe os padrões GODEBUG da nova versão, então o comportamento em net/http, crypto/tls, crypto/x509, net/url, runtime e outros pode mudar sem nenhuma alteração no código. A ferramenta integrada pergunta à toolchain Go instalada quais padrões mudam e quais binários importam os pacotes afetados. Ela precisa do Go instalado, lê o go.mod sem editá-lo, nunca compila ou executa o código do usuário e nunca usa a rede.

Executar a ferramenta

A partir da raiz do módulo, ou passando seu diretório:

go run "${CLAUDE_PLUGIN_ROOT}/scripts/godebugdiff.go" --to 1.24 .
  • --to assume como padrão a versão da toolchain instalada e não pode ser mais recente que ela. Se o usuário quiser um destino mais novo, diga que ele precisa instalar essa versão do Go primeiro.
  • --from assume como padrão a linha go atual. Para revisar um PR que já a elevou, passe a versão da branch base: --from 1.21.
  • Adicione --json para saída estruturada e --tests para incluir binários de teste. Um módulo sem pacote principal é verificado automaticamente por meio de seus binários de teste.
  • Se aparecer que os módulos não estão no cache de módulos, pergunte antes de executar go mod download, pois isso usa a rede.

Verificar cada alteração que atinge um binário

A ferramenta lista as configurações pelo pacote que as lê. Importar um pacote não significa que o caminho de código alterado é usado, então verifique:

  1. Leia a frase de documentação e o link da configuração. Em seguida, procure no código a API que ela nomeia, como http.NewServeMux e padrões HandleFunc para httpmuxgo121, tls.Config para configurações de TLS, x509.ParseCertificate ou CreateCertificate para configurações de x509 e rand.Seed para randseednop.
  2. Diga para cada configuração se o código usa aquele caminho: usado, não usado ou não é possível determinar (por exemplo, uma dependência o chama).
  3. Configurações de runtime, como containermaxprocs e updatemaxprocs, aplicam-se a todos os binários. Aponte aquelas que são importantes para como o projeto é implantado, como contêineres com limites de CPU.
  4. Configurações iniciadas com win só importam no Windows. Diga isso se o projeto não for distribuído para lá.
  5. Configurações em "Altera o comando go" afetam go test -json ou compilações em CI, não o programa.

Relatório

  1. Uma tabela curta: configuração, o que muda, quais binários e se o código usa aquele caminho.
  2. Recomende aceitar o novo padrão ou fixar o antigo. Sugira fixar apenas para configurações das quais o código realmente depende e use o bloco godebug ( ... ) da ferramenta. As fixações são temporárias: diga que são removidas em versões futuras do Go.
  3. Repasse as observações da ferramenta, como a alteração da variável de loop no Go 1.22 ou que a linha go de uma biblioteca não define GODEBUG para os programas que a importam.

Não fazer

  • Não edite o go.mod a menos que o usuário peça.
  • Não diga que um aumento é seguro porque nada está listado. A ferramenta cobre apenas os padrões GODEBUG. As notas de versão listam outras alterações.
  • Não execute os testes ou binários do usuário para verificar o comportamento, a menos que ele peça.

Habilidades Relacionadas