@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.
Files changed (702) hide show
  1. package/CLAUDE.md +238 -0
  2. package/README.md +560 -0
  3. package/_userland/agentes/.gitkeep +0 -0
  4. package/_userland/habilidades/.gitkeep +0 -0
  5. package/agentes/.evolved.json +9 -0
  6. package/agentes/accesibilidad-wcag-swl.md +692 -0
  7. package/agentes/arquitecto-swl.md +238 -0
  8. package/agentes/auto-evolucion-swl.md +854 -0
  9. package/agentes/backend-api-swl.md +470 -0
  10. package/agentes/backend-csharp-swl.md +418 -0
  11. package/agentes/backend-go-swl.md +388 -0
  12. package/agentes/backend-java-swl.md +279 -0
  13. package/agentes/backend-node-swl.md +477 -0
  14. package/agentes/backend-python-swl.md +608 -0
  15. package/agentes/backend-rust-swl.md +362 -0
  16. package/agentes/backend-workers-swl.md +480 -0
  17. package/agentes/cloud-infra-swl.md +485 -0
  18. package/agentes/consolidador-swl.md +539 -0
  19. package/agentes/datos-swl.md +584 -0
  20. package/agentes/depurador-swl.md +349 -0
  21. package/agentes/devops-ci-swl.md +374 -0
  22. package/agentes/disenador-ui-swl.md +558 -0
  23. package/agentes/documentador-swl.md +343 -0
  24. package/agentes/evals/arquitecto-swl.evals.json +56 -0
  25. package/agentes/evals/auto-evolucion-swl.evals.json +68 -0
  26. package/agentes/evals/implementador-swl.evals.json +56 -0
  27. package/agentes/evals/orquestador-swl.evals.json +60 -0
  28. package/agentes/evals/perfilador-usuario-swl.evals.json +60 -0
  29. package/agentes/evals/red-team-swl.evals.json +59 -0
  30. package/agentes/evals/revisor-codigo-swl.evals.json +59 -0
  31. package/agentes/frontend-angular-swl.md +627 -0
  32. package/agentes/frontend-css-swl.md +720 -0
  33. package/agentes/frontend-react-swl.md +696 -0
  34. package/agentes/frontend-swl.md +500 -0
  35. package/agentes/frontend-tailwind-swl.md +830 -0
  36. package/agentes/implementador-swl.md +328 -0
  37. package/agentes/investigador-swl.md +430 -0
  38. package/agentes/investigador-ux-swl.md +500 -0
  39. package/agentes/llm-apps-swl.md +276 -0
  40. package/agentes/migrador-swl.md +417 -0
  41. package/agentes/mobile-android-swl.md +509 -0
  42. package/agentes/mobile-cross-swl.md +539 -0
  43. package/agentes/mobile-ios-swl.md +500 -0
  44. package/agentes/mobile-testing-swl.md +300 -0
  45. package/agentes/notificador-swl.md +916 -0
  46. package/agentes/observabilidad-swl.md +436 -0
  47. package/agentes/orquestador-swl.md +884 -0
  48. package/agentes/pagos-swl.md +283 -0
  49. package/agentes/perfilador-usuario-swl.md +306 -0
  50. package/agentes/planificador-swl.md +402 -0
  51. package/agentes/producto-prd-swl.md +587 -0
  52. package/agentes/red-team-swl.md +216 -0
  53. package/agentes/release-manager-swl.md +568 -0
  54. package/agentes/rendimiento-swl.md +714 -0
  55. package/agentes/resolutor-build-swl.md +243 -0
  56. package/agentes/revisor-angular-swl.md +276 -0
  57. package/agentes/revisor-codigo-swl.md +348 -0
  58. package/agentes/revisor-csharp-swl.md +262 -0
  59. package/agentes/revisor-go-swl.md +257 -0
  60. package/agentes/revisor-java-swl.md +255 -0
  61. package/agentes/revisor-kotlin-swl.md +271 -0
  62. package/agentes/revisor-nextjs-swl.md +279 -0
  63. package/agentes/revisor-php-swl.md +269 -0
  64. package/agentes/revisor-react-swl.md +276 -0
  65. package/agentes/revisor-rust-swl.md +344 -0
  66. package/agentes/revisor-seguridad-swl.md +390 -0
  67. package/agentes/revisor-swift-swl.md +266 -0
  68. package/agentes/revisor-typescript-swl.md +344 -0
  69. package/agentes/sre-swl.md +265 -0
  70. package/agentes/tdd-qa-swl.md +354 -0
  71. package/agentes/ux-disenador-swl.md +501 -0
  72. package/bin/lib/bot-comandos.js +1030 -0
  73. package/bin/lib/bot-discovery.js +182 -0
  74. package/bin/lib/bot-git.js +142 -0
  75. package/bin/swl-ses.js +325 -0
  76. package/bin/swl-telegram-bot.js +442 -0
  77. package/bin/swl-telegram-bot.plist +21 -0
  78. package/bin/swl-telegram-bot.service +14 -0
  79. package/comandos/swl/.evolved.json +23 -0
  80. package/comandos/swl/actualizar.md +174 -0
  81. package/comandos/swl/adoptar-proyecto.md +207 -0
  82. package/comandos/swl/aprender.md +701 -0
  83. package/comandos/swl/auditar-deps.md +134 -0
  84. package/comandos/swl/autoresearch.md +170 -0
  85. package/comandos/swl/ayuda.md +224 -0
  86. package/comandos/swl/brainstorm.md +50 -0
  87. package/comandos/swl/checkpoint.md +330 -0
  88. package/comandos/swl/compactar.md +283 -0
  89. package/comandos/swl/configurar-ci.md +227 -0
  90. package/comandos/swl/contexto.md +112 -0
  91. package/comandos/swl/contribuir.md +233 -0
  92. package/comandos/swl/crear-skill.md +292 -0
  93. package/comandos/swl/cron.md +196 -0
  94. package/comandos/swl/dashboard.md +146 -0
  95. package/comandos/swl/discutir-fase.md +230 -0
  96. package/comandos/swl/ejecutar-fase.md +135 -0
  97. package/comandos/swl/evaluar-skill.md +487 -0
  98. package/comandos/swl/evolucion-estado.md +142 -0
  99. package/comandos/swl/evolucionar.md +259 -0
  100. package/comandos/swl/exportar-vault.md +189 -0
  101. package/comandos/swl/gateway.md +158 -0
  102. package/comandos/swl/inbox.md +116 -0
  103. package/comandos/swl/instalar.md +220 -0
  104. package/comandos/swl/instintos.md +86 -0
  105. package/comandos/swl/mapear-codebase.md +312 -0
  106. package/comandos/swl/mcp-status.md +175 -0
  107. package/comandos/swl/metricas.md +270 -0
  108. package/comandos/swl/modelo.md +102 -0
  109. package/comandos/swl/notificaciones.md +396 -0
  110. package/comandos/swl/nuevo-proyecto.md +154 -0
  111. package/comandos/swl/planear-fase.md +221 -0
  112. package/comandos/swl/plugins.md +256 -0
  113. package/comandos/swl/reflect-skills.md +125 -0
  114. package/comandos/swl/release.md +217 -0
  115. package/comandos/swl/revisar-impacto.md +206 -0
  116. package/comandos/swl/revisar.md +330 -0
  117. package/comandos/swl/salud.md +363 -0
  118. package/comandos/swl/sesiones.md +200 -0
  119. package/comandos/swl/skill-search.md +113 -0
  120. package/comandos/swl/verificar.md +585 -0
  121. package/comandos/swl/wiki.md +620 -0
  122. package/contextos/dev.md +32 -0
  123. package/contextos/research.md +30 -0
  124. package/contextos/review.md +31 -0
  125. package/habilidades/accesibilidad-a11y/SKILL.md +201 -0
  126. package/habilidades/accesibilidad-a11y/evals/evals.json +56 -0
  127. package/habilidades/accesibilidad-a11y/recursos/ejemplos-y-checklist-completo.md +441 -0
  128. package/habilidades/agent-browser/SKILL.md +218 -0
  129. package/habilidades/agentes-como-servicio/SKILL.md +218 -0
  130. package/habilidades/ai-runtime-security/SKILL.md +273 -0
  131. package/habilidades/angular-avanzado/SKILL.md +164 -0
  132. package/habilidades/angular-avanzado/recursos/ejemplos-avanzados.md +219 -0
  133. package/habilidades/angular-moderno/SKILL.md +186 -0
  134. package/habilidades/angular-moderno/evals/evals.json +45 -0
  135. package/habilidades/angular-moderno/recursos/ejemplos-avanzados.md +106 -0
  136. package/habilidades/api-rest-diseno/SKILL.md +191 -0
  137. package/habilidades/api-rest-diseno/recursos/openapi-template.yaml +506 -0
  138. package/habilidades/api-rest-diseno/recursos/referencia-api.md +140 -0
  139. package/habilidades/aprendizaje-continuo/SKILL.md +151 -0
  140. package/habilidades/aprendizaje-continuo/evals/evals.json +53 -0
  141. package/habilidades/aprendizaje-continuo/recursos/referencia-instintos.md +290 -0
  142. package/habilidades/async-python/SKILL.md +149 -0
  143. package/habilidades/async-python/evals/evals.json +47 -0
  144. package/habilidades/async-python/recursos/patrones-y-ejemplos-completos.md +292 -0
  145. package/habilidades/auth-patrones/.evolved.json +9 -0
  146. package/habilidades/auth-patrones/SKILL.md +413 -0
  147. package/habilidades/auth-patrones/recursos/implementaciones-completas.md +229 -0
  148. package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -0
  149. package/habilidades/auto-evolucion-protocolo/evals/evals.json +55 -0
  150. package/habilidades/auto-evolucion-protocolo/recursos/referencia-completa.md +145 -0
  151. package/habilidades/autoresearch/SKILL.md +268 -0
  152. package/habilidades/autoresearch/evals/evals.json +41 -0
  153. package/habilidades/autoresearch/recursos/checklist-template.md +191 -0
  154. package/habilidades/autoresearch/scripts/calcular-score.js +88 -0
  155. package/habilidades/azure-cloud/SKILL.md +308 -0
  156. package/habilidades/azure-cloud/recursos/aks.md +327 -0
  157. package/habilidades/backend-mcp-servidor/SKILL.md +270 -0
  158. package/habilidades/backend-production-resilience/SKILL.md +288 -0
  159. package/habilidades/brainstorming/SKILL.md +295 -0
  160. package/habilidades/brainstorming/recursos/componentes-html.md +247 -0
  161. package/habilidades/build-errors-cpp/SKILL.md +270 -0
  162. package/habilidades/build-errors-csharp/SKILL.md +265 -0
  163. package/habilidades/build-errors-go/SKILL.md +306 -0
  164. package/habilidades/build-errors-java/SKILL.md +278 -0
  165. package/habilidades/build-errors-kotlin/SKILL.md +303 -0
  166. package/habilidades/build-errors-nextjs/SKILL.md +312 -0
  167. package/habilidades/build-errors-php/SKILL.md +270 -0
  168. package/habilidades/build-errors-python/SKILL.md +292 -0
  169. package/habilidades/build-errors-rust/SKILL.md +284 -0
  170. package/habilidades/build-errors-swift/SKILL.md +272 -0
  171. package/habilidades/build-errors-typescript/SKILL.md +369 -0
  172. package/habilidades/checklist-calidad/SKILL.md +271 -0
  173. package/habilidades/checklist-calidad/recursos/quality-report-template.md +148 -0
  174. package/habilidades/checklist-seguridad/SKILL.md +285 -0
  175. package/habilidades/checkpoints-verificacion/SKILL.md +298 -0
  176. package/habilidades/checkpoints-verificacion/recursos/checkpoint-templates.md +360 -0
  177. package/habilidades/ci-cd-pipelines/SKILL.md +157 -0
  178. package/habilidades/ci-cd-pipelines/recursos/github-actions-template.yaml +403 -0
  179. package/habilidades/ci-cd-pipelines/recursos/pipelines-completos.md +487 -0
  180. package/habilidades/cloud-aws/SKILL.md +142 -0
  181. package/habilidades/cloud-aws/recursos/servicios-aws-referencia.md +321 -0
  182. package/habilidades/compactacion-contexto/SKILL.md +247 -0
  183. package/habilidades/contenedores-docker/SKILL.md +137 -0
  184. package/habilidades/contenedores-docker/recursos/dockerfile-template.dockerfile +160 -0
  185. package/habilidades/contenedores-docker/recursos/ejemplos-y-configuraciones.md +327 -0
  186. package/habilidades/context-builder/SKILL.md +170 -0
  187. package/habilidades/control-profundidad/SKILL.md +128 -0
  188. package/habilidades/csharp-experto/SKILL.md +322 -0
  189. package/habilidades/csharp-patrones/SKILL.md +316 -0
  190. package/habilidades/csharp-testing/SKILL.md +286 -0
  191. package/habilidades/css-moderno/SKILL.md +166 -0
  192. package/habilidades/css-moderno/evals/evals.json +43 -0
  193. package/habilidades/css-moderno/recursos/ejemplos-y-patrones-completos.md +337 -0
  194. package/habilidades/datos-etl/SKILL.md +129 -0
  195. package/habilidades/datos-etl/recursos/implementaciones-completas.md +322 -0
  196. package/habilidades/dbml-experto/SKILL.md +339 -0
  197. package/habilidades/dbml-experto/evals/evals.json +56 -0
  198. package/habilidades/dependencias-auditoria/SKILL.md +320 -0
  199. package/habilidades/deprecacion-migracion/SKILL.md +169 -0
  200. package/habilidades/deprecacion-migracion/recursos/implementaciones-completas.md +220 -0
  201. package/habilidades/design-tokens/SKILL.md +158 -0
  202. package/habilidades/design-tokens/recursos/tokens-y-configuracion.md +363 -0
  203. package/habilidades/devsecops-pipeline-security/SKILL.md +309 -0
  204. package/habilidades/diagrama-arquitectura/SKILL.md +165 -0
  205. package/habilidades/diagrama-arquitectura/assets/template.html +276 -0
  206. package/habilidades/discutir-fase/SKILL.md +188 -0
  207. package/habilidades/diseno-herramientas-agente/SKILL.md +199 -0
  208. package/habilidades/diseno-responsivo/SKILL.md +186 -0
  209. package/habilidades/diseno-responsivo/recursos/ejemplos-layouts.md +156 -0
  210. package/habilidades/django-experto/SKILL.md +205 -0
  211. package/habilidades/django-experto/recursos/async-django.md +390 -0
  212. package/habilidades/django-experto/recursos/drf-patrones.md +438 -0
  213. package/habilidades/django-experto/recursos/orm-avanzado.md +382 -0
  214. package/habilidades/django-experto/recursos/referencia-completa.md +188 -0
  215. package/habilidades/django-experto/recursos/testing-django.md +415 -0
  216. package/habilidades/doc-sync/SKILL.md +280 -0
  217. package/habilidades/drift-detection/SKILL.md +179 -0
  218. package/habilidades/ejecutar-fase/SKILL.md +468 -0
  219. package/habilidades/estilo-sin-ai-isms/SKILL.md +775 -0
  220. package/habilidades/estilo-sin-ai-isms/evals/evals.json +63 -0
  221. package/habilidades/estilo-sin-ai-isms/scripts/detectar_aiisms.py +500 -0
  222. package/habilidades/estructura-proyecto-claude/SKILL.md +215 -0
  223. package/habilidades/estructura-proyecto-claude/recursos/claude-md-template.md +261 -0
  224. package/habilidades/estructura-proyecto-claude/recursos/configuracion-y-extensiones.md +176 -0
  225. package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +289 -0
  226. package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +77 -0
  227. package/habilidades/estructura-proyecto-claude/recursos/variantes-por-stack.md +177 -0
  228. package/habilidades/evaluacion-agentes/SKILL.md +314 -0
  229. package/habilidades/event-driven/SKILL.md +153 -0
  230. package/habilidades/event-driven/recursos/implementaciones-completas.md +423 -0
  231. package/habilidades/extraccion-documentos/SKILL.md +221 -0
  232. package/habilidades/extractor-de-aprendizajes/.evolved.json +9 -0
  233. package/habilidades/extractor-de-aprendizajes/SKILL.md +311 -0
  234. package/habilidades/extractor-de-aprendizajes/evals/evals.json +55 -0
  235. package/habilidades/fastapi-experto/SKILL.md +221 -0
  236. package/habilidades/fastapi-experto/recursos/async-patterns.md +438 -0
  237. package/habilidades/fastapi-experto/recursos/dependency-injection.md +330 -0
  238. package/habilidades/fastapi-experto/recursos/referencia-completa.md +79 -0
  239. package/habilidades/fastapi-experto/recursos/testing-httpx.md +420 -0
  240. package/habilidades/filament-admin/SKILL.md +290 -0
  241. package/habilidades/frontend-avanzado/SKILL.md +257 -0
  242. package/habilidades/frontend-avanzado/recursos/apis-nativas-ejemplos.md +341 -0
  243. package/habilidades/gcp-cloud/SKILL.md +260 -0
  244. package/habilidades/gcp-cloud/recursos/gke.md +234 -0
  245. package/habilidades/gcp-cloud/recursos/terraform-gcp.md +307 -0
  246. package/habilidades/generacion-mermaid/SKILL.md +229 -0
  247. package/habilidades/git-worktrees-paralelo/SKILL.md +270 -0
  248. package/habilidades/go-experto/SKILL.md +305 -0
  249. package/habilidades/go-patrones/SKILL.md +299 -0
  250. package/habilidades/go-testing/SKILL.md +291 -0
  251. package/habilidades/graphql-experto/SKILL.md +323 -0
  252. package/habilidades/guardrail-semantico/SKILL.md +282 -0
  253. package/habilidades/harness-claude-code/SKILL.md +299 -0
  254. package/habilidades/iam-secretos/SKILL.md +265 -0
  255. package/habilidades/iam-secretos/recursos/implementaciones-completas.md +356 -0
  256. package/habilidades/infra-github-actions/SKILL.md +166 -0
  257. package/habilidades/instalar-sistema/.evolved.json +9 -0
  258. package/habilidades/instalar-sistema/SKILL.md +221 -0
  259. package/habilidades/java-experto/SKILL.md +290 -0
  260. package/habilidades/java-patrones/SKILL.md +275 -0
  261. package/habilidades/java-testing/SKILL.md +288 -0
  262. package/habilidades/kotlin-compose/SKILL.md +278 -0
  263. package/habilidades/kotlin-compose/recursos/animaciones-performance.md +93 -0
  264. package/habilidades/kotlin-experto/SKILL.md +318 -0
  265. package/habilidades/kotlin-testing/SKILL.md +267 -0
  266. package/habilidades/kotlin-testing/recursos/testing-avanzado.md +74 -0
  267. package/habilidades/kubernetes-orquestacion/SKILL.md +152 -0
  268. package/habilidades/kubernetes-orquestacion/recursos/manifiestos-completos.md +452 -0
  269. package/habilidades/langchain-langraph/SKILL.md +386 -0
  270. package/habilidades/langchain-langraph/recursos/evaluacion-rag.md +321 -0
  271. package/habilidades/langchain-langraph/recursos/rag-maturity-model.md +225 -0
  272. package/habilidades/langchain-langraph/recursos/vectorstores.md +306 -0
  273. package/habilidades/legacy-code-rescue/SKILL.md +267 -0
  274. package/habilidades/likec4-experto/SKILL.md +412 -0
  275. package/habilidades/likec4-experto/evals/evals.json +69 -0
  276. package/habilidades/manejo-errores/.evolved.json +9 -0
  277. package/habilidades/manejo-errores/SKILL.md +407 -0
  278. package/habilidades/manejo-errores/recursos/implementaciones-completas.md +248 -0
  279. package/habilidades/mapear-codebase/SKILL.md +275 -0
  280. package/habilidades/memoria-busqueda/SKILL.md +194 -0
  281. package/habilidades/memoria-busqueda/evals/evals.json +44 -0
  282. package/habilidades/meta-skills-estandar/SKILL.md +298 -0
  283. package/habilidades/meta-skills-estandar/recursos/anti-patrones-y-leyes.md +205 -0
  284. package/habilidades/meta-skills-estandar/recursos/frameworks-seguridad.md +107 -0
  285. package/habilidades/meta-skills-estandar/recursos/idiomas-framework.md +60 -0
  286. package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -0
  287. package/habilidades/microservicios/SKILL.md +155 -0
  288. package/habilidades/microservicios/recursos/patrones-y-ejemplos-completos.md +325 -0
  289. package/habilidades/mobile-flutter/SKILL.md +199 -0
  290. package/habilidades/mobile-flutter/recursos/ejemplos-completos.md +319 -0
  291. package/habilidades/mobile-react-native/SKILL.md +176 -0
  292. package/habilidades/mobile-react-native/recursos/ejemplos-completos.md +216 -0
  293. package/habilidades/mongodb-experto/SKILL.md +302 -0
  294. package/habilidades/monitoring-alertas/SKILL.md +201 -0
  295. package/habilidades/monitoring-alertas/recursos/instrumentacion-y-alertas.md +301 -0
  296. package/habilidades/nestjs-experto/SKILL.md +307 -0
  297. package/habilidades/nestjs-experto/recursos/guards-interceptors.md +339 -0
  298. package/habilidades/nestjs-experto/recursos/modulos-di.md +287 -0
  299. package/habilidades/nestjs-experto/recursos/testing-nestjs.md +354 -0
  300. package/habilidades/nextjs-experto/SKILL.md +335 -0
  301. package/habilidades/nextjs-patrones/SKILL.md +303 -0
  302. package/habilidades/nextjs-testing/SKILL.md +331 -0
  303. package/habilidades/node-experto/.evolved.json +9 -0
  304. package/habilidades/node-experto/SKILL.md +266 -0
  305. package/habilidades/node-experto/recursos/patrones-completos.md +283 -0
  306. package/habilidades/notificaciones-multicanal/SKILL.md +159 -0
  307. package/habilidades/notificaciones-multicanal/recursos/config-template.json +115 -0
  308. package/habilidades/notificaciones-multicanal/recursos/configuracion-y-templates.md +303 -0
  309. package/habilidades/nuevo-proyecto/SKILL.md +204 -0
  310. package/habilidades/orquestacion-async/SKILL.md +303 -0
  311. package/habilidades/paid-media-tracking/SKILL.md +269 -0
  312. package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +220 -0
  313. package/habilidades/paid-media-tracking/recursos/google-ads-api.md +215 -0
  314. package/habilidades/patrones-python/SKILL.md +228 -0
  315. package/habilidades/patrones-python/evals/evals.json +56 -0
  316. package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -0
  317. package/habilidades/patrones-python/recursos/referencia-completa.md +202 -0
  318. package/habilidades/perfil-usuario/SKILL.md +200 -0
  319. package/habilidades/perfil-usuario/evals/evals.json +55 -0
  320. package/habilidades/performance-baseline/SKILL.md +297 -0
  321. package/habilidades/php-experto/SKILL.md +291 -0
  322. package/habilidades/php-patrones/SKILL.md +306 -0
  323. package/habilidades/php-testing/SKILL.md +280 -0
  324. package/habilidades/planear-fase/SKILL.md +269 -0
  325. package/habilidades/postgresql-experto/SKILL.md +151 -0
  326. package/habilidades/postgresql-experto/evals/evals.json +53 -0
  327. package/habilidades/postgresql-experto/recursos/referencia-completa.md +215 -0
  328. package/habilidades/prevencion-racionalizacion/SKILL.md +175 -0
  329. package/habilidades/prevencion-sobreingenieria/SKILL.md +323 -0
  330. package/habilidades/privacy-memoria/SKILL.md +141 -0
  331. package/habilidades/privacy-memoria/evals/evals.json +43 -0
  332. package/habilidades/prompt-engineering/SKILL.md +518 -0
  333. package/habilidades/prompt-engineering/recursos/patrones-avanzados.md +467 -0
  334. package/habilidades/rag-arquitectura/SKILL.md +338 -0
  335. package/habilidades/rails-experto/SKILL.md +237 -0
  336. package/habilidades/rails-experto/recursos/active-record.md +260 -0
  337. package/habilidades/rails-experto/recursos/hotwire-turbo.md +293 -0
  338. package/habilidades/rails-experto/recursos/testing-rspec.md +362 -0
  339. package/habilidades/react-experto/SKILL.md +209 -0
  340. package/habilidades/react-experto/evals/evals.json +55 -0
  341. package/habilidades/react-experto/recursos/patrones-y-ejemplos-completos.md +240 -0
  342. package/habilidades/react-optimizacion/SKILL.md +174 -0
  343. package/habilidades/react-optimizacion/recursos/patrones-avanzados.md +138 -0
  344. package/habilidades/redis-experto/SKILL.md +305 -0
  345. package/habilidades/release-semver/.evolved.json +9 -0
  346. package/habilidades/release-semver/SKILL.md +248 -0
  347. package/habilidades/release-semver/scripts/generar-changelog.sh +238 -0
  348. package/habilidades/rust-experto/SKILL.md +400 -0
  349. package/habilidades/rust-patrones/SKILL.md +296 -0
  350. package/habilidades/rust-testing/SKILL.md +311 -0
  351. package/habilidades/seguridad-skills-ia/SKILL.md +262 -0
  352. package/habilidades/sql-optimizacion/SKILL.md +200 -0
  353. package/habilidades/sql-optimizacion/evals/evals.json +54 -0
  354. package/habilidades/sql-optimizacion/recursos/patrones-sql-avanzados.md +131 -0
  355. package/habilidades/sre-patrones/SKILL.md +333 -0
  356. package/habilidades/sre-patrones/recursos/chaos-engineering.md +241 -0
  357. package/habilidades/sre-patrones/recursos/oncall-design.md +236 -0
  358. package/habilidades/stripe-pagos/SKILL.md +550 -0
  359. package/habilidades/stripe-pagos/recursos/errores-reintentos.md +390 -0
  360. package/habilidades/stripe-pagos/recursos/stripe-connect.md +290 -0
  361. package/habilidades/structured-outputs/SKILL.md +343 -0
  362. package/habilidades/swift-experto/SKILL.md +320 -0
  363. package/habilidades/swift-experto/recursos/keychain-y-wrappers.md +110 -0
  364. package/habilidades/swift-patrones/SKILL.md +313 -0
  365. package/habilidades/swift-patrones/recursos/tca-ejemplo-completo.md +113 -0
  366. package/habilidades/swift-testing/SKILL.md +254 -0
  367. package/habilidades/swift-testing/recursos/xcuitest-planes.md +143 -0
  368. package/habilidades/swl-dashboard/SKILL.md +370 -0
  369. package/habilidades/swl-markitdown/SKILL.md +285 -0
  370. package/habilidades/swl-markitdown/evals/evals.json +52 -0
  371. package/habilidades/swl-revisar-impacto/SKILL.md +233 -0
  372. package/habilidades/tailwind-experto/SKILL.md +240 -0
  373. package/habilidades/tailwind-experto/recursos/referencia-completa.md +184 -0
  374. package/habilidades/tdd-workflow/SKILL.md +293 -0
  375. package/habilidades/terraform-experto/SKILL.md +321 -0
  376. package/habilidades/testing-python/SKILL.md +340 -0
  377. package/habilidades/testing-python/recursos/ejemplos-completos.md +167 -0
  378. package/habilidades/threat-model-lite/SKILL.md +246 -0
  379. package/habilidades/tracing-processor/SKILL.md +212 -0
  380. package/habilidades/tracking-measurement/SKILL.md +239 -0
  381. package/habilidades/tracking-measurement/recursos/consent-mode.md +231 -0
  382. package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +216 -0
  383. package/habilidades/tracking-measurement/recursos/meta-capi.md +262 -0
  384. package/habilidades/typescript-avanzado/SKILL.md +144 -0
  385. package/habilidades/typescript-avanzado/evals/evals.json +55 -0
  386. package/habilidades/typescript-avanzado/recursos/patrones-y-ejemplos-completos.md +298 -0
  387. package/habilidades/typescript-diagnosticos/SKILL.md +513 -0
  388. package/habilidades/ux-diseno/SKILL.md +116 -0
  389. package/habilidades/ux-diseno/evals/evals.json +43 -0
  390. package/habilidades/ux-diseno/recursos/patrones-ux-referencia.md +214 -0
  391. package/habilidades/validacion-ci-sistema/SKILL.md +136 -0
  392. package/habilidades/validacion-ci-sistema/recursos/validadores-completos.md +369 -0
  393. package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +286 -0
  394. package/habilidades/verificacion-evidencia/SKILL.md +160 -0
  395. package/habilidades/verificar-trabajo/SKILL.md +303 -0
  396. package/habilidades/verificar-trabajo/recursos/plantilla-verificacion.md +60 -0
  397. package/habilidades/wiki-conocimiento/SKILL.md +276 -0
  398. package/habilidades/wireframes-flujos/SKILL.md +212 -0
  399. package/habilidades/wireframes-flujos/recursos/referencia-completa.md +192 -0
  400. package/habilidades/workflow-claude-code/SKILL.md +260 -0
  401. package/habilidades/workflow-claude-code/recursos/referencia-completa.md +109 -0
  402. package/hooks/_run-hook.sh +57 -0
  403. package/hooks/actualizar-perfil-usuario.js +364 -0
  404. package/hooks/agente-lifecycle.js +71 -0
  405. package/hooks/aiisms-detector.js +173 -0
  406. package/hooks/audit-trail.js +204 -0
  407. package/hooks/auto-background.js +97 -0
  408. package/hooks/auto-consolidacion.js +178 -0
  409. package/hooks/auto-evolucion.js +666 -0
  410. package/hooks/auto-restaurar-settings.js +360 -0
  411. package/hooks/calidad-pre-commit.js +929 -0
  412. package/hooks/calidad-typescript.js +511 -0
  413. package/hooks/captura-feedback-usuario.js +148 -0
  414. package/hooks/check-update.js +211 -0
  415. package/hooks/clasificador-mensajes.js +271 -0
  416. package/hooks/degradacion-instintos.js +272 -0
  417. package/hooks/escaneo-secretos.js +389 -0
  418. package/hooks/extraccion-aprendizajes.js +763 -0
  419. package/hooks/grafo-contexto.js +129 -0
  420. package/hooks/graph-update.js +67 -0
  421. package/hooks/guardrail-modelo.js +247 -0
  422. package/hooks/inbox-aviso.js +75 -0
  423. package/hooks/inyeccion-contexto.js +246 -0
  424. package/hooks/lib/abort-registry.js +214 -0
  425. package/hooks/lib/agent-backend.js +210 -0
  426. package/hooks/lib/agent-comms.js +263 -0
  427. package/hooks/lib/agent-issue-codes.js +284 -0
  428. package/hooks/lib/agent-matcher.js +189 -0
  429. package/hooks/lib/async-hook-registry.js +252 -0
  430. package/hooks/lib/atomic-write.js +130 -0
  431. package/hooks/lib/auto-consolidator.js +335 -0
  432. package/hooks/lib/canary-skills.js +187 -0
  433. package/hooks/lib/consolidation-lock.js +291 -0
  434. package/hooks/lib/context-builder.js +430 -0
  435. package/hooks/lib/context-compressor.js +657 -0
  436. package/hooks/lib/convergence-detector.js +105 -0
  437. package/hooks/lib/delegation-tracker.js +198 -0
  438. package/hooks/lib/detectar-package-manager.js +423 -0
  439. package/hooks/lib/edit-accumulator.js +171 -0
  440. package/hooks/lib/error-classifier.js +308 -0
  441. package/hooks/lib/event-bus.js +112 -0
  442. package/hooks/lib/evolution-tracker.js +442 -0
  443. package/hooks/lib/execution-state.js +316 -0
  444. package/hooks/lib/fingerprint-id.js +135 -0
  445. package/hooks/lib/gateway-notify.js +116 -0
  446. package/hooks/lib/graph-security.js +75 -0
  447. package/hooks/lib/guardrail-metrics.js +202 -0
  448. package/hooks/lib/hook-circuit-breaker.js +206 -0
  449. package/hooks/lib/loop-detector.js +267 -0
  450. package/hooks/lib/mcp-health.js +184 -0
  451. package/hooks/lib/mcp-pool.js +436 -0
  452. package/hooks/lib/memory-search.js +506 -0
  453. package/hooks/lib/merkle-audit.js +96 -0
  454. package/hooks/lib/model-router.js +222 -0
  455. package/hooks/lib/normalize-error.js +324 -0
  456. package/hooks/lib/normalize-input.js +65 -0
  457. package/hooks/lib/nudge-tracker.js +306 -0
  458. package/hooks/lib/otlp-exporter.js +365 -0
  459. package/hooks/lib/performance-marks.js +239 -0
  460. package/hooks/lib/privacy-filter.js +128 -0
  461. package/hooks/lib/prompt-injection-scanner.js +209 -0
  462. package/hooks/lib/provenance-tracker.js +183 -0
  463. package/hooks/lib/rate-limit-tracker.js +253 -0
  464. package/hooks/lib/reflect-classifier.js +164 -0
  465. package/hooks/lib/resource-quota.js +122 -0
  466. package/hooks/lib/retry-jitter.js +165 -0
  467. package/hooks/lib/risk-engine.js +368 -0
  468. package/hooks/lib/run-log.js +408 -0
  469. package/hooks/lib/session-fts.js +379 -0
  470. package/hooks/lib/session-store.js +293 -0
  471. package/hooks/lib/singleton-guard.js +159 -0
  472. package/hooks/lib/skill-auditor.js +588 -0
  473. package/hooks/lib/sync-status.js +228 -0
  474. package/hooks/lib/taint-tracker.js +107 -0
  475. package/hooks/lib/task-service.js +295 -0
  476. package/hooks/lib/tech-skills-map.js +146 -0
  477. package/hooks/lib/telegram-cliente.js +159 -0
  478. package/hooks/lib/telegram-config.js +170 -0
  479. package/hooks/lib/token-budget.js +156 -0
  480. package/hooks/lib/token-estimator.js +420 -0
  481. package/hooks/lib/toon-compressor.js +245 -0
  482. package/hooks/lib/usage-model.js +183 -0
  483. package/hooks/lib/variable-resolver.js +230 -0
  484. package/hooks/linea-estado.js +324 -0
  485. package/hooks/metricas-evolucion.js +209 -0
  486. package/hooks/monitor-contexto.js +325 -0
  487. package/hooks/notificacion-sesion-stop.js +198 -0
  488. package/hooks/notificacion-telegram-notification.js +4 -0
  489. package/hooks/notificacion-telegram-subagent.js +4 -0
  490. package/hooks/notificacion-telegram.js +267 -0
  491. package/hooks/preservar-estado-pre-compact.js +150 -0
  492. package/hooks/proteccion-rutas.js +366 -0
  493. package/hooks/registro-turnos.js +209 -0
  494. package/hooks/resumen-sesion.js +249 -0
  495. package/hooks/risk-scoring.js +323 -0
  496. package/hooks/rotar-audit-auto.js +122 -0
  497. package/hooks/sugerir-regenerar-inventario.js +170 -0
  498. package/hooks/telemetria-agentes.js +167 -0
  499. package/hooks/tracking-costos.js +688 -0
  500. package/instintos/global.yaml +8 -0
  501. package/instintos/perfil-usuario.yaml +53 -0
  502. package/instintos/prompt-appendices.yaml +57 -0
  503. package/instintos/proyecto.yaml +372 -0
  504. package/manifiestos/gateway-config.json +77 -0
  505. package/manifiestos/handoff-context.json +223 -0
  506. package/manifiestos/hook-profiles.json +44 -0
  507. package/manifiestos/hooks-config.json +360 -0
  508. package/manifiestos/modulos.json +1173 -0
  509. package/manifiestos/perfiles.json +404 -0
  510. package/package.json +86 -0
  511. package/plantillas/ESTADO.md +109 -0
  512. package/plantillas/HOJA-RUTA.md +143 -0
  513. package/plantillas/PROYECTO.md +122 -0
  514. package/plantillas/REQUISITOS.md +132 -0
  515. package/plantillas/auditor-veto-template.md +105 -0
  516. package/plantillas/github-workflows/README.md +47 -0
  517. package/plantillas/github-workflows/release-please.yml +44 -0
  518. package/plantillas/github-workflows/swl-ci.yml +107 -0
  519. package/plantillas/github-workflows/swl-security.yml +51 -0
  520. package/plantillas/mcp-mineru.json +13 -0
  521. package/plantillas/research/ARQUITECTURA.md +220 -0
  522. package/plantillas/research/FUNCIONALIDADES.md +175 -0
  523. package/plantillas/research/RESUMEN.md +165 -0
  524. package/plantillas/research/STACK.md +233 -0
  525. package/plantillas/research/TRAMPAS.md +299 -0
  526. package/plantillas/skill-evals-template.json +44 -0
  527. package/plugin.json +343 -0
  528. package/reglas/accesibilidad.md +269 -0
  529. package/reglas/api-diseno.md +400 -0
  530. package/reglas/arquitectura.md +352 -0
  531. package/reglas/brevedad-output.md +124 -0
  532. package/reglas/cloud-infra.md +247 -0
  533. package/reglas/docs.md +245 -0
  534. package/reglas/estilo-codigo.md +201 -0
  535. package/reglas/git-workflow.md +245 -0
  536. package/reglas/gobernanza.md +271 -0
  537. package/reglas/harness-claude-code.md +213 -0
  538. package/reglas/hooks.md +186 -0
  539. package/reglas/lenguajes/csharp/estilo-codigo.md +231 -0
  540. package/reglas/lenguajes/csharp/hooks.md +281 -0
  541. package/reglas/lenguajes/csharp/patrones.md +226 -0
  542. package/reglas/lenguajes/csharp/seguridad.md +258 -0
  543. package/reglas/lenguajes/csharp/testing.md +176 -0
  544. package/reglas/lenguajes/go/estilo-codigo.md +195 -0
  545. package/reglas/lenguajes/go/hooks.md +249 -0
  546. package/reglas/lenguajes/go/patrones.md +249 -0
  547. package/reglas/lenguajes/go/seguridad.md +225 -0
  548. package/reglas/lenguajes/go/testing.md +272 -0
  549. package/reglas/lenguajes/java/estilo-codigo.md +217 -0
  550. package/reglas/lenguajes/java/hooks.md +251 -0
  551. package/reglas/lenguajes/java/patrones.md +226 -0
  552. package/reglas/lenguajes/java/seguridad.md +233 -0
  553. package/reglas/lenguajes/java/testing.md +238 -0
  554. package/reglas/lenguajes/kotlin/estilo-codigo.md +208 -0
  555. package/reglas/lenguajes/kotlin/hooks.md +245 -0
  556. package/reglas/lenguajes/kotlin/patrones.md +201 -0
  557. package/reglas/lenguajes/kotlin/seguridad.md +202 -0
  558. package/reglas/lenguajes/kotlin/testing.md +236 -0
  559. package/reglas/lenguajes/nextjs/estilo-codigo.md +175 -0
  560. package/reglas/lenguajes/nextjs/hooks.md +186 -0
  561. package/reglas/lenguajes/nextjs/patrones.md +225 -0
  562. package/reglas/lenguajes/nextjs/seguridad.md +216 -0
  563. package/reglas/lenguajes/nextjs/testing.md +193 -0
  564. package/reglas/lenguajes/php/estilo-codigo.md +228 -0
  565. package/reglas/lenguajes/php/hooks.md +165 -0
  566. package/reglas/lenguajes/php/patrones.md +233 -0
  567. package/reglas/lenguajes/php/seguridad.md +186 -0
  568. package/reglas/lenguajes/php/testing.md +205 -0
  569. package/reglas/lenguajes/rust/estilo-codigo.md +207 -0
  570. package/reglas/lenguajes/rust/hooks.md +240 -0
  571. package/reglas/lenguajes/rust/patrones.md +250 -0
  572. package/reglas/lenguajes/rust/seguridad.md +221 -0
  573. package/reglas/lenguajes/rust/testing.md +194 -0
  574. package/reglas/lenguajes/swift/estilo-codigo.md +238 -0
  575. package/reglas/lenguajes/swift/hooks.md +257 -0
  576. package/reglas/lenguajes/swift/patrones.md +235 -0
  577. package/reglas/lenguajes/swift/seguridad.md +248 -0
  578. package/reglas/lenguajes/swift/testing.md +242 -0
  579. package/reglas/markitdown.md +60 -0
  580. package/reglas/memoria-consolidada.md +209 -0
  581. package/reglas/patrones.md +225 -0
  582. package/reglas/performance.md +195 -0
  583. package/reglas/pruebas.md +159 -0
  584. package/reglas/seguridad-agentes.md +351 -0
  585. package/reglas/seguridad.md +151 -0
  586. package/reglas/skills-estandar.md +373 -0
  587. package/reglas/testing.md +193 -0
  588. package/schemas/agent-contract.json +176 -0
  589. package/schemas/agent-frontmatter.schema.json +149 -0
  590. package/schemas/agent-message.schema.json +53 -0
  591. package/schemas/agent-output-implementacion.schema.json +85 -0
  592. package/schemas/agent-output-planificacion.schema.json +113 -0
  593. package/schemas/agent-output-review.schema.json +78 -0
  594. package/schemas/diary-entry.schema.json +80 -0
  595. package/schemas/hook-profiles.schema.json +39 -0
  596. package/schemas/hooks-config.schema.json +74 -0
  597. package/schemas/instinct.schema.json +115 -0
  598. package/schemas/modulos.schema.json +29 -0
  599. package/schemas/perfiles.schema.json +28 -0
  600. package/schemas/plugin.schema.json +64 -0
  601. package/schemas/skill-evals.schema.json +95 -0
  602. package/schemas/skill-frontmatter.schema.json +170 -0
  603. package/scripts/actualizar.js +145 -0
  604. package/scripts/audit-skills.sh +78 -0
  605. package/scripts/auditar-agentes-gaps.js +149 -0
  606. package/scripts/auditar-cobertura-frameworks.js +241 -0
  607. package/scripts/auditar-skills-gaps.js +206 -0
  608. package/scripts/bootstrap-instintos.js +259 -0
  609. package/scripts/check-update.js +109 -0
  610. package/scripts/comandos/agents.js +105 -0
  611. package/scripts/comandos/info.js +108 -0
  612. package/scripts/comandos/install-asistido.js +186 -0
  613. package/scripts/comandos/skills.js +211 -0
  614. package/scripts/configurar-branch-protection.js +418 -0
  615. package/scripts/daemon-swl.py +388 -0
  616. package/scripts/desinstalar.js +130 -0
  617. package/scripts/doctor.js +559 -0
  618. package/scripts/field-report.js +199 -0
  619. package/scripts/generar-inventario.js +317 -0
  620. package/scripts/inbox-tmux-inject.js +161 -0
  621. package/scripts/inferir-herramientas-permitidas.js +586 -0
  622. package/scripts/inicializar.js +133 -0
  623. package/scripts/instalador.js +1031 -0
  624. package/scripts/instalar-git-hook.js +122 -0
  625. package/scripts/lib/agp-frontmatter.js +222 -0
  626. package/scripts/lib/append-con-marcadores.js +199 -0
  627. package/scripts/lib/artefactos-python.js +43 -0
  628. package/scripts/lib/audit-query.js +221 -0
  629. package/scripts/lib/autostart-linux.js +347 -0
  630. package/scripts/lib/autostart-macos.js +360 -0
  631. package/scripts/lib/autostart-windows.js +307 -0
  632. package/scripts/lib/budget-enforcer.js +252 -0
  633. package/scripts/lib/claude-sessions.js +285 -0
  634. package/scripts/lib/configurar-ci.js +380 -0
  635. package/scripts/lib/console-span-exporter.js +92 -0
  636. package/scripts/lib/contadores-inventario.js +217 -0
  637. package/scripts/lib/dashboard-widgets.js +290 -0
  638. package/scripts/lib/detectar-runtime.js +279 -0
  639. package/scripts/lib/detectar-stack.js +187 -0
  640. package/scripts/lib/diary-entry.js +234 -0
  641. package/scripts/lib/drift-detector.js +545 -0
  642. package/scripts/lib/estado.js +124 -0
  643. package/scripts/lib/gestor-componentes.js +243 -0
  644. package/scripts/lib/gitignore-manifest.js +305 -0
  645. package/scripts/lib/graph-analyze.py +556 -0
  646. package/scripts/lib/graph-builder.py +485 -0
  647. package/scripts/lib/graph-cluster.py +259 -0
  648. package/scripts/lib/health-row.js +168 -0
  649. package/scripts/lib/hooks-settings.js +789 -0
  650. package/scripts/lib/manifiestos.js +138 -0
  651. package/scripts/lib/mc-client.js +137 -0
  652. package/scripts/lib/notificaciones-telegram.js +1107 -0
  653. package/scripts/lib/npm-version.js +261 -0
  654. package/scripts/lib/paquetes-conocidos.js +50 -0
  655. package/scripts/lib/preservar-usuario.js +586 -0
  656. package/scripts/lib/prompt-builder.js +264 -0
  657. package/scripts/lib/resolver-externo.js +332 -0
  658. package/scripts/lib/schedule-parser.js +305 -0
  659. package/scripts/lib/scoring-instintos.js +240 -0
  660. package/scripts/lib/seguridad.js +160 -0
  661. package/scripts/lib/selector-interactivo.js +152 -0
  662. package/scripts/lib/semantic-search.js +242 -0
  663. package/scripts/lib/skill-discovery.js +234 -0
  664. package/scripts/lib/skill-metrics.js +246 -0
  665. package/scripts/lib/skill-normalizer.js +112 -0
  666. package/scripts/lib/skills-hub.js +340 -0
  667. package/scripts/lib/span-schema.js +134 -0
  668. package/scripts/lib/tool-cost-analyzer.js +255 -0
  669. package/scripts/lib/tracing-processor-interface.js +286 -0
  670. package/scripts/lib/transformadores/base.js +80 -0
  671. package/scripts/lib/transformadores/claude.js +124 -0
  672. package/scripts/lib/transformadores/codex.js +115 -0
  673. package/scripts/lib/transformadores/copilot.js +106 -0
  674. package/scripts/lib/transformadores/gemini.js +74 -0
  675. package/scripts/lib/transformadores/index.js +35 -0
  676. package/scripts/lib/transformadores/opencode.js +75 -0
  677. package/scripts/lib/ui.js +259 -0
  678. package/scripts/limpiar-artefactos-python.js +131 -0
  679. package/scripts/mcp-orchestrator.py +386 -0
  680. package/scripts/mcp-pool-manager.py +352 -0
  681. package/scripts/mcp-telemetry.py +378 -0
  682. package/scripts/poblar-evolvable.js +226 -0
  683. package/scripts/publicar.js +287 -0
  684. package/scripts/reflect-skills.js +403 -0
  685. package/scripts/rotar-audit-logs.js +185 -0
  686. package/scripts/run-skill-evals.js +242 -0
  687. package/scripts/smoke-test.js +374 -0
  688. package/scripts/token-analysis.py +471 -0
  689. package/scripts/validar-manifest.js +195 -0
  690. package/scripts/validar-memoria.js +321 -0
  691. package/scripts/validar-tests-aislamiento.js +184 -0
  692. package/scripts/validar-tokens-test.js +208 -0
  693. package/scripts/validar.js +147 -0
  694. package/scripts/validate-markdown.py +339 -0
  695. package/scripts/validate-skills.py +385 -0
  696. package/scripts/vendor/claude-usage/README.md +116 -0
  697. package/scripts/vendor/claude-usage/cli.py +334 -0
  698. package/scripts/vendor/claude-usage/dashboard.py +795 -0
  699. package/scripts/vendor/claude-usage/scanner.py +467 -0
  700. package/scripts/vendor/markitdown/cli.py +194 -0
  701. package/scripts/verificar-evolucion.js +289 -0
  702. 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?