@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,284 @@
1
+ ---
2
+ name: build-errors-rust
3
+ description: >
4
+ Resolución de errores de compilación Rust: cargo build, clippy, borrow checker
5
+ y lifetimes. Incluye errores de trait bounds, async y feature flags.
6
+ Cargar cuando un build Rust falle o haya errores del borrow checker, lifetimes
7
+ o compilación de crates.
8
+ version: "1.0.0"
9
+ herramientasPermitidas: [Read, Bash, Grep]
10
+ exclusiones:
11
+ - "No cargar para panics en runtime (unwrap() en None, index out of bounds en ejecución) — si `cargo build` pasa pero el programa panics, es un error lógico; diagnosticar con `RUST_BACKTRACE=1`."
12
+ - "No cargar para diseñar la arquitectura de crates en un workspace Rust — si la pregunta es cómo estructurar un workspace multi-crate o qué crates separar, cargar `rust-patrones` o `rust-experto`."
13
+ - "No cargar para fallos de tests que son correctos a nivel de compilación (assert_eq! con valor incorrecto) — si `cargo test --no-run` pasa pero los tests fallan, es un error de lógica de tests."
14
+ - "No cargar para problemas de rendimiento de Rust detectados en profiling — si el código compila y es correcto pero es lento, no es un error de build; usar flamegraph y profiling."
15
+ evolvable: true # default para skill estandar
16
+ ---
17
+ # Build Errors Rust — Diagnóstico y Solución
18
+
19
+ ## Cuándo NO cargar
20
+
21
+ - El programa compila pero panics en runtime (`unwrap()` en `None`, OOB index) — no es un error de compilación; diagnosticar con `RUST_BACKTRACE=1`.
22
+ - Los tests fallan por `assert_eq!` con valor incorrecto aunque `cargo test --no-run` pasa — es un error de lógica, no de build.
23
+ - La pregunta es cómo estructurar un workspace o separar crates — para arquitectura cargar `rust-patrones`.
24
+
25
+ ## Cuándo cargar
26
+
27
+ - `cargo build` o `cargo test` falla con mensajes del compilador
28
+ - Errores del borrow checker (`cannot borrow`, `value moved`, `does not live long enough`)
29
+ - Errores de lifetime (`missing lifetime specifier`, `conflicting requirements`)
30
+ - Errores de trait bounds (`the trait X is not implemented for Y`)
31
+ - Warnings de clippy que bloquean CI con `RUSTFLAGS="-D warnings"`
32
+ - Errores de features o dependencias de crates
33
+
34
+ ---
35
+
36
+ ## Borrow Checker — Errores Más Frecuentes
37
+
38
+ ### `cannot borrow as mutable because it is also borrowed as immutable`
39
+
40
+ **Causa**: se intenta mutar un valor mientras existe una referencia inmutable viva.
41
+
42
+ ```rust
43
+ // MAL
44
+ let mut v = vec![1, 2, 3];
45
+ let first = &v[0]; // referencia inmutable activa
46
+ v.push(4); // error: mutacion mientras existe referencia
47
+ println!("{first}");
48
+
49
+ // BIEN: acotar el lifetime de la referencia inmutable
50
+ let mut v = vec![1, 2, 3];
51
+ {
52
+ let first = &v[0];
53
+ println!("{first}");
54
+ } // referencia inmutable cae aquí
55
+ v.push(4);
56
+ ```
57
+
58
+ ### `value used after move`
59
+
60
+ **Causa**: un tipo sin `Copy` se mueve a otra variable o función y luego se usa.
61
+
62
+ ```rust
63
+ // MAL
64
+ let s = String::from("hola");
65
+ let s2 = s; // s se mueve a s2
66
+ println!("{s}"); // error: s fue movido
67
+
68
+ // BIEN — opción 1: clonar si se necesitan dos copias independientes
69
+ let s2 = s.clone();
70
+ println!("{s} {s2}");
71
+
72
+ // BIEN — opción 2: pasar referencia en vez de mover
73
+ fn imprimir(texto: &str) { println!("{texto}"); }
74
+ imprimir(&s);
75
+ println!("{s}"); // s sigue siendo válido
76
+ ```
77
+
78
+ ### `does not live long enough`
79
+
80
+ **Causa**: una referencia se usa más allá del lifetime del valor al que apunta.
81
+
82
+ ```rust
83
+ // MAL
84
+ fn obtener_nombre() -> &str { // error: falta especificador de lifetime
85
+ let nombre = String::from("Ana");
86
+ &nombre // nombre se destruye al salir de la función
87
+ }
88
+
89
+ // BIEN — opción 1: retornar String (owned)
90
+ fn obtener_nombre() -> String {
91
+ String::from("Ana")
92
+ }
93
+
94
+ // BIEN — opción 2: tomar referencia de entrada y retornarla
95
+ fn primer_nombre<'a>(texto: &'a str) -> &'a str {
96
+ texto.split_whitespace().next().unwrap_or("")
97
+ }
98
+ ```
99
+
100
+ ---
101
+
102
+ ## Lifetimes — Errores de Especificación
103
+
104
+ ### `missing lifetime specifier`
105
+
106
+ **Causa**: el compilador no puede inferir el lifetime de una referencia en la firma.
107
+
108
+ ```rust
109
+ // MAL — el compilador no sabe de dónde viene el lifetime del retorno
110
+ struct Extractor { separador: char }
111
+ impl Extractor {
112
+ fn extraer(&self, texto: &str) -> &str { // ambiguo: de &self o de texto?
113
+ texto.split(self.separador).next().unwrap_or("")
114
+ }
115
+ }
116
+
117
+ // BIEN — anotar explícitamente
118
+ impl Extractor {
119
+ fn extraer<'a>(&self, texto: &'a str) -> &'a str {
120
+ texto.split(self.separador).next().unwrap_or("")
121
+ }
122
+ }
123
+ ```
124
+
125
+ ### `lifetime may not live long enough` en structs con referencias
126
+
127
+ ```rust
128
+ // MAL
129
+ struct Reporte {
130
+ titulo: &str, // error: falta parametro de lifetime
131
+ }
132
+
133
+ // BIEN
134
+ struct Reporte<'a> {
135
+ titulo: &'a str,
136
+ }
137
+ ```
138
+
139
+ ---
140
+
141
+ ## Trait Bounds — Errores de Implementación
142
+
143
+ ### `the trait X is not implemented for Y`
144
+
145
+ **Causa**: se usa un tipo donde se requiere un trait que no implementa.
146
+
147
+ ```rust
148
+ // MAL
149
+ fn imprimir_todos<T>(items: Vec<T>) {
150
+ for item in items {
151
+ println!("{item}"); // error: T no implementa Display
152
+ }
153
+ }
154
+
155
+ // BIEN — agregar el bound necesario
156
+ use std::fmt::Display;
157
+ fn imprimir_todos<T: Display>(items: Vec<T>) {
158
+ for item in items {
159
+ println!("{item}");
160
+ }
161
+ }
162
+ ```
163
+
164
+ ### `cannot be sent between threads safely` / `future is not Send`
165
+
166
+ **Causa**: tipo que no implementa `Send` o `Sync` se usa en contexto async multi-hilo
167
+ (tokio, rayon).
168
+
169
+ ```rust
170
+ // MAL — Rc no es Send
171
+ use std::rc::Rc;
172
+ async fn tarea() {
173
+ let dato = Rc::new(42);
174
+ tokio::spawn(async move { println!("{dato}"); }); // error: Rc no es Send
175
+ }
176
+
177
+ // BIEN — usar Arc para compartir entre hilos
178
+ use std::sync::Arc;
179
+ async fn tarea() {
180
+ let dato = Arc::new(42);
181
+ tokio::spawn(async move { println!("{dato}"); }); // ok: Arc es Send
182
+ }
183
+ ```
184
+
185
+ ---
186
+
187
+ ## Cargo Build — Errores de Dependencias y Features
188
+
189
+ ### `unresolved import` / `use of undeclared crate`
190
+
191
+ **Causa**: crate no declarado en `Cargo.toml` o feature no habilitada.
192
+
193
+ ```toml
194
+ # Verificar que el crate existe en Cargo.toml
195
+ [dependencies]
196
+ serde = { version = "1", features = ["derive"] }
197
+ tokio = { version = "1", features = ["full"] }
198
+
199
+ # Error típico: usar serde::Serialize sin habilitar feature "derive"
200
+ # serde = "1" <- MAL si se usa #[derive(Serialize)]
201
+ ```
202
+
203
+ ### `feature X is not defined in package Y`
204
+
205
+ **Causa**: se solicita un feature que no existe en esa versión del crate.
206
+
207
+ ```toml
208
+ # Diagnóstico: ver features disponibles
209
+ # cargo metadata --format-version 1 | jq '.packages[] | select(.name=="nombre") | .features'
210
+
211
+ # MAL — feature inventado o renombrado en nueva version
212
+ tokio = { version = "1", features = ["io_util"] } # nombre incorrecto
213
+
214
+ # BIEN — nombre exacto del feature
215
+ tokio = { version = "1", features = ["io-util"] }
216
+ ```
217
+
218
+ ---
219
+
220
+ ## Clippy — Warnings que Bloquean CI
221
+
222
+ | Warning | Causa | Solución |
223
+ |---------|-------|----------|
224
+ | `needless_return` | `return expr;` al final | Quitar `return` |
225
+ | `clone_on_copy` | `.clone()` en tipo `Copy` | Quitar `.clone()` |
226
+ | `manual_map` | `match opt { Some(x) => Some(f(x)), None => None }` | Usar `opt.map(f)` |
227
+ | `unwrap_or_else` | `.unwrap_or(f())` cuando `f()` es costosa | Usar `.unwrap_or_else(\|\| f())` |
228
+ | `redundant_closure` | `\|x\| f(x)` donde `f` es una función | Usar `f` directamente |
229
+
230
+ ```rust
231
+ // Suprimir warning específico documentado con razón
232
+ #[allow(clippy::too_many_arguments)]
233
+ fn configurar_pipeline(/* 8 parámetros justificados */) { }
234
+
235
+ // Para todo el proyecto en clippy.toml:
236
+ // avoid-breaking-exported-api = false
237
+ ```
238
+
239
+ ---
240
+
241
+ ## Errores Async Avanzados
242
+
243
+ ### `async fn in trait` (pre Rust 1.75)
244
+
245
+ **Causa**: versiones anteriores no soportaban `async fn` directo en traits.
246
+
247
+ ```rust
248
+ // MAL en Rust < 1.75
249
+ trait Servicio {
250
+ async fn procesar(&self) -> Result<(), Error>; // no permitido
251
+ }
252
+
253
+ // BIEN — usar crate async-trait o boxear el futuro
254
+ use async_trait::async_trait;
255
+ #[async_trait]
256
+ trait Servicio {
257
+ async fn procesar(&self) -> Result<(), Error>;
258
+ }
259
+
260
+ // O en Rust 1.75+ directamente sin async-trait
261
+ trait Servicio {
262
+ fn procesar(&self) -> impl Future<Output = Result<(), Error>> + Send;
263
+ }
264
+ ```
265
+
266
+ ---
267
+
268
+ ## Gotchas / Errores comunes no obvios
269
+
270
+ - **El compilador sugiere agregar lifetime `'a` pero agregarlo produce un error diferente en el llamador**: el error original era incorrecto en su diagnóstico — el problema real es que la función devuelve una referencia que vive menos que el caller. Causa: rustc a veces sugiere lifetimes que resuelven el error local pero desplazan el problema al sitio de llamada. Solución: en lugar de seguir la sugerencia del compilador ciegamente, dibujar el diagrama de ownership: si el valor puede no existir cuando se necesita, la solución correcta es clonar o devolver un `String`/`Vec` owned en lugar de una referencia.
271
+ - **`cannot move out of X because it is borrowed`** aparece en código que debería ser seguro: hay un `Mutex::lock()` cuyo guard no está en una variable explícita — se crea temporariamente en una expresión y se libera antes de lo esperado. Causa: `mutex.lock().unwrap().metodo()` libera el lock al final de la expresión, pero si el valor retornado tiene un lifetime ligado al lock, el compilador detecta el conflicto. Solución: asignar el guard a una variable explícita con `let guard = mutex.lock().unwrap(); let val = guard.metodo();`.
272
+ - **Clippy bloquea CI con `#[allow(clippy::X)]` que ya no es necesario en la nueva versión**: después de actualizar Rust, el `#[allow]` para un lint que ya no existe produce un warning de "unknown lint" que con `-D warnings` se convierte en error. Causa: los nombres de lints de clippy cambian entre versiones. Solución: ejecutar `cargo clippy 2>&1 | grep "unknown lint"` para detectar `#[allow]` obsoletos y eliminarlos.
273
+ - **`cargo build` falla con `error: failed to run custom build command for X-sys`**: los bindings de C a través de `*-sys` crates requieren que la librería nativa esté instalada en el sistema. Causa: crates como `openssl-sys`, `sqlite3-sys` o `libpq-sys` ejecutan un script de build que invoca `pkg-config` para encontrar la librería del sistema; si no está instalada, el build falla con un mensaje confuso. Solución: instalar la librería del sistema (`libssl-dev`, `libsqlite3-dev`, etc.) o agregar al `Cargo.toml` la feature `vendored` si el crate la ofrece (`openssl = { features = ["vendored"] }`).
274
+
275
+ ## Checklist de Diagnóstico
276
+
277
+ - [ ] Leer el error completo: rustc incluye la causa, ubicación y sugerencia.
278
+ - [ ] Ejecutar `cargo check` antes de `cargo build` para feedback más rápido.
279
+ - [ ] Usar `cargo clippy -- -D warnings` en CI para detectar problemas anticipados.
280
+ - [ ] Si el error menciona lifetime: dibujar el diagrama de propiedad en papel.
281
+ - [ ] Si el error es `not Send`: buscar `Rc`, `RefCell`, `*mut`, raw pointers en el tipo.
282
+ - [ ] Si hay conflicto de features: `cargo tree -f "{p} {f}"` para ver el árbol de features.
283
+ - [ ] `RUST_BACKTRACE=1 cargo test` para stack trace completo en panics.
284
+ - [ ] `cargo expand` (requiere `cargo-expand`) para depurar macros que no compilan.
@@ -0,0 +1,272 @@
1
+ ---
2
+ name: build-errors-swift
3
+ description: >
4
+ Resolución de errores de compilación Swift: swiftc, Swift Package Manager,
5
+ Xcode build y Swift 6 concurrency. Incluye errores de signing, provisioning,
6
+ módulos y linker.
7
+ Cargar cuando un build Swift/iOS 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 lógica de la app iOS/macOS en runtime (crashes en EXC_BAD_ACCESS, lógica de negocio incorrecta) cuando `xcodebuild` compila — si el archive se genera pero la app crashea, no es un error de compilación."
12
+ - "No cargar para fallos de XCTest cuando el build compila (assertions fallidas, snapshot tests que difieren) — es un error de lógica de tests, no de build."
13
+ - "No cargar para diseñar la arquitectura Swift/iOS desde cero (MVVM, TCA, SwiftUI vs UIKit) — si la pregunta es qué patrón usar, cargar `swift-patrones` o `swift-experto`."
14
+ - "No cargar para problemas de distribución de App Store o TestFlight que no son errores de compilación (metadatos, capturas de pantalla, review guidelines) — esos son problemas de distribución, no de build."
15
+ evolvable: true # default para skill estandar
16
+ ---
17
+ # Build Errors Swift — Diagnóstico y Solución
18
+
19
+ ## Cuándo NO cargar
20
+
21
+ - El build compila pero la app crashea en runtime (EXC_BAD_ACCESS, lógica incorrecta) — no es un error de build; analizar con el crash log y Xcode debugger.
22
+ - XCTest compila pero las assertions fallan — es un error de lógica de tests.
23
+ - La pregunta es qué arquitectura usar en SwiftUI — para diseño cargar `swift-patrones`.
24
+
25
+ ## Cuándo cargar
26
+
27
+ - `xcodebuild` o `swift build` falla con errores del compilador
28
+ - Errores de Swift 6 concurrency (`Sendable`, actor isolation)
29
+ - Errores de SPM (resolución de dependencias, version conflicts)
30
+ - Errores de Xcode (signing, provisioning profile, bitcode)
31
+ - `module not found` o errores de importación
32
+ - Errores de linker en proyectos Swift/ObjC mixtos
33
+
34
+ ---
35
+
36
+ ## Errores del Compilador Swift
37
+
38
+ ### `value of type X has no member Y`
39
+
40
+ **Causa**: propiedad o método no existe en el tipo, typo en el nombre, o falta import.
41
+
42
+ ```swift
43
+ // MAL
44
+ import Foundation
45
+ let url = URL(string: "https://ejemplo.com")
46
+ let host = url.hostname // error: URL no tiene 'hostname'
47
+
48
+ // BIEN — verificar nombre correcto en documentación
49
+ let host = url?.host // propiedad correcta en URL
50
+ let hostStr = url?.host() // en versiones modernas es funcion
51
+
52
+ // MAL — acceder a miembro de Optional sin desenvolver
53
+ var texto: String? = "hola"
54
+ let longitud = texto.count // error: Optional<String> no tiene 'count'
55
+
56
+ // BIEN
57
+ let longitud = texto?.count ?? 0
58
+ ```
59
+
60
+ ### `cannot convert value of type X to expected argument type Y`
61
+
62
+ **Causa**: tipo incorrecto pasado a una función o inicializador.
63
+
64
+ ```swift
65
+ // MAL
66
+ func configurar(timeout: TimeInterval) { }
67
+ configurar(timeout: 30) // error: Int no convierte a TimeInterval implícitamente
68
+
69
+ // BIEN — conversión explícita o usar el tipo correcto desde el inicio
70
+ configurar(timeout: TimeInterval(30))
71
+ configurar(timeout: 30.0) // Double literal -> TimeInterval (alias de Double)
72
+
73
+ // MAL — String vs Data
74
+ URLSession.shared.uploadTask(with: request, from: "datos") // error: String no es Data
75
+
76
+ // BIEN
77
+ let datos = "datos".data(using: .utf8)!
78
+ URLSession.shared.uploadTask(with: request, from: datos)
79
+ ```
80
+
81
+ ### `expression is ambiguous without more context`
82
+
83
+ **Causa**: inferencia de tipos falla por sobrecarga de funciones o literales ambiguos.
84
+
85
+ ```swift
86
+ // MAL
87
+ let resultado = [1, 2, 3].map { $0 * 2 } // puede ser ambiguo en contextos complejos
88
+
89
+ // BIEN — anotar el tipo explícitamente
90
+ let resultado: [Int] = [1, 2, 3].map { $0 * 2 }
91
+
92
+ // MAL en SwiftUI
93
+ Text(valor) // error si 'valor' puede ser Int o String
94
+
95
+ // BIEN
96
+ Text(String(valor))
97
+ Text("\(valor)")
98
+ ```
99
+
100
+ ---
101
+
102
+ ## Swift 6 Concurrency — Errores de Sendable y Actor Isolation
103
+
104
+ ### `sending non-Sendable value across actor boundary`
105
+
106
+ **Causa**: se pasa un tipo no-Sendable a un contexto de actor o tarea async.
107
+
108
+ ```swift
109
+ // MAL — clase mutable sin Sendable
110
+ class ConfiguracionMutable {
111
+ var tema: String = "oscuro"
112
+ }
113
+
114
+ // En Swift 6 esto falla:
115
+ Task {
116
+ let config = ConfiguracionMutable()
117
+ await procesador.configurar(config) // error: no es Sendable
118
+ }
119
+
120
+ // BIEN — opción 1: usar struct (implícitamente Sendable si todos los campos lo son)
121
+ struct Configuracion: Sendable {
122
+ let tema: String
123
+ }
124
+
125
+ // BIEN — opción 2: marcar como @unchecked Sendable con sincronización manual
126
+ final class ConfiguracionSincronizada: @unchecked Sendable {
127
+ private let lock = NSLock()
128
+ private var _tema: String = "oscuro"
129
+ var tema: String {
130
+ get { lock.withLock { _tema } }
131
+ set { lock.withLock { _tema = newValue } }
132
+ }
133
+ }
134
+ ```
135
+
136
+ ### `actor-isolated property can not be referenced from a non-isolated context`
137
+
138
+ **Causa**: acceder a propiedad de un actor sin `await`.
139
+
140
+ ```swift
141
+ // MAL
142
+ actor GestorCache {
143
+ var elementos: [String: Any] = [:]
144
+ }
145
+
146
+ let gestor = GestorCache()
147
+ print(gestor.elementos) // error: requiere await
148
+
149
+ // BIEN — acceder desde contexto async
150
+ Task {
151
+ let elems = await gestor.elementos
152
+ print(elems)
153
+ }
154
+
155
+ // BIEN — si el acceso es frecuente, exponer una función nonisolated
156
+ extension GestorCache {
157
+ nonisolated var descripcion: String { "GestorCache" }
158
+ }
159
+ ```
160
+
161
+ ---
162
+
163
+ ## Swift Package Manager — Errores de Dependencias
164
+
165
+ ### `the package at X has no remote at Y`
166
+
167
+ **Causa**: URL del repositorio incorrecta o privada sin credenciales.
168
+
169
+ ```swift
170
+ // En Package.swift — verificar URL exacta
171
+ .package(url: "https://github.com/org/paquete.git", from: "1.0.0")
172
+
173
+ // Para paquetes privados en Xcode:
174
+ // Xcode > Preferences > Accounts > agregar cuenta GitHub/GitLab con token
175
+ ```
176
+
177
+ ### Conflicto de versiones entre dependencias transitivas
178
+
179
+ ```swift
180
+ // Error: "package has already been required using a different source control requirement"
181
+ // Un paquete requerido con diferentes rangos de versión
182
+
183
+ // SOLUCIÓN: pinear versión exacta en Package.swift de la app
184
+ .package(url: "https://github.com/apple/swift-log.git", exact: "1.5.3")
185
+
186
+ // O usar el mínimo compatible que satisfaga a todos
187
+ .package(url: "https://github.com/apple/swift-log.git", from: "1.5.0")
188
+ ```
189
+
190
+ ---
191
+
192
+ ## Xcode Build — Signing y Provisioning
193
+
194
+ ### `Code signing is required for product type 'Application'`
195
+
196
+ ```bash
197
+ # Diagnóstico rápido
198
+ xcodebuild -showBuildSettings | grep -E "CODE_SIGN|DEVELOPMENT_TEAM|PROVISIONING"
199
+
200
+ # Para CI sin cuenta de desarrollador (simulador/tests):
201
+ xcodebuild test \
202
+ -scheme MiApp \
203
+ -destination 'platform=iOS Simulator,name=iPhone 15' \
204
+ CODE_SIGNING_ALLOWED=NO \
205
+ CODE_SIGNING_REQUIRED=NO
206
+
207
+ # Para builds de producción: usar automatic signing en Xcode
208
+ # o exportar el perfil de aprovisionamiento como archivo .mobileprovision
209
+ ```
210
+
211
+ ### `Provisioning profile doesn't include the X entitlement`
212
+
213
+ **Causa**: la capability está en el proyecto pero no en el provisioning profile.
214
+
215
+ ```
216
+ Pasos de resolución:
217
+ 1. Xcode > Signing & Capabilities > verificar que la capability está listada
218
+ 2. developer.apple.com > Identifiers > actualizar App ID con la capability
219
+ 3. Regenerar provisioning profile en developer.apple.com
220
+ 4. Xcode > Preferences > Accounts > Download Manual Profiles
221
+ ```
222
+
223
+ ---
224
+
225
+ ## Module Not Found / Linker Errors
226
+
227
+ ### `No such module 'X'`
228
+
229
+ **Causa**: framework no agregado al target, o SPM no resuelto.
230
+
231
+ ```bash
232
+ # Para SPM: resolver paquetes
233
+ File > Packages > Resolve Package Versions
234
+
235
+ # Para frameworks del sistema: agregar en Xcode
236
+ # Target > Build Phases > Link Binary With Libraries > agregar el framework
237
+
238
+ # Para frameworks propios: verificar FRAMEWORK_SEARCH_PATHS en Build Settings
239
+ ```
240
+
241
+ ### `Undefined symbol: _X` (linker error)
242
+
243
+ **Causa**: símbolo declarado pero no implementado, o librería no linkeada.
244
+
245
+ ```bash
246
+ # Diagnóstico: el error indica el archivo objeto que necesita el símbolo
247
+ # Buscar en que libreria/framework esta el simbolo:
248
+ nm -gU /path/to/Framework.framework/Framework | grep "_NombreSimbolo"
249
+
250
+ # Si es Swift <-> ObjC interop: verificar que el bridging header esta configurado
251
+ # Build Settings > Swift Compiler - General > Objective-C Bridging Header
252
+ ```
253
+
254
+ ---
255
+
256
+ ## Gotchas / Errores comunes no obvios
257
+
258
+ - **Swift 6 strict concurrency activa en el package pero no en los targets individuales**: `swift build` falla con errores de actor isolation aunque el developer activó `SWIFT_STRICT_CONCURRENCY=complete` en el paquete raíz. Causa: en Swift Package Manager, el flag de concurrency debe declararse en cada target individualmente en `Package.swift` con `swiftSettings: [.enableExperimentalFeature("StrictConcurrency")]` — el setting del paquete padre no se propaga automáticamente. Solución: agregar el setting por target explícitamente, o usar el flag de compilación `-strict-concurrency=complete` en CI.
259
+ - **SPM resuelve el paquete correctamente en Xcode pero `swift build` en terminal falla con "no such module"**: el proyecto Xcode tiene un `DerivedData` cacheado con la versión correcta, pero en terminal el directorio de build es diferente. Causa: Xcode y `swift build` usan directorios de caché diferentes (`DerivedData` vs `.build/`). Solución: ejecutar `swift package resolve && swift build` desde el directorio del paquete, o eliminar el directorio `.build/` para forzar una resolución limpia.
260
+ - **Error de signing "No profiles for bundle identifier X"** en CI aunque el certificate y el provisioning profile están instalados: el provisioning profile está instalado para el usuario del developer pero el CI ejecuta con un usuario diferente. Causa: los profiles se instalan en `~/Library/MobileDevice/Provisioning Profiles/` del usuario actual — en CI cada ejecución puede tener un usuario diferente. Solución: copiar el provisioning profile al directorio del usuario del agente CI en el step de setup, o usar `xcodebuild -allowProvisioningUpdates` con App Store Connect credentials.
261
+ - **`Product > Clean Build Folder` resuelve el error temporalmente pero vuelve a aparecer en el siguiente build incremental**: hay un archivo generado por un script de build phase que tiene un timestamp más nuevo que los archivos fuente, forzando una recompilación con el archivo corrupto. Causa: un `Run Script Build Phase` sin `Input Files` ni `Output Files` declarados se ejecuta en cada build incremental y puede sobreescribir archivos generados con contenido incorrecto. Solución: agregar `Input Files` y `Output Files` explícitos al script de build phase para que Xcode solo lo ejecute cuando los inputs cambien.
262
+
263
+ ## Checklist de Diagnóstico
264
+
265
+ - [ ] Leer el error completo en Xcode: el error secundario suele ser la causa raíz.
266
+ - [ ] `Product > Clean Build Folder` (Cmd+Shift+K) antes de reintentar.
267
+ - [ ] Para errores de Swift 6: habilitar incrementalmente con `SWIFT_STRICT_CONCURRENCY`.
268
+ - [ ] Para SPM: `File > Packages > Reset Package Caches` si hay errores de resolución.
269
+ - [ ] `xcodebuild -verbose` en terminal para diagnóstico más detallado que la UI.
270
+ - [ ] Verificar que `IPHONEOS_DEPLOYMENT_TARGET` es compatible con las APIs usadas.
271
+ - [ ] Para errores de signing en CI: verificar que los certificados no expiraron.
272
+ - [ ] `swift package diagnose-api-breaking-changes` para detectar breaking changes en SPM.