SKILL·51397A

go-dependency-audit

eduardo-sl
Aktualisiert 27 days ago
5 Ansichten
70
9
70
Auf GitHub ansehen
Designgeneral

Über

Diese Fähigkeit überprüft die Abhängigkeiten von Go-Modulen, indem sie veraltete Pakete erkennt, bekannte Sicherheitslücken prüft und die Hygiene der go.mod-Datei kontrolliert. Sie hilft dabei, ungenutzte Abhängigkeiten zu identifizieren, die Qualität von Abhängigkeiten zu bewerten und Sicherheitsscans mit Tools wie govulncheck durchzuführen. Nutzen Sie sie beim Bereinigen von go.mod, beim Aktualisieren von Modulen oder bei der Risikobewertung von Drittanbieter-Paketen.

Schnellinstallation

Claude Code

Empfohlen
Primär
npx skills add eduardo-sl/go-agent-skills -a claude-code
Plugin-BefehlAlternativ
/plugin add https://github.com/eduardo-sl/go-agent-skills
Git CloneAlternativ
git clone https://github.com/eduardo-sl/go-agent-skills.git ~/.claude/skills/go-dependency-audit

Kopieren Sie diesen Befehl und fügen Sie ihn in Claude Code ein, um diese Fähigkeit zu installieren

Dokumentation

Go Dependency Audit

Every dependency you add is code you don't control but are responsible for. Audit ruthlessly.

1. Vulnerability Scanning

govulncheck (official Go tool):

# Install
go install golang.org/x/vuln/cmd/govulncheck@latest

# Scan project
govulncheck ./...

# Scan binary
govulncheck -mode=binary ./cmd/api-server

govulncheck checks against the Go vulnerability database and reports only vulnerabilities that actually affect your code paths — not just transitive deps you never call.

Run this in CI. No exceptions.

Additional scanning:

# Nancy (Sonatype OSS Index)
go list -json -deps ./... | nancy sleuth

# Trivy (container + deps)
trivy fs --scanners vuln .

2. go.mod Hygiene

Check for unused dependencies:

go mod tidy
git diff go.mod go.sum  # any changes = deps were stale

go mod tidy MUST be run before every commit. Add to CI:

go mod tidy
git diff --exit-code go.mod go.sum

No replace directives in committed code:

// ❌ Bad — committed replace directive
replace github.com/foo/bar => ../local-bar

// ✅ Acceptable — in monorepos with workspace
// go.work handles this instead

Exception: temporary replace for bug fixes with a comment and linked issue:

// TODO(#1234): remove after upstream merges fix
replace github.com/foo/bar => github.com/myorg/bar v0.0.0-fix

Verify checksums:

go mod verify

This confirms that downloaded modules match their expected checksums. Failures indicate supply-chain tampering.

3. Dependency Evaluation Criteria

Before adding any dependency, evaluate:

CriterionCheck
MaintenanceLast commit < 6 months? Active issue responses?
PopularityStars/forks alone mean nothing. Usage in production projects matters.
LicenseCompatible with your project? MIT/Apache/BSD preferred.
SizeDoes it pull in 50 transitive deps for one function?
AlternativesCan you do this with stdlib in < 50 lines?
API stabilityIs it v1+? Does it follow semver? Frequent breaking changes?
Test coverageDoes the project have meaningful tests?

The stdlib question:

Go's standard library is excellent. Before adding a dependency, ask: "Can I solve this with net/http, encoding/json, database/sql, text/template, crypto/*, os/exec, etc.?"

If the answer is yes and the code is < 100 lines, write it yourself.

4. Module Version Audit

List all dependencies with versions:

go list -m all

Check for available updates:

go list -m -u all  # shows available updates

Upgrade strategy:

# Update specific module
go get github.com/foo/bar@latest

# Update all direct deps (minor/patch only)
go get -u ./...

# Update all deps including major versions (dangerous)
go get -u -t ./...

ALWAYS run full test suite after updates:

go get github.com/foo/[email protected]
go mod tidy
go test -race ./...

5. Transitive Dependency Analysis

# Why is this module in my dependency tree?
go mod why github.com/some/transitive-dep

# Full dependency graph
go mod graph

# Visual dependency graph (with modgraphviz)
go mod graph | modgraphviz | dot -Tpng -o deps.png

Watch for:

  • 🔴 Transitive deps with known CVEs
  • 🔴 Abandoned transitive deps (no commits in 2+ years)
  • 🟡 Diamond dependency conflicts (two versions of same module)
  • 🟡 Oversized transitive trees (a logging library pulling in gRPC)

6. Go Version Management

// go.mod
module github.com/myorg/myproject

go 1.22  // minimum Go version required

Rules:

  • Set go directive to the minimum version that supports features you use.
  • toolchain directive (Go 1.21+) pins the exact toolchain version.
  • Test against multiple Go versions in CI (at minimum: current and previous).

7. Recommended vs. Avoid

Well-maintained, production-proven packages:

DomainPackage
Logginggo.uber.org/zap, log/slog (stdlib 1.21+)
HTTP Routergithub.com/go-chi/chi, net/http (1.22+ routing)
Configgithub.com/caarlos0/env, github.com/spf13/viper
Testinggithub.com/stretchr/testify, stdlib testing
Databasegithub.com/jackc/pgx, github.com/jmoiron/sqlx
Validationgithub.com/go-playground/validator
UUIDgithub.com/google/uuid
Errorsgo.uber.org/multierr, stdlib errors (1.20+)

Patterns to avoid:

  • ❌ Frameworks that take over main() (Go is not Java Spring)
  • ❌ ORMs that hide SQL (prefer sqlx or raw database/sql)
  • ❌ Code generators you don't understand
  • ❌ Packages with v0.x that have been v0 for 3+ years

Audit Output Format

## Dependency Audit Report

**Module:** github.com/myorg/myproject
**Go version:** 1.22
**Direct deps:** N | **Indirect deps:** M

### 🔴 Vulnerabilities
- CVE-XXXX-YYYY in github.com/foo/[email protected] — upgrade to v1.2.5

### 🟡 Outdated Dependencies
- github.com/foo/bar v1.2.3 → v1.5.0 available (minor)

### 🟢 Observations
- go.mod is clean, no replace directives
- All deps actively maintained

GitHub Repository

eduardo-sl/go-agent-skills
Pfad: skills/(workflow)/go-dependency-audit
0
FAQ

Häufig gestellte Fragen

Was ist der Skill go-dependency-audit?

go-dependency-audit ist ein Claude Skill von eduardo-sl. Skills bündeln Anweisungen und Ressourcen, die Claude bei Bedarf lädt, um Aufgaben rund um go-dependency-audit ohne zusätzliche Eingaben auszuführen.

Wie installiere ich go-dependency-audit?

Verwende die Installationsbefehle auf dieser Seite: Füge go-dependency-audit als Plugin zu Claude Code hinzu oder klone das Repository in dein Skills-Verzeichnis. Starte Claude danach neu, damit der Skill geladen wird.

Zu welcher Kategorie gehört go-dependency-audit?

go-dependency-audit gehört zur Kategorie Design.

Kann ich go-dependency-audit kostenlos nutzen?

Ja. go-dependency-audit ist auf AIMCP gelistet und kann kostenlos installiert werden.

Verwandte Skills

executing-plans
Design

Verwenden Sie die Fähigkeit "executing-plans", wenn Sie einen vollständigen Implementierungsplan zur Ausführung in kontrollierten Batches mit Überprüfungspunkten vorliegen haben. Sie lädt den Plan und überprüft ihn kritisch, führt dann Aufgaben in kleinen Batches (standardmäßig 3 Aufgaben) aus und meldet den Fortschritt zwischen jedem Batch zur Überprüfung durch den Architekten. Dies gewährleistet eine systematische Implementierung mit integrierten Qualitätskontrollpunkten.

Skill ansehen
requesting-code-review
Design

Diese Fähigkeit sendet einen Unteragenten für Code-Review, um Codeänderungen anhand der Anforderungen zu analysieren, bevor fortgefahren wird. Sie sollte nach dem Abschließen von Aufgaben, der Implementierung größerer Funktionen oder vor dem Zusammenführen in den Hauptzweig verwendet werden. Die Überprüfung hilft dabei, Probleme frühzeitig zu erkennen, indem die aktuelle Implementierung mit dem ursprünglichen Plan verglichen wird.

Skill ansehen
connect-mcp-server
Design

Diese Fähigkeit bietet Entwicklern eine umfassende Anleitung, um MCP-Server über HTTP-, stdio- oder SSE-Transports mit Claude Code zu verbinden. Sie behandelt Installation, Konfiguration, Authentifizierung und Sicherheit für die Integration externer Dienste wie GitHub, Notion und benutzerdefinierter APIs. Nutzen Sie sie beim Einrichten von MCP-Integrationen, bei der Konfiguration externer Tools oder bei der Arbeit mit Claude's Model Context Protocol.

Skill ansehen
web-cli-teleport
Design

Diese Fähigkeit unterstützt Entwickler bei der Wahl zwischen Claude Code Web- und CLI-Schnittstellen basierend auf Aufgabenanalysen und ermöglicht nahtloses Session-Teleporting zwischen diesen Umgebungen. Sie optimiert den Workflow, indem sie den Sitzungsstatus und Kontext beim Wechsel zwischen Web, CLI oder Mobilgeräten verwaltet. Nutzen Sie sie für komplexe Projekte, die in verschiedenen Phasen unterschiedliche Werkzeuge erfordern.

Skill ansehen