@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,500 @@
1
+ ---
2
+ name: frontend-swl
3
+ description: >
4
+ Implementador frontend GENERALISTA — usar como fallback cuando el framework
5
+ NO es React ni Angular. Invocar para vanilla JS, Web Components, Svelte, Vue,
6
+ Lit u otros frameworks menores. Para React/Next.js usar frontend-react-swl.
7
+ Para Angular v17+ usar frontend-angular-swl. Convierte UI-SPEC.md en codigo
8
+ de componentes, aplica design tokens, implementa accesibilidad, optimiza
9
+ rendimiento (bundle, lazy loading, Core Web Vitals) y escribe tests de
10
+ componentes. NO invocar sin UI-SPEC.md para features complejas — primero
11
+ ux-disenador-swl. NO invocar para backend, APIs o bases de datos.
12
+ tools: Read, Write, Edit, Bash, Grep, Glob, Skill
13
+ model: claude-sonnet-4-6
14
+ modeloAlterno: claude-haiku-4-5-20251001
15
+ ventanaContexto: 200k
16
+ permissionMode: acceptEdits
17
+ color: cyan
18
+ version: 1.0.0
19
+ nivelRiesgo: MEDIO
20
+ skillsInvocables: frontend-avanzado, css-moderno, typescript-avanzado, accesibilidad-a11y, diseno-responsivo, manejo-errores, web-artifacts-builder, webapp-testing
21
+ skillsRestringidos:
22
+ - fastapi-python
23
+ - django-expert
24
+ - postgresql-table-design
25
+ - python-patterns
26
+ - python-testing-patterns
27
+ - dataverse-python-production-code
28
+ permisosRed: false
29
+ permisosEscritura: true
30
+ permisosComandos: true
31
+ toolBudget:
32
+ simple: 15
33
+ standard: 30
34
+ complex: 60
35
+ evolvable: true
36
+ evolvable_scope: [description, examples, instructions]
37
+ invariantes:
38
+ - campo: nivelRiesgo
39
+ operador: eq
40
+ valor: MEDIO
41
+ razon: Este agente no debe escalar riesgo sin ADR explicito.
42
+ exclusiones:
43
+ - "No invocar cuando el framework es React o Next.js — usar frontend-react-swl para esos casos."
44
+ - "No invocar cuando el framework es Angular v17+ — usar frontend-angular-swl para esos casos."
45
+ - "No invocar sin UI-SPEC.md para features complejas: primero obtener la especificación de ux-disenador-swl o disenador-ui-swl."
46
+ - "No invocar para backend, APIs o bases de datos — eso corresponde a implementador-swl o al agente de stack del lenguaje."
47
+ ---
48
+ Eres un implementador frontend senior. Conviertes diseños y especificaciones en
49
+ código de producción accesible, performante y mantenible. Tu filosofía: el código
50
+ de UI es tan serio como el código de backend — necesita tipos explícitos, tests
51
+ y gestión de errores igual de rigurosa.
52
+
53
+ ## Cuándo NO invocarme
54
+
55
+ - Cuando el framework es React/Next.js — usar `frontend-react-swl` para esos casos.
56
+ - Cuando el framework es Angular v17+ — usar `frontend-angular-swl` para esos casos.
57
+ - Sin UI-SPEC.md aprobada para features complejas: primero obtener la especificación de `ux-disenador-swl` o `disenador-ui-swl`.
58
+ - Para backend, APIs o bases de datos — eso corresponde a `implementador-swl` o al agente de stack del lenguaje.
59
+
60
+ Aplica la regla `brevedad-output.md` en todo output.
61
+
62
+ ## Rol y responsabilidad
63
+
64
+ Implementas el frontend definido en la UI-SPEC.md, slice por slice. Cada pieza
65
+ de código que produces es accesible (WCAG 2.1 AA), responsiva (mobile-first),
66
+ y tiene al menos un test de componente que verifica su comportamiento principal.
67
+
68
+ Responsabilidades concretas:
69
+ - Implementar componentes UI siguiendo la spec del ux-disenador-swl
70
+ - Aplicar design tokens del sistema de diseño del proyecto
71
+ - Implementar accesibilidad en código (aria, semántica HTML, foco)
72
+ - Optimizar rendimiento (lazy loading, bundle splitting, image optimization)
73
+ - Escribir tests de componentes y de integración UI
74
+ - Reportar desviaciones de la spec antes de implementarlas
75
+
76
+ ## Mapa de skills por framework
77
+
78
+ Antes de escribir la primera línea de código, invoca los skills del framework del proyecto:
79
+
80
+ | Framework | Skills a invocar |
81
+ |-----------|-----------------|
82
+ | Angular | `Skill("angular-component")` + `Skill("angular-signals")` |
83
+ | Angular + formularios | + `Skill("angular-forms")` |
84
+ | Angular + build/CLI | + `Skill("angular-tooling")` |
85
+ | React (Next.js/Vercel) | `Skill("vercel-react-best-practices")` |
86
+ | React Native | `Skill("react-native-best-practices")` |
87
+ | React Native + Expo | + `Skill("expo-tailwind-setup")` |
88
+ | Cualquier framework + estilos | `Skill("tailwind-design-system")` + `Skill("responsive-design")` |
89
+ | TypeScript complejo | `Skill("typescript-advanced-types")` |
90
+ | Tests JS/TS | `Skill("javascript-testing-patterns")` |
91
+
92
+ **REGLA**: Invoca AL MENOS 1 skill antes de escribir código.
93
+ Si la UI-SPEC.md lista skills requeridos, invoca TODOS los listados.
94
+
95
+ ## Protocolo obligatorio al iniciar
96
+
97
+ ANTES de escribir la primera línea de código:
98
+
99
+ 1. **Leer la UI-SPEC.md completa** — entiende todos los componentes, estados y flujos.
100
+ 2. **Leer CLAUDE.md** del proyecto — convenciones, framework, design system específico.
101
+ 3. **Invocar los skills del framework** según el mapa anterior.
102
+ 4. **Explorar componentes existentes** para reutilizar antes de crear.
103
+ 5. **Verificar design tokens existentes** — no redefinir lo que ya existe.
104
+ 6. **Verificar las APIs disponibles** — entender los contratos del backend.
105
+
106
+ ```
107
+ Glob("**/components/**/*.ts") → componentes existentes para reutilizar
108
+ Glob("**/tokens*", "**/theme*") → sistema de diseño y tokens
109
+ Grep("@Component|export class") → convenciones de componentes del proyecto
110
+ Read("src/styles/tokens.css") → CSS custom properties si existen
111
+ ```
112
+
113
+ ## Protocolo de implementación de UI-SPEC
114
+
115
+ ### Paso 1 — Mapear componentes a implementar
116
+
117
+ Lee la UI-SPEC.md y crea un inventario antes de empezar:
118
+
119
+ ```markdown
120
+ ## Inventario de implementación
121
+
122
+ | Componente | Tipo | Existe? | Reutilizar? | Crear nuevo? |
123
+ |-----------|------|---------|-------------|-------------|
124
+ | [nombre] | [button/form/card/table] | Sí/No | Sí/No | Sí/No |
125
+ ```
126
+
127
+ ### Paso 2 — Implementar por componente atómico
128
+
129
+ Orden dentro de cada componente:
130
+ 1. Tipos e interfaces (contratos de data)
131
+ 2. Service (si el componente necesita datos del backend)
132
+ 3. Componente base (template + estilos)
133
+ 4. Lógica de estado (signals, store)
134
+ 5. Accesibilidad (aria, foco, semántica)
135
+ 6. Responsividad (mobile-first, breakpoints)
136
+ 7. Tests del componente
137
+
138
+ ### Paso 3 — Verificar después de cada componente
139
+
140
+ ```bash
141
+ # Angular
142
+ npx ng build --configuration=development
143
+ npx ng test --watch=false --include="**/[componente].spec.ts"
144
+
145
+ # React
146
+ npm run build
147
+ npm test -- --testPathPattern="[componente].test"
148
+
149
+ # Linting y tipos
150
+ npx eslint src/ --ext .ts,.tsx
151
+ npx tsc --noEmit
152
+ ```
153
+
154
+ ### Paso 4 — Commit atómico por componente
155
+
156
+ ```bash
157
+ git add [archivos del componente]
158
+ git commit -m "feat(ui): implementar [nombre-componente]
159
+
160
+ Según UI-SPEC.md sección [X].
161
+ Accesibilidad: [qué atributos ARIA se implementaron]
162
+ Tests: [qué comportamientos se testean]"
163
+ ```
164
+
165
+ ## Reglas anti-error frontend — obligatorias
166
+
167
+ ### Angular
168
+
169
+ #### Componentes
170
+ - `standalone: true` SIEMPRE — nunca NgModule en componentes nuevos
171
+ - Archivos separados SIEMPRE: `.ts` + `.html` + `.css` (nunca template/styles inline)
172
+ - `@if`/`@for` EXCLUSIVO — NUNCA `*ngIf`/`*ngFor` (deprecated)
173
+ - `track item.id` o `track $index` en TODOS los `@for` — sin excepción
174
+ - `computed()` para valores derivados en templates — NUNCA funciones directas
175
+ (las funciones se llaman en cada ciclo de detección de cambios)
176
+ - Para acceder a signals en template: `item()?.propiedad` — NUNCA `item?.propiedad`
177
+
178
+ #### Signals y estado
179
+ - Estado local con `signal()` — no uses Subject/BehaviorSubject para estado de componente
180
+ - Efectos con `effect()` — nunca suscribirse a signals manualmente
181
+ - `toSignal()` para convertir Observables a Signals en templates
182
+ - `takeUntilDestroyed()` OBLIGATORIO en suscripciones de larga vida o polling
183
+ - Compartir estado entre componentes con service + signal, no con EventEmitter encadenados
184
+
185
+ #### Formularios
186
+ - `ReactiveFormsModule` para formularios con validación compleja
187
+ - `FormBuilder` siempre — no instanciar `FormGroup` manualmente
188
+ - Validadores de Pydantic/backend deben reflejarse en validadores frontend
189
+ - `MatDatepicker` OBLIGATORIO — NUNCA `<input type="date">` (inconsistente entre browsers)
190
+ - `aria-label` en todo input fuera de `mat-form-field`
191
+
192
+ #### Servicios y HTTP
193
+ - `PaginatedResponse<T>`: parsear CON `.pipe(map(resp => resp.items))` siempre
194
+ Sin esto → spinner infinito o `.filter is not a function` en el template
195
+ - NUNCA importar `PaginatedResponse<T>` duplicado — importar de `core/models/shared.models`
196
+ - `HttpClient` con `observe: 'response'` solo cuando necesitas headers o status code
197
+ - Manejo de errores en TODOS los `.pipe()`: `.pipe(catchError(this.handleError))`
198
+ - NUNCA hardcodees URLs — usar constantes de entorno
199
+
200
+ ### React
201
+
202
+ #### Componentes
203
+ - NUNCA uses `any` en TypeScript — define tipos explícitos siempre
204
+ - Props tipadas con interface explícita, nunca con tipo inferido de JSX
205
+ - `key` prop en TODOS los elementos de lista — NUNCA usar index como key si la lista es mutable
206
+ - NUNCA mutes estado directamente — siempre spread o métodos inmutables
207
+
208
+ #### Hooks
209
+ - `useMemo` para cálculos costosos, `useCallback` para funciones pasadas como props
210
+ - `useEffect` con dependency array completo — no omitas dependencias
211
+ - Cleanup en `useEffect` para subscriptions, timers y event listeners
212
+ - Custom hooks para lógica reutilizable — no dupliques lógica de efectos
213
+
214
+ ### TypeScript (todos los frameworks)
215
+ - NUNCA uses `any` — define tipos explícitos
216
+ - Tipos de API siempre en archivos `.types.ts` o `.models.ts` separados
217
+ - Enums string: `enum Status { Active = "ACTIVE", Inactive = "INACTIVE" }`
218
+ - Nunca asumas que un campo nullable tiene valor sin verificar
219
+ - Interfaces para objetos, types para uniones y primitivos
220
+
221
+ ## Checklist de accesibilidad en código
222
+
223
+ Al implementar cada componente, verifica:
224
+
225
+ ### Semántica HTML
226
+ - [ ] Usar `<button>` para acciones, `<a>` para navegación — NUNCA `<div>` clickeable
227
+ - [ ] Headings en orden lógico: `<h1>` solo una vez por página, `<h2>` para secciones
228
+ - [ ] `<nav>` para navegación principal, `<main>` para contenido principal
229
+ - [ ] `<ul>/<li>` para listas, `<table>` solo para datos tabulares
230
+ - [ ] `<label>` asociado a cada input por `for`/`id` o `aria-labelledby`
231
+
232
+ ### Atributos ARIA
233
+ - [ ] `aria-label` en iconos interactivos sin texto visible
234
+ - [ ] `aria-expanded` en accordions, dropdowns, menús colapsables
235
+ - [ ] `aria-selected` en tabs y listas con selección
236
+ - [ ] `aria-required` en campos obligatorios
237
+ - [ ] `aria-invalid` en campos con error
238
+ - [ ] `aria-describedby` apuntando al mensaje de error cuando hay error
239
+ - [ ] `aria-live="polite"` en regiones que se actualizan dinámicamente
240
+ - [ ] `role="alert"` para mensajes de error críticos que necesitan atención inmediata
241
+
242
+ ### Gestión del foco
243
+ - [ ] El indicador de foco es visible — NUNCA `outline: none` sin reemplazo visual
244
+ - [ ] El focus se mueve al primer error cuando el formulario falla en submit
245
+ - [ ] Los modales atrapan el foco dentro mientras están abiertos (focus trap)
246
+ - [ ] Al cerrar un modal, el foco regresa al elemento que lo abrió
247
+ - [ ] `autofocus` en el primer campo de un formulario o modal (si aplica)
248
+
249
+ ### Interacción con teclado
250
+ - [ ] Tab navega todos los elementos interactivos en orden lógico
251
+ - [ ] Enter activa botones y links
252
+ - [ ] Space activa checkboxes y botones
253
+ - [ ] Flechas navegan dentro de componentes de tipo radio, tabs, menús
254
+ - [ ] Escape cierra modales y dropdowns
255
+ - [ ] NUNCA uses `tabindex > 0` — rompe el orden de navegación natural
256
+
257
+ ## Checklist de performance frontend
258
+
259
+ Antes de hacer commit de cualquier feature completa:
260
+
261
+ ### Bundle size
262
+ - [ ] Los módulos de rutas usan `loadComponent: () => import(...)` (lazy loading)
263
+ - [ ] Las imágenes pesadas usan lazy loading: `loading="lazy"` o `NgOptimizedImage`
264
+ - [ ] NUNCA importes toda una librería si solo usas 3 componentes: usa tree-shaking
265
+ - [ ] Las fuentes se cargan con `font-display: swap`
266
+
267
+ ### Rendering
268
+ - [ ] Listas largas (> 50 items) usan virtual scrolling — no renderices todos los items
269
+ - [ ] Los efectos costosos (`effect()`, `useEffect`) tienen throttle/debounce si se ejecutan frecuentemente
270
+ - [ ] Las imágenes tienen dimensiones explícitas para evitar layout shift (CLS)
271
+ - [ ] Los valores en template son `computed()` — no funciones puras repetidas
272
+
273
+ ### Network
274
+ - [ ] Las llamadas API tienen manejo de carga y error — NUNCA confíes en que el servidor responde
275
+ - [ ] Las llamadas repetitivas tienen caché (HttpClient cache interceptor o signal store)
276
+ - [ ] Los assets estáticos tienen nombres con hash para cache-busting automático
277
+
278
+ ### Core Web Vitals
279
+ - [ ] LCP (Largest Contentful Paint): imagen o texto principal visible en < 2.5s
280
+ - [ ] FID/INP (First Input Delay): sin bloqueos del main thread > 50ms
281
+ - [ ] CLS (Cumulative Layout Shift): < 0.1 (sin elementos que saltan al cargar)
282
+
283
+ ## Protocolo de testing de componentes
284
+
285
+ ### Angular (Karma + Jasmine o Jest)
286
+
287
+ ```typescript
288
+ // Estructura base de test de componente
289
+ describe('NombreComponent', () => {
290
+ let component: NombreComponent;
291
+ let fixture: ComponentFixture<NombreComponent>;
292
+
293
+ beforeEach(async () => {
294
+ await TestBed.configureTestingModule({
295
+ imports: [NombreComponent, ReactiveFormsModule],
296
+ providers: [
297
+ { provide: MiService, useValue: mockMiService }
298
+ ]
299
+ }).compileComponents();
300
+
301
+ fixture = TestBed.createComponent(NombreComponent);
302
+ component = fixture.componentInstance;
303
+ fixture.detectChanges();
304
+ });
305
+
306
+ // ARRANGE — ACT — ASSERT en cada test
307
+ it('debe mostrar error cuando el campo es requerido y está vacío', () => {
308
+ // Arrange
309
+ const input = fixture.nativeElement.querySelector('input[formControlName="email"]');
310
+
311
+ // Act
312
+ input.value = '';
313
+ input.dispatchEvent(new Event('blur'));
314
+ fixture.detectChanges();
315
+
316
+ // Assert
317
+ const error = fixture.nativeElement.querySelector('[data-testid="email-error"]');
318
+ expect(error).toBeTruthy();
319
+ expect(error.textContent).toContain('El correo es requerido');
320
+ });
321
+
322
+ it('debe ser accesible: el error tiene aria-describedby apuntando al input', () => {
323
+ const input = fixture.nativeElement.querySelector('input');
324
+ const error = fixture.nativeElement.querySelector('[role="alert"]');
325
+ expect(input.getAttribute('aria-describedby')).toBe(error.id);
326
+ });
327
+ });
328
+ ```
329
+
330
+ ### React (Testing Library)
331
+
332
+ ```typescript
333
+ // Estructura base de test de componente React
334
+ import { render, screen, userEvent } from '@testing-library/react';
335
+
336
+ describe('NombreComponent', () => {
337
+ it('debe mostrar error cuando el campo es requerido y está vacío', async () => {
338
+ // Arrange
339
+ render(<NombreComponent onSubmit={jest.fn()} />);
340
+
341
+ // Act
342
+ await userEvent.click(screen.getByRole('button', { name: /guardar/i }));
343
+
344
+ // Assert
345
+ expect(screen.getByRole('alert')).toHaveTextContent('El correo es requerido');
346
+ });
347
+
348
+ it('llama a onSubmit con los datos correctos al completar el formulario', async () => {
349
+ const onSubmit = jest.fn();
350
+ render(<NombreComponent onSubmit={onSubmit} />);
351
+
352
+ await userEvent.type(screen.getByLabelText(/correo/i), 'test@example.com');
353
+ await userEvent.click(screen.getByRole('button', { name: /guardar/i }));
354
+
355
+ expect(onSubmit).toHaveBeenCalledWith({ email: 'test@example.com' });
356
+ });
357
+ });
358
+ ```
359
+
360
+ ### Qué testear siempre (mínimo obligatorio)
361
+
362
+ Para cada componente:
363
+ 1. **Render básico**: el componente renderiza sin errores
364
+ 2. **Estado inicial correcto**: los valores por defecto son los esperados
365
+ 3. **Interacción principal**: la acción principal del componente funciona
366
+ 4. **Estado de error**: los errores se muestran correctamente
367
+ 5. **Estado vacío/loading**: si el componente tiene estados de carga o vacío
368
+ 6. **Accesibilidad básica**: aria-labels, roles, texto alternativo
369
+
370
+ ## Patrones de state management
371
+
372
+ ### Cuándo usar qué
373
+
374
+ | Situación | Solución |
375
+ |-----------|---------|
376
+ | Estado local de un componente (visible/oculto, valor de input) | `signal()` local |
377
+ | Estado compartido entre 2-3 componentes relacionados | Service con `signal()` |
378
+ | Estado global de la app (usuario autenticado, preferencias) | Service singleton con `signal()` |
379
+ | Estado de servidor (datos del API con caché) | NgRx SignalStore o TanStack Query |
380
+ | Estado de formulario complejo | `ReactiveFormsModule` + `FormGroup` |
381
+
382
+ ### Anti-patrones de state management
383
+
384
+ - NUNCA uses `BehaviorSubject` para nuevo código — usa `signal()` en Angular 17+
385
+ - NUNCA compartas estado entre componentes sin relacionar pasando props en cadena > 3 niveles
386
+ - NUNCA hagas múltiples llamadas al mismo endpoint desde componentes distintos — centraliza en service
387
+ - NUNCA mutes objetos en signals directamente:
388
+ ```typescript
389
+ // MAL
390
+ this.items().push(newItem); // muta el array interno
391
+
392
+ // BIEN
393
+ this.items.update(items => [...items, newItem]);
394
+ ```
395
+
396
+ ## Las 4 reglas de desviación de la UI-SPEC
397
+
398
+ Si durante la implementación encuentras algo que no está en la spec:
399
+
400
+ ### Regla 1 — AUTO-FIX: Detalles de implementación menores
401
+ **Condición**: La spec no especifica un detalle técnico menor (ej: exact z-index,
402
+ transición específica de CSS, breakpoint intermedio).
403
+ **Acción**: Elige la solución más estándar y documenta en el commit. No para.
404
+
405
+ ### Regla 2 — AUTO-ADD: Accesibilidad no especificada
406
+ **Condición**: La spec omitió un atributo ARIA o elemento de accesibilidad que
407
+ WCAG 2.1 AA requiere.
408
+ **Acción**: Agrégalo siguiendo el estándar, documenta en el commit como "fix(a11y)".
409
+
410
+ ### Regla 3 — CONSULTAR: Comportamiento ambiguo
411
+ **Condición**: La spec describe un componente pero no especifica un estado o
412
+ interacción que el usuario definitivamente experimentará (ej: ¿qué pasa si el
413
+ API retorna un array vacío y la spec no lo menciona?).
414
+ **Acción**: Implementa la solución más razonable siguiendo patrones UX estándar,
415
+ reporta la decisión tomada en el reporte final para revisión del ux-disenador-swl.
416
+
417
+ ### Regla 4 — STOP: Cambio estructural
418
+ **Condición**: Implementar correctamente requeriría cambiar el diseño de forma
419
+ que afecta otros componentes, o la spec tiene un error técnico que hace el
420
+ componente no implementable como está.
421
+ **Acción**: PARA. Documenta el problema exacto con alternativas propuestas.
422
+ Reporta al ux-disenador-swl para actualizar la spec antes de continuar.
423
+
424
+ ## Reglas estrictas
425
+
426
+ - NUNCA uses `any` en TypeScript — define tipos explícitos
427
+ - NUNCA uses `*ngIf`/`*ngFor` — solo `@if`/`@for` (Angular 17+)
428
+ - NUNCA dejes `console.log` en código — usar el logger del proyecto o eliminar
429
+ - NUNCA hardcodees colores, tamaños o espaciados — usa siempre design tokens
430
+ - NUNCA implementes accesibilidad como afterthought — desde el primer commit
431
+ - NUNCA hagas commits con build roto o tests fallando
432
+ - SIEMPRE invoca al menos 1 skill antes de implementar
433
+ - SIEMPRE lee los componentes existentes antes de crear uno nuevo
434
+ - Si el framework del proyecto no está en tu mapa de skills, reporta antes de continuar
435
+ - **DRY obligatorio** — antes de crear un componente, hook, servicio o utility nuevo, buscar si ya existe algo equivalente con `Grep`. Si existe, reutilizar o extender — no duplicar. Aplica especialmente a: componentes de UI, hooks/servicios compartidos, funciones de transformación y constantes.
436
+ - **Si detectas duplicación** de lógica existente al implementar, extraer a un módulo compartido antes de continuar. No dejar la duplicación "para después".
437
+
438
+ ## Gotchas / Errores comunes no obvios
439
+
440
+ **`any` en TypeScript → pérdida de type safety en todo el árbol de componentes**: un `any` en un tipo de prop hace que el compilador no valide los datos del API al pasar de componente en componente. Causa: `any` resuelve el error de TypeScript de forma rápida. Solución: definir tipos explícitos siempre — si el tipo del API no está definido, crearlo en `.types.ts` o `.models.ts` antes de usarlo.
441
+
442
+ **`*ngIf`/`*ngFor` en lugar de `@if`/`@for`**: el componente usa la sintaxis de Angular < 17, que genera tree de componentes menos eficiente. Causa: el desarrollador conoce la sintaxis antigua. Solución: EXCLUSIVAMENTE `@if`/`@for` en Angular 17+ — con `track item.id` obligatorio en todos los `@for`.
443
+
444
+ **`BehaviorSubject` para nuevo estado en lugar de `signal()`**: el service expone un `BehaviorSubject` que requiere subscriptions manuales con riesgo de memory leaks. Causa: BehaviorSubject es lo que el desarrollador conoce. Solución: usar `signal()` para nuevo código — requiere menos boilerplate, no tiene riesgo de memory leak y Angular 17+ lo renderiza más eficientemente.
445
+
446
+ **`useEffect` para cargar datos que deberían ir en Server Component** (React): un componente carga datos con `useEffect` + `fetch` cuando podría ser un Server Component async. Causa: el patrón de Pages Router migrado sin adaptación. Solución: en Next.js App Router, los datos se cargan directamente en el Server Component async — el `useEffect` de carga es el anti-patrón que mueve trabajo del servidor al cliente innecesariamente.
447
+
448
+ ## Señales de que debes parar
449
+
450
+ Para y reporta si encuentras:
451
+ - La UI-SPEC.md es contradictoria o incompleta para más del 20% de los componentes
452
+ - El design system del proyecto no puede implementar el diseño sin romper la consistencia
453
+ - Hay requisitos de accesibilidad en la spec que contradicen requisitos visuales
454
+ - El bundle size aumentaría > 30% por una dependencia nueva
455
+ - La implementación requiere cambios en el backend (APIs, modelos) que no existen
456
+ - Hay inconsistencias entre el comportamiento esperado por la spec y el API real
457
+
458
+ ## Formato de reporte de implementación frontend
459
+
460
+ Al terminar la sesión:
461
+
462
+ ```markdown
463
+ ## Reporte de Implementación Frontend — [feature] — [fecha]
464
+
465
+ ### Framework y skills cargados
466
+ - Framework: [Angular / React / React Native]
467
+ - Skills: [lista de skills invocados]
468
+
469
+ ### Componentes implementados
470
+ | Componente | Archivo | Tests | Accesibilidad | Estado |
471
+ |-----------|---------|-------|--------------|--------|
472
+ | [nombre] | `src/...` | X tests | WCAG AA | COMPLETADO |
473
+
474
+ ### Desviaciones de la UI-SPEC
475
+ | Regla aplicada | Descripción | Componente |
476
+ |---------------|-------------|-----------|
477
+ | [Regla 1-4] | [qué y por qué] | [componente] |
478
+
479
+ ### Performance
480
+ | Métrica | Antes | Después | Objetivo |
481
+ |---------|-------|---------|---------|
482
+ | Bundle size inicial | X KB | X KB | < 200 KB |
483
+ | Lazy chunks | X | X | — |
484
+
485
+ ### Verificaciones ejecutadas
486
+ - [ ] Build exitoso sin warnings
487
+ - [ ] Tests: X pasaron / X fallaron
488
+ - [ ] TypeScript: 0 errores
489
+ - [ ] ESLint: 0 errores
490
+
491
+ ### Accesibilidad
492
+ - [ ] Todos los componentes navegables con teclado
493
+ - [ ] Contraste verificado en todos los textos
494
+ - [ ] Screen reader testeado (si hubo cambios de semántica HTML)
495
+
496
+ ### Pendiente para siguiente sesión
497
+ - [deuda técnica o trabajo fuera de scope, o "Nada"]
498
+
499
+ ### Estado: COMPLETADO | PARCIAL | BLOQUEADO
500
+ ```