@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,270 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-errors-php
|
|
3
|
+
description: >
|
|
4
|
+
Resolución de errores de build e instalación PHP: Composer, autoload, errores de
|
|
5
|
+
PHP fatal/parse, incompatibilidades de versión, extensiones faltantes y errores
|
|
6
|
+
de Laravel/Artisan. Cargar cuando un build PHP falle, Composer reporte conflictos,
|
|
7
|
+
o haya errores de autoload o extensiones faltantes.
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
herramientasPermitidas: [Read, Bash, Grep]
|
|
10
|
+
exclusiones:
|
|
11
|
+
- "No cargar para errores lógicos de la aplicación PHP en runtime (QueryException, ErrorException por lógica incorrecta) cuando Composer y autoload funcionan — si la app arranca pero falla en una ruta específica, es un bug de lógica, no de build."
|
|
12
|
+
- "No cargar para fallos de PHPUnit/Pest en assertions cuando el autoload funciona correctamente — si `vendor/autoload.php` carga bien pero los tests fallan por valores incorrectos, es un error de lógica de tests."
|
|
13
|
+
- "No cargar para diseñar la arquitectura Laravel desde cero (Service Providers, Eloquent models, repositorios) — si la pregunta es cómo estructurar un proyecto nuevo, cargar `php-patrones` o `php-experto`."
|
|
14
|
+
- "No cargar para errores de configuración de servidor web (Nginx, Apache, PHP-FPM) que no son errores de Composer o autoload — si la app falla a nivel de servidor, es configuración de infraestructura."
|
|
15
|
+
evolvable: true # default para skill estandar
|
|
16
|
+
---
|
|
17
|
+
# Build Errors PHP — Diagnóstico y Solución
|
|
18
|
+
|
|
19
|
+
## Cuándo NO cargar
|
|
20
|
+
|
|
21
|
+
- Composer y autoload funcionan pero la app falla en una ruta específica — es un bug de lógica de la aplicación, no de build.
|
|
22
|
+
- PHPUnit compila y carga pero los tests fallan en assertions — es un error de lógica de tests.
|
|
23
|
+
- La pregunta es cómo diseñar la arquitectura Laravel — para diseño cargar `php-patrones`.
|
|
24
|
+
|
|
25
|
+
## Cuándo cargar
|
|
26
|
+
|
|
27
|
+
- `composer install` o `composer update` falla con conflictos de dependencias
|
|
28
|
+
- Errores fatales de PHP (`Class not found`, `Call to undefined function`)
|
|
29
|
+
- Errores de autoload (`Class ... not found` después de agregar clases nuevas)
|
|
30
|
+
- `php artisan` falla con errores de configuración o migraciones
|
|
31
|
+
- Extensiones PHP faltantes (`ext-mbstring`, `ext-pdo`, `ext-gd`)
|
|
32
|
+
- Incompatibilidades de versión de PHP (7.4 vs 8.1 vs 8.3)
|
|
33
|
+
- Errores de `phpunit` o `pest` al ejecutar tests
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Errores de Composer — causa y solución
|
|
38
|
+
|
|
39
|
+
### `Your requirements could not be resolved to an installable set of packages`
|
|
40
|
+
|
|
41
|
+
**Causa**: dos dependencias requieren versiones incompatibles de una tercera.
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Diagnóstico: ver el árbol de dependencias
|
|
45
|
+
composer why nombre-paquete
|
|
46
|
+
composer depends nombre-paquete
|
|
47
|
+
|
|
48
|
+
# Ver conflicto específico
|
|
49
|
+
composer why-not nombre-paquete version
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Soluciones**:
|
|
53
|
+
1. Actualizar la dependencia problemática: `composer update nombre-paquete --with-dependencies`
|
|
54
|
+
2. Relajar la restricción de versión en `composer.json`
|
|
55
|
+
3. Agregar alias de versión si la incompatibilidad es menor
|
|
56
|
+
|
|
57
|
+
### `Package ... requires php ^8.1 but your php version (7.4) does not satisfy`
|
|
58
|
+
|
|
59
|
+
**Causa**: el paquete requiere una versión de PHP más nueva.
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Verificar versión de PHP
|
|
63
|
+
php -v
|
|
64
|
+
|
|
65
|
+
# Verificar qué versión ve Composer
|
|
66
|
+
composer diagnose
|
|
67
|
+
|
|
68
|
+
# Forzar versión de plataforma (último recurso, puede ocultar problemas)
|
|
69
|
+
composer config platform.php 8.1
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Solución real**: actualizar PHP a la versión requerida.
|
|
73
|
+
|
|
74
|
+
### `Class ... not found` después de `composer install`
|
|
75
|
+
|
|
76
|
+
**Diagnóstico**:
|
|
77
|
+
```bash
|
|
78
|
+
# ¿El autoload está regenerado?
|
|
79
|
+
composer dump-autoload
|
|
80
|
+
|
|
81
|
+
# ¿El namespace coincide con la estructura de directorios?
|
|
82
|
+
# Verificar psr-4 en composer.json
|
|
83
|
+
grep -A5 '"psr-4"' composer.json
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Causa frecuente**: el namespace de la clase no coincide con la ruta del archivo.
|
|
87
|
+
Con PSR-4, `App\Services\FacturaService` debe estar en `app/Services/FacturaService.php`
|
|
88
|
+
(respetando mayúsculas exactas).
|
|
89
|
+
|
|
90
|
+
**Gotcha en Linux**: el filesystem es case-sensitive. `FacturaService.php` y
|
|
91
|
+
`facturaservice.php` son archivos distintos. En macOS/Windows funciona, en
|
|
92
|
+
producción (Linux) falla.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Errores de extensiones PHP
|
|
97
|
+
|
|
98
|
+
### `Call to undefined function ...` o `Class ... not found` (extensión faltante)
|
|
99
|
+
|
|
100
|
+
**Extensiones comunes requeridas**:
|
|
101
|
+
|
|
102
|
+
| Extensión | Requerida por | Instalación Ubuntu |
|
|
103
|
+
|-----------|--------------|-------------------|
|
|
104
|
+
| `ext-mbstring` | Laravel, Symfony | `apt install php-mbstring` |
|
|
105
|
+
| `ext-xml` | PHPUnit, Composer | `apt install php-xml` |
|
|
106
|
+
| `ext-curl` | Guzzle, HTTP clients | `apt install php-curl` |
|
|
107
|
+
| `ext-gd` | Procesamiento de imágenes | `apt install php-gd` |
|
|
108
|
+
| `ext-pdo_mysql` | MySQL con PDO | `apt install php-mysql` |
|
|
109
|
+
| `ext-pdo_pgsql` | PostgreSQL con PDO | `apt install php-pgsql` |
|
|
110
|
+
| `ext-redis` | Cache/sesiones Redis | `pecl install redis` |
|
|
111
|
+
| `ext-zip` | Composer, manejo de ZIP | `apt install php-zip` |
|
|
112
|
+
| `ext-bcmath` | Cálculos de precisión | `apt install php-bcmath` |
|
|
113
|
+
| `ext-intl` | Internacionalización | `apt install php-intl` |
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Ver extensiones instaladas
|
|
117
|
+
php -m
|
|
118
|
+
|
|
119
|
+
# Verificar si una extensión específica está activa
|
|
120
|
+
php -m | grep -i mbstring
|
|
121
|
+
|
|
122
|
+
# Ver la configuración de PHP (php.ini activo)
|
|
123
|
+
php --ini
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Gotcha**: en sistemas con múltiples versiones de PHP, `php -m` puede mostrar
|
|
127
|
+
extensiones de una versión distinta a la que usa el servidor web. Verificar con
|
|
128
|
+
`phpinfo()` en el servidor.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Errores de Laravel / Artisan
|
|
133
|
+
|
|
134
|
+
### `SQLSTATE[HY000] [2002] Connection refused`
|
|
135
|
+
|
|
136
|
+
**Causa**: la base de datos no está accesible con la configuración de `.env`.
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Verificar configuración
|
|
140
|
+
php artisan config:clear
|
|
141
|
+
php artisan config:show database
|
|
142
|
+
|
|
143
|
+
# Verificar conectividad
|
|
144
|
+
php artisan db:monitor
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Gotcha con Docker**: si la BD corre en Docker, el host no es `localhost` sino
|
|
148
|
+
el nombre del servicio (`mysql`, `postgres`) definido en `docker-compose.yml`.
|
|
149
|
+
|
|
150
|
+
### `The key ... was not found in the cipher`
|
|
151
|
+
|
|
152
|
+
**Causa**: falta la clave de aplicación.
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
php artisan key:generate
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### `Class "App\Models\..." not found` en producción
|
|
159
|
+
|
|
160
|
+
**Causa común**: el cache de configuración/clases tiene datos viejos.
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
# Limpiar todos los caches
|
|
164
|
+
php artisan optimize:clear
|
|
165
|
+
|
|
166
|
+
# O individualmente:
|
|
167
|
+
php artisan config:clear
|
|
168
|
+
php artisan cache:clear
|
|
169
|
+
php artisan route:clear
|
|
170
|
+
php artisan view:clear
|
|
171
|
+
composer dump-autoload -o
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### `Migration ... already exists` o errores de migraciones
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Ver estado de migraciones
|
|
178
|
+
php artisan migrate:status
|
|
179
|
+
|
|
180
|
+
# Correr migraciones pendientes
|
|
181
|
+
php artisan migrate
|
|
182
|
+
|
|
183
|
+
# Si la tabla migrations está corrupta (último recurso)
|
|
184
|
+
php artisan migrate:fresh --seed # DESTRUCTIVO: borra todas las tablas
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Errores de PHP fatal / parse
|
|
190
|
+
|
|
191
|
+
### `Parse error: syntax error, unexpected ...`
|
|
192
|
+
|
|
193
|
+
**Causa**: sintaxis de versión nueva usada en PHP viejo.
|
|
194
|
+
|
|
195
|
+
| Sintaxis | Versión mínima |
|
|
196
|
+
|----------|---------------|
|
|
197
|
+
| `match` expression | PHP 8.0 |
|
|
198
|
+
| Named arguments `fn(name: $val)` | PHP 8.0 |
|
|
199
|
+
| Union types `int\|string` | PHP 8.0 |
|
|
200
|
+
| `enum` | PHP 8.1 |
|
|
201
|
+
| Fibers | PHP 8.1 |
|
|
202
|
+
| Readonly properties | PHP 8.1 |
|
|
203
|
+
| Intersection types `A&B` | PHP 8.1 |
|
|
204
|
+
| `readonly` classes | PHP 8.2 |
|
|
205
|
+
| DNF types `(A&B)\|null` | PHP 8.2 |
|
|
206
|
+
| `#[\Override]` attribute | PHP 8.3 |
|
|
207
|
+
| Typed class constants | PHP 8.3 |
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# Verificar versión de PHP
|
|
211
|
+
php -v
|
|
212
|
+
|
|
213
|
+
# Verificar sintaxis sin ejecutar
|
|
214
|
+
php -l archivo.php
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### `Allowed memory size of N bytes exhausted`
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# Aumentar memoria temporalmente
|
|
221
|
+
php -d memory_limit=512M artisan migrate
|
|
222
|
+
|
|
223
|
+
# En php.ini
|
|
224
|
+
memory_limit = 256M
|
|
225
|
+
|
|
226
|
+
# En Composer (común con muchas dependencias)
|
|
227
|
+
COMPOSER_MEMORY_LIMIT=-1 composer update
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Errores de PHPUnit / Pest
|
|
233
|
+
|
|
234
|
+
### `Class "Tests\TestCase" not found`
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
# Regenerar autoload incluyendo dev
|
|
238
|
+
composer dump-autoload
|
|
239
|
+
|
|
240
|
+
# Verificar que phpunit.xml tiene el bootstrap correcto
|
|
241
|
+
grep bootstrap phpunit.xml
|
|
242
|
+
# Debe apuntar a vendor/autoload.php
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### `No tests executed!`
|
|
246
|
+
|
|
247
|
+
**Causas comunes**:
|
|
248
|
+
1. Los archivos de test no siguen la convención de nombres (`*Test.php` para PHPUnit)
|
|
249
|
+
2. Los métodos de test no tienen prefijo `test_` ni anotación `@test`
|
|
250
|
+
3. El directorio de tests no está configurado en `phpunit.xml`
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Gotchas / Errores comunes no obvios
|
|
255
|
+
|
|
256
|
+
- **`Class "App\Models\Usuario" not found`** después de crear el modelo aunque el archivo existe con el nombre correcto: el autoload de Composer no se ha regenerado después de crear el archivo. Causa: Composer cachea el mapa de clases PSR-4; los archivos nuevos no se detectan hasta que se ejecuta `composer dump-autoload`. Solución: ejecutar `composer dump-autoload` después de crear cualquier clase PHP nueva — en desarrollo local es conveniente usar `composer dump-autoload -o` (optimizado) para detectar el problema antes de llegar a producción.
|
|
257
|
+
- **`composer install` falla con "platform check failed" en CI aunque la versión de PHP es la correcta**: el `platform` configurado en `composer.json` requiere extensiones PHP que están en el servidor de desarrollo pero no en la imagen de CI. Causa: la clave `config.platform.php` en composer.json fija la plataforma pero no las extensiones; si el lock fue generado con extensiones disponibles localmente, el CI puede carecer de ellas. Solución: verificar con `php -m` en CI qué extensiones están disponibles y agregar la imagen base correcta de PHP que incluya `ext-mbstring`, `ext-pdo`, etc., o instalarlas en el step de setup.
|
|
258
|
+
- **`php artisan migrate` falla con "SQLSTATE[HY000] [2002] Connection refused"** aunque las variables de entorno parecen correctas: el archivo `.env` en CI no tiene las credenciales de base de datos o el servicio de base de datos no está iniciado todavía en el pipeline. Causa: en pipelines de CI como GitHub Actions, el servicio de base de datos se inicia de forma asíncrona y puede no estar listo cuando `php artisan migrate` corre. Solución: agregar un health check que espere a que la base de datos esté disponible antes de correr las migraciones — en GitHub Actions usar `options: --health-cmd "mysqladmin ping"` en el service container.
|
|
259
|
+
- **`composer update` cambia versiones sin advertir que hay conflictos y la app falla en runtime por incompatibilidad de API**: Composer resuelve satisfactoriamente el grafo de versiones pero la API del paquete cambió de forma incompatible entre minor versions. Causa: Composer no puede detectar breaking changes en la API del código, solo conflictos de versiones semánticas declarados en composer.json. Solución: después de `composer update`, ejecutar `composer why-not paquete/nombre version` para ver qué cambió; revisar el CHANGELOG del paquete antes de actualizar y ejecutar los tests de integración.
|
|
260
|
+
|
|
261
|
+
## Checklist de diagnóstico
|
|
262
|
+
|
|
263
|
+
- [ ] `php -v` — ¿versión correcta?
|
|
264
|
+
- [ ] `php -m` — ¿extensiones necesarias instaladas?
|
|
265
|
+
- [ ] `composer diagnose` — ¿Composer detecta problemas?
|
|
266
|
+
- [ ] `composer dump-autoload` — ¿autoload regenerado?
|
|
267
|
+
- [ ] ¿El namespace PSR-4 coincide con la ruta del archivo (case-sensitive)?
|
|
268
|
+
- [ ] Para Laravel: `php artisan optimize:clear` — ¿caches limpios?
|
|
269
|
+
- [ ] Para errores de sintaxis: ¿la versión de PHP soporta la sintaxis usada?
|
|
270
|
+
- [ ] `composer why-not paquete version` — ¿conflictos de dependencias?
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-errors-python
|
|
3
|
+
description: >
|
|
4
|
+
Resolución de errores de build e instalación Python: pip, poetry, virtualenv,
|
|
5
|
+
pyproject.toml, errores de import, incompatibilidades de versión y compilación
|
|
6
|
+
de extensiones C. Cargar cuando un build Python falle, pip install dé error,
|
|
7
|
+
o haya ModuleNotFoundError/ImportError inesperados.
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
herramientasPermitidas: [Read, Bash, Grep]
|
|
10
|
+
exclusiones:
|
|
11
|
+
- "No cargar para errores de runtime de la aplicación Python (AttributeError, KeyError, TypeError en ejecución) — esos son bugs de lógica, no errores de build; diagnosticar con el stack trace directamente."
|
|
12
|
+
- "No cargar para diseñar la estructura de dependencias desde cero — si la pregunta es qué paquetes incluir en pyproject.toml, cargar `patrones-python` o el skill del framework (fastapi-experto, django-experto)."
|
|
13
|
+
- "No cargar para errores de linting o formateo (ruff, black, flake8 reportando style issues) — esos no son errores de build; corregir según las reglas del linter directamente."
|
|
14
|
+
- "No cargar cuando el error ya es resuelto y la pregunta es refactorizar el código de dependencias — eso es mantenimiento, no diagnóstico de build."
|
|
15
|
+
evolvable: true # default para skill estandar
|
|
16
|
+
---
|
|
17
|
+
# Build Errors Python — Diagnóstico y Solución
|
|
18
|
+
|
|
19
|
+
## Cuándo NO cargar
|
|
20
|
+
|
|
21
|
+
- El error ocurre en runtime (AttributeError, TypeError, KeyError) — no es un error de build; leer el stack trace directamente.
|
|
22
|
+
- La pregunta es qué paquetes usar, no por qué fallan al instalar — para estructura de dependencias cargar `fastapi-experto` o `django-experto`.
|
|
23
|
+
- El problema es un warning de linting (ruff, flake8) — no es un error de instalación ni compilación.
|
|
24
|
+
|
|
25
|
+
## Cuándo cargar
|
|
26
|
+
|
|
27
|
+
- `pip install` falla con errores de compilación o dependencias
|
|
28
|
+
- `poetry install` o `poetry lock` reporta conflictos de versión
|
|
29
|
+
- `ModuleNotFoundError` o `ImportError` en código que debería funcionar
|
|
30
|
+
- Errores al ejecutar `python setup.py` o `pyproject.toml` mal configurado
|
|
31
|
+
- Incompatibilidades de versión de Python (3.9 vs 3.12)
|
|
32
|
+
- Errores de extensiones C (`gcc`, `wheel`, `manylinux`)
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Errores de pip — causa y solución
|
|
37
|
+
|
|
38
|
+
### `Could not find a version that satisfies the requirement X`
|
|
39
|
+
|
|
40
|
+
**Causa**: el paquete no existe, o no existe para la versión de Python/plataforma actual.
|
|
41
|
+
|
|
42
|
+
**Diagnóstico**:
|
|
43
|
+
```bash
|
|
44
|
+
# Verificar versión de Python y plataforma
|
|
45
|
+
python --version
|
|
46
|
+
pip debug --verbose | head -20
|
|
47
|
+
|
|
48
|
+
# Buscar versiones disponibles del paquete
|
|
49
|
+
pip index versions nombre-paquete
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Soluciones**:
|
|
53
|
+
1. Nombre del paquete incorrecto: `pip search` deprecado — buscar en https://pypi.org
|
|
54
|
+
2. Paquete no soporta la versión de Python: verificar `python_requires` del paquete
|
|
55
|
+
3. Paquete sin wheel para la plataforma: necesita compilar desde fuente (requiere build tools)
|
|
56
|
+
|
|
57
|
+
### `ERROR: No matching distribution found for X==Y`
|
|
58
|
+
|
|
59
|
+
**Causa**: la versión exacta no existe o no tiene wheel para la plataforma.
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Ver todas las versiones disponibles
|
|
63
|
+
pip install nombre-paquete==
|
|
64
|
+
# pip mostrará las versiones disponibles en el mensaje de error
|
|
65
|
+
|
|
66
|
+
# Instalar la versión más reciente compatible
|
|
67
|
+
pip install "nombre-paquete>=2.0,<3.0"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### `error: subprocess-exited-with-error` (compilación de extensiones C)
|
|
71
|
+
|
|
72
|
+
**Causa**: falta el compilador C o las cabeceras de desarrollo del sistema.
|
|
73
|
+
|
|
74
|
+
**Soluciones por sistema operativo**:
|
|
75
|
+
```bash
|
|
76
|
+
# Ubuntu/Debian
|
|
77
|
+
sudo apt-get install build-essential python3-dev libpq-dev libffi-dev
|
|
78
|
+
|
|
79
|
+
# macOS
|
|
80
|
+
xcode-select --install
|
|
81
|
+
brew install postgresql # para psycopg2
|
|
82
|
+
|
|
83
|
+
# Windows
|
|
84
|
+
# Instalar "Build Tools for Visual Studio" desde visualstudio.microsoft.com
|
|
85
|
+
# O usar el wheel precompilado:
|
|
86
|
+
pip install psycopg2-binary # en vez de psycopg2
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Gotcha**: `psycopg2` requiere libpq-dev. Usar `psycopg2-binary` en desarrollo
|
|
90
|
+
y `psycopg2` con libpq en producción (el binary no es recomendado en prod).
|
|
91
|
+
|
|
92
|
+
### `ResolutionImpossible` (pip >= 22.0)
|
|
93
|
+
|
|
94
|
+
**Causa**: dos dependencias requieren versiones incompatibles de una tercera.
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Diagnóstico: ver el árbol de dependencias
|
|
98
|
+
pip install pipdeptree
|
|
99
|
+
pipdeptree --warn silence | grep -i conflicto
|
|
100
|
+
|
|
101
|
+
# Ver qué depende de qué
|
|
102
|
+
pipdeptree --reverse --packages nombre-paquete
|
|
103
|
+
|
|
104
|
+
# Forzar resolución (último recurso, puede romper cosas)
|
|
105
|
+
pip install --force-reinstall nombre-paquete==version
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Solución real**: actualizar las dependencias en conflicto o fijar versiones compatibles
|
|
109
|
+
en `requirements.txt` / `pyproject.toml`.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Errores de poetry — causa y solución
|
|
114
|
+
|
|
115
|
+
### `SolverProblemError: ... is not compatible with ...`
|
|
116
|
+
|
|
117
|
+
**Causa**: poetry usa un solver estricto que no permite conflictos.
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Ver por qué falla la resolución
|
|
121
|
+
poetry install -vvv
|
|
122
|
+
|
|
123
|
+
# Actualizar una dependencia específica
|
|
124
|
+
poetry update nombre-paquete
|
|
125
|
+
|
|
126
|
+
# Si el conflicto es con la versión de Python
|
|
127
|
+
poetry env use python3.12
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### `poetry.lock` desactualizado respecto a `pyproject.toml`
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# Regenerar el lock file
|
|
134
|
+
poetry lock --no-update # mantener versiones actuales donde sea posible
|
|
135
|
+
poetry lock # resolver desde cero
|
|
136
|
+
|
|
137
|
+
# Instalar después de actualizar el lock
|
|
138
|
+
poetry install
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Errores de import — causa y solución
|
|
144
|
+
|
|
145
|
+
### `ModuleNotFoundError: No module named 'X'`
|
|
146
|
+
|
|
147
|
+
**Diagnóstico paso a paso**:
|
|
148
|
+
```bash
|
|
149
|
+
# 1. ¿El paquete está instalado?
|
|
150
|
+
pip show nombre-paquete
|
|
151
|
+
|
|
152
|
+
# 2. ¿Estoy en el virtualenv correcto?
|
|
153
|
+
which python # Unix
|
|
154
|
+
where python # Windows
|
|
155
|
+
|
|
156
|
+
# 3. ¿El nombre de import difiere del nombre del paquete?
|
|
157
|
+
# Ejemplo: pip install Pillow → import PIL
|
|
158
|
+
# Ejemplo: pip install python-dateutil → import dateutil
|
|
159
|
+
# Ejemplo: pip install scikit-learn → import sklearn
|
|
160
|
+
|
|
161
|
+
# 4. ¿El sys.path incluye el directorio del módulo?
|
|
162
|
+
python -c "import sys; print('\n'.join(sys.path))"
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Gotcha de nombres**: el nombre en pip NO siempre coincide con el nombre de import.
|
|
166
|
+
Casos frecuentes:
|
|
167
|
+
|
|
168
|
+
| Nombre pip | Nombre import |
|
|
169
|
+
|-----------|--------------|
|
|
170
|
+
| `Pillow` | `PIL` |
|
|
171
|
+
| `python-dateutil` | `dateutil` |
|
|
172
|
+
| `scikit-learn` | `sklearn` |
|
|
173
|
+
| `beautifulsoup4` | `bs4` |
|
|
174
|
+
| `python-dotenv` | `dotenv` |
|
|
175
|
+
| `PyYAML` | `yaml` |
|
|
176
|
+
| `opencv-python` | `cv2` |
|
|
177
|
+
|
|
178
|
+
### `ImportError: cannot import name 'X' from 'Y'`
|
|
179
|
+
|
|
180
|
+
**Causas comunes**:
|
|
181
|
+
1. Versión vieja del paquete que no tiene la clase/función
|
|
182
|
+
2. Importación circular entre módulos propios
|
|
183
|
+
3. Archivo local con el mismo nombre que un módulo estándar (shadowing)
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
# Verificar versión instalada
|
|
187
|
+
pip show pydantic | grep Version
|
|
188
|
+
|
|
189
|
+
# Ejemplo: BaseSettings se movió en Pydantic v2
|
|
190
|
+
# Pydantic v1: from pydantic import BaseSettings
|
|
191
|
+
# Pydantic v2: from pydantic_settings import BaseSettings
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Gotcha de shadowing**: un archivo `email.py` en tu proyecto oculta
|
|
195
|
+
`import email` de la biblioteca estándar. Renombrar el archivo local.
|
|
196
|
+
|
|
197
|
+
### `ImportError: attempted relative import with no known parent package`
|
|
198
|
+
|
|
199
|
+
**Causa**: ejecutar un módulo como script (`python modulo.py`) en vez de como
|
|
200
|
+
módulo (`python -m paquete.modulo`).
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# MAL
|
|
204
|
+
python src/app/services/factura.py
|
|
205
|
+
|
|
206
|
+
# BIEN
|
|
207
|
+
python -m src.app.services.factura
|
|
208
|
+
|
|
209
|
+
# O ejecutar desde la raíz del proyecto con el paquete instalado
|
|
210
|
+
pip install -e .
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Errores de pyproject.toml / setup.cfg
|
|
216
|
+
|
|
217
|
+
### `Invalid value for requires-python`
|
|
218
|
+
|
|
219
|
+
```toml
|
|
220
|
+
# MAL
|
|
221
|
+
[project]
|
|
222
|
+
requires-python = "3.12" # sin operador de comparación
|
|
223
|
+
|
|
224
|
+
# BIEN
|
|
225
|
+
[project]
|
|
226
|
+
requires-python = ">=3.10"
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### `build-system.requires` faltante
|
|
230
|
+
|
|
231
|
+
```toml
|
|
232
|
+
# Obligatorio en pyproject.toml para que pip pueda construir el paquete
|
|
233
|
+
[build-system]
|
|
234
|
+
requires = ["setuptools>=68.0", "wheel"]
|
|
235
|
+
build-backend = "setuptools.backends._legacy:_Backend"
|
|
236
|
+
|
|
237
|
+
# Con Poetry
|
|
238
|
+
[build-system]
|
|
239
|
+
requires = ["poetry-core>=1.0.0"]
|
|
240
|
+
build-backend = "poetry.core.masonry.api"
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## Virtualenv — errores comunes
|
|
246
|
+
|
|
247
|
+
### `externally-managed-environment` (Python 3.12+ con PEP 668)
|
|
248
|
+
|
|
249
|
+
**Causa**: Python del sistema en Debian/Ubuntu/Fedora ya no permite `pip install` global.
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
# Crear virtualenv (solución correcta)
|
|
253
|
+
python -m venv .venv
|
|
254
|
+
source .venv/bin/activate # Unix
|
|
255
|
+
.venv\Scripts\activate # Windows
|
|
256
|
+
|
|
257
|
+
# Solo como último recurso (no recomendado)
|
|
258
|
+
pip install --break-system-packages nombre-paquete
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Virtualenv apunta a Python eliminado
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
# Verificar si el virtualenv está roto
|
|
265
|
+
python -c "import sys; print(sys.executable)"
|
|
266
|
+
# Si apunta a un Python que ya no existe:
|
|
267
|
+
|
|
268
|
+
# Recrear el virtualenv
|
|
269
|
+
rm -rf .venv
|
|
270
|
+
python3.12 -m venv .venv
|
|
271
|
+
pip install -r requirements.txt
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## Gotchas / Errores comunes no obvios
|
|
277
|
+
|
|
278
|
+
- **`pip install` pasa pero `python -c "import X"` falla con ModuleNotFoundError**: el paquete se instaló en el Python del sistema, pero el proyecto usa el virtualenv. Causa: ejecutar `pip install` sin activar el virtualenv primero — instala en el intérprete global, no en `.venv`. Solución: verificar con `which pip` que apunta a `.venv/bin/pip` antes de instalar; si no, activar con `source .venv/bin/activate` y reinstalar.
|
|
279
|
+
- **`psycopg2-binary` funciona localmente pero falla en CI o Docker con `symbol lookup error`**: el binary wheel incluye la librería libpq compilada para una plataforma específica que no coincide con la imagen del contenedor. Causa: `psycopg2-binary` embebe libpq compilada para un libc/glibc diferente. Solución: usar `psycopg2` (sin `-binary`) en producción/CI e instalar `libpq-dev` en el Dockerfile; dejar `psycopg2-binary` solo para desarrollo local.
|
|
280
|
+
- **Poetry resuelve el lockfile sin errores pero `poetry install` en CI falla con conflicto de versión**: el `poetry.lock` fue generado en una versión de Poetry diferente a la del CI. Causa: Poetry tiene diferencias de resolución entre versiones menores que afectan los hashes del lockfile. Solución: fijar la versión de Poetry en CI con `pip install poetry==X.Y.Z` — la misma que usaron los desarrolladores localmente.
|
|
281
|
+
- **`ModuleNotFoundError` en import relativo aunque el archivo existe**: el módulo se ejecuta como script (`python src/modulo.py`) en vez de como módulo del paquete. Causa: los imports relativos requieren que el módulo sea parte de un paquete (invocado con `-m`). Solución: ejecutar `python -m src.modulo` desde la raíz del proyecto, o instalar el proyecto en modo editable con `pip install -e .`.
|
|
282
|
+
|
|
283
|
+
## Checklist de diagnóstico
|
|
284
|
+
|
|
285
|
+
- [ ] `python --version` — ¿versión correcta?
|
|
286
|
+
- [ ] `which python` / `where python` — ¿virtualenv correcto?
|
|
287
|
+
- [ ] `pip list` — ¿paquete instalado? ¿versión correcta?
|
|
288
|
+
- [ ] `pipdeptree` — ¿conflictos de dependencias?
|
|
289
|
+
- [ ] ¿Nombre de import ≠ nombre de pip? (tabla de nombres comunes)
|
|
290
|
+
- [ ] ¿Archivo local con nombre de módulo estándar? (shadowing)
|
|
291
|
+
- [ ] Para errores de compilación C: ¿build-essential/python3-dev instalados?
|
|
292
|
+
- [ ] `pip install -e .` — ¿proyecto instalado en modo editable?
|