Acerca de
Esta Skill de Claude ayuda a los desarrolladores a configurar y optimizar pipelines de integración continua para proyectos en Go utilizando GitHub Actions. Proporciona configuraciones para caché, golangci-lint, compuertas de cobertura de pruebas, escaneo de vulnerabilidades con govulncheck, matrices de compilación y objetivos de Makefile. Úsela cuando necesite implementar o mejorar flujos de trabajo de CI, pero no para escribir pruebas, convenciones de commit o auditorías de dependencias.
Instalación rápida
Claude Code
Recomendadonpx 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-ciCopia y pega este comando en Claude Code para instalar esta habilidad
Documentación
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
Repositorio GitHub
Preguntas frecuentes
¿Qué es el Skill go-ci?
go-ci es un Skill de Claude creado por eduardo-sl. Los Skills agrupan instrucciones y recursos que Claude carga cuando los necesita para realizar tareas relacionadas con go-ci sin indicaciones adicionales.
¿Cómo instalo go-ci?
Usa los comandos de instalación de esta página: añade go-ci a Claude Code como plugin o clona su repositorio en tu directorio de skills y reinicia Claude para cargarlo.
¿A qué categoría pertenece go-ci?
go-ci pertenece a la categoría Meta.
¿Se puede usar go-ci gratis?
Sí. go-ci aparece en AIMCP y se puede instalar gratis.
Habilidades relacionadas
Esta habilidad proporciona una configuración probada en producción para Content Collections, una herramienta centrada en TypeScript que transforma archivos Markdown/MDX en colecciones de datos con tipado seguro mediante validación Zod. Úsala al construir blogs, sitios de documentación o aplicaciones Vite + React con mucho contenido para garantizar seguridad de tipos y validación automática de contenido. Abarca todo, desde la configuración del plugin de Vite y compilación MDX hasta la optimización de despliegue y validación de esquemas.
Esta habilidad permite a los desarrolladores crear aplicaciones con la plataforma de mercados de predicción Polymarket, incluyendo la integración de API para operaciones y datos de mercado. También proporciona transmisión de datos en tiempo real a través de WebSocket para monitorear operaciones en vivo y actividad del mercado. Úsela para implementar estrategias de trading o crear herramientas que procesen actualizaciones de mercado en tiempo real.
Esta habilidad ayuda a los desarrolladores a crear complementos de OpenCode que se conectan a más de 25 tipos de eventos, como comandos, archivos y operaciones LSP. Proporciona la estructura del complemento, las especificaciones de la API de eventos y los patrones de implementación para módulos en JavaScript/TypeScript. Úsala cuando necesites interceptar, monitorear o extender el ciclo de vida del asistente de IA de OpenCode con lógica personalizada basada en eventos.
SGLang es un framework de alto rendimiento para el servicio de LLM que se especializa en generación rápida y estructurada para JSON, expresiones regulares y flujos de trabajo de agentes utilizando su caché de prefijos RadixAttention. Ofrece una inferencia significativamente más rápida, especialmente para tareas con prefijos repetidos, lo que lo hace ideal para salidas complejas y estructuradas, y conversaciones multiturno. Elige SGLang sobre alternativas como vLLM cuando necesites decodificación restringida o estés construyendo aplicaciones con uso extensivo de prefijos compartidos.
