@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,303 @@
1
+ ---
2
+ name: build-errors-kotlin
3
+ description: >
4
+ Resolución de errores de compilación Kotlin: kotlinc, Gradle KTS, Android
5
+ build y Jetpack Compose. Incluye errores de Hilt, recursos Android y
6
+ conflictos de versiones en Gradle.
7
+ Cargar cuando un build Kotlin/Android falle o haya errores de compilación.
8
+ version: "1.0.0"
9
+ herramientasPermitidas: [Read, Bash, Grep]
10
+ exclusiones:
11
+ - "No cargar para bugs de UI en Compose en runtime (composables que renderizan mal) cuando el build pasa — si `./gradlew assembleDebug` compila pero la pantalla no se ve bien, es un error de lógica de UI; cargar `kotlin-compose`."
12
+ - "No cargar para fallos de tests unitarios Kotlin (JUnit, Kotest assertions) cuando el build compila — si el build pasa pero los tests fallan por valores incorrectos, es un error de lógica de tests."
13
+ - "No cargar para errores de Hilt en runtime (NullPointerException al inyectar en producción) cuando el build compila — si el APK se genera pero crashea por DI en runtime, revisar la configuración de Hilt directamente."
14
+ - "No cargar para diseñar la arquitectura del proyecto Android/Kotlin desde cero — si la pregunta es cómo organizar módulos, capas y features en un proyecto multi-módulo, cargar `kotlin-experto` o `kotlin-patrones`."
15
+ evolvable: true # default para skill estandar
16
+ ---
17
+ # Build Errors Kotlin — Diagnóstico y Solución
18
+
19
+ ## Cuándo NO cargar
20
+
21
+ - El build compila pero los Composables renderizan mal en pantalla — es un error de lógica de UI; cargar `kotlin-compose`.
22
+ - Los tests Kotest/JUnit fallan en assertions aunque compilan — es un error de lógica de tests.
23
+ - La pregunta es cómo organizar la arquitectura Android multi-módulo — para diseño cargar `kotlin-experto`.
24
+
25
+ ## Cuándo cargar
26
+
27
+ - `./gradlew build` o `./gradlew assembleDebug` falla
28
+ - Errores de kotlinc (type mismatch, unresolved reference)
29
+ - Errores del compilador de Compose (stability, composable context)
30
+ - Conflictos de versiones en Gradle KTS (`buildscript`, `plugin resolution`)
31
+ - Errores de Hilt (missing binding, component hierarchy)
32
+ - Errores de recursos Android (R class, manifest merge)
33
+
34
+ ---
35
+
36
+ ## Kotlinc — Errores del Compilador
37
+
38
+ ### `type mismatch: inferred type is X but Y was expected`
39
+
40
+ **Causa**: el tipo inferido no coincide con el esperado. Frecuente con nullable vs non-null.
41
+
42
+ ```kotlin
43
+ // MAL
44
+ fun obtenerNombre(): String {
45
+ val nombre: String? = buscarEnDB()
46
+ return nombre // error: String? no es String
47
+ }
48
+
49
+ // BIEN — opcion 1: null check con throw
50
+ fun obtenerNombre(): String {
51
+ return buscarEnDB() ?: throw IllegalStateException("Nombre no encontrado")
52
+ }
53
+
54
+ // BIEN — opcion 2: retornar nullable en la firma
55
+ fun obtenerNombre(): String? = buscarEnDB()
56
+
57
+ // BIEN — opcion 3: valor por defecto
58
+ fun obtenerNombre(): String = buscarEnDB() ?: "Sin nombre"
59
+ ```
60
+
61
+ ### `unresolved reference: X`
62
+
63
+ **Causa**: clase, función o propiedad no importada, o dependencia Gradle faltante.
64
+
65
+ ```kotlin
66
+ // MAL — usar Flow sin import ni dependencia
67
+ val flujo: Flow<Int> = flow { emit(1) } // unresolved: Flow
68
+
69
+ // BIEN — agregar import explícito
70
+ import kotlinx.coroutines.flow.Flow
71
+ import kotlinx.coroutines.flow.flow
72
+
73
+ // En build.gradle.kts si falta la dependencia:
74
+ dependencies {
75
+ implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
76
+ }
77
+ ```
78
+
79
+ ### `none of the following candidates is applicable because of receiver type mismatch`
80
+
81
+ **Causa**: se llama una función de extensión sobre el tipo incorrecto.
82
+
83
+ ```kotlin
84
+ // MAL — trim() es para String, no para String?
85
+ fun limpiar(texto: String?): String {
86
+ return texto.trim() // error: trim() no existe en String?
87
+ }
88
+
89
+ // BIEN
90
+ fun limpiar(texto: String?): String {
91
+ return texto?.trim() ?: ""
92
+ }
93
+ ```
94
+
95
+ ---
96
+
97
+ ## Gradle KTS — Errores de Configuración
98
+
99
+ ### `Unresolved reference` en build.gradle.kts
100
+
101
+ **Causa**: el DSL de Gradle KTS es estricto con tipos. Diferencias respecto a Groovy.
102
+
103
+ ```kotlin
104
+ // MAL — sintaxis Groovy en KTS
105
+ android {
106
+ compileSdkVersion 34 // error: funcion deprecated en KTS
107
+ buildToolsVersion "34.0" // puede fallar
108
+ }
109
+
110
+ // BIEN — DSL moderno en KTS
111
+ android {
112
+ compileSdk = 34
113
+ defaultConfig {
114
+ minSdk = 24
115
+ targetSdk = 34
116
+ }
117
+ }
118
+ ```
119
+
120
+ ### Plugin no encontrado en `plugins {}` block
121
+
122
+ ```kotlin
123
+ // MAL — plugin sin version ni alias de catalog
124
+ plugins {
125
+ id("com.google.dagger.hilt.android") // error si no hay version
126
+ }
127
+
128
+ // BIEN — con versión explícita
129
+ plugins {
130
+ id("com.google.dagger.hilt.android") version "2.51.1" apply false
131
+ }
132
+
133
+ // BIEN — con version catalog (libs.versions.toml)
134
+ plugins {
135
+ alias(libs.plugins.hilt)
136
+ }
137
+ ```
138
+
139
+ ### `Could not resolve com.example:lib:1.0` — dependencia no encontrada
140
+
141
+ ```kotlin
142
+ // Verificar repositorios en settings.gradle.kts
143
+ dependencyResolutionManagement {
144
+ repositories {
145
+ google()
146
+ mavenCentral()
147
+ // Si es repositorio privado:
148
+ maven {
149
+ url = uri("https://repo.empresa.com/maven")
150
+ credentials {
151
+ username = providers.gradleProperty("repoUser").get()
152
+ password = providers.gradleProperty("repoPass").get()
153
+ }
154
+ }
155
+ }
156
+ }
157
+ ```
158
+
159
+ ---
160
+
161
+ ## Android Build — Errores de Recursos y Manifest
162
+
163
+ ### `error: cannot find symbol class R`
164
+
165
+ **Causa**: el archivo R.java no se generó correctamente o hay error en un recurso XML.
166
+
167
+ ```bash
168
+ # Diagnostico: limpiar y reconstruir
169
+ ./gradlew clean assembleDebug
170
+
171
+ # Ver error raiz del recurso XML
172
+ ./gradlew assembleDebug --stacktrace 2>&1 | grep "error:"
173
+
174
+ # Causas comunes:
175
+ # - Nombre de recurso con guion (usar guion_bajo en su lugar)
176
+ # - Etiqueta XML mal cerrada en layout
177
+ # - Valor de color/dimension con formato incorrecto
178
+ ```
179
+
180
+ ### Manifest merge conflict
181
+
182
+ ```xml
183
+ <!-- Error típico: herramientas:node="merge" conflicto de atributo -->
184
+ <!-- En el AndroidManifest.xml de la app, forzar valor -->
185
+ <activity
186
+ android:name=".MainActivity"
187
+ tools:node="merge"
188
+ tools:replace="android:theme">
189
+ ```
190
+
191
+ ### `D8: Dex file larger than 64K methods` (MultiDex)
192
+
193
+ ```kotlin
194
+ // En build.gradle.kts del modulo app:
195
+ android {
196
+ defaultConfig {
197
+ multiDexEnabled = true
198
+ }
199
+ }
200
+ dependencies {
201
+ implementation("androidx.multidex:multidex:2.0.1")
202
+ }
203
+ ```
204
+
205
+ ---
206
+
207
+ ## Jetpack Compose — Errores del Compilador
208
+
209
+ ### `@Composable invocations can only happen from the context of a @Composable function`
210
+
211
+ **Causa**: se llama un Composable desde una lambda no anotada o desde código no-Compose.
212
+
213
+ ```kotlin
214
+ // MAL
215
+ fun configurarUI() {
216
+ MiComponente() // error: no es contexto Composable
217
+ }
218
+
219
+ // MAL — lambda sin anotación
220
+ val accion: () -> Unit = {
221
+ MiComponente() // error
222
+ }
223
+
224
+ // BIEN — solo dentro de funciones @Composable
225
+ @Composable
226
+ fun PantallaInicio() {
227
+ MiComponente() // correcto
228
+ }
229
+ ```
230
+
231
+ ### Stability issues — `Parameter X is not stable`
232
+
233
+ **Causa**: el compilador de Compose no puede inferir la estabilidad de un tipo,
234
+ lo que deshabilita el smart recomposition.
235
+
236
+ ```kotlin
237
+ // MAL — clase mutable sin anotación
238
+ data class Estado(var contador: Int) // var hace al tipo inestable
239
+
240
+ // BIEN — opción 1: usar val (inmutable)
241
+ data class Estado(val contador: Int)
242
+
243
+ // BIEN — opción 2: anotación explícita si la clase es external
244
+ @Stable
245
+ class EstadoExterno(private val wrapped: ExternalClass)
246
+
247
+ // BIEN — opcion 3: en compose_compiler_config.conf marcar clases externas
248
+ // ver: https://developer.android.com/develop/ui/compose/performance/stability/fix
249
+ ```
250
+
251
+ ---
252
+
253
+ ## Hilt — Errores de Inyección de Dependencias
254
+
255
+ ### `[Hilt] Missing binding for X`
256
+
257
+ **Causa**: Hilt no sabe cómo proveer el tipo solicitado.
258
+
259
+ ```kotlin
260
+ // MAL — interfaz sin @Binds ni @Provides
261
+ interface Repositorio
262
+ class RepositorioImpl @Inject constructor() : Repositorio
263
+
264
+ // Para que Hilt resuelva la interfaz, se necesita un modulo:
265
+ @Module
266
+ @InstallIn(SingletonComponent::class)
267
+ abstract class RepositorioModule {
268
+ @Binds
269
+ @Singleton
270
+ abstract fun bindRepositorio(impl: RepositorioImpl): Repositorio
271
+ }
272
+ ```
273
+
274
+ ### `@HiltAndroidApp` no encontrado
275
+
276
+ ```kotlin
277
+ // En Application class — sin esto Hilt no inicializa
278
+ @HiltAndroidApp
279
+ class MiAplicacion : Application()
280
+
281
+ // En AndroidManifest.xml:
282
+ // <application android:name=".MiAplicacion" ...>
283
+ ```
284
+
285
+ ---
286
+
287
+ ## Gotchas / Errores comunes no obvios
288
+
289
+ - **`./gradlew build` falla con "Could not resolve com.android.tools.build:gradle:X.Y.Z"** aunque la versión existe en Maven Central: el repositorio `google()` no está declarado en `settings.gradle.kts` antes de `mavenCentral()`. Causa: AGP (Android Gradle Plugin) está en el repositorio de Google, no en Maven Central; si `google()` no está o está en el orden incorrecto, la resolución falla. Solución: asegurarse que `settings.gradle.kts` tiene `google()` primero en el bloque `pluginManagement.repositories` Y en `dependencyResolutionManagement.repositories`.
290
+ - **Compose BOM actualizado produce error `Unresolved reference: LazyColumn`** aunque la función existe en la misma versión de Compose UI: el BOM alinea versiones pero el IDE puede cachear las versiones antiguas del árbol de dependencias. Causa: el cache de Gradle tiene la versión anterior del artefacto `compose.foundation` sin invalidar. Solución: ejecutar `./gradlew cleanBuildCache` y sincronizar el proyecto en Android Studio — si persiste, verificar con `./gradlew :app:dependencies | grep compose-foundation` que la versión del BOM es la que se espera.
291
+ - **Hilt `@Binds` en un módulo abstracto produce "MissingBinding" aunque la implementación existe**: la clase `RepositorioImpl` está en un feature module diferente al módulo donde está instalado el componente Hilt. Causa: los módulos Hilt solo ven las dependencias del componente en el que están instalados (`SingletonComponent`, `ActivityComponent`, etc.) — las dependencias entre feature modules no se ven automáticamente. Solución: instalar el módulo de Hilt con `@InstallIn(SingletonComponent::class)` en el feature module que provee la implementación, asegurando que ese módulo tiene dependencia del módulo que lo necesita.
292
+ - **`kotlinc` compila el módulo de library pero el módulo de app falla con "unresolved reference"** apuntando a una clase de la library**: la library tiene `internal` en la clase en lugar de `public`. Causa: `internal` en Kotlin restringe la visibilidad al mismo módulo de Kotlin — una clase `internal` en `:core` no es visible en `:app`. Solución: cambiar la visibilidad a `public` (o dejar sin modificador, que es `public` por defecto en Kotlin) y revisar que la clase no tiene restricciones de API pública que justifiquen `internal`.
293
+
294
+ ## Checklist de Diagnóstico
295
+
296
+ - [ ] Ejecutar `./gradlew build --stacktrace` para ver la causa raíz del error.
297
+ - [ ] `./gradlew dependencies` para ver el árbol de dependencias y conflictos.
298
+ - [ ] Limpiar caché de Gradle si hay errores inexplicables: `./gradlew cleanBuildCache`.
299
+ - [ ] Verificar compatibilidad de versiones en `libs.versions.toml` (Kotlin, AGP, Compose BOM).
300
+ - [ ] Para errores de Compose: habilitar reportes del compilador con `reportsDestination`.
301
+ - [ ] Si el error es de Hilt: revisar que `@HiltAndroidApp` está en Application.
302
+ - [ ] Para R class: revisar XMLs de recursos por errores de sintaxis o nombres inválidos.
303
+ - [ ] `./gradlew lint` para detectar problemas antes de compilar.
@@ -0,0 +1,312 @@
1
+ ---
2
+ name: build-errors-nextjs
3
+ description: >
4
+ Resolución de errores de compilación Next.js: next build, React Server
5
+ Components, hydration mismatch, Turbopack y middleware. Incluye errores de
6
+ ISR, optimización de imágenes, CSS modules y variables de entorno.
7
+ Cargar cuando un build Next.js falle o haya errores de renderizado.
8
+ version: "1.0.0"
9
+ herramientasPermitidas: [Read, Bash, Grep]
10
+ exclusiones:
11
+ - "No cargar para errores de TypeScript puros en un proyecto Next.js (TS2322, TS2345, errores de tipos en archivos .ts/.tsx) — para esos cargar `build-errors-typescript`; este skill cubre errores específicos de la plataforma Next.js."
12
+ - "No cargar para bugs de lógica de la aplicación en runtime cuando `next build` compila (fetch que retorna datos incorrectos, routing que no funciona como se espera) — si el build pasa, es un error de lógica, no de build."
13
+ - "No cargar para diseñar la arquitectura App Router de un proyecto nuevo (estructura de rutas, layouts, data fetching patterns) — para eso cargar `nextjs-experto` o `nextjs-patrones`."
14
+ - "No cargar para errores de estado de React (useState, useReducer, Zustand) en componentes que ya compilan — si el build pasa pero el estado no se actualiza correctamente, es un bug de lógica de state management."
15
+ evolvable: true # default para skill estandar
16
+ ---
17
+ # Build Errors Next.js — Diagnóstico y Solución
18
+
19
+ ## Cuándo NO cargar
20
+
21
+ - El error es de TypeScript puro (TS2322, TS2345) sin relación con Next.js — cargar `build-errors-typescript` para esos.
22
+ - `next build` compila pero la app falla en lógica de negocio — es un bug de lógica, no de build.
23
+ - La pregunta es cómo diseñar la estructura de App Router — para arquitectura cargar `nextjs-experto`.
24
+
25
+ ## Cuándo cargar
26
+
27
+ - `next build` falla con errores de compilación o runtime
28
+ - Hydration mismatch en producción o desarrollo
29
+ - Errores de React Server Components (`"use client"` faltante o incorrecto)
30
+ - Errores de Turbopack (incompatibilidad de plugins, loaders)
31
+ - Errores de middleware, ISR revalidation o image optimization
32
+ - Variables de entorno no disponibles en el cliente o en build time
33
+
34
+ ---
35
+
36
+ ## Hydration Mismatch
37
+
38
+ ### `Error: Hydration failed because the initial UI does not match what was rendered on the server`
39
+
40
+ **Causa**: el HTML generado en el servidor difiere del que React intenta hidratar en el cliente.
41
+
42
+ ```tsx
43
+ // MAL — acceso a APIs del browser en render (solo existen en cliente)
44
+ export default function Componente() {
45
+ const ancho = window.innerWidth; // window no existe en servidor
46
+ return <div>Ancho: {ancho}</div>;
47
+ }
48
+
49
+ // MAL — Date() produce valores distintos en servidor y cliente
50
+ export default function Timestamp() {
51
+ return <span>{new Date().toLocaleString()}</span>; // mismatch
52
+ }
53
+
54
+ // BIEN — usar useEffect para lógica solo-cliente
55
+ "use client";
56
+ import { useState, useEffect } from "react";
57
+
58
+ export default function Timestamp() {
59
+ const [fecha, setFecha] = useState<string>("");
60
+ useEffect(() => {
61
+ setFecha(new Date().toLocaleString());
62
+ }, []);
63
+ return <span>{fecha || "Cargando..."}</span>;
64
+ }
65
+
66
+ // BIEN — suppressHydrationWarning para diferencias inevitables
67
+ <time suppressHydrationWarning>{new Date().toISOString()}</time>
68
+ ```
69
+
70
+ ### Hydration mismatch por nesting HTML inválido
71
+
72
+ ```tsx
73
+ // MAL — <p> no puede contener <div>
74
+ function Tarjeta() {
75
+ return (
76
+ <p>
77
+ <div>Contenido</div> {/* inválido: div dentro de p */}
78
+ </p>
79
+ );
80
+ }
81
+
82
+ // BIEN
83
+ function Tarjeta() {
84
+ return (
85
+ <div>
86
+ <p>Contenido</p>
87
+ </div>
88
+ );
89
+ }
90
+ ```
91
+
92
+ ---
93
+
94
+ ## React Server Components — Errores de Directivas
95
+
96
+ ### `You're importing a component that needs "use client"`
97
+
98
+ **Causa**: un Server Component importa un módulo que usa APIs del browser o hooks de React.
99
+
100
+ ```tsx
101
+ // MAL — ServerPage.tsx (Server Component) importa componente con estado
102
+ import Contador from "./Contador"; // Contador usa useState
103
+
104
+ export default function ServerPage() {
105
+ return <Contador />; // error en build
106
+ }
107
+
108
+ // BIEN — agregar "use client" al componente que necesita estado/browser APIs
109
+ // Contador.tsx
110
+ "use client";
111
+ import { useState } from "react";
112
+
113
+ export default function Contador() {
114
+ const [n, setN] = useState(0);
115
+ return <button onClick={() => setN(n + 1)}>{n}</button>;
116
+ }
117
+ // ServerPage.tsx no necesita cambios
118
+ ```
119
+
120
+ ### `Server Component cannot use client-only hooks`
121
+
122
+ ```tsx
123
+ // MAL — useRouter, usePathname, useSearchParams en Server Component
124
+ // app/pagina/page.tsx (Server Component por defecto)
125
+ import { useRouter } from "next/navigation"; // error: hook de cliente
126
+
127
+ export default function Pagina() {
128
+ const router = useRouter(); // solo funciona en Client Components
129
+ }
130
+
131
+ // BIEN — si se necesita router: extraer a Client Component
132
+ // app/pagina/BotonNavegar.tsx
133
+ "use client";
134
+ import { useRouter } from "next/navigation";
135
+
136
+ export function BotonNavegar() {
137
+ const router = useRouter();
138
+ return <button onClick={() => router.push("/")}>Inicio</button>;
139
+ }
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Variables de Entorno — Errores Comunes
145
+
146
+ ### Variable undefined en el cliente
147
+
148
+ **Causa**: variable sin prefijo `NEXT_PUBLIC_` usada en Client Component.
149
+
150
+ ```bash
151
+ # MAL — variable privada referenciada en cliente
152
+ # .env.local
153
+ DATABASE_URL=postgres://...
154
+ API_SECRET=clave_secreta
155
+
156
+ # componente-cliente.tsx
157
+ "use client"
158
+ const url = process.env.DATABASE_URL // undefined en cliente — correcto por seguridad
159
+ ```
160
+
161
+ ```tsx
162
+ // BIEN — variables publicas con prefijo NEXT_PUBLIC_
163
+ // .env.local
164
+ NEXT_PUBLIC_API_URL=https://api.ejemplo.com
165
+
166
+ // componente-cliente.tsx
167
+ "use client"
168
+ const apiUrl = process.env.NEXT_PUBLIC_API_URL // disponible en cliente
169
+ ```
170
+
171
+ ### Variable undefined en build time (Static Generation)
172
+
173
+ ```tsx
174
+ // BIEN — verificar presencia en build y lanzar error descriptivo
175
+ // lib/config.ts
176
+ export function getConfig() {
177
+ const apiKey = process.env.API_KEY;
178
+ if (!apiKey) {
179
+ throw new Error(
180
+ "API_KEY no está definida. " +
181
+ "Agregar al archivo .env.local o a las variables de entorno del servidor."
182
+ );
183
+ }
184
+ return { apiKey };
185
+ }
186
+ ```
187
+
188
+ ---
189
+
190
+ ## Dynamic Import y Carga Diferida
191
+
192
+ ### `Module not found` con dynamic import en Server Component
193
+
194
+ ```tsx
195
+ // MAL — dynamic import de módulo solo-cliente en Server Component
196
+ import dynamic from "next/dynamic";
197
+ const Mapa = dynamic(() => import("leaflet-maps"), { ssr: false });
198
+ // Si Mapa se usa en Server Component el { ssr: false } no tiene efecto completo
199
+
200
+ // BIEN — dynamic con ssr:false solo en Client Components
201
+ "use client";
202
+ import dynamic from "next/dynamic";
203
+
204
+ const MapaDinamico = dynamic(
205
+ () => import("./MapaInteractivo"),
206
+ {
207
+ ssr: false,
208
+ loading: () => <div>Cargando mapa...</div>,
209
+ }
210
+ );
211
+ ```
212
+
213
+ ---
214
+
215
+ ## ISR y Revalidación
216
+
217
+ ### `revalidatePath` / `revalidateTag` no funciona como se espera
218
+
219
+ ```tsx
220
+ // MAL — revalidar desde Client Component
221
+ "use client";
222
+ import { revalidatePath } from "next/cache"; // error: solo en Server Actions/Route Handlers
223
+
224
+ // BIEN — revalidar en Server Action
225
+ // app/actions.ts
226
+ "use server";
227
+ import { revalidatePath } from "next/cache";
228
+
229
+ export async function actualizarDatos() {
230
+ await db.actualizar(/* ... */);
231
+ revalidatePath("/dashboard"); // correcto: Server Action
232
+ }
233
+ ```
234
+
235
+ ---
236
+
237
+ ## Turbopack — Problemas de Compatibilidad
238
+
239
+ ### Plugin de webpack no compatible con Turbopack
240
+
241
+ ```js
242
+ // next.config.js
243
+ // MAL — plugin de webpack que no tiene equivalente en Turbopack
244
+ const withBundleAnalyzer = require("@next/bundle-analyzer")({ enabled: true });
245
+ module.exports = withBundleAnalyzer({
246
+ experimental: { turbo: true } // conflicto probable
247
+ });
248
+
249
+ // BIEN — verificar compatibilidad en https://nextjs.org/docs/app/api-reference/turbopack
250
+ // Usar loaders Turbopack para transformaciones custom
251
+ module.exports = {
252
+ experimental: {
253
+ turbo: {
254
+ rules: {
255
+ "*.svg": {
256
+ loaders: ["@svgr/webpack"],
257
+ as: "*.js",
258
+ },
259
+ },
260
+ },
261
+ },
262
+ };
263
+ ```
264
+
265
+ ---
266
+
267
+ ## Optimización de Imágenes
268
+
269
+ ### `Error: Invalid src prop on next/image`
270
+
271
+ ```tsx
272
+ // MAL — dominio externo no configurado
273
+ import Image from "next/image";
274
+ <Image src="https://imagenes-externas.com/foto.jpg" ... />
275
+ // Error: hostname no está en la lista permitida
276
+
277
+ // BIEN — agregar en next.config.js
278
+ /** @type {import('next').NextConfig} */
279
+ const nextConfig = {
280
+ images: {
281
+ remotePatterns: [
282
+ {
283
+ protocol: "https",
284
+ hostname: "imagenes-externas.com",
285
+ port: "",
286
+ pathname: "/**",
287
+ },
288
+ ],
289
+ },
290
+ };
291
+ module.exports = nextConfig;
292
+ ```
293
+
294
+ ---
295
+
296
+ ## Gotchas / Errores comunes no obvios
297
+
298
+ - **Hydration mismatch solo en producción, no en desarrollo**: `next dev` no detecta el mismatch porque usa renderizado del lado del cliente más permisivo, pero `next build` + `next start` (o producción) aplica comparación estricta del HTML. Causa: el componente usa `new Date()`, `Math.random()`, o `window` en el render inicial, que producen valores diferentes entre servidor y cliente. Solución: mover las llamadas a `new Date()` y valores dinámicos a `useEffect` o `useState` con valor inicial `null`, renderizando el contenido dinámico solo en cliente.
299
+ - **`"use client"` en un componente que importa un Server Component produce error "cannot import Server Component in Client Component"**: el grafo de importaciones tiene un Client Component importando un Server Component directamente. Causa: en el App Router, los Server Components no pueden ser importados por Client Components — el componente debe pasarse como `children` o prop. Solución: reestructurar para que el Server Component sea un padre que pase el Client Component como children, o usar `Suspense` con `lazy()` para la porción cliente.
300
+ - **Variables de entorno NEXT_PUBLIC_* configuradas en Vercel pero no disponibles en el bundle**: las variables se definieron en el proyecto de Vercel pero no se volvió a hacer deploy después de agregarlas. Causa: `NEXT_PUBLIC_*` se embeben en el bundle durante `next build` — si se agregan después del build, el build existente no las contiene. Solución: hacer un redeploy completo después de agregar o cambiar variables `NEXT_PUBLIC_*`; para variables solo de servidor (sin prefijo) basta con un restart sin rebuild.
301
+ - **`next build` falla con "Module not found" para un alias de path configurado en `tsconfig.json`**: tsconfig paths no se propagan automáticamente a la resolución de módulos de Next.js. Causa: Next.js lee `tsconfig.json` para paths solo si hay configuración explícita en `next.config.js` o si el alias está bajo `@/`. Solución: agregar el alias también en `next.config.js` bajo `webpack.resolve.alias` (o en la sección `experimental.turbo.resolveAlias` para Turbopack) — los tsconfig paths solos no son suficientes para el bundler de Next.js.
302
+
303
+ ## Checklist de Diagnóstico
304
+
305
+ - [ ] `next build 2>&1 | grep "Error"` para filtrar solo errores en el output completo.
306
+ - [ ] Para hydration: revisar si el componente usa `window`, `document`, `localStorage` o `Date` en render inicial.
307
+ - [ ] Verificar que todo componente con hooks o event handlers tiene `"use client"` al inicio.
308
+ - [ ] Variables de entorno en cliente: deben tener prefijo `NEXT_PUBLIC_`.
309
+ - [ ] Para ISR: `revalidatePath` y `revalidateTag` solo funcionan en Server Actions y Route Handlers.
310
+ - [ ] `next build --debug` para diagnóstico verbose de la compilación.
311
+ - [ ] Revisar `next.config.js` al migrar de Pages Router a App Router: algunas opciones cambian.
312
+ - [ ] Para Turbopack: verificar en la documentación oficial si el plugin/loader tiene equivalente.