Communitygithub.com

netresearch/go-development-skill

Patrones de desarrollo Go empresarial: servicios resilientes, pruebas | Compatible con Claude Code

¿Qué es go-development-skill?

Este skill establece un conjunto riguroso de patrones y convenciones para el desarrollo Go empresarial. Está diseñado para que agentes de IA como Claude Code produzcan código Go consistente, seguro en tipos y altamente comprobable, siguiendo las mejores prácticas de la industria. Cubre desde principios básicos como la seguridad de tipos (usando genéricos y evitando `interface{}`), consistencia en el diseño, y convenciones de nomenclatura, hasta un completo sistema de pruebas con tiers aislados mediante etiquetas de compilación. El skill también referencia una amplia biblioteca de documentos complementarios para temas avanzados como manejo de resiliencia, integración con LDAP, diseño de APIs con opciones funcionales, y pruebas de mutación. Su flujo de trabajo obligatorio incluye invocar skills de auditoría de seguridad, preparación empresarial y gestión de proyectos de GitHub, y establece compuertas de calidad que ejecutan herramientas como `golangci-lint`, `go vet`, `staticcheck`, `govulncheck` y detección de carreras antes de completar una revisión. Está diseñado para plataformas como Claude Code y busca estandarizar el desarrollo Go en entornos empresariales.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add netresearch/go-development-skill

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Patrones de Desarrollo Go

Flujo de Trabajo Obligatorio

Para revisiones, invocar skills relacionados: security-audit (OWASP), enterprise-readiness (OpenSSF/SLSA), github-project (protección de ramas). Todos son obligatorios.

Principios Fundamentales

Seguridad de Tipos

  • Evitar: interface{} (usar any), sync.Map, aserciones de tipo dispersas, reflexión
  • Preferir: Genéricos [T any], errors.AsType[T] (Go 1.26), tipos concretos
  • Ejecutar go fix ./... después de actualizaciones

Consistencia

  • Un patrón por dominio del problema
  • Coincidir con los patrones del código base existente
  • Refactorizar de manera integral o no hacerlo en absoluto
  • Prioridad de configuración: valores predeterminados < archivo de configuración < variables de entorno < banderas

Pruebas

  • Las etiquetas de compilación aíslan los niveles de pruebas: unitarias (predeterminado), integration, e2e
  • Usar siempre t.Parallel(), t.Helper(), subpruebas basadas en tablas
  • Usar log/slog directamente: nunca envolverlo en interfaces Logger personalizadas

Convenciones

  • Errores: minúsculas, sin puntuación (errors.New("entrada inválida"))
  • Nomenclatura: ID, URL, HTTP (no Id, Url, Http)
  • Envoltura de errores: fmt.Errorf("fallo al procesar: %w", err)

Referencias

Hooks de Git: ls lefthook.yml 2>/dev/null && lefthook install || echo "Agregar lefthook; ver references/lefthook-template.md"

Cargar según sea necesario:

ReferenciaPropósito
references/architecture.mdEstructura del paquete, gestión de configuración, cadenas de middleware
references/logging.mdRegistro estructurado con log/slog, migración desde logrus
references/cron-scheduling.mdPatrones de go-cron: trabajos nombrados, actualizaciones en tiempo de ejecución, contexto, resiliencia
references/resilience.mdLógica de reintentos, apagado graceful, propagación de contexto
references/docker.mdPatrones de cliente Docker, pooling de búferes
references/ldap.mdIntegración LDAP / Active Directory
references/testing.mdEstrategias de prueba, etiquetas de compilación, pruebas basadas en tablas
references/linting.mdgolangci-lint v2, staticcheck, calidad de código
references/api-design.mdOpciones de máscara de bits, opciones funcionales, builders
references/fuzz-testing.mdPatrones de fuzzing en Go, semillas de seguridad
references/contracts-and-invariants.mdContratos, invariantes, pruebas de propiedades
references/mutation-testing.mdConfiguración de Gremlins, medición de calidad de pruebas
references/makefile.mdInterfaz Makefile estándar para CI/CD
references/modernization.mdModernizadores Go 1.26, go fix, errors.AsType[T], wg.Go()
references/lefthook-template.mdlefthook.yml listo para usar para hooks de Git de proyectos Go
references/reusable-workflows.mdLlamadas reutilizables de flujos de trabajo de Actions, propagación de permisos, salidas de release-gate
references/single-build-release.mdLanzamiento de compilación única: compilar cruzadamente una vez, reutilizar para lanzamiento+contenedor
references/awesome-go-submission.mdEnvío a awesome-go: cuerpo del PR analizado por CI, formato de entrada, colisiones de nombres

Compuertas de Calidad

Ejecutar antes de completar cualquier revisión:

golangci-lint run --timeout 5m    # Linting
go vet ./...                       # Análisis estático
staticcheck ./...                  # Verificaciones adicionales
govulncheck ./...                  # Escaneo de vulnerabilidades
go test -race ./...                # Detección de carreras

Correcciones de Vulnerabilidades en la Biblioteca Estándar

Cuando govulncheck reporte vulnerabilidades en la biblioteca estándar: verificar la versión de corrección a través de vuln.go.dev, actualizar go X.Y.Z en go.mod, ejecutar go mod tidy. Usar ramas de PR para repositorios con protección de ramas.


Contribuciones: Enviar mejoras a https://github.com/netresearch/go-development-skill

Skills relacionados