go-ci
Über
Diese Claude Skill unterstützt Entwickler beim Einrichten und Optimieren von Continuous-Integration-Pipelines für Go-Projekte mit GitHub Actions. Sie bietet Konfigurationen für Caching, golangci-lint, Testabdeckungsgrenzen, Schwachstellenscans mit govulncheck, Build-Matrizen und Makefile-Targets. Verwenden Sie sie, wenn Sie CI-Workflows implementieren oder verbessern müssen, jedoch nicht für das Schreiben von Tests, Commit-Konventionen oder Abhängigkeitsaudits.
Schnellinstallation
Claude Code
Empfohlennpx skills add eduardo-sl/go-agent-skills -a claude-code/plugin add https://github.com/eduardo-sl/go-agent-skillsgit clone https://github.com/eduardo-sl/go-agent-skills.git ~/.claude/skills/go-ciKopieren Sie diesen Befehl und fügen Sie ihn in Claude Code ein, um diese Fähigkeit zu installieren
Dokumentation
Go CI
A Go pipeline has exactly four gates: build, vet/lint, test with race detector, vulnerability scan. Everything else is optimization.
1. Baseline GitHub Actions Workflow
name: ci
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod # single source of truth
cache: true # caches module + build cache
- run: go build ./...
- run: go vet ./...
- run: go test -race -shuffle=on -coverprofile=coverage.out ./...
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
- uses: golangci/golangci-lint-action@v6
with:
version: latest
vuln:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
- run: go run golang.org/x/vuln/cmd/govulncheck@latest ./...
Key decisions baked in:
go-version-file: go.mod— never hardcode the Go version in two places.cache: trueon setup-go handles module and build caches; do not add manualactions/cachesteps for Go on top of it.-race -shuffle=on— races and order-dependent tests fail in CI, not production.permissions: contents: read— least privilege by default.- Lint in a separate job — it fails fast and parallelizes with tests.
2. golangci-lint Configuration
Commit a .golangci.yml; an unconfigured linter is noise:
linters:
enable:
- errcheck # unchecked errors
- govet
- staticcheck
- errorlint # %w misuse, == on errors
- gosec # security patterns
- revive # style, replaces golint
- misspell
issues:
exclude-rules:
- path: _test\.go
linters: [gosec] # test code may use weak randomness etc.
Start from this small set and add linters deliberately. Enabling
everything produces hundreds of findings nobody triages. nolint
directives require a reason: //nolint:gosec // G404: jitter, not crypto.
3. Build Matrix — Only When You Ship It
strategy:
matrix:
go: ['1.23', '1.24'] # only versions you support
os: [ubuntu-latest, macos-latest, windows-latest]
Libraries: test the two newest Go versions (the Go team supports two).
Services deployed on Linux: skip the OS matrix — it doubles cost for
platforms you never ship. Cross-compilation is cheaper than emulation:
GOOS=windows go build ./... catches most portability breaks.
4. Coverage Gate
- run: go test -race -coverprofile=coverage.out ./...
- name: enforce coverage floor
run: |
total=$(go tool cover -func=coverage.out | awk '/^total:/ {sub(/%/,"",$3); print $3}')
echo "coverage: ${total}%"
awk -v t="$total" 'BEGIN { exit (t < 70.0) }'
Gate on a floor that ratchets up, not a target that gets gamed. Exclude
generated code via //go:generated files' build tags or grep filters,
not by lowering the floor.
5. Makefile — Local Mirror of CI
CI must run what developers run. One definition, two callers:
.PHONY: build lint test vuln ci
build:
go build ./...
lint:
golangci-lint run
test:
go test -race -shuffle=on -coverprofile=coverage.out ./...
vuln:
go run golang.org/x/vuln/cmd/govulncheck@latest ./...
ci: build lint test vuln
If CI does anything make ci doesn't, developers discover failures
only after pushing. Keep them identical.
6. Speed Rules
- Split lint / test / vuln into parallel jobs (as in §1).
go test ./...already parallelizes across packages; don't shard a small repo.- Integration tests behind a build tag run in a separate job or on a
schedule, not on every push:
go test -tags=integration ./.... - If the build cache misses constantly, check that
go.sumis the cache key input (setup-go does this) and that jobs don't mutate it.
Verification Checklist
- Pipeline has all four gates: build, vet+lint, test -race, govulncheck
- Go version sourced from go.mod (
go-version-file), not duplicated permissions: contents: readset at workflow level- Tests run with
-race -shuffle=on .golangci.ymlcommitted with a curated linter set- Every
nolintcarries a linter name and a reason - Matrix limited to versions/platforms actually supported
- Coverage floor enforced, generated code excluded
make cireproduces the pipeline locally, byte-for-byte- Integration tests isolated behind tags, not slowing every push
GitHub Repository
Häufig gestellte Fragen
Was ist der Skill go-ci?
go-ci ist ein Claude Skill von eduardo-sl. Skills bündeln Anweisungen und Ressourcen, die Claude bei Bedarf lädt, um Aufgaben rund um go-ci ohne zusätzliche Eingaben auszuführen.
Wie installiere ich go-ci?
Verwende die Installationsbefehle auf dieser Seite: Füge go-ci 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-ci?
go-ci gehört zur Kategorie Meta.
Kann ich go-ci kostenlos nutzen?
Ja. go-ci ist auf AIMCP gelistet und kann kostenlos installiert werden.
Verwandte Skills
Diese Skill bietet eine produktionsgetestete Einrichtung für Content Collections – ein TypeScript-first-Tool, das Markdown/MDX-Dateien in typsichere Datensammlungen mit Zod-Validierung umwandelt. Verwenden Sie ihn beim Erstellen von Blogs, Dokumentationsseiten oder inhaltsstarken Vite + React-Anwendungen, um Typsicherheit und automatische Inhaltsvalidierung zu gewährleisten. Er behandelt alles von der Vite-Plugin-Konfiguration und MDX-Kompilierung bis hin zur Deployment-Optimierung und Schema-Validierung.
Diese Fähigkeit ermöglicht es Entwicklern, Anwendungen mit der Polymarket-Prognosemärkte-Plattform zu erstellen, einschließlich API-Integration für Handel und Marktdaten. Sie bietet außerdem Echtzeit-Datenstreaming über WebSocket, um Live-Trades und Marktaktivitäten zu überwachen. Nutzen Sie sie zur Implementierung von Handelsstrategien oder zur Erstellung von Tools, die Live-Marktaktualisierungen verarbeiten.
Diese Fähigkeit unterstützt Entwickler dabei, OpenCode-Plugins zu erstellen, die in über 25 Ereignistypen wie Befehle, Dateien und LSP-Operationen eingreifen. Sie bietet die Plugin-Struktur, Event-API-Spezifikationen und Implementierungsmuster für JavaScript/TypeScript-Module. Nutzen Sie sie, wenn Sie den Lebenszyklus des OpenCode KI-Assistenten mit benutzerdefinierter ereignisgesteuerter Logik abfangen, überwachen oder erweitern müssen.
SGLang ist ein hochperformantes LLM-Serving-Framework, das sich auf schnelle, strukturierte Generierung für JSON, Regex und agentenbasierte Workflows unter Verwendung seines RadixAttention-Prefix-Cachings spezialisiert. Es bietet deutlich schnellere Inferenz, insbesondere für Aufgaben mit wiederholten Präfixen, was es ideal für komplexe, strukturierte Ausgaben und Mehrfachdialoge macht. Wählen Sie SGLang gegenüber Alternativen wie vLLM, wenn Sie constrained decoding benötigen oder Anwendungen mit umfangreicher Präfix-Weitergabe entwickeln.
