h0rn3t/golang-skills

Compétences pour agents IA afin d'écrire du code Go idiomatique et prêt pour la production, distillées à partir des pratiques de Google, Uber et de la communauté.

Qu'est-ce que golang-skills ?

Ce jeu de compétences pour agents IA, basé sur le référentiel h0rn3t/golang-skills, fournit des directives et des pratiques éprouvées pour développer du code Go de qualité professionnelle. Il est conçu pour aider les développeurs et les agents IA (tels que Claude Code, Cursor, Codex) à produire un code Go idiomatique, maintenable et optimisé, en s'inspirant des standards de Google (Effective Go), d'Uber (Uber Go Style Guide) et des meilleures pratiques de la communauté. L'outil couvre des aspects clés comme la gestion des erreurs, la nommage, la structure des packages, la concurrence et l'utilisation des interfaces. En intégrant ce skill, un agent IA peut générer du code qui respecte les conventions Go modernes, améliorant ainsi la lisibilité, la robustesse et la performance du code produit. Il est utile pour tout projet Go nécessitant un code de haute qualité, des microservices aux outils CLI.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add h0rn3t/golang-skills

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

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

Documentation

Que fait golang-skills ?

Compétences pour agents IA afin d'écrire du code Go idiomatique et prêt pour la production, distillées à partir des pratiques de Google, Uber et de la communauté.

Principes directeurs

  • Idiomatique : Suivez les conventions Go (Effective Go, Uber Go Style Guide).
  • Prêt pour la production : Priorisez la fiabilité, la maintenabilité et la performance.
  • Distillé : Synthèse des meilleures pratiques communautaires.

Fonctionnalités clés

  • Gestion des erreurs : Privilégiez les erreurs explicites plutôt que les exceptions. Utilisez errors.Is(), errors.As() et des wrappers avec fmt.Errorf("...: %w", err).
  • Nommage : Utilisez des noms courts et clairs. Un nom plus long indique une portée plus large. Évitez le nommage hongrois.
  • Structure des packages : Organisez le code par responsabilité. Évitez les packages util ou common.
  • Concurrence : Synchronisez avec des channels ou des mutex. Utilisez sync.WaitGroup pour les goroutines groupées. Privilégiez la composition avec des goroutines légères.
  • Interfaces : Définissez des interfaces petites et ciblées. Acceptez les interfaces, retournez des structures.

Commandes et utilisation

  • Initialisation : go mod init <nom_du_module>
  • Compilation et test : Utilisez go build, go test, go vet, go fmt.
  • Dépendances : Gérez avec go mod tidy, go mod verify.
  • Documentation : Utilisez go doc et rédigez des commentaires de documentation.

Exemples

// Exemple idiomatique de gestion d'erreurs
func ReadConfig(path string) (*Config, error) {
    f, err := os.Open(path)
    if err != nil {
        return nil, fmt.Errorf("ouverture du fichier de configuration : %w", err)
    }
    defer f.Close()

    var cfg Config
    if err := json.NewDecoder(f).Decode(&cfg); err != nil {
        return nil, fmt.Errorf("décodage de la configuration : %w", err)
    }
    return &cfg, nil
}

Références

Contribution

Consultez le dépôt original h0rn3t/golang-skills pour plus de détails et pour contribuer.

Skills associés