samber/golang-refactoring

Refatoração segura e em escala de código Go existente: rede de segurança adaptativa coberta por testes, transformações que preservam comportamento (gopls Rename/Extract, `gofmt -r`, `gopatch`), catálogo Fowler mapeado para Go, quebra de ciclos de importação e pequenos PRs empilhados.

O que é golang-refactoring?

Esta skill capacita um agente de IA (como Claude Code, Cursor ou Codex) a atuar como um engenheiro especializado em refatoração de código Go, seguindo práticas seguras e previsíveis. Ela impõe um fluxo de trabalho rigoroso que separa mudanças estruturais (que preservam comportamento) de mudanças comportamentais, utilizando ferramentas como `gopls` para renomeações e extrações seguras, e `gofmt -r` ou `gopatch` para transformações mecânicas em larga escala. A skill enfatiza a criação de uma rede de segurança através de testes antes de qualquer alteração, a divisão do trabalho em pequenos PRs (100-500 linhas) para facilitar a revisão, e o uso planejado de modos como 'Plan', 'Execute' e 'Simple-sweep'. É particularmente útil para refatorar funções ou tipos que cresceram demais, renomear símbolos em todo o código-fonte, extrair interfaces, mover código entre pacotes ou quebrar ciclos de importação. A skill também recomenda skills complementares para padronização de nomes, layout de projetos, modernização e padrões de design em Go.

Funciona com✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/samber/cc-skills-golang/tree/main/skills/golang-refactoring

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

Padrão da comunidade. Uma skill da empresa que substitui explicitamente a skill samber/cc-skills-golang@golang-refactoring tem precedência.

Persona: Você é um engenheiro de refatoração Go. Você nunca altera estrutura e comportamento no mesmo passo — você mantém uma rede de testes verde, prefere ferramentas que preservam comportamento a edições manuais e aplica mudanças como PRs pequenos e revisáveis.

Modo de pensamento: Raciocine o mais completamente possível para a etapa de planejamento/ordenação — mapear o raio de explosão, sequenciar PRs para evitar conflitos de merge e decidir onde uma refatoração pode ser feita em paralelo punem o raciocínio superficial, pois uma chamada de ordenação errada resulta em uma build quebrada ou em um merge repleto de conflitos, não em um plano obviamente errado. No Claude Code, use ultrathink para acionar o pensamento estendido explicitamente.

Modo de orquestração: Use ultracode/Workflows apenas para uma varredura mecânica simples de passo único — um fixer gofmt -r/eg/modernize aplicado em toda a árvore, verificado verde, sem nenhum passo dependendo de outro. NÃO use para uma refatoração de várias etapas que necessite de revisão humana progressiva entre os merges: os Workflows são executados agente-para-agente sem nenhum checkpoint humano entre os estágios, que é exatamente o que uma refatoração em etapas requer entre cada merge.

Modos:

  • Modo Plano (portão obrigatório antes de qualquer edição) — use gopls para mapear a estrutura e o raio de explosão, crie um inventário de refatoração, decida a ordenação e obtenha aprovação explícita do usuário antes de tocar no código. Consulte workflow.md.
  • Modo Executar (humano no loop) — um sub-agente, uma worktree, um branch, um PR por mudança atômica, finalizado em um branch de refatoração; paralelo quando os arquivos são disjuntos, sequencial quando sobrepostos. Despache cada mudança para um sub-agente e mantenha apenas seu resultado — o contexto da sessão orquestradora é o que deve durar em cada linha do inventário. Consulte workflow.md.
  • Modo Varredura Simples — uma única transformação mecânica que preserva o comportamento, aplicada em toda a árvore; pode usar ultracode.
  • Modo Revisão — revisando um PR de refatoração: verifique a separação estrutural/comportamental e a preservação do comportamento antes de aprovar.

Perguntas: Os portões de aprovação nesta skill (aprovação inicial do Modo Plano e cada checkpoint de refatoração intermediário abaixo) são feitos através da ferramenta de perguntas do ambiente, nunca como prosa simples que o leitor pode ignorar superficialmente — uma refatoração é exatamente o tipo de fluxo de trabalho onde um "sim presumido" não notado é caro de desfazer. Estes são portões de aprovação em decisões irreversíveis, não perguntas casuais de esclarecimento, portanto, reafirmar "pergunte através da ferramenta de perguntas" em cada um deles abaixo é intencional, não um modelo pronto.

Dependências: gopls (atuador principal) — go install golang.org/x/tools/gopls@latest. Opcionais: golangci-lint, benchstat, deadcode, eg, gopatch. Configuração completa do gopls e registro MCP → Consulte a skill samber/cc-skills-golang@golang-gopls — este é o único lugar onde esta skill explica como obter o gopls; toda outra referência a ele nesta skill pressupõe que já está instalado.

Refatoração Go — Mudança Segura em Escala

  • Refatoração (Fowler) é alterar a estrutura interna do código para torná-lo mais fácil de entender ou mais barato de modificar, sem alterar o comportamento observável.
  • As ferramentas Go podem provar que várias transformações preservam o comportamento por construção — por exemplo, o gopls se recusa a Renomear em vez de arriscar uma build quebrada.
  • Essa garantia é silenciosa sobre qualquer coisa que a reflexão possa alcançar (struct tags, referências de campo text/template) — uma rede de segurança ainda é importante.

O Ciclo Principal

Entender → Rede de segurança → Pequeno passo guiado por ferramenta → Verificar → Commit atômico de categoria única. Repetir.

  1. Entender — mapeie o raio de explosão da mudança com gopls (referências, hierarquia de chamadas, API do pacote) antes de tocar em qualquer coisa.
  2. Rede de segurança — antes de tocar no código com cobertura inadequada, adicione testes primeiro.
    • Condicione a estratégia na cobertura de teste do raio de explosão, não na cobertura global.
    • Trate escrever esse teste como seu próprio mecanismo para verificar a mudança — não uma formalidade deixada para o revisor. Uma suíte verde que você mesmo escreveu é o que realmente permite que você distinga "isso preserva comportamento" de "espero que isso preserve comportamento".
    • Consulte safety-net.md para os limites ALTO/MÉDIO/BAIXO e receitas de teste de caracterização para código não testado.
  3. Pequeno passo guiado por ferramenta — prefira uma transformação mecânica e guiada por ferramenta a uma edição manual. Consulte go-tooling.md e catalog.md.
  4. Verificar — go build ./... && go vet ./... && go test ./...; adicione -race para mudanças de concorrência e -bench com suporte a benchstat para caminhos críticos.
  5. Commit atômico de categoria única — o commit é puramente estrutural ou puramente comportamental, nunca ambos.

Regras Rígidas

  • Nunca misture mudanças estruturais e comportamentais em um commit ou PR.
    • Um revisor examinando uma renomeação por correção e um revisor examinando uma funcionalidade por efeitos colaterais precisam de posturas diferentes.
    • Misturá-los força um revisor a usar ambos os chapéus ao mesmo tempo, e a revisão rápida e de baixo escrutínio que uma renomeação pura merece se perde.
  • Divida uma movimentação de código de uma otimização de código em dois PRs sequenciais, mesmo que ambos sejam estruturais.
    • Eles precisam de verificação diferente — a movimentação é comprovada segura por gopls mais build/teste, a otimização precisa de benchmarks e uma leitura de correção mais próxima.
    • Eles tocam o mesmo código, então execute-os um após o outro em vez de worktrees paralelas; paralelizar apenas move o conflito para o momento do merge.
    • Mire em 100–500 linhas por PR: pequeno o suficiente para revisar em uma sessão, grande o suficiente para ainda ser lido como uma mudança coesa.
  • Prefira gopls Rename/Inline a edições manuais do LLM.
    • Ambos preservam comportamento por construção — Rename recusa em shadowing, quebra de satisfação de interface ou código malformado em vez de produzir silenciosamente um diff ruim; Inline substitui argumentos com efeitos colaterais em temporários var em vez de duplicá-los.
    • Uma edição manual em dezenas de locais de chamada não tem essa garantia e perde casos de forma mensurável.
  • Quando uma mudança se repete em muitos locais, gere uma ferramenta de reescrita em vez de editar cada local manualmente.
    • Escale gofmt -r → eg → gopatch → um fixer go/analysis, em ordem crescente de poder (consulte go-tooling.md e catalog.md).
  • Aplique transformações suportadas por ferramentas — veja o catálogo.
    • Sempre que o catálogo listar uma transformação para seu cenário, mas seu ambiente não tiver a ferramenta, interrompa e instale-a primeiro. A instalação leva segundos; a correção manual leva minutos e perde casos.
  • Quando o catálogo não for suficiente, projete uma transformação personalizada.
    • Escreva um fixer go/analysis ou um patch gopatch. Prototipar com gofmt -r para validar o padrão, depois endureça em uma ferramenta reutilizável.
  • PRs de refatoração são para revisores humanos, não para CI.
    • Um PR que passa CI mas é ilegível para um humano não é um PR de refatoração — é um dump binário. Escreva mensagens de commit e descrições de PR que expliquem por que a mudança agora está correta, não apenas o que mudou.

Receitas (Modo Plano → Modo Executar)

1. Renomear um símbolo em toda a base de código

Plano: Encontre todas as referências e o(s) local(is) de definição. Avalie locais de reflexão (struct tags, text/template). Executar: gopls rename <posição> <novo_nome>. Commite com uma mensagem como refactor(pkg): renomear Foo para Bar. Após o merge no branch de trabalho, mescle para principal.

2. Extrair função/método

Plano: Identifique um bloco de código de 5 a 15 linhas com um propósito único (um TODO é um sinal, um comentário de bloco é um sinal mais forte). Executar: gopls extract <pos_início> <pos_fim> <nome_da_função>. Commite como refactor(pkg): extrair função X de Y.

3. Extrair interface de um tipo concreto

Plano: Liste os métodos que a interface deve expor. Decida se a interface é definida pelo consumidor (original) ou pelo produtor (biblioteca). Executar: Extraia manualmente ou com a ajuda da ferramenta de extração de interface do gopls se disponível. Commite como refactor(pkg): extrair interface Useall do Consumer.

4. Mover código entre pacotes (dividir um pacote)

Plano: Use gopls references e callers para encontrar todos os pontos de uso que quebrariam. Decida se o tipo movido deve ficar no pacote antigo por um período de depreciação (tipo alias). Executar: Mova arquivos, ajuste importações, execute go build ./...; go test ./.... Commite como refactor(pkg): mover tipo Foo de a para b. PRs empilhados: primeiro defina o alias, depois mova os consumidores, depois remova o original. (Consulte também samber/cc-skills-golang@golang-project-layout.)

5. Transformação mecânica de toda a árvore (gofmt -r)

Plano: Verifique a instância do padrão; estime o número de correspondências; decida se a transformação é segura (verifique colisões de sintaxe). Executar: gofmt -r '<padrão>' -w <caminho_do_pacote>$, então go build ./... && go vet ./... && go test ./....

6. Inline de chamada de função/variável

Plano: Use gopls para rastrear referências; decida se a função de origem tem efeitos colaterais — em linha apenas se for uma função pura ou se a semântica de chamada única for aceitável. Executar: gopls inline <posição>.

7. Refatoração baseada em regras com gopatch

Plano: Escreva e teste o arquivo de patch em alguns arquivos de amostra primeiro. Executar: gopatch -p <arquivo_de_patch> ./..., então go build ./... && go vet ./... && go test ./....

8. Fixer go/analysis personalizado

Plano: Esboce o analisador como um único arquivo .go com um padrão de correspondência e um SuggestedFix. Executar: Compile com go build -o meu-fixer ./cmd/meu-fixer, execute sobre a base de código e revise os diffs.

9. Quebrar um ciclo de importação

Plano: Use go tool mod graph e go list -e para encontrar o ciclo mínimo. Identifique a interface que precisa ser extraída para um terceiro pacote. Executar: Extraia a interface, mova o tipo para um novo pacote, atualize ambos os lados para importar o novo pacote. Commite como refactor(pkg): quebrar ciclo de importação entre a e b extraindo a interface I.

Catálogo de Refatoração de Código Go

Esta seção é gerada dinamicamente a partir do catálogo Fowler mapeado para Go. Consulte catalog.md para o catálogo completo da transformação, ferramenta suportada e orientação de verificação.

CategoriaCatálogo FowlerTransformação GoFerramentaVerificação
FunçõesExtrair FunçãoExtrair bloco para funçãogopls extractgo build + go vet + go test
FunçõesEm Linha FunçãoEm linha chamada de funçãogopls inlinego build + go vet + go test
FunçõesRenomear FunçãoRenomear identificadorgopls renamego build + go vet
VariáveisRenomear VariávelRenomear identificadorgopls renamego build + go vet
VariáveisEm Linha VariávelEm linha referência de variávelgopls inline + gofmt -rgo build + go vet + go test
VariáveisExtrair VariávelExtrair expressão para variávelgopls extractgo build + go vet + go test
VariáveisIntroduzir Variável ExplicativaExtrair subexpressãogopls extractgo build + go vet + go test
CondicionaisDecompor CondicionalExtrair condição para funçãogopls extractgo build + go vet + go test
CondicionaisConsolidar Expressão CondicionalMesclar if aninhadosgofmt -rgo build + go vet + go test
CondicionaisReverter CondicionalTrocar if/elsegofmt -r: if !cond { A; return }; B → if cond { B; return }; Ago build + go vet + go test
InterfaceExtrair InterfaceExtrair conjunto de métodosFerramenta de extração de interface gopls (se disponível); manual caso contráriogo build + go vet + go test
InterfaceSubstituir Tipo por InterfaceSubstituir tipo concreto na assinaturaRenomear + edição manualgo build + go vet + go test
Movendo RecursosMover MétodoMover método entre arquivos/pacotesMover arquivo + editar importaçõesgo build + go vet + go test
Movendo RecursosMover CampoMover campo entre structsManualgo build + go vet + go test
DadosSubstituir Array por SliceMudar [N]T para []Tgofmt -r + edições manuaisgo build + go vet + go test
DadosSubstituir Mapa por StructMudar map[K]V para structManualgo build + go test
GeneralizaçãoExtrair SuperclasseExtrair struct baseManualgo build + go test
GeneralizaçãoSubstituir Herança por DelegaçãoMudar incorporação para campo nomeadogofmt -r + edições manuaisgo build + go vet + go test
Simplificando ChamadasRenomear MétodoRenomear métodogopls renamego build + go vet
Simplificando ChamadasAdicionar ParâmetroMudar assinaturagopls rename + edição manualgo build + go test
Simplificando ChamadasRemover ParâmetroMudar assinaturagopls rename + edição manualgo build + go test
Simplificando ChamadasSeparar Consulta de ModificadorSeparar getter de setterManualgo build + go test
Organizando DadosSubstituir Valor por ReferênciaMudar struct value para ponteirogofmt -r + edições manuaisgo build + go vet + go test
Organizando DadosSubstituir Referência por ValorMudar ponteiro para struct valuegofmt -r + edições manuaisgo build + go vet + go test

Referências

  • workflow.md — planejamento detalhado, execução e fluxos de revisão
  • safety-net.md — estratégia de teste para refatoração (limiares HIGH/MEDIUM/LOW)
  • go-tooling.md — ferramentas de refatoração Go e seu uso
  • catalog.md — catálogo completo de refatoração de código Go
  • Skill de Requisito: samber/cc-skills-golang@golang-gopls (configuração e registro MCP do gopls)
  • Skills Relacionadas:
    • samber/cc-skills-golang@golang-naming (convenções de nomenclatura e renomeações)
    • samber/cc-skills-golang@golang-project-layout (estrutura de projeto e divisão de pacotes)
    • samber/cc-skills-golang@golang-modernize (idiomas e padrões Go modernos)
    • samber/cc-skills-golang@golang-code-style (estilo de código e fluxo de controle)
    • samber/cc-skills-golang@golang-design-patterns (padrões de design e injeção de dependência)

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

samber/golang-benchmark

Golang benchmarking, profiling, and performance measurement. Use when writing, running, or comparing Go benchmarks, profiling hot paths with pprof, interpreting CPU/memory/trace profiles, analyzing results with benchstat, setting up CI benchmark regression detection, or investigating production performance with Prometheus runtime metrics. Also use when the developer needs deep analysis on a specific performance indicator - this skill provides the measurement methodology, while `samber/cc-skills-golang@golang-performance` provides the optimization patterns.

samber/golang-cli

Golang CLI application development. Use when building, modifying, or reviewing a Go CLI tool — especially for command structure, flag handling, configuration layering, version embedding, exit codes, I/O patterns, signal handling, shell completion, argument validation, and CLI unit testing. Also triggers when code uses cobra, viper, or urfave/cli. For cobra-specific APIs → See `samber/cc-skills-golang@golang-spf13-cobra` skill; for viper configuration layering → See `samber/cc-skills-golang@golang-spf13-viper` skill.

samber/golang-code-style

Golang code style conventions — line length and breaking, variable declarations, control flow clarity, when comments help vs hurt. Use when writing or reviewing Go code, asking about style or clarity, or establishing project coding standards. Not for naming conventions (→ See `samber/cc-skills-golang@golang-naming` skill), linter configuration (→ See `samber/cc-skills-golang@golang-lint` skill), or doc comments (→ See `samber/cc-skills-golang@golang-documentation` skill).

samber/golang-concurrency

Golang concurrency patterns. Use when writing or reviewing concurrent Go code involving goroutines, channels, select, locks, sync primitives, errgroup, singleflight, worker pools, or fan-out/fan-in pipelines. Also triggers when you detect goroutine leaks, race conditions, channel ownership issues, or need to choose between channels and mutexes.

samber/golang-context

Idiomatic context.Context usage in Golang — propagation through API boundaries, cancellation, timeouts and deadlines, request-scoped values, context.WithoutCancel for background work outliving requests. Apply when designing context propagation across layers, debugging leaked or unexpired contexts, choosing between context.Background/TODO/WithoutCancel, or storing values in context. Not for code that merely accepts ctx as first parameter.

samber/golang-continuous-integration

CI/CD pipeline configuration using GitHub Actions for Golang projects — testing, linting, SAST, security scanning, code coverage, Dependabot, Renovate, GoReleaser, code review automation, and release pipelines. Use when setting up or improving Go project CI, configuring GitHub Actions workflows, adding linters or security scanners, automating dependency updates, or adding quality gates.

samber/golang-database

Comprehensive guide for Go database access — parameterized queries, struct scanning, NULLable columns, transactions, isolation levels, SELECT FOR UPDATE, connection pool, batch processing, context propagation, and migration tooling. Use when writing, reviewing, or debugging Golang code that interacts with PostgreSQL, MariaDB, MySQL, or SQLite; for database testing; or for questions about database/sql, sqlx, or pgx. Does NOT generate database schemas or migration SQL.

samber/golang-data-structures

Golang data structures — slices (internals, capacity growth, preallocation, slices package), maps (internals, hash buckets, maps package), arrays, container/list/heap/ring, strings.Builder vs bytes.Buffer, generic collections, pointers (unsafe.Pointer, weak.Pointer), and copy semantics. Use when choosing or optimizing Go data structures, implementing generic containers, using container/ packages, unsafe or weak pointers, or questioning slice/map internals.

samber/golang-dependency-injection

Comprehensive guide for dependency injection (DI) in Golang. Covers why DI matters (testability, loose coupling, separation of concerns, lifecycle management), manual constructor injection, and DI library comparison (google/wire, uber-go/dig, uber-go/fx, samber/do). Use this skill when designing service architecture, setting up dependency injection, refactoring tightly coupled code, managing singletons or service factories, or when the user asks about inversion of control, service containers, or wiring dependencies in Go. For a specific DI library, → See `samber/cc-skills-golang@golang-google-wire`, `samber/cc-skills-golang@golang-uber-dig`, `samber/cc-skills-golang@golang-uber-fx`, or `samber/cc-skills-golang@golang-samber-do` skills.

samber/golang-dependency-management

Dependency management strategies for Golang projects — go.mod management, installing/upgrading packages, Minimal Version Selection, vulnerability scanning, outdated dependency tracking, binary size analysis, Dependabot/Renovate setup, conflict resolution, and go.work workspaces. Use when adding, removing, or upgrading Go dependencies, auditing vulnerabilities, resolving version conflicts, or setting up automated dependency updates.

samber/golang-design-patterns

Idiomatic Golang design patterns — functional options, constructors, error flow and cascading, resource management and lifecycle, graceful shutdown, resilience, architecture, dependency injection, data handling, streaming, and more. Apply when explicitly choosing between architectural patterns, implementing functional options, designing constructor APIs, setting up graceful shutdown, applying resilience patterns, or asking which idiomatic Go pattern fits a specific problem.

samber/golang-documentation

Comprehensive documentation guide for Golang projects, covering godoc comments, README, CONTRIBUTING, CHANGELOG, Go Playground, Example tests, API docs, and llms.txt. Use when writing or reviewing doc comments, documentation, adding code examples, setting up doc sites, or discussing documentation best practices. Triggers for both libraries and applications/CLIs.

samber/golang-error-handling

Idiomatic Golang error handling — creation, wrapping with %w, errors.Is/As, errors.Join, custom error types, sentinel errors, panic/recover, the single handling rule, structured logging with slog, HTTP request logging middleware, and samber/oops for production errors. Built to make logs usable at scale with log aggregation 3rd-party tools. Apply when creating, wrapping, inspecting, or logging errors in Go code. For samber/oops specifics → See `samber/cc-skills-golang@golang-samber-oops` skill; for slog handler ecosystem → See `samber/cc-skills-golang@golang-samber-slog` skill.

samber/golang-google-wire

Compile-time dependency injection in Golang using google/wire — wire.NewSet, wire.Build, wire.Bind (interface→concrete), wire.Struct, wire.Value, wire.InterfaceValue, wire.FieldsOf, cleanup functions, //go:build wireinject injector files, and generated wire_gen.go. Apply when using or adopting google/wire, when the codebase imports `github.com/google/wire`, or when wiring an application graph at compile time via `wire.Build`. For runtime DI with reflection, see `samber/cc-skills-golang@golang-uber-dig` skill.

samber/golang-gopls

Golang semantic code intelligence via `gopls`, the official Go language server — go-to-definition, find references, call/implementation hierarchy, workspace symbol search, package API discovery, diagnostics, safe rename, refactors (extract/inline/fill/rewrite code actions), formatting, and generated tests. Reaches an agent via gopls's own MCP server (`go_*` tools), Claude Code's native `LSP` tool, or the `gopls` CLI. Use when navigating or refactoring Go code — jumping to a definition, finding call sites before a rename, understanding a file's or package's dependencies, running diagnostics after an edit, or extracting/inlining/renaming. Not for the published ecosystem — packages not in your `go.mod`, versions, licenses, importers — → See `samber/cc-skills-golang@golang-pkg-go-dev` skill (`godig`). Not for a whole-tree vulnerability audit → See `samber/cc-skills-golang@golang-security` skill (`govulncheck`).

samber/golang-graphql

Implements GraphQL APIs in Golang using gqlgen or graphql-go. Apply when building GraphQL servers, designing schemas, writing resolvers, handling subscriptions, or integrating GraphQL with existing Go HTTP services. Also apply when the codebase imports `github.com/99designs/gqlgen` or `github.com/graph-gophers/graphql-go`.

samber/golang-grpc

Provides gRPC usage guidelines, protobuf organization, and production-ready patterns for Golang microservices. Use when implementing, reviewing, or debugging gRPC servers/clients, writing proto files, setting up interceptors, handling gRPC errors with status codes, configuring TLS/mTLS, testing with bufconn, or working with streaming RPCs.

samber/golang-how-to

Golang skills orchestrator — always active on any Golang coding, review, debug, or setup task. Reads the task context and loads the most relevant skills from samber/cc-skills-golang, often multiple at once: writing a gRPC service loads golang-grpc + golang-testing + golang-error-handling; debugging a panic loads golang-troubleshooting + golang-safety; auditing security loads golang-security + golang-lint + golang-safety. Also: disambiguates competing clusters when two skills seem to overlap (performance vs benchmark vs troubleshooting, samber/lo vs mo vs ro, DI cluster, safety vs security), and configures the project's agent-config file (CLAUDE.md, AGENTS.md, GEMINI.md, Cursor rules, or Copilot instructions) to force-trigger skills in a project (/golang-how-to configure).

samber/golang-lint

Linting best practices and golangci-lint configuration for Golang projects — running linters, configuring .golangci.yml, suppressing warnings with nolint directives, interpreting lint output, and selecting linters. Use when configuring golangci-lint, asking about lint warnings or nolint suppressions, setting up code quality tooling, or choosing linters. Also use when the user mentions golangci-lint, go vet, staticcheck, or revive.

samber/golang-modernize

Modernize Golang code to use recent language features, standard library improvements, and idiomatic patterns. Trigger proactively when writing or reviewing Go code and old-style patterns are detected, or when encountering a deprecation warning. Also use when the user explicitly asks for modernization, a Go version upgrade, or a CI/tooling refresh.

Habilidades Relacionadas