@saulwade/swl-ses 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +238 -0
- package/README.md +560 -0
- package/_userland/agentes/.gitkeep +0 -0
- package/_userland/habilidades/.gitkeep +0 -0
- package/agentes/.evolved.json +9 -0
- package/agentes/accesibilidad-wcag-swl.md +692 -0
- package/agentes/arquitecto-swl.md +238 -0
- package/agentes/auto-evolucion-swl.md +854 -0
- package/agentes/backend-api-swl.md +470 -0
- package/agentes/backend-csharp-swl.md +418 -0
- package/agentes/backend-go-swl.md +388 -0
- package/agentes/backend-java-swl.md +279 -0
- package/agentes/backend-node-swl.md +477 -0
- package/agentes/backend-python-swl.md +608 -0
- package/agentes/backend-rust-swl.md +362 -0
- package/agentes/backend-workers-swl.md +480 -0
- package/agentes/cloud-infra-swl.md +485 -0
- package/agentes/consolidador-swl.md +539 -0
- package/agentes/datos-swl.md +584 -0
- package/agentes/depurador-swl.md +349 -0
- package/agentes/devops-ci-swl.md +374 -0
- package/agentes/disenador-ui-swl.md +558 -0
- package/agentes/documentador-swl.md +343 -0
- package/agentes/evals/arquitecto-swl.evals.json +56 -0
- package/agentes/evals/auto-evolucion-swl.evals.json +68 -0
- package/agentes/evals/implementador-swl.evals.json +56 -0
- package/agentes/evals/orquestador-swl.evals.json +60 -0
- package/agentes/evals/perfilador-usuario-swl.evals.json +60 -0
- package/agentes/evals/red-team-swl.evals.json +59 -0
- package/agentes/evals/revisor-codigo-swl.evals.json +59 -0
- package/agentes/frontend-angular-swl.md +627 -0
- package/agentes/frontend-css-swl.md +720 -0
- package/agentes/frontend-react-swl.md +696 -0
- package/agentes/frontend-swl.md +500 -0
- package/agentes/frontend-tailwind-swl.md +830 -0
- package/agentes/implementador-swl.md +328 -0
- package/agentes/investigador-swl.md +430 -0
- package/agentes/investigador-ux-swl.md +500 -0
- package/agentes/llm-apps-swl.md +276 -0
- package/agentes/migrador-swl.md +417 -0
- package/agentes/mobile-android-swl.md +509 -0
- package/agentes/mobile-cross-swl.md +539 -0
- package/agentes/mobile-ios-swl.md +500 -0
- package/agentes/mobile-testing-swl.md +300 -0
- package/agentes/notificador-swl.md +916 -0
- package/agentes/observabilidad-swl.md +436 -0
- package/agentes/orquestador-swl.md +884 -0
- package/agentes/pagos-swl.md +283 -0
- package/agentes/perfilador-usuario-swl.md +306 -0
- package/agentes/planificador-swl.md +402 -0
- package/agentes/producto-prd-swl.md +587 -0
- package/agentes/red-team-swl.md +216 -0
- package/agentes/release-manager-swl.md +568 -0
- package/agentes/rendimiento-swl.md +714 -0
- package/agentes/resolutor-build-swl.md +243 -0
- package/agentes/revisor-angular-swl.md +276 -0
- package/agentes/revisor-codigo-swl.md +348 -0
- package/agentes/revisor-csharp-swl.md +262 -0
- package/agentes/revisor-go-swl.md +257 -0
- package/agentes/revisor-java-swl.md +255 -0
- package/agentes/revisor-kotlin-swl.md +271 -0
- package/agentes/revisor-nextjs-swl.md +279 -0
- package/agentes/revisor-php-swl.md +269 -0
- package/agentes/revisor-react-swl.md +276 -0
- package/agentes/revisor-rust-swl.md +344 -0
- package/agentes/revisor-seguridad-swl.md +390 -0
- package/agentes/revisor-swift-swl.md +266 -0
- package/agentes/revisor-typescript-swl.md +344 -0
- package/agentes/sre-swl.md +265 -0
- package/agentes/tdd-qa-swl.md +354 -0
- package/agentes/ux-disenador-swl.md +501 -0
- package/bin/lib/bot-comandos.js +1030 -0
- package/bin/lib/bot-discovery.js +182 -0
- package/bin/lib/bot-git.js +142 -0
- package/bin/swl-ses.js +325 -0
- package/bin/swl-telegram-bot.js +442 -0
- package/bin/swl-telegram-bot.plist +21 -0
- package/bin/swl-telegram-bot.service +14 -0
- package/comandos/swl/.evolved.json +23 -0
- package/comandos/swl/actualizar.md +174 -0
- package/comandos/swl/adoptar-proyecto.md +207 -0
- package/comandos/swl/aprender.md +701 -0
- package/comandos/swl/auditar-deps.md +134 -0
- package/comandos/swl/autoresearch.md +170 -0
- package/comandos/swl/ayuda.md +224 -0
- package/comandos/swl/brainstorm.md +50 -0
- package/comandos/swl/checkpoint.md +330 -0
- package/comandos/swl/compactar.md +283 -0
- package/comandos/swl/configurar-ci.md +227 -0
- package/comandos/swl/contexto.md +112 -0
- package/comandos/swl/contribuir.md +233 -0
- package/comandos/swl/crear-skill.md +292 -0
- package/comandos/swl/cron.md +196 -0
- package/comandos/swl/dashboard.md +146 -0
- package/comandos/swl/discutir-fase.md +230 -0
- package/comandos/swl/ejecutar-fase.md +135 -0
- package/comandos/swl/evaluar-skill.md +487 -0
- package/comandos/swl/evolucion-estado.md +142 -0
- package/comandos/swl/evolucionar.md +259 -0
- package/comandos/swl/exportar-vault.md +189 -0
- package/comandos/swl/gateway.md +158 -0
- package/comandos/swl/inbox.md +116 -0
- package/comandos/swl/instalar.md +220 -0
- package/comandos/swl/instintos.md +86 -0
- package/comandos/swl/mapear-codebase.md +312 -0
- package/comandos/swl/mcp-status.md +175 -0
- package/comandos/swl/metricas.md +270 -0
- package/comandos/swl/modelo.md +102 -0
- package/comandos/swl/notificaciones.md +396 -0
- package/comandos/swl/nuevo-proyecto.md +154 -0
- package/comandos/swl/planear-fase.md +221 -0
- package/comandos/swl/plugins.md +256 -0
- package/comandos/swl/reflect-skills.md +125 -0
- package/comandos/swl/release.md +217 -0
- package/comandos/swl/revisar-impacto.md +206 -0
- package/comandos/swl/revisar.md +330 -0
- package/comandos/swl/salud.md +363 -0
- package/comandos/swl/sesiones.md +200 -0
- package/comandos/swl/skill-search.md +113 -0
- package/comandos/swl/verificar.md +585 -0
- package/comandos/swl/wiki.md +620 -0
- package/contextos/dev.md +32 -0
- package/contextos/research.md +30 -0
- package/contextos/review.md +31 -0
- package/habilidades/accesibilidad-a11y/SKILL.md +201 -0
- package/habilidades/accesibilidad-a11y/evals/evals.json +56 -0
- package/habilidades/accesibilidad-a11y/recursos/ejemplos-y-checklist-completo.md +441 -0
- package/habilidades/agent-browser/SKILL.md +218 -0
- package/habilidades/agentes-como-servicio/SKILL.md +218 -0
- package/habilidades/ai-runtime-security/SKILL.md +273 -0
- package/habilidades/angular-avanzado/SKILL.md +164 -0
- package/habilidades/angular-avanzado/recursos/ejemplos-avanzados.md +219 -0
- package/habilidades/angular-moderno/SKILL.md +186 -0
- package/habilidades/angular-moderno/evals/evals.json +45 -0
- package/habilidades/angular-moderno/recursos/ejemplos-avanzados.md +106 -0
- package/habilidades/api-rest-diseno/SKILL.md +191 -0
- package/habilidades/api-rest-diseno/recursos/openapi-template.yaml +506 -0
- package/habilidades/api-rest-diseno/recursos/referencia-api.md +140 -0
- package/habilidades/aprendizaje-continuo/SKILL.md +151 -0
- package/habilidades/aprendizaje-continuo/evals/evals.json +53 -0
- package/habilidades/aprendizaje-continuo/recursos/referencia-instintos.md +290 -0
- package/habilidades/async-python/SKILL.md +149 -0
- package/habilidades/async-python/evals/evals.json +47 -0
- package/habilidades/async-python/recursos/patrones-y-ejemplos-completos.md +292 -0
- package/habilidades/auth-patrones/.evolved.json +9 -0
- package/habilidades/auth-patrones/SKILL.md +413 -0
- package/habilidades/auth-patrones/recursos/implementaciones-completas.md +229 -0
- package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -0
- package/habilidades/auto-evolucion-protocolo/evals/evals.json +55 -0
- package/habilidades/auto-evolucion-protocolo/recursos/referencia-completa.md +145 -0
- package/habilidades/autoresearch/SKILL.md +268 -0
- package/habilidades/autoresearch/evals/evals.json +41 -0
- package/habilidades/autoresearch/recursos/checklist-template.md +191 -0
- package/habilidades/autoresearch/scripts/calcular-score.js +88 -0
- package/habilidades/azure-cloud/SKILL.md +308 -0
- package/habilidades/azure-cloud/recursos/aks.md +327 -0
- package/habilidades/backend-mcp-servidor/SKILL.md +270 -0
- package/habilidades/backend-production-resilience/SKILL.md +288 -0
- package/habilidades/brainstorming/SKILL.md +295 -0
- package/habilidades/brainstorming/recursos/componentes-html.md +247 -0
- package/habilidades/build-errors-cpp/SKILL.md +270 -0
- package/habilidades/build-errors-csharp/SKILL.md +265 -0
- package/habilidades/build-errors-go/SKILL.md +306 -0
- package/habilidades/build-errors-java/SKILL.md +278 -0
- package/habilidades/build-errors-kotlin/SKILL.md +303 -0
- package/habilidades/build-errors-nextjs/SKILL.md +312 -0
- package/habilidades/build-errors-php/SKILL.md +270 -0
- package/habilidades/build-errors-python/SKILL.md +292 -0
- package/habilidades/build-errors-rust/SKILL.md +284 -0
- package/habilidades/build-errors-swift/SKILL.md +272 -0
- package/habilidades/build-errors-typescript/SKILL.md +369 -0
- package/habilidades/checklist-calidad/SKILL.md +271 -0
- package/habilidades/checklist-calidad/recursos/quality-report-template.md +148 -0
- package/habilidades/checklist-seguridad/SKILL.md +285 -0
- package/habilidades/checkpoints-verificacion/SKILL.md +298 -0
- package/habilidades/checkpoints-verificacion/recursos/checkpoint-templates.md +360 -0
- package/habilidades/ci-cd-pipelines/SKILL.md +157 -0
- package/habilidades/ci-cd-pipelines/recursos/github-actions-template.yaml +403 -0
- package/habilidades/ci-cd-pipelines/recursos/pipelines-completos.md +487 -0
- package/habilidades/cloud-aws/SKILL.md +142 -0
- package/habilidades/cloud-aws/recursos/servicios-aws-referencia.md +321 -0
- package/habilidades/compactacion-contexto/SKILL.md +247 -0
- package/habilidades/contenedores-docker/SKILL.md +137 -0
- package/habilidades/contenedores-docker/recursos/dockerfile-template.dockerfile +160 -0
- package/habilidades/contenedores-docker/recursos/ejemplos-y-configuraciones.md +327 -0
- package/habilidades/context-builder/SKILL.md +170 -0
- package/habilidades/control-profundidad/SKILL.md +128 -0
- package/habilidades/csharp-experto/SKILL.md +322 -0
- package/habilidades/csharp-patrones/SKILL.md +316 -0
- package/habilidades/csharp-testing/SKILL.md +286 -0
- package/habilidades/css-moderno/SKILL.md +166 -0
- package/habilidades/css-moderno/evals/evals.json +43 -0
- package/habilidades/css-moderno/recursos/ejemplos-y-patrones-completos.md +337 -0
- package/habilidades/datos-etl/SKILL.md +129 -0
- package/habilidades/datos-etl/recursos/implementaciones-completas.md +322 -0
- package/habilidades/dbml-experto/SKILL.md +339 -0
- package/habilidades/dbml-experto/evals/evals.json +56 -0
- package/habilidades/dependencias-auditoria/SKILL.md +320 -0
- package/habilidades/deprecacion-migracion/SKILL.md +169 -0
- package/habilidades/deprecacion-migracion/recursos/implementaciones-completas.md +220 -0
- package/habilidades/design-tokens/SKILL.md +158 -0
- package/habilidades/design-tokens/recursos/tokens-y-configuracion.md +363 -0
- package/habilidades/devsecops-pipeline-security/SKILL.md +309 -0
- package/habilidades/diagrama-arquitectura/SKILL.md +165 -0
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -0
- package/habilidades/discutir-fase/SKILL.md +188 -0
- package/habilidades/diseno-herramientas-agente/SKILL.md +199 -0
- package/habilidades/diseno-responsivo/SKILL.md +186 -0
- package/habilidades/diseno-responsivo/recursos/ejemplos-layouts.md +156 -0
- package/habilidades/django-experto/SKILL.md +205 -0
- package/habilidades/django-experto/recursos/async-django.md +390 -0
- package/habilidades/django-experto/recursos/drf-patrones.md +438 -0
- package/habilidades/django-experto/recursos/orm-avanzado.md +382 -0
- package/habilidades/django-experto/recursos/referencia-completa.md +188 -0
- package/habilidades/django-experto/recursos/testing-django.md +415 -0
- package/habilidades/doc-sync/SKILL.md +280 -0
- package/habilidades/drift-detection/SKILL.md +179 -0
- package/habilidades/ejecutar-fase/SKILL.md +468 -0
- package/habilidades/estilo-sin-ai-isms/SKILL.md +775 -0
- package/habilidades/estilo-sin-ai-isms/evals/evals.json +63 -0
- package/habilidades/estilo-sin-ai-isms/scripts/detectar_aiisms.py +500 -0
- package/habilidades/estructura-proyecto-claude/SKILL.md +215 -0
- package/habilidades/estructura-proyecto-claude/recursos/claude-md-template.md +261 -0
- package/habilidades/estructura-proyecto-claude/recursos/configuracion-y-extensiones.md +176 -0
- package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +289 -0
- package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +77 -0
- package/habilidades/estructura-proyecto-claude/recursos/variantes-por-stack.md +177 -0
- package/habilidades/evaluacion-agentes/SKILL.md +314 -0
- package/habilidades/event-driven/SKILL.md +153 -0
- package/habilidades/event-driven/recursos/implementaciones-completas.md +423 -0
- package/habilidades/extraccion-documentos/SKILL.md +221 -0
- package/habilidades/extractor-de-aprendizajes/.evolved.json +9 -0
- package/habilidades/extractor-de-aprendizajes/SKILL.md +311 -0
- package/habilidades/extractor-de-aprendizajes/evals/evals.json +55 -0
- package/habilidades/fastapi-experto/SKILL.md +221 -0
- package/habilidades/fastapi-experto/recursos/async-patterns.md +438 -0
- package/habilidades/fastapi-experto/recursos/dependency-injection.md +330 -0
- package/habilidades/fastapi-experto/recursos/referencia-completa.md +79 -0
- package/habilidades/fastapi-experto/recursos/testing-httpx.md +420 -0
- package/habilidades/filament-admin/SKILL.md +290 -0
- package/habilidades/frontend-avanzado/SKILL.md +257 -0
- package/habilidades/frontend-avanzado/recursos/apis-nativas-ejemplos.md +341 -0
- package/habilidades/gcp-cloud/SKILL.md +260 -0
- package/habilidades/gcp-cloud/recursos/gke.md +234 -0
- package/habilidades/gcp-cloud/recursos/terraform-gcp.md +307 -0
- package/habilidades/generacion-mermaid/SKILL.md +229 -0
- package/habilidades/git-worktrees-paralelo/SKILL.md +270 -0
- package/habilidades/go-experto/SKILL.md +305 -0
- package/habilidades/go-patrones/SKILL.md +299 -0
- package/habilidades/go-testing/SKILL.md +291 -0
- package/habilidades/graphql-experto/SKILL.md +323 -0
- package/habilidades/guardrail-semantico/SKILL.md +282 -0
- package/habilidades/harness-claude-code/SKILL.md +299 -0
- package/habilidades/iam-secretos/SKILL.md +265 -0
- package/habilidades/iam-secretos/recursos/implementaciones-completas.md +356 -0
- package/habilidades/infra-github-actions/SKILL.md +166 -0
- package/habilidades/instalar-sistema/.evolved.json +9 -0
- package/habilidades/instalar-sistema/SKILL.md +221 -0
- package/habilidades/java-experto/SKILL.md +290 -0
- package/habilidades/java-patrones/SKILL.md +275 -0
- package/habilidades/java-testing/SKILL.md +288 -0
- package/habilidades/kotlin-compose/SKILL.md +278 -0
- package/habilidades/kotlin-compose/recursos/animaciones-performance.md +93 -0
- package/habilidades/kotlin-experto/SKILL.md +318 -0
- package/habilidades/kotlin-testing/SKILL.md +267 -0
- package/habilidades/kotlin-testing/recursos/testing-avanzado.md +74 -0
- package/habilidades/kubernetes-orquestacion/SKILL.md +152 -0
- package/habilidades/kubernetes-orquestacion/recursos/manifiestos-completos.md +452 -0
- package/habilidades/langchain-langraph/SKILL.md +386 -0
- package/habilidades/langchain-langraph/recursos/evaluacion-rag.md +321 -0
- package/habilidades/langchain-langraph/recursos/rag-maturity-model.md +225 -0
- package/habilidades/langchain-langraph/recursos/vectorstores.md +306 -0
- package/habilidades/legacy-code-rescue/SKILL.md +267 -0
- package/habilidades/likec4-experto/SKILL.md +412 -0
- package/habilidades/likec4-experto/evals/evals.json +69 -0
- package/habilidades/manejo-errores/.evolved.json +9 -0
- package/habilidades/manejo-errores/SKILL.md +407 -0
- package/habilidades/manejo-errores/recursos/implementaciones-completas.md +248 -0
- package/habilidades/mapear-codebase/SKILL.md +275 -0
- package/habilidades/memoria-busqueda/SKILL.md +194 -0
- package/habilidades/memoria-busqueda/evals/evals.json +44 -0
- package/habilidades/meta-skills-estandar/SKILL.md +298 -0
- package/habilidades/meta-skills-estandar/recursos/anti-patrones-y-leyes.md +205 -0
- package/habilidades/meta-skills-estandar/recursos/frameworks-seguridad.md +107 -0
- package/habilidades/meta-skills-estandar/recursos/idiomas-framework.md +60 -0
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -0
- package/habilidades/microservicios/SKILL.md +155 -0
- package/habilidades/microservicios/recursos/patrones-y-ejemplos-completos.md +325 -0
- package/habilidades/mobile-flutter/SKILL.md +199 -0
- package/habilidades/mobile-flutter/recursos/ejemplos-completos.md +319 -0
- package/habilidades/mobile-react-native/SKILL.md +176 -0
- package/habilidades/mobile-react-native/recursos/ejemplos-completos.md +216 -0
- package/habilidades/mongodb-experto/SKILL.md +302 -0
- package/habilidades/monitoring-alertas/SKILL.md +201 -0
- package/habilidades/monitoring-alertas/recursos/instrumentacion-y-alertas.md +301 -0
- package/habilidades/nestjs-experto/SKILL.md +307 -0
- package/habilidades/nestjs-experto/recursos/guards-interceptors.md +339 -0
- package/habilidades/nestjs-experto/recursos/modulos-di.md +287 -0
- package/habilidades/nestjs-experto/recursos/testing-nestjs.md +354 -0
- package/habilidades/nextjs-experto/SKILL.md +335 -0
- package/habilidades/nextjs-patrones/SKILL.md +303 -0
- package/habilidades/nextjs-testing/SKILL.md +331 -0
- package/habilidades/node-experto/.evolved.json +9 -0
- package/habilidades/node-experto/SKILL.md +266 -0
- package/habilidades/node-experto/recursos/patrones-completos.md +283 -0
- package/habilidades/notificaciones-multicanal/SKILL.md +159 -0
- package/habilidades/notificaciones-multicanal/recursos/config-template.json +115 -0
- package/habilidades/notificaciones-multicanal/recursos/configuracion-y-templates.md +303 -0
- package/habilidades/nuevo-proyecto/SKILL.md +204 -0
- package/habilidades/orquestacion-async/SKILL.md +303 -0
- package/habilidades/paid-media-tracking/SKILL.md +269 -0
- package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +220 -0
- package/habilidades/paid-media-tracking/recursos/google-ads-api.md +215 -0
- package/habilidades/patrones-python/SKILL.md +228 -0
- package/habilidades/patrones-python/evals/evals.json +56 -0
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -0
- package/habilidades/patrones-python/recursos/referencia-completa.md +202 -0
- package/habilidades/perfil-usuario/SKILL.md +200 -0
- package/habilidades/perfil-usuario/evals/evals.json +55 -0
- package/habilidades/performance-baseline/SKILL.md +297 -0
- package/habilidades/php-experto/SKILL.md +291 -0
- package/habilidades/php-patrones/SKILL.md +306 -0
- package/habilidades/php-testing/SKILL.md +280 -0
- package/habilidades/planear-fase/SKILL.md +269 -0
- package/habilidades/postgresql-experto/SKILL.md +151 -0
- package/habilidades/postgresql-experto/evals/evals.json +53 -0
- package/habilidades/postgresql-experto/recursos/referencia-completa.md +215 -0
- package/habilidades/prevencion-racionalizacion/SKILL.md +175 -0
- package/habilidades/prevencion-sobreingenieria/SKILL.md +323 -0
- package/habilidades/privacy-memoria/SKILL.md +141 -0
- package/habilidades/privacy-memoria/evals/evals.json +43 -0
- package/habilidades/prompt-engineering/SKILL.md +518 -0
- package/habilidades/prompt-engineering/recursos/patrones-avanzados.md +467 -0
- package/habilidades/rag-arquitectura/SKILL.md +338 -0
- package/habilidades/rails-experto/SKILL.md +237 -0
- package/habilidades/rails-experto/recursos/active-record.md +260 -0
- package/habilidades/rails-experto/recursos/hotwire-turbo.md +293 -0
- package/habilidades/rails-experto/recursos/testing-rspec.md +362 -0
- package/habilidades/react-experto/SKILL.md +209 -0
- package/habilidades/react-experto/evals/evals.json +55 -0
- package/habilidades/react-experto/recursos/patrones-y-ejemplos-completos.md +240 -0
- package/habilidades/react-optimizacion/SKILL.md +174 -0
- package/habilidades/react-optimizacion/recursos/patrones-avanzados.md +138 -0
- package/habilidades/redis-experto/SKILL.md +305 -0
- package/habilidades/release-semver/.evolved.json +9 -0
- package/habilidades/release-semver/SKILL.md +248 -0
- package/habilidades/release-semver/scripts/generar-changelog.sh +238 -0
- package/habilidades/rust-experto/SKILL.md +400 -0
- package/habilidades/rust-patrones/SKILL.md +296 -0
- package/habilidades/rust-testing/SKILL.md +311 -0
- package/habilidades/seguridad-skills-ia/SKILL.md +262 -0
- package/habilidades/sql-optimizacion/SKILL.md +200 -0
- package/habilidades/sql-optimizacion/evals/evals.json +54 -0
- package/habilidades/sql-optimizacion/recursos/patrones-sql-avanzados.md +131 -0
- package/habilidades/sre-patrones/SKILL.md +333 -0
- package/habilidades/sre-patrones/recursos/chaos-engineering.md +241 -0
- package/habilidades/sre-patrones/recursos/oncall-design.md +236 -0
- package/habilidades/stripe-pagos/SKILL.md +550 -0
- package/habilidades/stripe-pagos/recursos/errores-reintentos.md +390 -0
- package/habilidades/stripe-pagos/recursos/stripe-connect.md +290 -0
- package/habilidades/structured-outputs/SKILL.md +343 -0
- package/habilidades/swift-experto/SKILL.md +320 -0
- package/habilidades/swift-experto/recursos/keychain-y-wrappers.md +110 -0
- package/habilidades/swift-patrones/SKILL.md +313 -0
- package/habilidades/swift-patrones/recursos/tca-ejemplo-completo.md +113 -0
- package/habilidades/swift-testing/SKILL.md +254 -0
- package/habilidades/swift-testing/recursos/xcuitest-planes.md +143 -0
- package/habilidades/swl-dashboard/SKILL.md +370 -0
- package/habilidades/swl-markitdown/SKILL.md +285 -0
- package/habilidades/swl-markitdown/evals/evals.json +52 -0
- package/habilidades/swl-revisar-impacto/SKILL.md +233 -0
- package/habilidades/tailwind-experto/SKILL.md +240 -0
- package/habilidades/tailwind-experto/recursos/referencia-completa.md +184 -0
- package/habilidades/tdd-workflow/SKILL.md +293 -0
- package/habilidades/terraform-experto/SKILL.md +321 -0
- package/habilidades/testing-python/SKILL.md +340 -0
- package/habilidades/testing-python/recursos/ejemplos-completos.md +167 -0
- package/habilidades/threat-model-lite/SKILL.md +246 -0
- package/habilidades/tracing-processor/SKILL.md +212 -0
- package/habilidades/tracking-measurement/SKILL.md +239 -0
- package/habilidades/tracking-measurement/recursos/consent-mode.md +231 -0
- package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +216 -0
- package/habilidades/tracking-measurement/recursos/meta-capi.md +262 -0
- package/habilidades/typescript-avanzado/SKILL.md +144 -0
- package/habilidades/typescript-avanzado/evals/evals.json +55 -0
- package/habilidades/typescript-avanzado/recursos/patrones-y-ejemplos-completos.md +298 -0
- package/habilidades/typescript-diagnosticos/SKILL.md +513 -0
- package/habilidades/ux-diseno/SKILL.md +116 -0
- package/habilidades/ux-diseno/evals/evals.json +43 -0
- package/habilidades/ux-diseno/recursos/patrones-ux-referencia.md +214 -0
- package/habilidades/validacion-ci-sistema/SKILL.md +136 -0
- package/habilidades/validacion-ci-sistema/recursos/validadores-completos.md +369 -0
- package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +286 -0
- package/habilidades/verificacion-evidencia/SKILL.md +160 -0
- package/habilidades/verificar-trabajo/SKILL.md +303 -0
- package/habilidades/verificar-trabajo/recursos/plantilla-verificacion.md +60 -0
- package/habilidades/wiki-conocimiento/SKILL.md +276 -0
- package/habilidades/wireframes-flujos/SKILL.md +212 -0
- package/habilidades/wireframes-flujos/recursos/referencia-completa.md +192 -0
- package/habilidades/workflow-claude-code/SKILL.md +260 -0
- package/habilidades/workflow-claude-code/recursos/referencia-completa.md +109 -0
- package/hooks/_run-hook.sh +57 -0
- package/hooks/actualizar-perfil-usuario.js +364 -0
- package/hooks/agente-lifecycle.js +71 -0
- package/hooks/aiisms-detector.js +173 -0
- package/hooks/audit-trail.js +204 -0
- package/hooks/auto-background.js +97 -0
- package/hooks/auto-consolidacion.js +178 -0
- package/hooks/auto-evolucion.js +666 -0
- package/hooks/auto-restaurar-settings.js +360 -0
- package/hooks/calidad-pre-commit.js +929 -0
- package/hooks/calidad-typescript.js +511 -0
- package/hooks/captura-feedback-usuario.js +148 -0
- package/hooks/check-update.js +211 -0
- package/hooks/clasificador-mensajes.js +271 -0
- package/hooks/degradacion-instintos.js +272 -0
- package/hooks/escaneo-secretos.js +389 -0
- package/hooks/extraccion-aprendizajes.js +763 -0
- package/hooks/grafo-contexto.js +129 -0
- package/hooks/graph-update.js +67 -0
- package/hooks/guardrail-modelo.js +247 -0
- package/hooks/inbox-aviso.js +75 -0
- package/hooks/inyeccion-contexto.js +246 -0
- package/hooks/lib/abort-registry.js +214 -0
- package/hooks/lib/agent-backend.js +210 -0
- package/hooks/lib/agent-comms.js +263 -0
- package/hooks/lib/agent-issue-codes.js +284 -0
- package/hooks/lib/agent-matcher.js +189 -0
- package/hooks/lib/async-hook-registry.js +252 -0
- package/hooks/lib/atomic-write.js +130 -0
- package/hooks/lib/auto-consolidator.js +335 -0
- package/hooks/lib/canary-skills.js +187 -0
- package/hooks/lib/consolidation-lock.js +291 -0
- package/hooks/lib/context-builder.js +430 -0
- package/hooks/lib/context-compressor.js +657 -0
- package/hooks/lib/convergence-detector.js +105 -0
- package/hooks/lib/delegation-tracker.js +198 -0
- package/hooks/lib/detectar-package-manager.js +423 -0
- package/hooks/lib/edit-accumulator.js +171 -0
- package/hooks/lib/error-classifier.js +308 -0
- package/hooks/lib/event-bus.js +112 -0
- package/hooks/lib/evolution-tracker.js +442 -0
- package/hooks/lib/execution-state.js +316 -0
- package/hooks/lib/fingerprint-id.js +135 -0
- package/hooks/lib/gateway-notify.js +116 -0
- package/hooks/lib/graph-security.js +75 -0
- package/hooks/lib/guardrail-metrics.js +202 -0
- package/hooks/lib/hook-circuit-breaker.js +206 -0
- package/hooks/lib/loop-detector.js +267 -0
- package/hooks/lib/mcp-health.js +184 -0
- package/hooks/lib/mcp-pool.js +436 -0
- package/hooks/lib/memory-search.js +506 -0
- package/hooks/lib/merkle-audit.js +96 -0
- package/hooks/lib/model-router.js +222 -0
- package/hooks/lib/normalize-error.js +324 -0
- package/hooks/lib/normalize-input.js +65 -0
- package/hooks/lib/nudge-tracker.js +306 -0
- package/hooks/lib/otlp-exporter.js +365 -0
- package/hooks/lib/performance-marks.js +239 -0
- package/hooks/lib/privacy-filter.js +128 -0
- package/hooks/lib/prompt-injection-scanner.js +209 -0
- package/hooks/lib/provenance-tracker.js +183 -0
- package/hooks/lib/rate-limit-tracker.js +253 -0
- package/hooks/lib/reflect-classifier.js +164 -0
- package/hooks/lib/resource-quota.js +122 -0
- package/hooks/lib/retry-jitter.js +165 -0
- package/hooks/lib/risk-engine.js +368 -0
- package/hooks/lib/run-log.js +408 -0
- package/hooks/lib/session-fts.js +379 -0
- package/hooks/lib/session-store.js +293 -0
- package/hooks/lib/singleton-guard.js +159 -0
- package/hooks/lib/skill-auditor.js +588 -0
- package/hooks/lib/sync-status.js +228 -0
- package/hooks/lib/taint-tracker.js +107 -0
- package/hooks/lib/task-service.js +295 -0
- package/hooks/lib/tech-skills-map.js +146 -0
- package/hooks/lib/telegram-cliente.js +159 -0
- package/hooks/lib/telegram-config.js +170 -0
- package/hooks/lib/token-budget.js +156 -0
- package/hooks/lib/token-estimator.js +420 -0
- package/hooks/lib/toon-compressor.js +245 -0
- package/hooks/lib/usage-model.js +183 -0
- package/hooks/lib/variable-resolver.js +230 -0
- package/hooks/linea-estado.js +324 -0
- package/hooks/metricas-evolucion.js +209 -0
- package/hooks/monitor-contexto.js +325 -0
- package/hooks/notificacion-sesion-stop.js +198 -0
- package/hooks/notificacion-telegram-notification.js +4 -0
- package/hooks/notificacion-telegram-subagent.js +4 -0
- package/hooks/notificacion-telegram.js +267 -0
- package/hooks/preservar-estado-pre-compact.js +150 -0
- package/hooks/proteccion-rutas.js +366 -0
- package/hooks/registro-turnos.js +209 -0
- package/hooks/resumen-sesion.js +249 -0
- package/hooks/risk-scoring.js +323 -0
- package/hooks/rotar-audit-auto.js +122 -0
- package/hooks/sugerir-regenerar-inventario.js +170 -0
- package/hooks/telemetria-agentes.js +167 -0
- package/hooks/tracking-costos.js +688 -0
- package/instintos/global.yaml +8 -0
- package/instintos/perfil-usuario.yaml +53 -0
- package/instintos/prompt-appendices.yaml +57 -0
- package/instintos/proyecto.yaml +372 -0
- package/manifiestos/gateway-config.json +77 -0
- package/manifiestos/handoff-context.json +223 -0
- package/manifiestos/hook-profiles.json +44 -0
- package/manifiestos/hooks-config.json +360 -0
- package/manifiestos/modulos.json +1173 -0
- package/manifiestos/perfiles.json +404 -0
- package/package.json +86 -0
- package/plantillas/ESTADO.md +109 -0
- package/plantillas/HOJA-RUTA.md +143 -0
- package/plantillas/PROYECTO.md +122 -0
- package/plantillas/REQUISITOS.md +132 -0
- package/plantillas/auditor-veto-template.md +105 -0
- package/plantillas/github-workflows/README.md +47 -0
- package/plantillas/github-workflows/release-please.yml +44 -0
- package/plantillas/github-workflows/swl-ci.yml +107 -0
- package/plantillas/github-workflows/swl-security.yml +51 -0
- package/plantillas/mcp-mineru.json +13 -0
- package/plantillas/research/ARQUITECTURA.md +220 -0
- package/plantillas/research/FUNCIONALIDADES.md +175 -0
- package/plantillas/research/RESUMEN.md +165 -0
- package/plantillas/research/STACK.md +233 -0
- package/plantillas/research/TRAMPAS.md +299 -0
- package/plantillas/skill-evals-template.json +44 -0
- package/plugin.json +343 -0
- package/reglas/accesibilidad.md +269 -0
- package/reglas/api-diseno.md +400 -0
- package/reglas/arquitectura.md +352 -0
- package/reglas/brevedad-output.md +124 -0
- package/reglas/cloud-infra.md +247 -0
- package/reglas/docs.md +245 -0
- package/reglas/estilo-codigo.md +201 -0
- package/reglas/git-workflow.md +245 -0
- package/reglas/gobernanza.md +271 -0
- package/reglas/harness-claude-code.md +213 -0
- package/reglas/hooks.md +186 -0
- package/reglas/lenguajes/csharp/estilo-codigo.md +231 -0
- package/reglas/lenguajes/csharp/hooks.md +281 -0
- package/reglas/lenguajes/csharp/patrones.md +226 -0
- package/reglas/lenguajes/csharp/seguridad.md +258 -0
- package/reglas/lenguajes/csharp/testing.md +176 -0
- package/reglas/lenguajes/go/estilo-codigo.md +195 -0
- package/reglas/lenguajes/go/hooks.md +249 -0
- package/reglas/lenguajes/go/patrones.md +249 -0
- package/reglas/lenguajes/go/seguridad.md +225 -0
- package/reglas/lenguajes/go/testing.md +272 -0
- package/reglas/lenguajes/java/estilo-codigo.md +217 -0
- package/reglas/lenguajes/java/hooks.md +251 -0
- package/reglas/lenguajes/java/patrones.md +226 -0
- package/reglas/lenguajes/java/seguridad.md +233 -0
- package/reglas/lenguajes/java/testing.md +238 -0
- package/reglas/lenguajes/kotlin/estilo-codigo.md +208 -0
- package/reglas/lenguajes/kotlin/hooks.md +245 -0
- package/reglas/lenguajes/kotlin/patrones.md +201 -0
- package/reglas/lenguajes/kotlin/seguridad.md +202 -0
- package/reglas/lenguajes/kotlin/testing.md +236 -0
- package/reglas/lenguajes/nextjs/estilo-codigo.md +175 -0
- package/reglas/lenguajes/nextjs/hooks.md +186 -0
- package/reglas/lenguajes/nextjs/patrones.md +225 -0
- package/reglas/lenguajes/nextjs/seguridad.md +216 -0
- package/reglas/lenguajes/nextjs/testing.md +193 -0
- package/reglas/lenguajes/php/estilo-codigo.md +228 -0
- package/reglas/lenguajes/php/hooks.md +165 -0
- package/reglas/lenguajes/php/patrones.md +233 -0
- package/reglas/lenguajes/php/seguridad.md +186 -0
- package/reglas/lenguajes/php/testing.md +205 -0
- package/reglas/lenguajes/rust/estilo-codigo.md +207 -0
- package/reglas/lenguajes/rust/hooks.md +240 -0
- package/reglas/lenguajes/rust/patrones.md +250 -0
- package/reglas/lenguajes/rust/seguridad.md +221 -0
- package/reglas/lenguajes/rust/testing.md +194 -0
- package/reglas/lenguajes/swift/estilo-codigo.md +238 -0
- package/reglas/lenguajes/swift/hooks.md +257 -0
- package/reglas/lenguajes/swift/patrones.md +235 -0
- package/reglas/lenguajes/swift/seguridad.md +248 -0
- package/reglas/lenguajes/swift/testing.md +242 -0
- package/reglas/markitdown.md +60 -0
- package/reglas/memoria-consolidada.md +209 -0
- package/reglas/patrones.md +225 -0
- package/reglas/performance.md +195 -0
- package/reglas/pruebas.md +159 -0
- package/reglas/seguridad-agentes.md +351 -0
- package/reglas/seguridad.md +151 -0
- package/reglas/skills-estandar.md +373 -0
- package/reglas/testing.md +193 -0
- package/schemas/agent-contract.json +176 -0
- package/schemas/agent-frontmatter.schema.json +149 -0
- package/schemas/agent-message.schema.json +53 -0
- package/schemas/agent-output-implementacion.schema.json +85 -0
- package/schemas/agent-output-planificacion.schema.json +113 -0
- package/schemas/agent-output-review.schema.json +78 -0
- package/schemas/diary-entry.schema.json +80 -0
- package/schemas/hook-profiles.schema.json +39 -0
- package/schemas/hooks-config.schema.json +74 -0
- package/schemas/instinct.schema.json +115 -0
- package/schemas/modulos.schema.json +29 -0
- package/schemas/perfiles.schema.json +28 -0
- package/schemas/plugin.schema.json +64 -0
- package/schemas/skill-evals.schema.json +95 -0
- package/schemas/skill-frontmatter.schema.json +170 -0
- package/scripts/actualizar.js +145 -0
- package/scripts/audit-skills.sh +78 -0
- package/scripts/auditar-agentes-gaps.js +149 -0
- package/scripts/auditar-cobertura-frameworks.js +241 -0
- package/scripts/auditar-skills-gaps.js +206 -0
- package/scripts/bootstrap-instintos.js +259 -0
- package/scripts/check-update.js +109 -0
- package/scripts/comandos/agents.js +105 -0
- package/scripts/comandos/info.js +108 -0
- package/scripts/comandos/install-asistido.js +186 -0
- package/scripts/comandos/skills.js +211 -0
- package/scripts/configurar-branch-protection.js +418 -0
- package/scripts/daemon-swl.py +388 -0
- package/scripts/desinstalar.js +130 -0
- package/scripts/doctor.js +559 -0
- package/scripts/field-report.js +199 -0
- package/scripts/generar-inventario.js +317 -0
- package/scripts/inbox-tmux-inject.js +161 -0
- package/scripts/inferir-herramientas-permitidas.js +586 -0
- package/scripts/inicializar.js +133 -0
- package/scripts/instalador.js +1031 -0
- package/scripts/instalar-git-hook.js +122 -0
- package/scripts/lib/agp-frontmatter.js +222 -0
- package/scripts/lib/append-con-marcadores.js +199 -0
- package/scripts/lib/artefactos-python.js +43 -0
- package/scripts/lib/audit-query.js +221 -0
- package/scripts/lib/autostart-linux.js +347 -0
- package/scripts/lib/autostart-macos.js +360 -0
- package/scripts/lib/autostart-windows.js +307 -0
- package/scripts/lib/budget-enforcer.js +252 -0
- package/scripts/lib/claude-sessions.js +285 -0
- package/scripts/lib/configurar-ci.js +380 -0
- package/scripts/lib/console-span-exporter.js +92 -0
- package/scripts/lib/contadores-inventario.js +217 -0
- package/scripts/lib/dashboard-widgets.js +290 -0
- package/scripts/lib/detectar-runtime.js +279 -0
- package/scripts/lib/detectar-stack.js +187 -0
- package/scripts/lib/diary-entry.js +234 -0
- package/scripts/lib/drift-detector.js +545 -0
- package/scripts/lib/estado.js +124 -0
- package/scripts/lib/gestor-componentes.js +243 -0
- package/scripts/lib/gitignore-manifest.js +305 -0
- package/scripts/lib/graph-analyze.py +556 -0
- package/scripts/lib/graph-builder.py +485 -0
- package/scripts/lib/graph-cluster.py +259 -0
- package/scripts/lib/health-row.js +168 -0
- package/scripts/lib/hooks-settings.js +789 -0
- package/scripts/lib/manifiestos.js +138 -0
- package/scripts/lib/mc-client.js +137 -0
- package/scripts/lib/notificaciones-telegram.js +1107 -0
- package/scripts/lib/npm-version.js +261 -0
- package/scripts/lib/paquetes-conocidos.js +50 -0
- package/scripts/lib/preservar-usuario.js +586 -0
- package/scripts/lib/prompt-builder.js +264 -0
- package/scripts/lib/resolver-externo.js +332 -0
- package/scripts/lib/schedule-parser.js +305 -0
- package/scripts/lib/scoring-instintos.js +240 -0
- package/scripts/lib/seguridad.js +160 -0
- package/scripts/lib/selector-interactivo.js +152 -0
- package/scripts/lib/semantic-search.js +242 -0
- package/scripts/lib/skill-discovery.js +234 -0
- package/scripts/lib/skill-metrics.js +246 -0
- package/scripts/lib/skill-normalizer.js +112 -0
- package/scripts/lib/skills-hub.js +340 -0
- package/scripts/lib/span-schema.js +134 -0
- package/scripts/lib/tool-cost-analyzer.js +255 -0
- package/scripts/lib/tracing-processor-interface.js +286 -0
- package/scripts/lib/transformadores/base.js +80 -0
- package/scripts/lib/transformadores/claude.js +124 -0
- package/scripts/lib/transformadores/codex.js +115 -0
- package/scripts/lib/transformadores/copilot.js +106 -0
- package/scripts/lib/transformadores/gemini.js +74 -0
- package/scripts/lib/transformadores/index.js +35 -0
- package/scripts/lib/transformadores/opencode.js +75 -0
- package/scripts/lib/ui.js +259 -0
- package/scripts/limpiar-artefactos-python.js +131 -0
- package/scripts/mcp-orchestrator.py +386 -0
- package/scripts/mcp-pool-manager.py +352 -0
- package/scripts/mcp-telemetry.py +378 -0
- package/scripts/poblar-evolvable.js +226 -0
- package/scripts/publicar.js +287 -0
- package/scripts/reflect-skills.js +403 -0
- package/scripts/rotar-audit-logs.js +185 -0
- package/scripts/run-skill-evals.js +242 -0
- package/scripts/smoke-test.js +374 -0
- package/scripts/token-analysis.py +471 -0
- package/scripts/validar-manifest.js +195 -0
- package/scripts/validar-memoria.js +321 -0
- package/scripts/validar-tests-aislamiento.js +184 -0
- package/scripts/validar-tokens-test.js +208 -0
- package/scripts/validar.js +147 -0
- package/scripts/validate-markdown.py +339 -0
- package/scripts/validate-skills.py +385 -0
- package/scripts/vendor/claude-usage/README.md +116 -0
- package/scripts/vendor/claude-usage/cli.py +334 -0
- package/scripts/vendor/claude-usage/dashboard.py +795 -0
- package/scripts/vendor/claude-usage/scanner.py +467 -0
- package/scripts/vendor/markitdown/cli.py +194 -0
- package/scripts/verificar-evolucion.js +289 -0
- package/scripts/verificar-release.js +494 -0
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-errors-go
|
|
3
|
+
description: >
|
|
4
|
+
Resolución de errores de compilación Go: go build, go vet, go mod, import
|
|
5
|
+
cycles, cgo, race conditions y linters estáticos. Cargar cuando un build Go
|
|
6
|
+
falle o haya errores de compilación, módulos o vet.
|
|
7
|
+
version: "1.0.0"
|
|
8
|
+
herramientasPermitidas: [Read, Bash, Grep]
|
|
9
|
+
exclusiones:
|
|
10
|
+
- "No cargar para errores de lógica o comportamiento del programa Go en ejecución — si `go build` pasa pero el programa produce resultados incorrectos, es un bug de lógica; no es un error de compilación."
|
|
11
|
+
- "No cargar para errores de pruebas que fallan por assertions incorrectas (testify, gomock) — si `go test` compila pero los tests fallan por valores incorrectos, eso es un error de lógica de tests, no de build."
|
|
12
|
+
- "No cargar para diseñar la arquitectura de módulos Go o decidir la estructura de packages — si la pregunta es cómo organizar los paquetes del proyecto, cargar `go-patrones` o `go-experto`."
|
|
13
|
+
- "No cargar cuando el error es exclusivo de cgo y el proyecto embebe C — los errores de cgo tienen dependencias del compilador C y son un dominio separado que requiere conocimiento de C además de Go."
|
|
14
|
+
evolvable: true # default para skill estandar
|
|
15
|
+
---
|
|
16
|
+
# Build Errors Go — Diagnóstico y Solución
|
|
17
|
+
|
|
18
|
+
Go es estricto en tiempo de compilación: variables no usadas, imports no usados
|
|
19
|
+
y type mismatches son errores, no warnings. Este skill cubre los errores más
|
|
20
|
+
frecuentes del compilador, del sistema de módulos y de las herramientas de
|
|
21
|
+
análisis estático.
|
|
22
|
+
|
|
23
|
+
## Cuándo NO cargar
|
|
24
|
+
|
|
25
|
+
- `go build` compila pero el programa falla en ejecución — no es un error de build; diagnosticar con `-race` o logs.
|
|
26
|
+
- Los tests fallan por valores incorrectos (assertion failure) aunque compilan — es un error de lógica, no de compilación.
|
|
27
|
+
- La pregunta es cómo estructurar paquetes o módulos Go — para diseño de paquetes cargar `go-patrones`.
|
|
28
|
+
|
|
29
|
+
## Cuándo cargar este skill
|
|
30
|
+
|
|
31
|
+
Invoca `Skill("build-errors-go")` cuando:
|
|
32
|
+
|
|
33
|
+
- `go build` o `go test` falle con errores de compilación
|
|
34
|
+
- `go vet` reporte problemas
|
|
35
|
+
- Haya errores de `go mod` (módulos, versiones, replace)
|
|
36
|
+
- Se detecten import cycles
|
|
37
|
+
- `go build -race` detecte race conditions
|
|
38
|
+
- Linters como `staticcheck` o `golangci-lint` fallen en CI
|
|
39
|
+
|
|
40
|
+
## Conceptos clave
|
|
41
|
+
|
|
42
|
+
### Errores vs Warnings en Go
|
|
43
|
+
|
|
44
|
+
Go no tiene warnings — todo es un error que impide la compilación. Un import
|
|
45
|
+
sin usar o una variable declarada sin usar genera un error de compilación.
|
|
46
|
+
Esto es intencional: mantiene el código limpio por construcción.
|
|
47
|
+
|
|
48
|
+
### Go Modules (go.mod)
|
|
49
|
+
|
|
50
|
+
Cada módulo tiene un `go.mod` que declara el module path y las dependencias.
|
|
51
|
+
`go.sum` contiene los checksums criptográficos de cada dependencia. Ambos
|
|
52
|
+
se versionan en git. Las dependencias se cachean en `$GOPATH/pkg/mod`.
|
|
53
|
+
|
|
54
|
+
### Build Constraints
|
|
55
|
+
|
|
56
|
+
Los build constraints (`//go:build linux`) condicionan la compilación por OS,
|
|
57
|
+
arquitectura u otras condiciones. Un archivo `.go` que no cumple los constraints
|
|
58
|
+
del ambiente actual se ignora completamente, lo que puede causar errores de
|
|
59
|
+
"undefined" si la implementación está en el archivo excluido.
|
|
60
|
+
|
|
61
|
+
## Errores de go build — causa y solución
|
|
62
|
+
|
|
63
|
+
### `undefined: NombreFuncion` o `undefined: paquete.Tipo`
|
|
64
|
+
|
|
65
|
+
**Causa 1**: La función/tipo no está en el paquete importado.
|
|
66
|
+
```bash
|
|
67
|
+
# Verificar que existe en la version del modulo que se usa
|
|
68
|
+
go doc paquete.Funcion
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Causa 2**: La función está en un archivo con build constraint excluido.
|
|
72
|
+
```bash
|
|
73
|
+
# Ver que archivos se incluyen en el build actual
|
|
74
|
+
go list -f '{{.GoFiles}}' ./paquete/
|
|
75
|
+
go list -f '{{.IgnoredGoFiles}}' ./paquete/
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Causa 3**: Import cycle impide que el paquete compile.
|
|
79
|
+
```bash
|
|
80
|
+
go build ./... 2>&1 | grep "import cycle"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### `declared but not used` (variable sin usar)
|
|
84
|
+
|
|
85
|
+
```go
|
|
86
|
+
// MAL — Go no compila con variables sin usar
|
|
87
|
+
func calcular() int {
|
|
88
|
+
resultado := 42 // ERROR si no se usa
|
|
89
|
+
return 0
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// BIEN — usar la variable o usar _ si el valor no importa
|
|
93
|
+
func calcular() (int, error) {
|
|
94
|
+
resultado, err := operacionConError()
|
|
95
|
+
if err != nil {
|
|
96
|
+
return 0, err
|
|
97
|
+
}
|
|
98
|
+
return resultado, nil
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Para ignorar un valor de retorno explícitamente:
|
|
102
|
+
_, err := operacion()
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### `imported and not used: "paquete"`
|
|
106
|
+
|
|
107
|
+
```go
|
|
108
|
+
// MAL — import que Go no acepta si no se usa
|
|
109
|
+
import (
|
|
110
|
+
"fmt"
|
|
111
|
+
"os" // ERROR si no se llama ningún símbolo de "os"
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
// BIEN — remover el import no usado
|
|
115
|
+
// O usar goimports para limpiar automáticamente:
|
|
116
|
+
// goimports -w archivo.go
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### `cannot use X (type T1) as type T2`
|
|
120
|
+
|
|
121
|
+
```go
|
|
122
|
+
// Causa común: tipos nombrados no son intercambiables aunque tengan el mismo tipo base
|
|
123
|
+
type MetrosCuadrados float64
|
|
124
|
+
type Kilogramos float64
|
|
125
|
+
|
|
126
|
+
var area MetrosCuadrados = 10.0
|
|
127
|
+
var peso Kilogramos = area // ERROR: tipos distintos aunque ambos son float64
|
|
128
|
+
|
|
129
|
+
// Solución: conversión explícita
|
|
130
|
+
var peso Kilogramos = Kilogramos(area) // solo si la conversión tiene sentido semántico
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Import cycle — `import cycle not allowed`
|
|
134
|
+
|
|
135
|
+
**Causa**: Paquete A importa B, B importa A (directamente o transitivamente).
|
|
136
|
+
|
|
137
|
+
**Diagnóstico**:
|
|
138
|
+
```bash
|
|
139
|
+
go build ./... 2>&1
|
|
140
|
+
# Output: package miapp/pkgA: import cycle not allowed
|
|
141
|
+
# miapp/pkgA -> miapp/pkgB -> miapp/pkgA
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Soluciones en orden de preferencia**:
|
|
145
|
+
1. Extraer los tipos compartidos a un tercer paquete que ninguno de los dos importa
|
|
146
|
+
2. Usar una interface en lugar de un tipo concreto para romper el ciclo
|
|
147
|
+
3. Reestructurar los paquetes para eliminar la dependencia circular
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
# Estructura que crea ciclo:
|
|
151
|
+
pkgA imports pkgB
|
|
152
|
+
pkgB imports pkgA
|
|
153
|
+
|
|
154
|
+
# Solucion: extraer tipos compartidos
|
|
155
|
+
pkgTypes (tipos compartidos, no importa a nadie)
|
|
156
|
+
pkgA imports pkgTypes
|
|
157
|
+
pkgB imports pkgTypes
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Errores de go mod — causa y solución
|
|
161
|
+
|
|
162
|
+
### `no required module provides package X`
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# Agregar el modulo faltante
|
|
166
|
+
go get github.com/paquete/necesitado@v1.2.3
|
|
167
|
+
|
|
168
|
+
# O si es un subpaquete, agregar el modulo raiz
|
|
169
|
+
go get github.com/paquete/raiz
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### `ambiguous import: found package X in multiple modules`
|
|
173
|
+
|
|
174
|
+
**Causa**: Dos módulos exponen el mismo import path. Ocurre en fork/rename.
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Identificar cuáles módulos proveen el path
|
|
178
|
+
go mod why github.com/path/en/conflicto
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Solución con replace en go.mod**:
|
|
182
|
+
```
|
|
183
|
+
replace github.com/paquete/original => github.com/fork/alternativo v1.0.0
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### `go: updates to go.sum needed; to update it: go mod tidy`
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# Regenerar go.sum para que coincida con go.mod
|
|
190
|
+
go mod tidy
|
|
191
|
+
|
|
192
|
+
# Si hay errores de checksum:
|
|
193
|
+
go clean -modcache
|
|
194
|
+
go mod download
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### `verifying X: checksum mismatch`
|
|
198
|
+
|
|
199
|
+
**Causa**: El checksum en `go.sum` no coincide con lo descargado. Posible
|
|
200
|
+
modificación del módulo upstream o corrupción de cache.
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# Limpiar cache y re-descargar
|
|
204
|
+
go clean -modcache
|
|
205
|
+
GONOSUMCHECK=* go mod download # solo para diagnostico, no en produccion
|
|
206
|
+
go mod verify
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Errores de go vet — causa y solución
|
|
210
|
+
|
|
211
|
+
### `printf: format %s has arg X of wrong type`
|
|
212
|
+
|
|
213
|
+
```go
|
|
214
|
+
// MAL — tipo incorrecto para el formato
|
|
215
|
+
var n int = 42
|
|
216
|
+
fmt.Printf("%s", n) // vet error: %s espera string, se paso int
|
|
217
|
+
|
|
218
|
+
// BIEN
|
|
219
|
+
fmt.Printf("%d", n)
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### `copylocks: X passes lock by value`
|
|
223
|
+
|
|
224
|
+
```go
|
|
225
|
+
// MAL — Mutex no debe pasarse por valor (se copia el estado)
|
|
226
|
+
type MiStruct struct {
|
|
227
|
+
mu sync.Mutex
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
func procesar(s MiStruct) { ... } // ERROR: copia el Mutex
|
|
231
|
+
|
|
232
|
+
// BIEN — pasar por puntero
|
|
233
|
+
func procesar(s *MiStruct) { ... }
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Race conditions — `go build -race`
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
# Compilar y ejecutar con detector de race conditions
|
|
240
|
+
go test -race ./...
|
|
241
|
+
go run -race main.go
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
**Patrón común detectado**:
|
|
245
|
+
```go
|
|
246
|
+
// MAL — acceso concurrente sin sincronización
|
|
247
|
+
var contador int
|
|
248
|
+
go func() { contador++ }()
|
|
249
|
+
go func() { contador++ }()
|
|
250
|
+
// DATA RACE: dos goroutines escriben contador sin mutex
|
|
251
|
+
|
|
252
|
+
// BIEN — usar sync.Mutex o atomic
|
|
253
|
+
var mu sync.Mutex
|
|
254
|
+
go func() { mu.Lock(); contador++; mu.Unlock() }()
|
|
255
|
+
// O mejor con sync/atomic:
|
|
256
|
+
var contador int64
|
|
257
|
+
go func() { atomic.AddInt64(&contador, 1) }()
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## Errores de staticcheck comunes
|
|
261
|
+
|
|
262
|
+
### `SA1006: Printf with dynamic first argument and no further arguments`
|
|
263
|
+
|
|
264
|
+
```go
|
|
265
|
+
msg := "hola mundo"
|
|
266
|
+
fmt.Printf(msg) // staticcheck SA1006: posible format injection
|
|
267
|
+
fmt.Printf("%s", msg) // BIEN
|
|
268
|
+
fmt.Print(msg) // O usar Print si no hay formato
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### `S1039: Unnecessary use of fmt.Sprintf`
|
|
272
|
+
|
|
273
|
+
```go
|
|
274
|
+
// MAL — Sprintf innecesario
|
|
275
|
+
nombre := fmt.Sprintf("Juan") // staticcheck S1039
|
|
276
|
+
|
|
277
|
+
// BIEN
|
|
278
|
+
nombre := "Juan"
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## Gotchas / Errores comunes no obvios
|
|
282
|
+
|
|
283
|
+
- **`go mod tidy` genera un `go.sum` distinto en CI aunque no hubo cambios de dependencias**: la versión de Go difiere entre el entorno local y CI, ya que módulos directos y sus dependencias pueden resolverse con versiones de Go diferentes. Causa: Go embebe la versión mínima de Go en go.mod con `go 1.21`, y `go mod tidy` con una versión distinta puede agregar o quitar entradas del `go.sum`. Solución: fijar la versión de Go exacta en CI usando la misma que en `go.mod` (`go 1.21.x`).
|
|
284
|
+
- **`go build -race` reporta DATA RACE solo en CI, no localmente**: el detector de race conditions es no-determinista y depende del scheduling del OS. Causa: la ventana de concurrencia es demasiado pequeña para reproducirse con la carga de trabajo del laptop pero se manifiesta bajo la carga de CI. Solución: ejecutar el test con `-race -count=10` para aumentar la probabilidad de detección local; una vez detectado, el report de `go build -race` muestra exactamente las goroutines y líneas en conflicto.
|
|
285
|
+
- **Import cycle introducido por agregar un interface en el paquete A para que B no importe A directamente**: mover la interface al paquete "receptor" (A) no rompe el ciclo si B igual importa A para instanciar el tipo concreto. Causa: la interface en A solo mueve el punto de importación pero no elimina la dependencia si B sigue necesitando un tipo concreto de A. Solución: extraer la interface a un tercer paquete `pkgTypes` que ni A ni B importan entre sí, y que ambos referencian.
|
|
286
|
+
- **`staticcheck` SA4006 reporta variable asignada pero nunca usada en la línea del error handler**: el patrón `if err != nil { log.Error(err); return }` hace que la variable `err` de la siguiente asignación sea considerada "sobrescrita sin leer". Causa: el analyzer cuenta la asignación previa de `err` como usada solo si el valor se lee antes de la siguiente asignación — en cadenas de manejo de error con `err =` múltiple, la primera asignación puede quedar sin leer. Solución: en cadenas largas de errores, usar `:=` en cada asignación nueva para que el scope sea claro, no reutilizar la variable `err` con `=`.
|
|
287
|
+
|
|
288
|
+
## Checklist de diagnóstico
|
|
289
|
+
|
|
290
|
+
- [ ] `go build ./...` para ver todos los errores de una vez
|
|
291
|
+
- [ ] `go vet ./...` para detectar problemas de corrección
|
|
292
|
+
- [ ] `go mod tidy` si hay errores de módulos
|
|
293
|
+
- [ ] `go list -f '{{.IgnoredGoFiles}}' ./paquete/` para build constraints
|
|
294
|
+
- [ ] `go build -race ./...` si hay sospechas de concurrencia
|
|
295
|
+
- [ ] `staticcheck ./...` o `golangci-lint run` para análisis estático completo
|
|
296
|
+
- [ ] Para import cycles: `go build ./... 2>&1 | grep cycle`
|
|
297
|
+
|
|
298
|
+
## Referencias
|
|
299
|
+
|
|
300
|
+
- [Go Build Constraints](https://pkg.go.dev/cmd/go#hdr-Build_constraints)
|
|
301
|
+
- [Go Modules Reference](https://go.dev/ref/mod)
|
|
302
|
+
- [staticcheck](https://staticcheck.dev/docs/checks)
|
|
303
|
+
- [golangci-lint](https://golangci-lint.run/usage/linters/)
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
*Skill creado con swl:crear-skill el 2026-03-31. Versión 1.0.0.*
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-errors-java
|
|
3
|
+
description: >
|
|
4
|
+
Resolución de errores de compilación Java: javac, Maven, Gradle, conflictos
|
|
5
|
+
de dependencias, annotation processors y problemas de classpath. Cargar cuando
|
|
6
|
+
un build Java falle o haya errores de compilación o de dependencias.
|
|
7
|
+
version: "1.0.0"
|
|
8
|
+
herramientasPermitidas: [Read, Bash, Grep]
|
|
9
|
+
exclusiones:
|
|
10
|
+
- "No cargar para errores de lógica de la aplicación Java en ejecución (NullPointerException, IllegalArgumentException en runtime) — el build compila exitosamente; el error es de lógica de negocio."
|
|
11
|
+
- "No cargar para fallos de tests unitarios (JUnit assertions incorrectas, Mockito stubs mal configurados) — si `mvn test-compile` pasa pero los tests fallan en assertions, no es un error de build."
|
|
12
|
+
- "No cargar para diseñar la arquitectura Maven multi-módulo desde cero — si la pregunta es cómo organizar módulos padre-hijo en un nuevo proyecto, cargar `java-patrones` o `java-experto`."
|
|
13
|
+
- "No cargar para errores de Spring Boot en contexto de arranque (ApplicationContext failed to load) que no son de compilación — si el JAR se construye pero `java -jar` falla, son errores de configuración de Spring, no de build."
|
|
14
|
+
evolvable: true # default para skill estandar
|
|
15
|
+
---
|
|
16
|
+
# Build Errors Java — Diagnóstico y Solución
|
|
17
|
+
|
|
18
|
+
Los errores de build de Java pueden venir del compilador, del sistema de build
|
|
19
|
+
(Maven/Gradle) o de las dependencias. Este skill cubre los errores más frecuentes
|
|
20
|
+
con su causa exacta y la solución paso a paso.
|
|
21
|
+
|
|
22
|
+
## Cuándo NO cargar
|
|
23
|
+
|
|
24
|
+
- El build compila pero la aplicación falla en ejecución (NPE, ClassCastException) — no es un error de compilación; revisar la lógica directamente.
|
|
25
|
+
- Los tests JUnit fallan por assertions incorrectas aunque compilan — es un error de lógica de tests.
|
|
26
|
+
- La pregunta es cómo organizar el proyecto Maven multi-módulo — para diseño cargar `java-patrones`.
|
|
27
|
+
|
|
28
|
+
## Cuándo cargar este skill
|
|
29
|
+
|
|
30
|
+
Invoca `Skill("build-errors-java")` cuando:
|
|
31
|
+
|
|
32
|
+
- `mvn compile` o `gradle build` falle con errores
|
|
33
|
+
- Haya errores `cannot find symbol` o `package does not exist`
|
|
34
|
+
- Existan conflictos de versión entre dependencias
|
|
35
|
+
- Fallen los annotation processors (Lombok, MapStruct, etc.)
|
|
36
|
+
- Haya errores de classpath en runtime después de un build exitoso
|
|
37
|
+
|
|
38
|
+
## Conceptos clave
|
|
39
|
+
|
|
40
|
+
### Separacion build-time vs runtime
|
|
41
|
+
|
|
42
|
+
Algunos errores solo aparecen en runtime aunque el build compile correctamente.
|
|
43
|
+
Las dependencias con scope `provided` o `compileOnly` no se incluyen en el
|
|
44
|
+
artefacto final — si se necesitan en runtime, hay un ClassNotFoundException.
|
|
45
|
+
|
|
46
|
+
### Dependency convergence en Maven/Gradle
|
|
47
|
+
|
|
48
|
+
Cuando dos dependencias A y B requieren distintas versiones de C, el build
|
|
49
|
+
necesita una sola versión. Maven usa la versión más cercana al POM raíz.
|
|
50
|
+
Gradle usa la versión más alta. Ambos pueden introducir incompatibilidades.
|
|
51
|
+
|
|
52
|
+
## Errores de javac — causa y solución
|
|
53
|
+
|
|
54
|
+
### `error: cannot find symbol`
|
|
55
|
+
|
|
56
|
+
**Causa**: La clase, método o variable referenciada no existe en el classpath
|
|
57
|
+
en tiempo de compilación. Puede ser un typo, un import faltante, o una
|
|
58
|
+
dependencia no declarada.
|
|
59
|
+
|
|
60
|
+
**Diagnostico**:
|
|
61
|
+
```bash
|
|
62
|
+
# Ver el classpath completo que usa javac
|
|
63
|
+
mvn dependency:build-classpath -Dmdep.outputFile=classpath.txt
|
|
64
|
+
cat classpath.txt
|
|
65
|
+
|
|
66
|
+
# O con Gradle
|
|
67
|
+
./gradlew dependencies --configuration compileClasspath
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Soluciones**:
|
|
71
|
+
1. Verificar que el import está presente en el archivo Java
|
|
72
|
+
2. Verificar que la dependencia está en `pom.xml` / `build.gradle`
|
|
73
|
+
3. Si es una clase generada (Lombok, QueryDSL), ejecutar `mvn generate-sources` primero
|
|
74
|
+
|
|
75
|
+
### `error: package X does not exist`
|
|
76
|
+
|
|
77
|
+
**Causa**: El paquete no está en el classpath. Diferente a `cannot find symbol`
|
|
78
|
+
en que afecta al package entero, no a una clase específica.
|
|
79
|
+
|
|
80
|
+
**Solucion**:
|
|
81
|
+
```xml
|
|
82
|
+
<!-- Maven: agregar la dependencia faltante -->
|
|
83
|
+
<dependency>
|
|
84
|
+
<groupId>org.springframework.boot</groupId>
|
|
85
|
+
<artifactId>spring-boot-starter-web</artifactId>
|
|
86
|
+
</dependency>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### `error: incompatible types: X cannot be converted to Y`
|
|
90
|
+
|
|
91
|
+
**Causa**: Asignación o llamada con tipo incorrecto. Frecuente al mezclar
|
|
92
|
+
tipos genéricos o al usar APIs que cambiaron su tipo de retorno.
|
|
93
|
+
|
|
94
|
+
```java
|
|
95
|
+
// Ejemplo: List<Object> no es asignable a List<String>
|
|
96
|
+
List<String> nombres = new ArrayList<Object>(); // ERROR
|
|
97
|
+
List<String> nombres = new ArrayList<>(); // OK — inferencia de tipo
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### `error: unreported exception X; must be caught or declared to be thrown`
|
|
101
|
+
|
|
102
|
+
**Causa**: Llamada a método que lanza checked exception sin catch ni declaración
|
|
103
|
+
en la firma del método.
|
|
104
|
+
|
|
105
|
+
```java
|
|
106
|
+
// MAL — IOException no manejada
|
|
107
|
+
public void leerArchivo(String ruta) {
|
|
108
|
+
Files.readString(Path.of(ruta)); // throws IOException
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// BIEN — declarar o capturar
|
|
112
|
+
public void leerArchivo(String ruta) throws IOException {
|
|
113
|
+
String contenido = Files.readString(Path.of(ruta));
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Errores de Maven — causa y solución
|
|
118
|
+
|
|
119
|
+
### `Could not resolve dependencies` / `Artifact not found`
|
|
120
|
+
|
|
121
|
+
**Diagnostico**:
|
|
122
|
+
```bash
|
|
123
|
+
mvn dependency:resolve -U # -U fuerza update de snapshots
|
|
124
|
+
mvn dependency:tree # ver el arbol de dependencias
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Causas y soluciones**:
|
|
128
|
+
1. Repositorio no configurado: agregar en `pom.xml` o `settings.xml`
|
|
129
|
+
2. Credenciales de repositorio privado incorrectas en `~/.m2/settings.xml`
|
|
130
|
+
3. Artefacto realmente no existe: verificar en https://search.maven.org
|
|
131
|
+
|
|
132
|
+
### `Plugin execution not covered by lifecycle configuration` (Eclipse/m2e)
|
|
133
|
+
|
|
134
|
+
**Causa**: El plugin de Maven no tiene binding en m2e para Eclipse.
|
|
135
|
+
**Solución**: Agregar `<pluginManagement>` en el pom para ignorar en m2e:
|
|
136
|
+
|
|
137
|
+
```xml
|
|
138
|
+
<pluginManagement>
|
|
139
|
+
<plugins>
|
|
140
|
+
<plugin>
|
|
141
|
+
<groupId>org.eclipse.m2e</groupId>
|
|
142
|
+
<artifactId>lifecycle-mapping</artifactId>
|
|
143
|
+
<version>1.0.0</version>
|
|
144
|
+
<configuration>
|
|
145
|
+
<lifecycleMappingMetadata>
|
|
146
|
+
<pluginExecutions>
|
|
147
|
+
<pluginExecution>
|
|
148
|
+
<pluginExecutionFilter>
|
|
149
|
+
<groupId>org.apache.maven.plugins</groupId>
|
|
150
|
+
<artifactId>maven-enforcer-plugin</artifactId>
|
|
151
|
+
<versionRange>[1.0,)</versionRange>
|
|
152
|
+
<goals><goal>enforce</goal></goals>
|
|
153
|
+
</pluginExecutionFilter>
|
|
154
|
+
<action><ignore /></action>
|
|
155
|
+
</pluginExecution>
|
|
156
|
+
</pluginExecutions>
|
|
157
|
+
</lifecycleMappingMetadata>
|
|
158
|
+
</configuration>
|
|
159
|
+
</plugin>
|
|
160
|
+
</plugins>
|
|
161
|
+
</pluginManagement>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Conflictos de version — `NoSuchMethodError` en runtime
|
|
165
|
+
|
|
166
|
+
**Diagnostico**:
|
|
167
|
+
```bash
|
|
168
|
+
mvn dependency:tree -Dverbose -Dincludes=com.fasterxml.jackson.core
|
|
169
|
+
# Buscar lineas con "omitted for conflict"
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Solución con dependencyManagement**:
|
|
173
|
+
```xml
|
|
174
|
+
<dependencyManagement>
|
|
175
|
+
<dependencies>
|
|
176
|
+
<!-- Forzar versión única de Jackson en todo el proyecto -->
|
|
177
|
+
<dependency>
|
|
178
|
+
<groupId>com.fasterxml.jackson.core</groupId>
|
|
179
|
+
<artifactId>jackson-databind</artifactId>
|
|
180
|
+
<version>2.17.0</version>
|
|
181
|
+
</dependency>
|
|
182
|
+
</dependencies>
|
|
183
|
+
</dependencyManagement>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Errores de Gradle — causa y solución
|
|
187
|
+
|
|
188
|
+
### `Could not resolve com.example:lib:1.0`
|
|
189
|
+
|
|
190
|
+
**Diagnostico**:
|
|
191
|
+
```bash
|
|
192
|
+
./gradlew dependencies --configuration runtimeClasspath
|
|
193
|
+
./gradlew dependencyInsight --dependency lib --configuration runtimeClasspath
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**Solucion**: Verificar `repositories {}` en `build.gradle`:
|
|
197
|
+
```kotlin
|
|
198
|
+
repositories {
|
|
199
|
+
mavenCentral()
|
|
200
|
+
maven { url = uri("https://repo.empresa.com/maven2") }
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### `Execution failed for task ':compileJava'` — error de annotation processor
|
|
205
|
+
|
|
206
|
+
**Causa frecuente**: Lombok o MapStruct no configurados como annotation processor.
|
|
207
|
+
|
|
208
|
+
```kotlin
|
|
209
|
+
// build.gradle.kts — configuración correcta de Lombok
|
|
210
|
+
dependencies {
|
|
211
|
+
compileOnly("org.projectlombok:lombok:1.18.32")
|
|
212
|
+
annotationProcessor("org.projectlombok:lombok:1.18.32")
|
|
213
|
+
testCompileOnly("org.projectlombok:lombok:1.18.32")
|
|
214
|
+
testAnnotationProcessor("org.projectlombok:lombok:1.18.32")
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Dependency locking — `FAILED` en version diferente a la bloqueada
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# Actualizar el lock file cuando se cambian dependencias intencionalmente
|
|
222
|
+
./gradlew dependencies --write-locks
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Errores de classpath en runtime
|
|
226
|
+
|
|
227
|
+
### `ClassNotFoundException` o `NoClassDefFoundError`
|
|
228
|
+
|
|
229
|
+
**Diferencia**:
|
|
230
|
+
- `ClassNotFoundException`: la clase no está en el classpath — falta una jar
|
|
231
|
+
- `NoClassDefFoundError`: la clase estaba en compilación pero no en runtime
|
|
232
|
+
— dependencia con scope `provided` no incluida en el fat jar
|
|
233
|
+
|
|
234
|
+
**Solucion en Spring Boot**:
|
|
235
|
+
```xml
|
|
236
|
+
<!-- Cambiar scope de provided a compile si se necesita en el jar final -->
|
|
237
|
+
<dependency>
|
|
238
|
+
<groupId>javax.servlet</groupId>
|
|
239
|
+
<artifactId>javax.servlet-api</artifactId>
|
|
240
|
+
<!-- Quitar: <scope>provided</scope> si el contenedor no lo provee -->
|
|
241
|
+
</dependency>
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Multi-module projects — `Module not found`
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
# Compilar el módulo padre primero para que los módulos hijo lo encuentren
|
|
248
|
+
mvn install -pl modulo-comun
|
|
249
|
+
mvn compile -pl modulo-api
|
|
250
|
+
|
|
251
|
+
# O compilar todo el reactor en orden
|
|
252
|
+
mvn compile --projects modulo-comun,modulo-api
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Gotchas / Errores comunes no obvios
|
|
256
|
+
|
|
257
|
+
- **Lombok `@Data` compila sin errores pero en runtime falla con `NoSuchMethodError` para los getters/setters**: el annotation processor de Lombok no está configurado en `annotationProcessor` de Gradle o en `<annotationProcessorPaths>` de Maven, solo en `compileOnly`. Causa: `compileOnly` incluye el JAR en el classpath de compilación pero no activa el processor, por lo que los métodos generados no existen. Solución: agregar Lombok tanto en `compileOnly` como en `annotationProcessor` (Gradle) o en `annotationProcessorPaths` del `maven-compiler-plugin` (Maven).
|
|
258
|
+
- **`mvn dependency:tree` no muestra conflicto pero en runtime hay `ClassNotFoundException`**: la dependencia conflictiva está marcada con `provided` en el POM hijo pero `compile` en el padre. Causa: Maven elige el scope más restrictivo en jerarquía de módulos y la clase no llega al fat JAR final. Solución: ejecutar `mvn dependency:tree -Dincludes=grupo:artefacto:*:*` para ver todas las ocurrencias del artefacto con sus scopes en el árbol, y unificar a `compile` en el módulo que genera el ejecutable.
|
|
259
|
+
- **Gradle Kotlin DSL (`build.gradle.kts`) reporta error de `Unresolved reference` en el bloque `dependencies`**: el IDE muestra el error pero `./gradlew build` compila bien. Causa: el IDE usa un análisis estático de Kotlin para el DSL que difiere del evaluador de Groovy/Kotlin de Gradle en runtime. Solución: ejecutar `./gradlew build --rerun-tasks` desde línea de comandos para confirmar si el error es real — si pasa, el error del IDE es un falso positivo del análisis estático; sincronizar el proyecto Gradle en el IDE.
|
|
260
|
+
- **`cannot find symbol` apunta a una clase generada por MapStruct que sí existe en `target/generated-sources`**: el directorio de fuentes generadas no está incluido en el source set del compilador. Causa: algunos builds con Maven no agregan automáticamente `target/generated-sources/annotations` al source path. Solución: agregar explícitamente `<generatedSourcesDirectory>` en la configuración del `maven-compiler-plugin` o verificar que `build-helper-maven-plugin` incluye el directorio generado.
|
|
261
|
+
|
|
262
|
+
## Checklist de diagnóstico
|
|
263
|
+
|
|
264
|
+
- [ ] `mvn dependency:tree` o `./gradlew dependencies` para ver el árbol completo
|
|
265
|
+
- [ ] Buscar "omitted for conflict" en el árbol de dependencias
|
|
266
|
+
- [ ] Verificar que annotation processors están en `annotationProcessor`, no solo en `compileOnly`
|
|
267
|
+
- [ ] `mvn compile -X` o `./gradlew compileJava --info` para log verbose
|
|
268
|
+
- [ ] Para errores de runtime: verificar diferencia de scope `compile` vs `provided`
|
|
269
|
+
- [ ] En builds multi-módulo: compilar dependencias en orden correcto
|
|
270
|
+
|
|
271
|
+
## Referencias
|
|
272
|
+
|
|
273
|
+
- [Maven Dependency Plugin](https://maven.apache.org/plugins/maven-dependency-plugin/)
|
|
274
|
+
- [Gradle Dependency Management](https://docs.gradle.org/current/userguide/dependency_management.html)
|
|
275
|
+
- [Lombok Setup](https://projectlombok.org/setup/gradle)
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
*Skill creado con swl:crear-skill el 2026-03-31. Versión 1.0.0.*
|