Communitygithub.com

netresearch/go-development-skill

Compétence Agent pour les patterns de développement Go en entreprise – services résilients, tests | Compatible Claude Code

Qu'est-ce que go-development-skill ?

Cette compétence (skill) pour agent IA, compatible avec Claude Code, fournit des directives strictes pour le développement Go en environnement professionnel. Elle impose des principes de type sécurité (use `any`, generics, évitement de `interface{}`), une cohérence architecturale (un pattern par domaine de problème), et des règles de test rigoureuses (tags de build, `t.Parallel()`, tests table-driven). Elle inclut des références détaillées pour l'architecture, la journalisation structurée avec `log/slog`, la résilience, Docker, LDAP, le fuzzing, et les contrats. Des portes de qualité (quality gates) obligatoires (golangci-lint, go vet, staticcheck, govulncheck, go test -race) doivent être exécutées avant toute validation. La compétence orchestre également l'invocation d'autres compétences connexes (audit de sécurité, conformité OpenSSF/SLSA, protection de branches GitHub) pour garantir une couverture complète des exigences d'entreprise.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Patterns de développement Go

Workflow requis

Pour les revues, invoquez les compétences associées : security-audit (OWASP), enterprise-readiness (OpenSSF/SLSA), github-project (protection de branches). Toutes sont requises.

Principes fondamentaux

Sécurité des types

  • Évitez : interface{} (utilisez any), sync.Map, assertions de type éparpillées, réflexion
  • Préférez : les generics [T any], errors.AsType[T] (Go 1.26), les types concrets
  • Exécutez go fix ./... après les mises à niveau

Cohérence

  • Un seul pattern par domaine de problème
  • Respectez les patterns existants du codebase
  • Refactorisez de manière holistique ou pas du tout
  • Priorité de configuration : valeurs par défaut < fichier de config < variables d'environnement < flags

Tests

  • Les tags de build isolent les niveaux de tests : unitaires (par défaut), integration, e2e
  • Utilisez toujours t.Parallel(), t.Helper(), les sous-tests table-driven
  • Utilisez log/slog directement – ne l'encapsulez jamais dans des interfaces Logger personnalisées

Conventions

  • Erreurs : minuscules, sans ponctuation (errors.New("invalid input"))
  • Nommage : ID, URL, HTTP (pas Id, Url, Http)
  • Encapsulation des erreurs : fmt.Errorf("failed to process: %w", err)

Références

Hooks Git : ls lefthook.yml 2>/dev/null && lefthook install || echo "Ajoutez lefthook — voir references/lefthook-template.md"

Chargez selon les besoins :

RéférenceObjectif
references/architecture.mdStructure des packages, gestion de configuration, chaînes de middleware
references/logging.mdJournalisation structurée avec log/slog, migration depuis logrus
references/cron-scheduling.mdPatterns go-cron : tâches nommées, mises à jour à chaud, contexte, résilience
references/resilience.mdLogique de réessai, arrêt gracieux, propagation du contexte
references/docker.mdPatterns du client Docker, mise en commun des buffers
references/ldap.mdIntégration LDAP/Active Directory
references/testing.mdStratégies de test, tags de build, tests table-driven
references/linting.mdgolangci-lint v2, staticcheck, qualité du code
references/api-design.mdOptions de masque de bits, options fonctionnelles, builders
references/fuzz-testing.mdPatterns de fuzzing Go, seeds de sécurité
references/contracts-and-invariants.mdContrats, invariants, tests de propriétés
references/mutation-testing.mdConfiguration Gremlins, mesure de la qualité des tests
references/makefile.mdInterface Makefile standard pour CI/CD
references/modernization.mdModernisateurs Go 1.26, go fix, errors.AsType[T], wg.Go()
references/lefthook-template.mdFichier lefthook.yml prêt à l'emploi pour les hooks Git des projets Go
references/reusable-workflows.mdAppels de workflows Actions réutilisables, propagation des permissions, sorties de release-gate
references/single-build-release.mdConstruction unique pour release : cross-compilation une fois, réutilisation pour release+conteneur
references/awesome-go-submission.mdSoumission awesome-go : corps de PR parsé par CI, format d'entrée, collisions de noms

Portes de qualité

Exécutez avant de terminer toute revue :

golangci-lint run --timeout 5m    # Linting
go vet ./...                       # Analyse statique
staticcheck ./...                  # Vérifications supplémentaires
govulncheck ./...                  # Scan de vulnérabilités
go test -race ./...                # Détection de courses

Corrections de vulnérabilités de la stdlib

Quand govulncheck signale des vulnérabilités dans la stdlib : vérifiez la version de correctif via vuln.go.dev, mettez à jour go X.Y.Z dans go.mod, exécutez go mod tidy. Utilisez des branches PR pour les dépôts avec protection de branches.


Contribuer : Soumettez des améliorations sur https://github.com/netresearch/go-development-skill

Skills associés