golang-popular-libraries

von samber

Empfiehlt produktionsreife Golang-Bibliotheken und Frameworks. Anwenden, wenn der Benutzer explizit nach Bibliotheksvorschlägen fragt, Alternativen vergleichen möchte, eine Bibliothek für eine bestimmte Aufgabe auswählen muss oder wenn eine neue Abhängigkeit zum Projekt hinzugefügt wird.

npx skills add https://github.com/samber/cc-skills-golang --skill golang-popular-libraries

Persona: You are a Go ecosystem expert. You know the library landscape well enough to recommend the simplest production-ready option — and to tell the developer when the standard library is already enough.

Go Libraries and Frameworks Recommendations

Core Philosophy

When recommending libraries, prioritize:

  1. Production-readiness - Mature, well-maintained libraries with active communities
  2. Simplicity - Go's philosophy favors simple, idiomatic solutions
  3. Performance - Libraries that leverage Go's strengths (concurrency, compiled performance)
  4. Standard Library First - SHOULD prefer stdlib when it covers the use case; only recommend external libs when they provide clear value

Reference Catalogs

Find more libraries here: https://github.com/avelino/awesome-go

This skill is not exhaustive. Please refer to library documentation and code examples for more information.

General Guidelines

When recommending libraries:

  1. Assess requirements first - Understand the use case, performance needs, and constraints
  2. Check standard library - Always consider if stdlib can solve the problem
  3. Prioritize maturity - MUST check maintenance status, license, and community adoption before recommending
  4. Consider complexity - Simpler solutions are usually better in Go
  5. Think about dependencies - More dependencies = more attack surface and maintenance burden

Remember: The best library is often no library at all. Go's standard library is excellent and sufficient for many use cases.

Anti-Patterns to Avoid

  • Over-engineering simple problems with complex libraries
  • Using libraries that wrap standard library functionality without adding value
  • Abandoned or unmaintained libraries: ask the developer before recommending these
  • Suggesting libraries with large dependency footprints for simple needs
  • Ignoring standard library alternatives

Cross-References

  • → See samber/cc-skills-golang@golang-dependency-management skill for adding, auditing, and managing dependencies
  • → See samber/cc-skills-golang@golang-samber-do skill for samber/do dependency injection details
  • → See samber/cc-skills-golang@golang-samber-oops skill for samber/oops error handling details
  • → See samber/cc-skills-golang@golang-stretchr-testify skill for testify testing details
  • → See samber/cc-skills-golang@golang-grpc skill for gRPC implementation details

Mehr Skills von samber

golang-code-style
samber
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).
developmentcode-review
golang-testing
samber
Production-ready Golang tests — table-driven tests, testify suites and mocks, parallel tests, fuzzing, fixtures, goroutine leak detection with goleak, snapshot testing, code coverage, integration tests, idiomatic test naming. Use when writing or reviewing Go tests, choosing a testing approach, setting up Go test CI, or debugging flaky/slow tests. For testify-specific APIs see `samber/cc-skills-golang@golang-stretchr-testify`; for measurement methodology see...
developmenttestingcode-review
golang-design-patterns
samber
Idiomatische Golang-Entwurfsmuster — funktionale Optionen, Konstruktoren, Fehlerfluss und -weitergabe, Ressourcenverwaltung und Lebenszyklus, Graceful Shutdown, Resilienz, Architektur, Dependency Injection, Datenverarbeitung, Streaming und mehr. Anwenden, wenn explizit zwischen Architekturmustern gewählt wird, funktionale Optionen implementiert werden, Konstruktor-APIs entworfen werden, Graceful Shutdown eingerichtet wird, Resilienzmuster angewendet werden oder gefragt wird, welches idiomatische Go-Muster zu einem spezifischen Problem passt.
developmentdesigncode-review
golang-error-handling
samber
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`...
developmentcode-review
golang-performance
samber
Golang-Leistungsoptimierungsmuster und Methodik – bei X-Engpass wird Y angewendet. Behandelt Allokationsreduzierung, CPU-Effizienz, Speicherlayout, GC-Tuning, Pooling, Caching und Hot-Path-Optimierung. Verwenden, wenn Profiling oder Benchmarks einen Engpass identifiziert haben und das richtige Optimierungsmuster zur Behebung benötigt wird. Auch verwenden bei der Durchführung von Performance-Code-Reviews, um Verbesserungen oder Benchmarks vorzuschlagen, die helfen könnten, schnelle Leistungssteigerungen zu identifizieren. Nicht für Messmethodik (→...
developmentcode-review
golang-security
samber
Sicherheitsbest Practices und Schwachstellenprävention für Golang. Behandelt Injection (SQL, Command, XSS), Kryptografie, Dateisystemsicherheit, Netzwerksicherheit, Cookies, Secrets-Management, Speichersicherheit und Logging. Anwenden beim Schreiben, Überprüfen oder Auditieren von Go-Code auf Sicherheit oder bei der Arbeit an risikobehaftetem Code mit Krypto, I/O, Secrets-Management, Benutzereingaben oder Authentifizierung. Enthält Konfiguration von Sicherheitstools.
securitycode-reviewdevelopment
golang-database
samber
Umfassender Leitfaden für Go-Datenbankzugriff — parametrisierte Abfragen, Struct-Scanning, NULL-Spalten, Transaktionen, Isolationsstufen, SELECT FOR UPDATE, Verbindungspool, Batch-Verarbeitung, Kontextweitergabe und Migrationswerkzeuge. Verwenden beim Schreiben, Überprüfen oder Debuggen von Golang-Code, der mit PostgreSQL, MariaDB, MySQL oder SQLite interagiert; für Datenbanktests; oder bei Fragen zu database/sql, sqlx oder pgx. Erzeugt KEINE Datenbankschemata oder Migrations-SQL.
developmentdatabase
golang-lint
samber
Best Practices für Linting und golangci-lint-Konfiguration für Golang-Projekte — Ausführen von Linters, Konfigurieren der .golangci.yml, Unterdrücken von Warnungen mit nolint-Direktiven, Interpretieren von Lint-Ausgaben und Auswählen von Linters. Verwenden bei der Konfiguration von golangci-lint, bei Fragen zu Lint-Warnungen oder nolint-Unterdrückungen, beim Einrichten von Code-Qualitätswerkzeugen oder bei der Auswahl von Linters. Auch verwenden, wenn der Benutzer golangci-lint, go vet, staticcheck oder revive erwähnt.
developmentcode-reviewtesting