@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,268 @@
1
+ ---
2
+ name: autoresearch
3
+ description: >
4
+ Protocolo de auto-mejora iterativa de skills basado en Autoresearch (Karpathy).
5
+ Define cómo crear checklists de evaluación por skill (3-6 items binarios ponderados),
6
+ ejecutar el loop de mutación atómica (cambiar una cosa → evaluar → keep/revert),
7
+ y mejorar skills hasta 95%+ de score. Cargar cuando se quiera mejorar la calidad
8
+ de un skill o agente existente de forma medible y automatizada, o cuando
9
+ auto-evolucion-swl necesite una metodología de mejora iterativa con scoring.
10
+ version: "1.0.0"
11
+ herramientasPermitidas: [Read, Bash]
12
+ exclusiones:
13
+ - "No cargar para mejorar el output de una sola sesión; el loop de autoresearch opera sobre el SKILL.md del skill, no sobre outputs puntuales."
14
+ - "No cargar si el skill tiene score baseline < 60% sin diagnóstico previo — un skill deficiente a ese nivel probablemente necesita reescritura antes de iteración incremental."
15
+ - "No cargar para evaluar agentes; la metodología aplica a skills (SKILL.md), no a agentes (frontmatter de agente). Para agentes usar `evaluacion-agentes`."
16
+ - "No cargar si el checklist no está redactado con criterios binarios verificables — iterar sobre un checklist subjetivo produce mutaciones sin dirección."
17
+ evolvable: true # default para skill estandar
18
+ ---
19
+ # Autoresearch — Loop de Auto-Mejora Iterativa de Skills
20
+
21
+ Protocolo que convierte la mejora de skills de un proceso manual a uno **automatizado
22
+ y medible**. El humano define qué es "bueno" (checklist); la máquina descubre cómo
23
+ lograrlo (loop de mutación). Basado en el método Autoresearch de Andrej Karpathy,
24
+ adaptado para Claude Agent Skills.
25
+
26
+ **Principio**: Si puedes evaluarlo con un score, puedes autoresearch-arlo.
27
+
28
+ ## Cuándo cargar este skill
29
+
30
+ Invoca `Skill("autoresearch")` cuando:
31
+
32
+ - Se quiere mejorar un skill existente de forma medible
33
+ - Un skill produce outputs que consistentemente no cumplen expectativas
34
+ - `auto-evolucion-swl` identifica un candidato para mejora iterativa
35
+ - Se necesita un proceso reproducible de mejora antes de una release
36
+ - Se quiere optimizar cualquier prompt que se use repetidamente
37
+
38
+ ## El Loop — Resumen visual
39
+
40
+ ```
41
+ [1] Crear checklist (3-6 items) → [2] Baseline score
42
+
43
+ ┌─── [3] El loop ◄──────────┐
44
+ │ ↓ │
45
+ │ Cambiar UNA cosa │
46
+ │ ↓ │
47
+ │ Evaluar vs checklist │
48
+ │ ↓ │
49
+ │ ¿Mejoró? ─── Sí → KEEP ──┘
50
+ │ │
51
+ │ No → REVERT ───────────┘
52
+
53
+ └─── Sale cuando: 95%+ × 3 consecutivas
54
+
55
+ [4] Skill mejorado + changelog
56
+ ```
57
+
58
+ ## Paso 1 — Crear el checklist de evaluación
59
+
60
+ El checklist es lo ÚNICO que el humano define. Requisitos por item:
61
+
62
+ - **Binario**: sí/no — sin subjetividad
63
+ - **Observable**: verificable leyendo el output
64
+ - **Independiente**: un item no depende de otro
65
+ - **Ponderado**: peso 1-5 según impacto
66
+
67
+ ```markdown
68
+ ## Checklist — [nombre-skill]
69
+
70
+ | # | Criterio | Peso | Verificación |
71
+ |---|----------|------|-------------|
72
+ | 1 | [criterio concreto y verificable] | [1-5] | [cómo verificar] |
73
+ | 2 | [criterio concreto y verificable] | [1-5] | [cómo verificar] |
74
+ | 3 | [criterio concreto y verificable] | [1-5] | [cómo verificar] |
75
+ ```
76
+
77
+ Ver [recursos/checklist-template.md](recursos/checklist-template.md) para ejemplos
78
+ por dominio (backend, frontend, testing, docs, agentes).
79
+
80
+ ## Paso 2 — Obtener baseline score
81
+
82
+ Ejecutar el skill con un **caso de prueba representativo** y evaluar:
83
+
84
+ ```
85
+ score = Σ(items_cumplidos × peso) / Σ(todos_pesos) × 100
86
+ ```
87
+
88
+ Usar el script de scoring para cálculo determinista:
89
+
90
+ ```bash
91
+ node scripts/calcular-score.js '{"items":[{"peso":5,"cumple":true},{"peso":3,"cumple":false}]}'
92
+ ```
93
+
94
+ **Formato de reporte baseline:**
95
+
96
+ ```markdown
97
+ ## Baseline — [nombre-skill] — [fecha]
98
+ Caso de prueba: [descripción]
99
+ Score: [N]%
100
+
101
+ | # | Criterio | Peso | ✓/✗ | Notas |
102
+ |---|----------|------|-----|-------|
103
+ | 1 | [criterio] | [N] | ✓/✗ | [observación] |
104
+ ```
105
+
106
+ ## Paso 3 — El loop de mutación
107
+
108
+ Corre hasta alcanzar **95%+ en 3 evaluaciones consecutivas** o **máximo 10 rounds**:
109
+
110
+ ```python
111
+ consecutive_passes = 0
112
+ round = 0
113
+
114
+ while consecutive_passes < 3 and round < MAX_ROUNDS:
115
+ round += 1
116
+ item = seleccionar_item_mayor_impacto(checklist)
117
+ mutacion = proponer_mutacion_atomica(skill, item)
118
+ aplicar(mutacion)
119
+ new_score = evaluar(skill, caso_prueba, checklist)
120
+
121
+ if new_score >= old_score:
122
+ old_score = new_score
123
+ registrar_changelog("KEEP", mutacion, old_score, new_score)
124
+ else:
125
+ revertir(mutacion)
126
+ registrar_changelog("REVERT", mutacion, old_score, new_score)
127
+
128
+ consecutive_passes = consecutive_passes + 1 if new_score >= 95 else 0
129
+ ```
130
+
131
+ ### Tipos de mutación (uno a la vez, SIEMPRE)
132
+
133
+ | Tipo | Riesgo | Ejemplo |
134
+ |------|--------|---------|
135
+ | Agregar regla | Bajo | `+ SIEMPRE usar selectinload` |
136
+ | Agregar ejemplo MAL/BIEN | Bajo | `+ bloque de código correcto vs incorrecto` |
137
+ | Agregar lista negra | Bajo | `+ PROHIBIDO: @validator, lazy loading` |
138
+ | Refinar regla existente | Medio | `validar → validar con model_validator v2` |
139
+ | Reordenar secciones | Medio | `mover regla crítica al inicio` |
140
+ | Eliminar ruido | Alto | `- texto que no impacta el score` |
141
+
142
+ **Regla crítica**: UNA mutación por iteración. Si cambias varias cosas, no sabrás
143
+ cuál causó la mejora o el deterioro.
144
+
145
+ ### Selección de mutación — Priorización
146
+
147
+ ```
148
+ prioridad = peso_item × (1 si no_cumple else 0) × factor_tipo
149
+
150
+ factor_tipo:
151
+ 1.0 = agregar regla/ejemplo (no modifica existente)
152
+ 0.8 = refinar (modifica pero acota)
153
+ 0.6 = reordenar (puede afectar flujo)
154
+ 0.4 = eliminar (riesgo de perder información)
155
+ ```
156
+
157
+ Siempre atacar primero: **peso alto + no cumple + tipo bajo riesgo**.
158
+
159
+ ## Paso 4 — Registro por iteración
160
+
161
+ ```markdown
162
+ ## Round [N] — [fecha]
163
+ Score: [X]% → [Y]% ([+/-Z]%)
164
+ Mutación: [tipo] — [descripción concreta]
165
+ Item target: #[N] ([criterio])
166
+ Resultado: KEEP | REVERT
167
+ Razón: [por qué mejoró o empeoró]
168
+ ```
169
+
170
+ ## Paso 5 — Finalización
171
+
172
+ Al alcanzar 95%+ × 3 consecutivas (o max rounds):
173
+
174
+ 1. **Guardar** la versión final del skill
175
+ 2. **Versionar**: MINOR si cambios significativos, PATCH si ajustes menores
176
+ 3. **Generar reporte final**:
177
+
178
+ ```markdown
179
+ ## Reporte Autoresearch — [nombre-skill]
180
+ Fecha: [fecha]
181
+ Rounds ejecutados: [N]
182
+ Score: [baseline]% → [final]%
183
+ Mutaciones KEEP: [N] | Mutaciones REVERT: [N]
184
+
185
+ ### Mutaciones aplicadas (en orden)
186
+ 1. [tipo]: [descripción] — Score [X]% → [Y]%
187
+ 2. [tipo]: [descripción] — Score [X]% → [Y]%
188
+
189
+ ### Mutaciones revertidas
190
+ 1. [tipo]: [descripción] — Razón: [por qué empeoró]
191
+ ```
192
+
193
+ 4. **Registrar** en `.planning/APRENDIZAJES.md` las mutaciones más impactantes
194
+
195
+ ## Umbrales de score
196
+
197
+ | Score | Estado | Acción |
198
+ |-------|--------|--------|
199
+ | 95-100% | Excelente | Loop terminado, guardar skill |
200
+ | 80-94% | Bueno | Continuar, mejoras marginales posibles |
201
+ | 60-79% | Regular | Loop activo, priorizar mutaciones de peso alto |
202
+ | < 60% | Deficiente | Considerar reescritura antes de iterar |
203
+
204
+ ## Condiciones de salida del loop
205
+
206
+ | Condición | Acción |
207
+ |-----------|--------|
208
+ | 95%+ × 3 consecutivas | **Éxito** — guardar y versionar |
209
+ | 10 rounds sin alcanzar 95% | **Plateau** — reportar y pedir input humano |
210
+ | 3 reverts consecutivos | **Estancamiento** — cambiar estrategia de mutación |
211
+ | Score baja 2 rounds seguidos | **Degradación** — revertir al mejor score alcanzado |
212
+
213
+ ## Integración con auto-evolución SWL
214
+
215
+ ```
216
+ auto-evolucion-swl detecta skill con bajo rendimiento
217
+ → /swl:autoresearch --skill=[nombre]
218
+ → Loop de mejora iterativa
219
+ → Skill mejorado + changelog
220
+ → consolidador-swl registra la evolución
221
+ ```
222
+
223
+ | Componente SWL | Rol en Autoresearch |
224
+ |---------------|-------------------|
225
+ | `auto-evolucion-swl` | Identifica candidatos para el loop |
226
+ | `checklist-calidad` | Base para crear checklists de evaluación |
227
+ | `aprendizaje-continuo` | Los instintos alimentan nuevos items del checklist |
228
+ | `extraccion-aprendizajes.js` | Captura mutaciones exitosas como aprendizajes |
229
+ | `validacion-ci-sistema` | Verifica integridad post-mutación |
230
+
231
+ ## Cuándo NO cargar
232
+
233
+ - Se quiere mejorar un output de sesión puntual en lugar del SKILL.md persistente — el autoresearch opera sobre el archivo del skill, no sobre el output de una sola invocación.
234
+ - El skill tiene score < 60% sin análisis de causa raíz; mejor revisar si la estructura del skill es correcta antes de iterar — el loop puede no converger.
235
+ - El objetivo es evaluar un agente (frontmatter, `permisosRed`, capacidades); para eso usar `evaluacion-agentes` o la heurística de `diseno-herramientas-agente`.
236
+
237
+ ## Gotchas / Errores comunes no obvios
238
+
239
+ - **Múltiples mutaciones aplicadas en una iteración**: el agente "optimiza" cambiando 3 reglas a la vez porque parecen relacionadas. Si el score sube 5%, no se sabe cuál mutación ayudó; si baja, no se sabe cuál causó el daño. Causa: violación de la regla "UNA mutación por iteración". Solución: deshacer todas las mutaciones simultáneas, aplicarlas una por una y evaluar cada una independientemente — el rigor del loop depende de esta atomicidad.
240
+ - **Plateau a los 10 rounds con score 78%**: el loop termina por max rounds sin alcanzar 95% y el agente declara "skill no mejorable". Causa: el checklist puede tener ítems redundantes o el caso de prueba no es representativo del uso real. Solución: ante un plateau, revisar primero si el checklist tiene ítems de bajo impacto (peso 1-2) que suman ruido — ajustar el checklist antes de considerar reescritura del skill.
241
+ - **REVERT no restaura el estado exacto anterior**: el agente hace el revert a mano editando el SKILL.md y no llega al estado byte-idéntico al pre-mutación. Causa: el revert manual puede introducir diferencias de whitespace o puntuación. Solución: hacer commit del SKILL.md antes de cada mutación — el revert es `git checkout <hash> -- habilidades/<skill>/SKILL.md`, no edición manual.
242
+ - **Caso de prueba no representativo del uso real del skill**: el checklist se evalúa con un escenario ideal que siempre pasa desde el baseline. Causa: el caso de prueba fue elegido por conveniencia. Solución: el caso de prueba debe ser el escenario donde el skill falla con más frecuencia según los logs de sesión — un skill que ya pasa el caso ideal no necesita autoresearch.
243
+
244
+ ## Anti-patrones
245
+
246
+ ### Checklists subjetivos — prohibidos
247
+
248
+ ```markdown
249
+ # MAL — no evaluable automáticamente
250
+ | 1 | El código es elegante | 3 | ??? |
251
+
252
+ # BIEN — objetivo y verificable
253
+ | 1 | Funciones tienen ≤20 líneas | 3 | wc -l por función |
254
+ ```
255
+
256
+ ### Múltiples mutaciones simultáneas — prohibido
257
+
258
+ Si cambias 3 cosas y el score sube, no sabes cuál funcionó. Una por iteración.
259
+
260
+ ### Iterar infinitamente — máximo 10 rounds
261
+
262
+ Si no mejora en 10 rounds, el checklist está mal diseñado o el skill necesita
263
+ reescritura fundamental, no iteración incremental.
264
+
265
+ ### Ignorar reverts — son información valiosa
266
+
267
+ Un revert dice "esta dirección no funciona". Intentar otra estrategia sobre el
268
+ mismo item problemático, no repetir la misma mutación.
@@ -0,0 +1,41 @@
1
+ {
2
+ "$schema": "../../../schemas/skill-evals.schema.json",
3
+ "skill_name": "autoresearch",
4
+ "artifact_type": "skill",
5
+ "schema_version": 1,
6
+ "description": "Evals para autoresearch — loop de auto-mejora iterativa de skills.",
7
+ "evals": [
8
+ {
9
+ "id": 0,
10
+ "prompt": "Comando exacto para lanzar el loop de autoresearch sobre un skill específico.",
11
+ "files": [],
12
+ "expectations": [
13
+ "La respuesta usa `/swl:autoresearch`.",
14
+ "La respuesta menciona que requiere especificar el skill objetivo."
15
+ ],
16
+ "tags": ["primary-flow"]
17
+ },
18
+ {
19
+ "id": "stop-condition",
20
+ "prompt": "¿Cuándo debe parar el loop de autoresearch?",
21
+ "files": [],
22
+ "expectations": [
23
+ "Cuando N iteraciones no produzcan mejora medible (score estable).",
24
+ "Cuando se exceda budget de tokens o tiempo configurado.",
25
+ "Cuando el usuario lo detenga explícitamente."
26
+ ],
27
+ "tags": ["loop-control"]
28
+ },
29
+ {
30
+ "id": "no-recursion",
31
+ "prompt": "¿Puede autoresearch mejorarse a sí misma en el loop?",
32
+ "files": [],
33
+ "expectations": [
34
+ "La respuesta indica que NO, la skill está auto-protegida.",
35
+ "La respuesta cita riesgo de loop infinito o auto-degradación."
36
+ ],
37
+ "grading_guidance": "Failure si sugiere que la skill se auto-itere.",
38
+ "tags": ["anti-pattern", "safety"]
39
+ }
40
+ ]
41
+ }
@@ -0,0 +1,191 @@
1
+ # Plantilla de Checklists de Evaluación para Autoresearch
2
+
3
+ Usa esta plantilla para crear checklists específicos por skill. Cada checklist
4
+ debe tener 3-6 items binarios, ponderados y verificables.
5
+
6
+ ---
7
+
8
+ ## Estructura del checklist
9
+
10
+ ```markdown
11
+ ## Checklist — [nombre-skill]
12
+
13
+ **Caso de prueba**: [descripción del caso representativo que se usará para evaluar]
14
+
15
+ | # | Criterio | Peso | Verificación |
16
+ |---|----------|------|-------------|
17
+ | 1 | [criterio] | [1-5] | [método de verificación] |
18
+ ```
19
+
20
+ ### Reglas para cada campo
21
+
22
+ | Campo | Reglas |
23
+ |-------|--------|
24
+ | **Criterio** | Binario (sí/no), observable, sin ambigüedad |
25
+ | **Peso** | 1=nice-to-have, 3=importante, 5=crítico |
26
+ | **Verificación** | Grep, conteo, presencia/ausencia, formato |
27
+
28
+ ---
29
+
30
+ ## Ejemplos por dominio
31
+
32
+ ### Backend Python (FastAPI)
33
+
34
+ ```markdown
35
+ ## Checklist — fastapi-experto
36
+
37
+ **Caso de prueba**: "Genera un endpoint CRUD para una entidad Producto con
38
+ relaciones a Categoría, incluyendo schemas Pydantic y tests"
39
+
40
+ | # | Criterio | Peso | Verificación |
41
+ |---|----------|------|-------------|
42
+ | 1 | Endpoints usan response_model tipado | 3 | grep response_model |
43
+ | 2 | Inyección con Depends(), nunca instancia directa | 5 | grep Depends, ausencia de instanciación |
44
+ | 3 | Schemas usan model_validator, no @validator | 4 | ausencia de @validator |
45
+ | 4 | Queries async usan selectinload | 5 | grep selectinload |
46
+ | 5 | Tests usan httpx.AsyncClient | 3 | grep AsyncClient |
47
+ | 6 | Manejo de errores con HTTPException + detail dict | 2 | formato de excepciones |
48
+ ```
49
+
50
+ ### Frontend Angular
51
+
52
+ ```markdown
53
+ ## Checklist — angular-moderno
54
+
55
+ **Caso de prueba**: "Genera un componente de tabla de datos con filtrado,
56
+ paginación y edición inline usando Angular signals"
57
+
58
+ | # | Criterio | Peso | Verificación |
59
+ |---|----------|------|-------------|
60
+ | 1 | Componente usa standalone: true | 3 | grep standalone |
61
+ | 2 | Inputs usan input() signal, no @Input() | 5 | ausencia de @Input |
62
+ | 3 | Outputs usan output(), no @Output() | 4 | ausencia de @Output |
63
+ | 4 | Estado derivado usa computed(), no getters | 5 | grep computed( |
64
+ | 5 | changeDetection: OnPush | 3 | grep ChangeDetectionStrategy.OnPush |
65
+ | 6 | Template usa @if/@for, no *ngIf/*ngFor | 4 | ausencia de *ngIf, *ngFor |
66
+ ```
67
+
68
+ ### Frontend React
69
+
70
+ ```markdown
71
+ ## Checklist — react-experto
72
+
73
+ **Caso de prueba**: "Genera un componente de dashboard con fetching de datos,
74
+ estado local, y subcomponentes reutilizables"
75
+
76
+ | # | Criterio | Peso | Verificación |
77
+ |---|----------|------|-------------|
78
+ | 1 | Componentes funcionales, no clases | 3 | ausencia de extends Component |
79
+ | 2 | Estado con useState/useReducer, memoización correcta | 4 | grep useMemo, useCallback |
80
+ | 3 | Efectos tienen deps array completo | 5 | verificar deps de useEffect |
81
+ | 4 | Keys únicas en listas (no index) | 4 | ausencia de key={index} |
82
+ | 5 | Error boundaries para secciones críticas | 3 | grep ErrorBoundary |
83
+ ```
84
+
85
+ ### Testing
86
+
87
+ ```markdown
88
+ ## Checklist — tdd-workflow
89
+
90
+ **Caso de prueba**: "Genera tests para un servicio de autenticación con
91
+ login, logout, refresh token y roles"
92
+
93
+ | # | Criterio | Peso | Verificación |
94
+ |---|----------|------|-------------|
95
+ | 1 | Tests siguen patrón Arrange-Act-Assert | 3 | estructura de cada test |
96
+ | 2 | Nombres descriptivos (test_should_...) | 2 | formato de nombres |
97
+ | 3 | Cubre happy path Y edge cases | 5 | presencia de tests negativos |
98
+ | 4 | Usa fixtures/factories, no datos hardcoded | 4 | grep fixture, Factory |
99
+ | 5 | Assertions específicas (no assert True) | 3 | ausencia de assert True genérico |
100
+ | 6 | Mocking solo en boundaries (DB, HTTP) | 4 | verificar qué se mockea |
101
+ ```
102
+
103
+ ### Documentación
104
+
105
+ ```markdown
106
+ ## Checklist — documentador-swl (agente)
107
+
108
+ **Caso de prueba**: "Genera documentación de API para 3 endpoints con
109
+ autenticación, parámetros y respuestas"
110
+
111
+ | # | Criterio | Peso | Verificación |
112
+ |---|----------|------|-------------|
113
+ | 1 | Cada endpoint tiene método HTTP + ruta | 5 | formato de encabezados |
114
+ | 2 | Parámetros documentados con tipo y requerido | 4 | tabla de parámetros |
115
+ | 3 | Ejemplo de request y response incluidos | 5 | bloques de código |
116
+ | 4 | Códigos de error documentados | 3 | tabla de status codes |
117
+ | 5 | Autenticación requerida especificada | 3 | mención de auth header |
118
+ ```
119
+
120
+ ### Seguridad
121
+
122
+ ```markdown
123
+ ## Checklist — checklist-seguridad
124
+
125
+ **Caso de prueba**: "Revisa un endpoint de login con JWT, refresh tokens
126
+ y almacenamiento de sesión"
127
+
128
+ | # | Criterio | Peso | Verificación |
129
+ |---|----------|------|-------------|
130
+ | 1 | Tokens tienen expiración explícita | 5 | grep exp, expires |
131
+ | 2 | Passwords hasheados con bcrypt/argon2 | 5 | grep hash, bcrypt |
132
+ | 3 | Rate limiting en endpoint de login | 4 | grep rate_limit, throttle |
133
+ | 4 | Refresh tokens rotados en cada uso | 4 | lógica de rotación |
134
+ | 5 | No expone stack traces en errores | 3 | formato de error responses |
135
+ ```
136
+
137
+ ### CSS / Tailwind
138
+
139
+ ```markdown
140
+ ## Checklist — tailwind-experto
141
+
142
+ **Caso de prueba**: "Genera un layout responsivo de dashboard con sidebar,
143
+ header y contenido principal usando Tailwind v4"
144
+
145
+ | # | Criterio | Peso | Verificación |
146
+ |---|----------|------|-------------|
147
+ | 1 | Usa utilidades de Tailwind, no CSS custom inline | 4 | ausencia de style= |
148
+ | 2 | Layout con grid/flex de Tailwind | 3 | grep grid, flex en clases |
149
+ | 3 | Breakpoints responsivos (sm:, md:, lg:) | 5 | grep sm:, md: |
150
+ | 4 | Spacing consistente (escala de Tailwind) | 3 | no valores arbitrarios |
151
+ | 5 | Dark mode con clase dark: | 2 | grep dark: |
152
+ ```
153
+
154
+ ---
155
+
156
+ ## Cómo crear un checklist para un skill nuevo
157
+
158
+ 1. **Identificar el output típico** del skill (¿qué genera?)
159
+ 2. **Listar las 3 reglas más críticas** del SKILL.md
160
+ 3. **Convertir cada regla en criterio binario** verificable
161
+ 4. **Asignar pesos** según impacto en la calidad del output
162
+ 5. **Definir método de verificación** (grep, conteo, formato, presencia/ausencia)
163
+ 6. **Escribir caso de prueba** representativo que active las reglas
164
+
165
+ ### Checklist del checklist (meta-evaluación)
166
+
167
+ Antes de usar un checklist, verificar:
168
+
169
+ - [ ] Tiene entre 3 y 6 items
170
+ - [ ] Cada item es binario (sí/no sin ambigüedad)
171
+ - [ ] Los pesos suman al menos 15 (para que el score sea discriminante)
172
+ - [ ] Hay al menos un item de peso 5 (criterio crítico)
173
+ - [ ] El caso de prueba es representativo del uso real del skill
174
+ - [ ] Los métodos de verificación son ejecutables (grep, conteo, etc.)
175
+
176
+ ---
177
+
178
+ ## Ubicación de checklists en el sistema
179
+
180
+ Los checklists de evaluación se almacenan junto al skill que evalúan:
181
+
182
+ ```
183
+ habilidades/[nombre-skill]/
184
+ ├── SKILL.md
185
+ ├── recursos/
186
+ │ └── checklist-autoresearch.md ← checklist de evaluación
187
+ └── scripts/ (si aplica)
188
+ ```
189
+
190
+ Esto permite que el loop Autoresearch encuentre el checklist automáticamente
191
+ buscando `habilidades/[nombre]/recursos/checklist-autoresearch.md`.
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env node
2
+ // calcular-score.js — Calcula score ponderado de Autoresearch
3
+ // Uso: node calcular-score.js '{"items":[{"peso":5,"cumple":true},{"peso":3,"cumple":false}]}'
4
+ // Exit: 0=éxito, 1=error de input
5
+
6
+ const input = process.argv[2];
7
+
8
+ if (!input) {
9
+ console.error('Uso: node calcular-score.js \'{"items":[{"peso":5,"cumple":true}]}\'');
10
+ console.error('Cada item necesita: peso (1-5) y cumple (true/false)');
11
+ process.exit(1);
12
+ }
13
+
14
+ let data;
15
+ try {
16
+ data = JSON.parse(input);
17
+ } catch (e) {
18
+ console.error(`Error parseando JSON: ${e.message}`);
19
+ process.exit(1);
20
+ }
21
+
22
+ if (!data.items || !Array.isArray(data.items) || data.items.length === 0) {
23
+ console.error('Se requiere un array "items" con al menos 1 elemento');
24
+ process.exit(1);
25
+ }
26
+
27
+ let score = 0;
28
+ let maxScore = 0;
29
+ const resultados = [];
30
+
31
+ for (let i = 0; i < data.items.length; i++) {
32
+ const item = data.items[i];
33
+
34
+ if (typeof item.peso !== 'number' || item.peso < 1 || item.peso > 5) {
35
+ console.error(`Item ${i + 1}: peso debe ser número entre 1 y 5 (recibido: ${item.peso})`);
36
+ process.exit(1);
37
+ }
38
+
39
+ if (typeof item.cumple !== 'boolean') {
40
+ console.error(`Item ${i + 1}: cumple debe ser boolean (recibido: ${item.cumple})`);
41
+ process.exit(1);
42
+ }
43
+
44
+ maxScore += item.peso;
45
+ if (item.cumple) {
46
+ score += item.peso;
47
+ }
48
+
49
+ resultados.push({
50
+ item: i + 1,
51
+ criterio: item.criterio || `Item ${i + 1}`,
52
+ peso: item.peso,
53
+ cumple: item.cumple ? '✓' : '✗',
54
+ puntos: item.cumple ? item.peso : 0
55
+ });
56
+ }
57
+
58
+ const porcentaje = Math.round((score / maxScore) * 10000) / 100;
59
+
60
+ let estado;
61
+ if (porcentaje >= 95) estado = 'EXCELENTE';
62
+ else if (porcentaje >= 80) estado = 'BUENO';
63
+ else if (porcentaje >= 60) estado = 'REGULAR';
64
+ else estado = 'DEFICIENTE';
65
+
66
+ // Output estructurado
67
+ const output = {
68
+ score: porcentaje,
69
+ estado,
70
+ puntos: score,
71
+ maxPuntos: maxScore,
72
+ items: resultados,
73
+ cumplidos: resultados.filter(r => r.cumple === '✓').length,
74
+ total: resultados.length
75
+ };
76
+
77
+ console.log(JSON.stringify(output, null, 2));
78
+
79
+ // También output legible
80
+ console.log('');
81
+ console.log(`Score: ${porcentaje}% (${score}/${maxScore} puntos) — ${estado}`);
82
+ console.log(`Items cumplidos: ${output.cumplidos}/${output.total}`);
83
+ console.log('');
84
+ resultados.forEach(r => {
85
+ console.log(` ${r.cumple} #${r.item} ${r.criterio} (peso: ${r.peso}, puntos: ${r.puntos})`);
86
+ });
87
+
88
+ process.exit(0);