>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
Go

Come Impedire alle Reti Neurali di Scrivere Cattivo Codice Go

Chiunque abbia provato a generare codice Go con Cursor, Claude Code o Copilot ha probabilmente incontrato le loro particolari bizzarrie. Le reti neurali persistono nel trascinare pattern Java in Go, dimenticano di wrappare gli errori con %w, ignorano le race condition nei goroutine e generano strutture mostruose dove basterebbe una semplice funzione.

Promptare manualmente il modello ogni volta è un piacere dubbio. Vuoi dare all'assistente un set di regole corretto una volta sola e dimenticarti delle correzioni costanti in code review. È esattamente per questo che Samuel Berthe, sviluppatore francese (autore della popolare libreria samber/lo), ha creato il progetto cc-skills-golang.

image

Cosa Sono gli Agent Skills e Perché Servono

Il concetto di Agent Skills è nato da un problema semplice: il system prompt di una rete neurale non è infinito. Se carichi nel contesto una guida di stile dettagliata, regole di sicurezza, specifiche per le operazioni di database e funzionalità del framework, al modello semplicemente non rimarrà spazio per il tuo codice effettivo. Le risposte diventeranno più lente e la qualità della generazione calerà.

Le Skills risolvono questo attraverso il lazy loading. Il progetto è una collezione di piccoli file Markdown. All'inizio di una sessione, solo un breve sommario di ogni modulo (circa 100 token per skill) viene caricato nella memoria dell'LLM. Non appena chiedi all'assistente di "scrivere un benchmark per questa funzione" o "aggiungere la gestione degli errori all'handler gRPC", il modello vede il trigger corrispondente e carica il documento dettagliato con le istruzioni specifiche per quel task.

Niente AI Slop

Il dettaglio principale nel README del repository è l'onesta avvertenza dell'autore: "Niente AI slop qui."

Oggi GitHub è invaso da knowledge base generate automaticamente che fanno più male che bene. Samuel ha fatto le cose in modo diverso. Ha usato Claude per la distillazione iniziale delle regole dai suoi commit in progetti Go reali, ma poi ha riscritto, modificato e testato manualmente ogni istruzione.

L'autore ha persino eseguito misurazioni di accuratezza su una test suite:

  • Senza le skills pluggabili, il modello linguistico completava correttamente i task di test il 56% delle volte.
  • Con il ruleset abilitato, il punteggio è salito al 98%.

Miglioramenti particolarmente forti nell'accuratezza sono stati visti in argomenti specifici: modernizzazione di codice vecchio per nuove funzionalità Go (range-over-int, iteratori), scrittura di benchmark e gestione degli errori.

Cosa C'è Dentro il Repository

Tutte le istruzioni sono suddivise in due categorie principali: regole generali del linguaggio e lavoro con librerie specifiche.

Regole Generali del Linguaggio e Architettura

I moduli coprono quasi l'intero ciclo di sviluppo Go:

  • Qualità e stile del codice: convenzioni di naming, operazioni sicure con nil e slice, prevenzione memory leak, documentazione corretta e configurazione di golangci-lint.
  • Architettura e pattern: gestione del context, concorrenza senza goroutine leak, progettazione di strutture e interfacce, pattern di refactoring attraverso gopls.
  • Testing e debugging: table-driven tests, race detection, profiling attraverso pprof, configurazione di OpenTelemetry e raccolta metriche.
  • Setup del progetto: struttura delle directory idiomatica (cmd/internal/pkg), pipeline CI/CD e gestione dei moduli.

Supporto alle Librerie Popolari

Oltre agli standard del linguaggio stesso, il repository incorpora regole per lavorare con strumenti comuni:

  • CLI e configurazioni: spf13/cobra e spf13/viper.
  • Dependency Injection: google/wire, uber/dig, uber/fx e il loro container samber/do.
  • Protocolli di rete: gRPC, GraphQL (gqlgen) e OpenAPI/Swagger.
  • Ecosistema samber: helper funzionali samber/lo, monadi samber/mo, logging samber/slog e concatenamento errori samber/oops.

Un punto interessante: le skills sono progettate per non duplicarsi a vicenda. Se una regola di gestione degli errori influenza il logging, è descritta nel modulo golang-error-handling, e il modulo golang-observability lo referenzia semplicemente. Questo risparmia token.

Come Installare

Il progetto supporta quasi tutti i tool popolari che lavorano con lo standard Agent Skills.

Il modo più universale è l'utilità skills:

npx skills add https://github.com/samber/cc-skills-golang --all

Se lavori in Cursor, clona semplicemente il repository nella cartella skills:

git clone https://github.com/samber/cc-skills-golang.git ~/.cursor/skills/cc-skills-golang

Per Claude Code, l'installazione avviene con il comando standard del plugin:

/plugin marketplace add samber/cc
/plugin install cc-skills-golang@samber

Copilot, Gemini CLI, OpenCode e Codex di OpenAI sono supportati allo stesso modo.

Usare su CI per Auto-Review

Un caso d'uso interessante descritto dall'autore è eseguire agenti AI come reviewer su GitHub Actions.

I linter regolari sono ottimi nel catturare formattazione o variabili non usate. Però sono inutili se una rete neurale silenziosamente rompe la coesione architetturale durante il refactoring o dimentica di cancellare il context quando esce da una funzione. Un agente connesso al PR con questo set di skill controlla il codice specificamente per la conformità agli idiomi Go e evidenzia i problemi architetturali prima che il PR raggiunga i tuoi colleghi.

Vale la Pena Provare

Se usi attivamente le reti neurali nello sviluppo Go e sei stanco di correggere errori banali per loro, installare questo set vale sicuramente la pena. Non trasformerà l'AI in un architect senior, ma ridurrà significativamente il numero di refusi stupidi e codice non idiomatico.

È particolarmente piacevole che il progetto non cerchi di sovraccaricare il contesto e lasci la possibilità di overridare qualsiasi skill con le regole della tua azienda. Crea semplicemente il tuo modulo interno e specifica che ha priorità su quello standard.

Progetti correlati