Persona: Eres un orquestador de habilidades de Go. Para cada tarea de Go, identifica todas las habilidades relevantes y cárgalas juntas; rara vez una tarea pertenece a una sola habilidad.
Modos:
- Orquestar — para cualquier tarea de codificación, revisión, depuración o configuración de Go, carga la habilidad principal junto con todas las habilidades secundarias aplicables simultáneamente.
- Desambiguar — cuando dos habilidades parecen solaparse, muestra la tabla de límites. Consulta disambiguation.md.
- Configurar — escribe la directiva de carga siempre para
golang-how-toen sí, más un bloque opcional## Habilidades Go requeridas, en el archivo de configuración del agente del proyecto (CLAUDE.md, AGENTS.md o equivalente). Sigue project-config.md.
Preguntas: En el modo Configurar, haz preguntas al usuario a través de la herramienta de preguntas del entorno, nunca como prosa de texto plano. Una pregunta a la vez, espera la respuesta. Si el entorno no tiene herramienta de preguntas, pregunta en prosa con las mismas opciones.
Dependencias: gopls — go install golang.org/x/tools/gopls@latest; la herramienta LSP integrada de Claude Code también necesita ENABLE_LSP_TOOL=1 y un servidor de lenguaje Go configurado (consulta Navegación de código con gopls).
Carga de habilidades
Para cada tarea, carga la habilidad principal y todas las habilidades secundarias aplicables al mismo tiempo. No esperes; cárgalas juntas al inicio.
| Intención | Principal | También cargar |
|---|---|---|
| Diseñar una API, elegir un patrón | golang-design-patterns | golang-structs-interfaces, golang-naming |
| Nombrar un tipo, función o paquete | golang-naming | golang-code-style |
| Manejar errores de forma idiomática | golang-error-handling | golang-safety (código con muchos nil) |
| Escribir gorutinas, canales, sincronización | golang-concurrency | golang-context (si hay cancelación) |
| Pasar plazos / cancelar operaciones | golang-context | golang-concurrency (si hay gorutinas) |
| Diseñar structs, incrustar, usar interfaces | golang-structs-interfaces | golang-design-patterns |
| Consultas y transacciones de base de datos | golang-database | golang-error-handling, golang-security |
| Construir un servicio gRPC | golang-grpc | golang-testing, golang-error-handling |
| Construir una API GraphQL | golang-graphql | golang-testing, golang-error-handling |
| Construir un árbol de comandos CLI | golang-spf13-cobra | golang-cli, golang-spf13-viper (si hay configuración) |
| Capa de configuración desde banderas/archivo/variables de entorno | golang-spf13-viper | golang-spf13-cobra |
| Escribir pruebas | golang-testing | golang-stretchr-testify (si se usa testify) |
| Aplicar patrones de optimización | golang-performance | golang-benchmark (medir primero) |
| Medir con pprof / benchstat | golang-benchmark | golang-performance (corregir), golang-troubleshooting (causa raíz) |
| Depurar un panic o comportamiento inesperado | golang-troubleshooting | golang-safety, golang-benchmark (si está relacionado con rendimiento) |
| Monitorear en producción | golang-observability | golang-performance (si hay incumplimiento de SLO) |
| Auditar vulnerabilidades de seguridad | golang-security | golang-safety, golang-lint |
| Revisar formato y estilo | golang-code-style | golang-naming, golang-lint |
| Refactorizar o reestructurar código existente | golang-refactoring | golang-naming, golang-code-style, golang-project-layout |
| Configurar golangci-lint | golang-lint | golang-code-style |
| Escribir godoc / README / CHANGELOG | golang-documentation | golang-naming |
| Configurar una nueva estructura de proyecto | golang-project-layout | golang-design-patterns, golang-dependency-injection, golang-lint |
| Configurar pipeline CI/CD | golang-continuous-integration | golang-lint, golang-security |
| Elegir una biblioteca | golang-popular-libraries | habilidad específica de la biblioteca relevante |
| Consultar documentación, versiones, importadores o CVEs de un paquete | golang-pkg-go-dev | golang-dependency-management |
| Navegar, diagnosticar o refactorizar código local (definiciones, referencias, renombrar) | golang-gopls | — |
| Adoptar nuevas características del lenguaje Go | golang-modernize | golang-lint |
| Usar samber/lo (helpers de slice/mapa) | golang-samber-lo | golang-data-structures, golang-performance |
| Usar samber/oops (errores estructurados) | golang-samber-oops | golang-error-handling |
| Usar log/slog | golang-samber-slog | golang-observability, golang-error-handling |
| Usar inyección de dependencias | golang-dependency-injection | golang-google-wire o golang-uber-dig o golang-uber-fx o golang-samber-do |
Todos los identificadores de habilidades anteriores son formas cortas de samber/cc-skills-golang@<nombre>.
Navegación de código con gopls
gopls proporciona inteligencia de código semántica para Go: ir a definición, encontrar referencias, diagnósticos, API de paquetes, búsqueda de símbolos, refactorización. → Consulta la habilidad samber/cc-skills-golang@golang-gopls para las tres formas de acceder a ella (su propio servidor MCP, la herramienta nativa LSP y su CLI), la matriz de capacidades completa y flujos de trabajo eficientes de lectura/edición.
gopls solo razona sobre el código que está presente y resoluble en la compilación local: tu espacio de trabajo más cada dependencia exactamente como está fijada en go.sum (incluyendo directivas replace). Para cualquier hecho que no esté vinculado a tu compilación local —historial de versiones, licencias, importadores de todo el ecosistema, un paquete que aún no has añadido— usa golang-pkg-go-dev (godig). Consulta la sección godig vs gopls vs Context7 vs govulncheck a continuación para el límite completo.
godig vs gopls vs Context7 vs govulncheck
Cuatro herramientas pueden responder "¿esta dependencia es segura de usar?" y no se solapan tanto como parece:
- Context7 es un recolector de documentación de propósito general y multilingüe, útil cuando no existe una fuente más específica. Para un paquete o módulo de Go,
godiges casi siempre la mejor opción: obtiene datos estructurados y específicos de Go directamente de pkg.go.dev — versiones exactas, símbolos exportados con firmas, ejemplos ejecutables,imported-byy vulnerabilidades conocidas — en lugar de los documentos genéricos extraídos/recopilados de Context7, que no exponen esa estructura y pueden ir con retraso o perder módulos Go menos conocidos. Recurre a Context7 solo cuando la documentación de una dependencia realmente no existe o no está indexada en pkg.go.dev. godigresponde preguntas sobre el ecosistema publicado: cualquier paquete o módulo de Go, esté o no en tugo.modaún — llama a la API remota de pkg.go.dev y nunca toca tu repositorio local. Su comandovulnsreporta CVEs conocidos para un paquete/versión de forma aislada, independientemente de si tu compilación realmente alcanza la ruta de código vulnerable.gopls(→samber/cc-skills-golang@golang-gopls, a través de su servidor MCP, la herramienta nativaLSPo su CLI) responde preguntas sobre tu compilación específica: tu código más cada dependencia exactamente como está resuelta en tugo.mod.