Golang Dependency Injection

Guide d'injection de dépendances Go avec un tableau de décision selon la taille du projet : injection manuelle vs wire, dig/fx, ou samber/do.

par samber · samber/cc-skills-golang

Testé · Fonctionne ★ 9.2/10

Golang Dependency Injection — Guide d'injection de dépendances Go avec un tableau de décision selon la taille du projet : injection manuelle vs wire, dig/fx, ou samber/do.

Ce que fait

Enseigne les patterns d'injection de dépendances en Go, de l'injection manuelle par constructeur aux conteneurs basés sur des bibliothèques (google/wire, uber-go/dig+fx, samber/do), avec un tableau de décision basé sur le nombre de services et les besoins de cycle de vie. Se déclenche lors de la conception d'architecture de service, du refactoring de globales/câblage basé sur init(), ou du choix d'une bibliothèque de DI en Go, et renvoie explicitement vers des skills frères dédiés à chaque bibliothèque pour approfondir.

Rapport de test

Soumis à une appli Go à 4 services câblée avec des globales et init() : le propre tableau de décision du skill (<10 services -> rester manuel) et sa personnalité « ne jamais sur-ingénierer » ont empêché la réponse de se jeter réflexivement sur wire/fx, et il a produit un refactoring concret en constructeurs NewXxx plus du code de test avec frontières de mock correspondant exactement à son pattern documenté.

Testé le: 2026-07-13 · Claude Code 2.x (agent harness)

Installation

git clone https://github.com/samber/cc-skills-golang
cd cc-skills-golang
mkdir -p ~/.claude/skills
cp -r skills/golang-dependency-injection ~/.claude/skills/golang-dependency-injection

Commandes et exemples de prompts

  • /golang-dependency-injectionGuide d'injection de dépendances Go avec un tableau de décision selon la taille du projet : injection manuelle vs wire, dig/fx, ou samber/do.

Les skills se déclenchent sur des demandes en langage courant — aucune commande à retenir. Après installation, des prompts comme ceux-ci l'activent (en anglais) :

  • Should I use wire or dig for dependency injection in this Go service
  • Help me refactor these Go globals and init() wiring into proper DI
  • What's the right DI approach for a Go project this size, manual or a library