@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,242 @@
1
+ # Regla: Testing en Swift / iOS
2
+
3
+ Esta regla es OBLIGATORIA para todo código Swift nuevo o modificado.
4
+ La orientación a protocolos de Swift permite mocks sin frameworks de generación.
5
+ Swift Testing (Swift 6) es el estándar para código nuevo.
6
+
7
+ ---
8
+
9
+ ## Stack de testing obligatorio
10
+
11
+ | Herramienta | Propósito |
12
+ |------------|----------|
13
+ | XCTest | Framework base (compatible con todas las versiones) |
14
+ | swift-testing | Framework moderno para código Swift 6+ |
15
+ | swift-snapshot-testing | Tests de regresión visual para vistas |
16
+ | XCUITest | Tests de UI end-to-end |
17
+ | Xcode Coverage | Reporte de cobertura integrado en Xcode |
18
+
19
+ ```swift
20
+ // Package.swift — dependencias de test
21
+ .package(url: "https://github.com/pointfreeco/swift-snapshot-testing", from: "1.16.0"),
22
+ .package(url: "https://github.com/apple/swift-testing", from: "0.10.0"),
23
+ ```
24
+
25
+ ---
26
+
27
+ ## swift-testing para código Swift 6 nuevo
28
+
29
+ `swift-testing` usa macros (`@Test`, `@Suite`) y es más expresivo que XCTest.
30
+ Para proyectos que soportan iOS 16 o anterior, usar XCTest.
31
+
32
+ ```swift
33
+ import Testing
34
+
35
+ // BIEN — swift-testing con macros
36
+ @Suite("PedidoViewModel")
37
+ struct PedidoViewModelTests {
38
+
39
+ @Test("Carga pedidos correctamente")
40
+ func cargarPedidosExitoso() async throws {
41
+ // Given
42
+ let repositorioMock = MockPedidoRepository(pedidos: [.ejemplo])
43
+ let viewModel = PedidoViewModel(repositorio: repositorioMock)
44
+
45
+ // When
46
+ await viewModel.cargar()
47
+
48
+ // Then
49
+ #expect(viewModel.pedidos.count == 1)
50
+ #expect(!viewModel.isLoading)
51
+ }
52
+
53
+ @Test("Maneja error de red")
54
+ func cargarPedidosConError() async throws {
55
+ // Given
56
+ let repositorioMock = MockPedidoRepository(error: URLError(.notConnectedToInternet))
57
+ let viewModel = PedidoViewModel(repositorio: repositorioMock)
58
+
59
+ // When
60
+ await viewModel.cargar()
61
+
62
+ // Then
63
+ #expect(viewModel.error != nil)
64
+ #expect(viewModel.pedidos.isEmpty)
65
+ }
66
+ }
67
+ ```
68
+
69
+ ---
70
+
71
+ ## Mocks basados en protocolos (sin frameworks de generación)
72
+
73
+ La orientación a protocolos de Swift hace innecesarios los frameworks de mocking.
74
+ Implementar mocks manualmente: son simples, legibles y sin dependencias.
75
+
76
+ ```swift
77
+ // Protocolo de produccion
78
+ protocol PedidoRepository {
79
+ func obtenerTodos() async throws -> [Pedido]
80
+ func guardar(_ pedido: Pedido) async throws
81
+ }
82
+
83
+ // Mock manual — simple y declarativo
84
+ final class MockPedidoRepository: PedidoRepository {
85
+ var pedidos: [Pedido] = []
86
+ var errorALanzar: Error?
87
+ private(set) var guardarLlamado = false
88
+ private(set) var pedidoGuardado: Pedido?
89
+
90
+ func obtenerTodos() async throws -> [Pedido] {
91
+ if let error = errorALanzar { throw error }
92
+ return pedidos
93
+ }
94
+
95
+ func guardar(_ pedido: Pedido) async throws {
96
+ guardarLlamado = true
97
+ pedidoGuardado = pedido
98
+ if let error = errorALanzar { throw error }
99
+ }
100
+ }
101
+
102
+ // Uso en test
103
+ let mock = MockPedidoRepository()
104
+ mock.pedidos = [Pedido(id: UUID(), total: 150)]
105
+ let vm = PedidoViewModel(repositorio: mock)
106
+ await vm.cargar()
107
+ XCTAssertEqual(vm.pedidos.count, 1)
108
+ ```
109
+
110
+ ---
111
+
112
+ ## Patrón Given-When-Then en XCTest
113
+
114
+ ```swift
115
+ import XCTest
116
+
117
+ final class CrearPedidoUseCaseTests: XCTestCase {
118
+
119
+ private var repositorioMock: MockPedidoRepository!
120
+ private var useCase: CrearPedidoUseCase!
121
+
122
+ override func setUp() {
123
+ super.setUp()
124
+ repositorioMock = MockPedidoRepository()
125
+ useCase = CrearPedidoUseCase(repositorio: repositorioMock)
126
+ }
127
+
128
+ override func tearDown() {
129
+ repositorioMock = nil
130
+ useCase = nil
131
+ super.tearDown()
132
+ }
133
+
134
+ func test_crearPedido_conItemsValidos_guardaYRetornaPedido() async throws {
135
+ // Given
136
+ let items = [ItemPedido(productoId: UUID(), cantidad: 2)]
137
+
138
+ // When
139
+ let pedido = try await useCase.ejecutar(items: items)
140
+
141
+ // Then
142
+ XCTAssertEqual(pedido.items.count, 1)
143
+ XCTAssertTrue(repositorioMock.guardarLlamado)
144
+ XCTAssertEqual(repositorioMock.pedidoGuardado?.id, pedido.id)
145
+ }
146
+
147
+ func test_crearPedido_sinItems_lanzaError() async {
148
+ // Given
149
+ let itemsVacios: [ItemPedido] = []
150
+
151
+ // When / Then
152
+ await XCTAssertThrowsError(
153
+ try await useCase.ejecutar(items: itemsVacios)
154
+ ) { error in
155
+ XCTAssertTrue(error is PedidoError)
156
+ }
157
+ }
158
+ }
159
+ ```
160
+
161
+ ---
162
+
163
+ ## Snapshot testing para regresión visual
164
+
165
+ ```swift
166
+ import SnapshotTesting
167
+
168
+ final class PantallaPedidosSnapshotTests: XCTestCase {
169
+
170
+ func test_pantallaPedidos_estadoSuccess() {
171
+ // Given
172
+ let vm = PedidoViewModel(repositorio: MockPedidoRepository(pedidos: [.ejemplo]))
173
+ let vista = PantallaPedidos(viewModel: vm)
174
+ let vc = UIHostingController(rootView: vista)
175
+
176
+ // Then — genera o compara snapshot
177
+ assertSnapshot(of: vc, as: .image(on: .iPhone13Pro))
178
+ }
179
+ }
180
+ ```
181
+
182
+ Los archivos de snapshot se versionan en git bajo `__Snapshots__/`.
183
+ Un snapshot que falla indica un cambio visual inesperado — revisar antes de actualizar.
184
+
185
+ ---
186
+
187
+ ## Tests de UI con XCUITest
188
+
189
+ ```swift
190
+ final class FlujoCrearPedidoUITests: XCTestCase {
191
+
192
+ var app: XCUIApplication!
193
+
194
+ override func setUp() {
195
+ super.setUp()
196
+ continueAfterFailure = false
197
+ app = XCUIApplication()
198
+ app.launchArguments = ["--uitesting"] // modo de test con datos mock
199
+ app.launch()
200
+ }
201
+
202
+ func test_crearPedido_flujoCompleto() {
203
+ // Given — pantalla de lista de pedidos
204
+ let botonNuevo = app.buttons["nuevo_pedido"]
205
+ XCTAssertTrue(botonNuevo.waitForExistence(timeout: 3))
206
+
207
+ // When — crear pedido
208
+ botonNuevo.tap()
209
+ app.textFields["campo_descripcion"].typeText("Pedido de prueba")
210
+ app.buttons["confirmar_pedido"].tap()
211
+
212
+ // Then — verificar que aparece en la lista
213
+ let textoPedido = app.staticTexts["Pedido de prueba"]
214
+ XCTAssertTrue(textoPedido.waitForExistence(timeout: 5))
215
+ }
216
+ }
217
+ ```
218
+
219
+ ---
220
+
221
+ ## Cobertura con Xcode Coverage
222
+
223
+ Habilitar en el esquema de Xcode: `Edit Scheme → Test → Code Coverage → Gather coverage`.
224
+
225
+ Objetivo de cobertura por capa:
226
+ - Capa de dominio (use cases, modelos): >= 90%
227
+ - Capa de datos (repositorios, mappers): >= 80%
228
+ - Capa de presentación (ViewModels): >= 80%
229
+ - Vistas SwiftUI: snapshot tests cubren regresión visual
230
+
231
+ ---
232
+
233
+ ## Checklist de testing Swift antes de abrir PR
234
+
235
+ - [ ] Tests usan `swift-testing` (Swift 6) o `XCTest` según target de deployment
236
+ - [ ] Mocks implementados manualmente vía protocolos (sin frameworks)
237
+ - [ ] Patrón Given-When-Then con comentarios explícitos
238
+ - [ ] Cobertura de dominio y ViewModels >= 80%
239
+ - [ ] Snapshots generados y versionados para vistas críticas
240
+ - [ ] Tests de UI para flujos críticos con XCUITest
241
+ - [ ] Sin `Thread.sleep()` ni delays fijos: usar `Task` y `await`
242
+ - [ ] `setUp`/`tearDown` limpian estado entre tests
@@ -0,0 +1,60 @@
1
+ # Regla: Lectura de documentos Office y Jupyter con MarkItDown
2
+
3
+ Esta regla aplica cuando un agente necesita **leer el contenido** de un archivo
4
+ en formato Office o Jupyter. No aplica a operaciones de escritura, copia o listado.
5
+
6
+ ---
7
+
8
+ ## Cuándo aplica
9
+
10
+ Cuando el agente necesita acceder al contenido de archivos con estas extensiones:
11
+
12
+ | Extensión | Formato |
13
+ |-----------|---------|
14
+ | `.docx` | Word — documentos, especificaciones, ADRs |
15
+ | `.xlsx` `.xls` | Excel — datos, métricas, matrices |
16
+ | `.pptx` | PowerPoint — presentaciones, roadmaps |
17
+ | `.ipynb` | Jupyter Notebook — análisis, experimentos |
18
+
19
+ ## Regla obligatoria
20
+
21
+ NUNCA usar el Read tool directamente para estos formatos — no los soporta y
22
+ devuelve contenido binario ilegible. Usar en su lugar:
23
+
24
+ ```bash
25
+ # Opción 1: markitdown instalado globalmente (pip install markitdown)
26
+ markitdown <ruta-al-archivo>
27
+
28
+ # Opción 2: wrapper del vendor de swl-ses (si está disponible)
29
+ PROJECT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
30
+ python "$PROJECT_ROOT/scripts/vendor/markitdown/cli.py" <ruta-al-archivo>
31
+
32
+ # Opción 3: módulo Python directamente
33
+ python -m markitdown <ruta-al-archivo>
34
+ ```
35
+
36
+ **Verificar disponibilidad antes de usar**:
37
+ ```bash
38
+ markitdown --version 2>/dev/null && echo "CLI_OK" || echo "NO_DISPONIBLE"
39
+ ```
40
+
41
+ Si no está disponible:
42
+ ```
43
+ markitdown no está instalado. Para habilitarlo:
44
+ pip install markitdown[pdf,docx,pptx,xlsx]
45
+
46
+ Mientras tanto, pedir al usuario que proporcione el contenido en texto plano.
47
+ ```
48
+
49
+ ## Lo que sí usa el Read tool
50
+
51
+ El Read tool sigue siendo correcto para:
52
+ - `.pdf` (hasta 20 páginas con parámetro `pages:`)
53
+ - `.md`, `.txt`, `.markdown`
54
+ - Código fuente (`.py`, `.js`, `.ts`, `.java`, etc.)
55
+ - Cualquier archivo de texto plano
56
+
57
+ ## Referencia completa
58
+
59
+ Para casos avanzados (ingest masivo, URLs YouTube, ZIP con documentos mixtos,
60
+ árbol de decisión completo): `Skill("swl-markitdown")`.
@@ -0,0 +1,209 @@
1
+ # Regla: Consolidación de memoria — dónde va cada dato
2
+
3
+ Esta regla es **OBLIGATORIA** para todos los agentes, skills y comandos que
4
+ escriben conocimiento persistente del sistema. Resuelve el problema de
5
+ memoria fragmentada: SWL tiene 5 mecanismos de almacenamiento y sin una
6
+ regla clara, un mismo dato puede terminar en el lugar incorrecto o duplicado.
7
+
8
+ ---
9
+
10
+ ## Los 5 canales de memoria
11
+
12
+ | # | Canal | Formato | Fuente de verdad de |
13
+ |---|-------|---------|---------------------|
14
+ | 1 | **Memoria nativa de Claude Code** (`~/.claude/projects/.../memory/`) | Archivos `.md` con frontmatter `user`/`feedback`/`project`/`reference` | Perfil general del usuario y del proyecto, auto-gestionado por el harness |
15
+ | 2 | **`.planning/APRENDIZAJES.md`** | Markdown con entradas `### [YYYY-MM-DD] Título` agrupadas por sección | Conocimiento del dominio (anti-patrones, patrones, decisiones, gotchas) |
16
+ | 3 | **`instintos/proyecto.yaml` / `global.yaml` / `perfil-usuario.yaml`** | YAML estructurado con confidence, scope, evidence_count | Patrones aprendidos inductivamente, con promoción/degradación |
17
+ | 4 | **`.planning/sessions/search-index.json`** | Índice FTS de sesiones pasadas | Búsqueda histórica de trabajo (qué se hizo, cuándo) |
18
+ | 5 | **`.planning/evolucion/*`** | JSONL (nudges, agentes) + JSON (métricas, alertas, evoluciones) | Estado del ciclo de auto-evolución |
19
+
20
+ ---
21
+
22
+ ## Regla de asignación — dónde va CADA tipo de dato
23
+
24
+ ### A. Información del usuario
25
+
26
+ | Tipo de dato | Canal correcto | NO va a |
27
+ |---|---|---|
28
+ | Rol profesional, años de experiencia | 1 (memoria `user`) + 3 (perfil-usuario.yaml) | APRENDIZAJES, sessions, proyecto.yaml |
29
+ | Stack preferido del usuario | 3 (perfil-usuario.yaml) | APRENDIZAJES |
30
+ | Corrección explícita del usuario ("prefiero X", "nunca Y") | 1 (memoria `feedback`) + 3 (perfil-usuario.yaml vía perfilador-usuario-swl) | APRENDIZAJES |
31
+ | Preferencia de idioma, formalidad, longitud | 3 (perfil-usuario.yaml) | — |
32
+ | Límites explícitos ("no guardes X") | 3 (perfil-usuario.yaml `limites_explicitos`) | — |
33
+
34
+ ### B. Conocimiento del dominio (aplicable al proyecto o transversal)
35
+
36
+ | Tipo de dato | Canal correcto | NO va a |
37
+ |---|---|---|
38
+ | Anti-patrón descubierto (ej: bug recurrente) | 2 (APRENDIZAJES.md sección "Anti-patrones") | perfil-usuario, instintos directamente |
39
+ | Patrón exitoso reutilizable | 2 (APRENDIZAJES.md) → eventual skill nuevo (tipo C) | perfil-usuario |
40
+ | Decisión de arquitectura tomada | 2 (APRENDIZAJES.md sección "Decisiones") + eventualmente CLAUDE.md | perfil-usuario, instintos sin consolidar primero |
41
+ | Gotcha específico de una librería | 2 (APRENDIZAJES.md) o skill existente | perfil-usuario |
42
+
43
+ ### C. Estado del sistema y observabilidad
44
+
45
+ | Tipo de dato | Canal correcto |
46
+ |---|---|
47
+ | Nudge emitido por un hook | 5 (`.planning/evolucion/nudges.jsonl`) |
48
+ | Evento de subagente terminado | 5 (`.planning/auto-evolucion/agentes.jsonl`) |
49
+ | Evolución aplicada/revertida a skill | 5 (`.planning/evolucion/evoluciones.jsonl`) |
50
+ | Alerta persistente (nudges ignorados) | 5 (`.planning/evolucion/alertas-persistentes.json`) |
51
+ | Métricas agregadas (health score) | 5 (`.planning/evolucion/metricas.json`) |
52
+ | Traza de ejecución de agente | `.planning/traces/` (OTLP-lite) |
53
+ | Audit trail inmutable | `.planning/audit.jsonl` + Merkle |
54
+
55
+ ### D. Patrones consolidados (inductivos, con confidence)
56
+
57
+ | Tipo de dato | Canal correcto |
58
+ |---|---|
59
+ | Patrón observado ≥1 vez con confidence < 0.5 | 3 (instintos/proyecto.yaml como draft) |
60
+ | Patrón consolidado (confidence ≥ 0.5, evidence_count ≥ 3) | 3 (instintos/proyecto.yaml activo) |
61
+ | Patrón validado cross-proyecto (confidence > 0.8) | 3 (instintos/global.yaml tras promoción) |
62
+ | Patrón contradicho (degradado ≥3 veces) | 3 (instintos/proyecto.yaml status `degraded`) o borrado |
63
+
64
+ ### E. Búsqueda histórica
65
+
66
+ | Tipo de dato | Canal correcto |
67
+ |---|---|
68
+ | "¿Qué hicimos la semana pasada en X?" | 4 (sessions/search-index.json) — vía `habilidades/memoria-busqueda` |
69
+ | Sesión completa archivada | `.planning/sessions/*.json` |
70
+
71
+ ---
72
+
73
+ ## Precedencia en caso de conflicto
74
+
75
+ Si un mismo dato aparece en múltiples canales, la prioridad de verdad es:
76
+
77
+ ```
78
+ CLAUDE.md (regla explícita)
79
+ > Memoria nativa tipo feedback del usuario (corrección explícita)
80
+ > instintos con confidence ≥ 0.9
81
+ > APRENDIZAJES.md (si es tipo Decisión)
82
+ > perfil-usuario.yaml
83
+ > instintos con confidence < 0.9
84
+ > sesiones pasadas
85
+ ```
86
+
87
+ ---
88
+
89
+ ## Reglas de no-duplicación
90
+
91
+ 1. **Un dato vive en exactamente un canal** (salvo referencias explícitas).
92
+ Si necesitas citarlo desde otro, usa un puntero/path, no copies el contenido.
93
+
94
+ 2. **perfil-usuario.yaml NUNCA duplica APRENDIZAJES.md.** Una corrección del
95
+ usuario va al perfil; un anti-patrón técnico va a APRENDIZAJES.
96
+
97
+ 3. **instintos/proyecto.yaml bootstrap desde APRENDIZAJES.md** es válido
98
+ (hace `scripts/bootstrap-instintos.js`), pero la fuente de verdad post-bootstrap
99
+ es `instintos/proyecto.yaml`. Nuevos APRENDIZAJES no deben entrar a instintos
100
+ automáticamente — primero se promueven con `/swl:aprender` (tipo C).
101
+
102
+ 4. **La memoria nativa del harness no se sobreescribe** con contenido de SWL.
103
+ El flujo es al revés: señales del usuario pueden alimentar ambos canales
104
+ (native + perfil SWL), pero ninguno es copia del otro.
105
+
106
+ 5. **Cuando detectes duplicación cross-canal**, registrarla como anti-patrón
107
+ en APRENDIZAJES.md y corregir con `scripts/validar-memoria.js`.
108
+
109
+ ---
110
+
111
+ ## Validación automática
112
+
113
+ El script `scripts/validar-memoria.js` detecta duplicaciones y violaciones
114
+ de esta regla. Se ejecuta:
115
+
116
+ - Manualmente: `node scripts/validar-memoria.js`
117
+ - Automáticamente dentro de `scripts/validar.js` (parte del pipeline CI)
118
+
119
+ Reporta: duplicación cross-canal, canal incorrecto para un tipo de dato
120
+ conocido, datos en canales deprecados.
121
+
122
+ ---
123
+
124
+ ## Anti-patrones a detectar
125
+
126
+ - **Corrección del usuario escrita a APRENDIZAJES.md** → debe ir al perfil
127
+ - **Anti-patrón técnico escrito al perfil del usuario** → debe ir a APRENDIZAJES
128
+ - **Métrica persistida en APRENDIZAJES.md** → debe ir a `.planning/evolucion/`
129
+ - **Secreto/credencial en cualquier canal** → bloqueo inmediato (`privacy-memoria`)
130
+ - **Dato duplicado en proyecto.yaml y global.yaml** → uno debe borrarse
131
+ (promover a global SOLO cuando confidence > 0.8 Y validado cross-proyecto)
132
+ - **Instinto activo con `last_validated` antiguo (>180 días) sin feedback**
133
+ → el `effective_confidence` ya está bajo `0.25`. Re-validar manualmente o
134
+ marcar `status: archived`.
135
+
136
+ ---
137
+
138
+ ## Scoring de instintos: decay exponencial + maturity
139
+
140
+ El campo `confidence` en instintos es **estático** (asignado al crear). El valor
141
+ **efectivo** se computa dinámicamente con dos factores:
142
+
143
+ 1. **Decay temporal**: la confianza decae exponencialmente desde `last_validated_at`.
144
+ Half-life por defecto: 90 días. Tras 1 half-life → confianza × 0.5; tras 2 → × 0.25.
145
+ 2. **Penalización por feedback dañino**: si `harmful_count / (helpful_count + harmful_count) > 0.3`
146
+ con al menos 3 eventos, el instinto se propone para `status: degraded`.
147
+
148
+ Implementación pura en `scripts/lib/scoring-instintos.js`:
149
+
150
+ ```js
151
+ const { effectiveConfidence, maturityState, applyFeedback } = require('./scoring-instintos');
152
+
153
+ // Lectura
154
+ const eff = effectiveConfidence(instinto, new Date());
155
+ const maturity = maturityState(instinto, new Date());
156
+ // → 'candidate' | 'established' | 'proven' | 'deprecated'
157
+
158
+ // Escritura (pure)
159
+ const conFeedback = applyFeedback(instinto, 'helpful');
160
+ ```
161
+
162
+ **Cuándo recomputar**:
163
+ - `/swl:salud` reporta instintos con `effective_confidence < 0.3` para revisión.
164
+ - `hooks/degradacion-instintos.js` puede marcar `status_proposed: degraded`
165
+ cuando `shouldAutoDeprecate(instinto)` devuelve `true`.
166
+ - `bootstrap-instintos.js` emite los nuevos instintos con `decay_half_life_days: 90`,
167
+ `helpful_count: 0`, `harmful_count: 0` por defecto.
168
+
169
+ **Backward compat**: instintos antiguos sin los campos nuevos siguen siendo
170
+ válidos. `effectiveConfidence` cae a `confidence * decay` cuando no hay feedback,
171
+ y `last_validated` (sin `_at`) se usa como fallback.
172
+
173
+ ---
174
+
175
+ ## Source tracing en instintos y APRENDIZAJES
176
+
177
+ Cada instinto puede declarar la **evidencia que lo respalda** mediante:
178
+
179
+ - `source_sessions: ["sess-abc", "sess-def"]` — sesiones que lo generaron o validaron
180
+ - `source_agents: ["orquestador-swl", "implementador-swl"]` — agentes que lo aplicaron exitosamente
181
+ - `evidence_count: N` — total numérico (compatibilidad legacy)
182
+
183
+ **Reglas**:
184
+
185
+ 1. Un instinto con `confidence ≥ 0.7` debe tener al menos 1 entrada en
186
+ `source_sessions` o `source_agents` para justificar la confianza.
187
+ 2. Para promover de `instintos/proyecto.yaml` a `instintos/global.yaml`, el
188
+ instinto debe tener `source_agents.length ≥ 2` o `source_sessions.length ≥ 3`
189
+ — un solo punto de evidencia no es suficiente para impacto cross-proyecto.
190
+ 3. El campo `source_sessions` referencia IDs de `.planning/sessions/`. No copiar
191
+ el contenido — usar el ID como puntero.
192
+ 4. `addSource()` en `scripts/lib/scoring-instintos.js` mantiene unicidad
193
+ automática. NUNCA editar manualmente con duplicados.
194
+
195
+ **Anti-patrón**: instinto con `evidence_count: 10` pero `source_sessions: []` y
196
+ `source_agents: []` — la cifra es opaca, no se puede auditar de dónde viene.
197
+
198
+ ---
199
+
200
+ ## Checklist antes de escribir a memoria
201
+
202
+ Antes de que cualquier agente, skill o hook persista un dato, debe responder:
203
+
204
+ 1. ¿Es información del **usuario**, del **dominio**, de **estado del sistema**,
205
+ un **patrón inductivo**, o **búsqueda histórica**? → identifica canal A-E.
206
+ 2. ¿El canal elegido es el correcto según la tabla de asignación?
207
+ 3. ¿El dato ya existe en otro canal? Si sí, actualiza ese, no dupliques.
208
+ 4. ¿El dato contiene PII, secretos o contenido sensible? → cargar `privacy-memoria`.
209
+ 5. ¿El dato viene de texto del usuario? → escanear con `prompt-injection-scanner`.