@saulwade/swl-ses 2.3.0 → 2.4.1

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 (327) hide show
  1. package/CLAUDE.md +241 -199
  2. package/README.md +597 -597
  3. package/agentes/_intent-spec.md +73 -73
  4. package/agentes/_propose-step.md +90 -90
  5. package/agentes/accesibilidad-wcag-swl.md +2 -2
  6. package/agentes/arquitecto-swl.md +2 -2
  7. package/agentes/auto-evolucion-swl.md +2 -2
  8. package/agentes/backend-api-swl.md +2 -2
  9. package/agentes/backend-csharp-swl.md +2 -2
  10. package/agentes/backend-go-swl.md +2 -2
  11. package/agentes/backend-java-swl.md +2 -2
  12. package/agentes/backend-node-swl.md +2 -2
  13. package/agentes/backend-python-swl.md +2 -2
  14. package/agentes/backend-rust-swl.md +2 -2
  15. package/agentes/backend-workers-swl.md +2 -2
  16. package/agentes/cloud-infra-swl.md +2 -2
  17. package/agentes/consolidador-swl.md +2 -2
  18. package/agentes/datos-swl.md +2 -2
  19. package/agentes/depurador-swl.md +2 -2
  20. package/agentes/devops-ci-swl.md +2 -2
  21. package/agentes/disenador-ui-swl.md +2 -2
  22. package/agentes/documentador-swl.md +2 -2
  23. package/agentes/frontend-angular-swl.md +2 -2
  24. package/agentes/frontend-css-swl.md +2 -2
  25. package/agentes/frontend-react-swl.md +2 -2
  26. package/agentes/frontend-swl.md +2 -2
  27. package/agentes/frontend-tailwind-swl.md +2 -2
  28. package/agentes/gh-fix-ci-swl.md +275 -275
  29. package/agentes/implementador-swl.md +2 -2
  30. package/agentes/investigador-swl.md +2 -2
  31. package/agentes/investigador-ux-swl.md +2 -2
  32. package/agentes/llm-apps-swl.md +2 -2
  33. package/agentes/migrador-swl.md +2 -2
  34. package/agentes/mobile-android-swl.md +2 -2
  35. package/agentes/mobile-cross-swl.md +2 -2
  36. package/agentes/mobile-ios-swl.md +2 -2
  37. package/agentes/mobile-testing-swl.md +2 -2
  38. package/agentes/nemesis-auditor-swl.md +1 -1
  39. package/agentes/notificador-swl.md +2 -2
  40. package/agentes/observabilidad-swl.md +2 -2
  41. package/agentes/orquestador-swl.md +41 -14
  42. package/agentes/pagos-swl.md +2 -2
  43. package/agentes/perfilador-usuario-swl.md +2 -2
  44. package/agentes/planificador-swl.md +2 -2
  45. package/agentes/producto-prd-swl.md +2 -2
  46. package/agentes/red-team-swl.md +218 -218
  47. package/agentes/release-manager-swl.md +2 -2
  48. package/agentes/rendimiento-swl.md +2 -2
  49. package/agentes/resolutor-build-swl.md +2 -2
  50. package/agentes/revisor-angular-swl.md +2 -2
  51. package/agentes/revisor-codigo-swl.md +36 -3
  52. package/agentes/revisor-csharp-swl.md +2 -2
  53. package/agentes/revisor-go-swl.md +2 -2
  54. package/agentes/revisor-java-swl.md +2 -2
  55. package/agentes/revisor-kotlin-swl.md +2 -2
  56. package/agentes/revisor-nextjs-swl.md +2 -2
  57. package/agentes/revisor-php-swl.md +2 -2
  58. package/agentes/revisor-react-swl.md +2 -2
  59. package/agentes/revisor-rust-swl.md +2 -2
  60. package/agentes/revisor-seguridad-swl.md +2 -2
  61. package/agentes/revisor-swift-swl.md +2 -2
  62. package/agentes/revisor-typescript-swl.md +2 -2
  63. package/agentes/sre-swl.md +2 -2
  64. package/agentes/tdd-qa-swl.md +2 -2
  65. package/comandos/swl/briefing.md +119 -119
  66. package/comandos/swl/contexto.md +0 -2
  67. package/comandos/swl/contribuir.md +233 -233
  68. package/comandos/swl/deuda-codigo.md +97 -0
  69. package/comandos/swl/predecir.md +139 -139
  70. package/comandos/swl/sesiones.md +1 -1
  71. package/gateway/agent-executor.js +1 -1
  72. package/gateway/lib/event-channel.js +191 -191
  73. package/habilidades/agent-deep-links/SKILL.md +148 -148
  74. package/habilidades/agentes-como-servicio/SKILL.md +2 -2
  75. package/habilidades/angular-moderno/SKILL.md +24 -1
  76. package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -276
  77. package/habilidades/backend-async-postgres-testing/SKILL.md +215 -215
  78. package/habilidades/backend-error-design/SKILL.md +221 -221
  79. package/habilidades/backend-production-resilience/SKILL.md +288 -288
  80. package/habilidades/benchmark-memoria/SKILL.md +186 -186
  81. package/habilidades/calidad-anti-patrones-universales/SKILL.md +368 -368
  82. package/habilidades/calidad-contract-testing/SKILL.md +165 -165
  83. package/habilidades/calidad-mutation-testing/SKILL.md +170 -170
  84. package/habilidades/changelog-generator/scripts/parse-commits.js +367 -367
  85. package/habilidades/checklist-seguridad/recursos/stride-cobertura.md +60 -60
  86. package/habilidades/contenedores-docker/SKILL.md +3 -1
  87. package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
  88. package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
  89. package/habilidades/drift-detection/SKILL.md +179 -179
  90. package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +1 -1
  91. package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +57 -57
  92. package/habilidades/eval-framework/SKILL.md +212 -212
  93. package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -108
  94. package/habilidades/harness-claude-code/SKILL.md +4 -4
  95. package/habilidades/harness-claude-code/recursos/disciplina-harness-regla.md +253 -252
  96. package/habilidades/legacy-code-rescue/SKILL.md +268 -267
  97. package/habilidades/meta-skills-estandar/SKILL.md +1 -1
  98. package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
  99. package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +2 -2
  100. package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
  101. package/habilidades/perfil-usuario/SKILL.md +200 -200
  102. package/habilidades/postgresql-experto/SKILL.md +3 -1
  103. package/habilidades/prevencion-sobreingenieria/SKILL.md +70 -92
  104. package/habilidades/prevencion-sobreingenieria/recursos/EXAMPLES.md +580 -580
  105. package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -0
  106. package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -0
  107. package/habilidades/proceso-ddia-fundamentos/SKILL.md +255 -255
  108. package/habilidades/proceso-ddia-streaming/SKILL.md +231 -231
  109. package/habilidades/proceso-debate-adversarial/recursos/personas.md +105 -105
  110. package/habilidades/proceso-discovery-machote/SKILL.md +157 -157
  111. package/habilidades/proceso-dynamic-workflows/SKILL.md +138 -138
  112. package/habilidades/proceso-dynamic-workflows/recursos/template-adversarial-verify.js +65 -65
  113. package/habilidades/proceso-dynamic-workflows/recursos/template-triage.js +65 -65
  114. package/habilidades/proceso-intent-engineering/SKILL.md +269 -269
  115. package/habilidades/proceso-modular-split/SKILL.md +256 -256
  116. package/habilidades/prompt-engineering/recursos/patrones-avanzados.md +2 -2
  117. package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -147
  118. package/habilidades/structured-outputs/SKILL.md +2 -2
  119. package/habilidades/swl-claudemd/recursos/contrato-aprender.md +83 -83
  120. package/habilidades/swl-claudemd/recursos/duplicacion-reglas-globales.md +85 -85
  121. package/habilidades/swl-claudemd/recursos/plantillas-init.md +94 -94
  122. package/habilidades/swl-dashboard/SKILL.md +2 -2
  123. package/habilidades/tdd-workflow/recursos/gherkin-bdd.md +111 -111
  124. package/habilidades/validacion-ci-sistema/recursos/validadores-completos.md +1 -1
  125. package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +1 -1
  126. package/hooks/audit-trail.js +4 -4
  127. package/hooks/calidad-pre-commit.js +15 -11
  128. package/hooks/captura-acciones-post.js +3 -2
  129. package/hooks/captura-acciones-session.js +3 -2
  130. package/hooks/ciclo-evolucion-subagente.js +26 -26
  131. package/hooks/ciclo-evolucion.js +26 -26
  132. package/hooks/claudemd-bloat-detector.js +161 -161
  133. package/hooks/claudemd-duplicacion-detector.js +170 -170
  134. package/hooks/contexto-iteracion.js +145 -144
  135. package/hooks/contexto-subagente.js +68 -0
  136. package/hooks/guardrail-modelo.js +14 -4
  137. package/hooks/inyeccion-contexto.js +12 -12
  138. package/hooks/lib/agent-routing.js +107 -107
  139. package/hooks/lib/auto-consolidator.js +335 -335
  140. package/hooks/lib/autonomia.js +208 -208
  141. package/hooks/lib/ciclo-evolucion.js +47 -47
  142. package/hooks/lib/deep-links.js +185 -185
  143. package/hooks/lib/error-classifier.js +308 -308
  144. package/hooks/lib/etapa-auto-evolucion.js +701 -701
  145. package/hooks/lib/etapa-metricas.js +388 -388
  146. package/hooks/lib/etapa-perfil-usuario.js +376 -376
  147. package/hooks/lib/loop-telemetry.js +321 -321
  148. package/hooks/lib/merkle-audit.js +96 -96
  149. package/hooks/lib/model-router.js +2 -2
  150. package/hooks/lib/propose-step.js +358 -358
  151. package/hooks/lib/provenance-tracker.js +191 -191
  152. package/hooks/lib/rate-limit-tracker.js +253 -253
  153. package/hooks/lib/resource-quota.js +122 -122
  154. package/hooks/lib/retry-jitter.js +165 -165
  155. package/hooks/lib/security-net.js +201 -201
  156. package/hooks/lib/skill-auditor.js +588 -588
  157. package/hooks/lib/sync-status.js +228 -228
  158. package/hooks/lib/taint-tracker.js +107 -107
  159. package/hooks/lib/text-similarity.js +241 -241
  160. package/hooks/lib/token-estimator.js +1 -0
  161. package/hooks/lib/toon-compressor.js +245 -245
  162. package/hooks/lib/usage-model.js +1 -1
  163. package/hooks/registro-turnos.js +210 -209
  164. package/hooks/session-briefing.js +98 -98
  165. package/hooks/spec-gate.js +212 -211
  166. package/hooks/sugerir-contribuir.js +2 -1
  167. package/hooks/sugerir-regenerar-inventario.js +171 -170
  168. package/hooks/tdd-gate.js +242 -241
  169. package/hooks/telemetria-skill-routing.js +100 -100
  170. package/hooks/validar-formato-post-subagente.js +140 -140
  171. package/hooks/validar-intent-spec.js +242 -242
  172. package/hooks/validar-memoria-hook.js +218 -218
  173. package/hooks/validar-planning-paths.js +134 -134
  174. package/instintos/autonomia.yaml +27 -27
  175. package/instintos/prompt-appendices.yaml +57 -57
  176. package/llms.txt +29 -29
  177. package/manifiestos/agent-output-schemas.json +57 -57
  178. package/manifiestos/canonical-hashes.json +2948 -1964
  179. package/manifiestos/hook-profiles.json +0 -2
  180. package/manifiestos/hooks-config.json +469 -477
  181. package/manifiestos/invariantes-criticos.json +30 -0
  182. package/manifiestos/modulos.json +1390 -1390
  183. package/manifiestos/planning-paths.json +44 -44
  184. package/manifiestos/skills-lock.json +1282 -1282
  185. package/package.json +93 -93
  186. package/plantillas/auditor-veto-template.md +105 -105
  187. package/plantillas/github-workflows/README.md +47 -47
  188. package/plantillas/github-workflows/release-please.yml +44 -44
  189. package/plantillas/github-workflows/swl-ci.yml +107 -107
  190. package/plantillas/github-workflows/swl-security.yml +51 -51
  191. package/plugin.json +369 -371
  192. package/reglas/accesibilidad.md +10 -10
  193. package/reglas/analisis-previo-tareas-grandes.md +172 -172
  194. package/reglas/api-diseno.md +9 -9
  195. package/reglas/arreglar-al-detectar.md +240 -240
  196. package/reglas/auditorias-documentales-estructurales.md +7 -7
  197. package/reglas/cloud-infra.md +8 -8
  198. package/reglas/consultar-vault-primero.md +195 -195
  199. package/reglas/debatir-antes-de-aceptar.md +158 -158
  200. package/reglas/fragmentos-compartidos.md +183 -183
  201. package/reglas/hooks.md +6 -6
  202. package/reglas/intent-engineering.md +218 -218
  203. package/reglas/markitdown.md +8 -8
  204. package/reglas/monitor-ci.md +309 -309
  205. package/reglas/patrones.md +6 -6
  206. package/reglas/sesiones-paralelas.md +180 -180
  207. package/reglas/sin-duplicacion-reglas-globales.md +182 -182
  208. package/reglas/skills-estandar.md +6 -6
  209. package/reglas/testing.md +7 -7
  210. package/reglas/tests-cleanup.md +224 -224
  211. package/reglas/usar-code-review-graph.md +155 -155
  212. package/reglas/usar-context7.md +226 -226
  213. package/reglas/verificar-citas-normativas.md +548 -548
  214. package/schemas/agent-frontmatter.schema.json +5 -3
  215. package/schemas/agent-message.schema.json +73 -73
  216. package/schemas/agent-output-implementacion.schema.json +114 -114
  217. package/schemas/agent-output-planificacion.schema.json +150 -150
  218. package/schemas/agent-output-review.schema.json +98 -98
  219. package/schemas/diary-entry.schema.json +112 -112
  220. package/schemas/hook-profiles.schema.json +54 -54
  221. package/schemas/hooks-config.schema.json +89 -89
  222. package/schemas/modulos.schema.json +38 -38
  223. package/schemas/perfiles.schema.json +36 -36
  224. package/schemas/plugin.schema.json +77 -77
  225. package/schemas/skill-evals.schema.json +119 -119
  226. package/schemas/skill-frontmatter.schema.json +245 -245
  227. package/scripts/audit-tools/audit-history.js +330 -330
  228. package/scripts/audit-tools/bundle-tracker.js +290 -290
  229. package/scripts/audit-tools/canary-monitor.js +352 -352
  230. package/scripts/audit-tools/code-profiler.js +605 -605
  231. package/scripts/audit-tools/dep-doctor.js +320 -320
  232. package/scripts/audit-tools/env-validator.js +206 -206
  233. package/scripts/audit-tools/lib/fs-walk.js +48 -48
  234. package/scripts/audit-tools/lib/output.js +23 -23
  235. package/scripts/audit-tools/migration-checker.js +392 -392
  236. package/scripts/audit-tools/pentest-scanner.js +1436 -1436
  237. package/scripts/benchmark-memoria.js +167 -167
  238. package/scripts/cli/aprobar-plan.js +73 -73
  239. package/scripts/cli/briefing.js +23 -23
  240. package/scripts/cli/ciclo-evolucion.js +26 -26
  241. package/scripts/cli/configurar-ci.js +40 -40
  242. package/scripts/cli/derivar-feature-list.js +25 -25
  243. package/scripts/cli/detectar-host.js +27 -27
  244. package/scripts/cli/diary-entry.js +69 -69
  245. package/scripts/cli/execution-state.js +18 -18
  246. package/scripts/cli/gateway-notify.js +41 -41
  247. package/scripts/cli/liberar-fase.js +42 -42
  248. package/scripts/cli/loop-telemetry.js +125 -125
  249. package/scripts/cli/mark-evolved.js +56 -56
  250. package/scripts/cli/metricas-dora.js +26 -26
  251. package/scripts/cli/near-duplicate.js +55 -55
  252. package/scripts/cli/notificaciones.js +123 -123
  253. package/scripts/cli/propose-step.js +29 -29
  254. package/scripts/cli/schedule-parse.js +19 -19
  255. package/scripts/cli/sugerir-modelo.js +20 -20
  256. package/scripts/cli/verificar-plan.js +36 -36
  257. package/scripts/cli/verificar-trazabilidad.js +35 -35
  258. package/scripts/configurar-branch-protection.js +418 -418
  259. package/scripts/detectar-aprendizajes-duplicados.js +151 -151
  260. package/scripts/field-report.js +199 -199
  261. package/scripts/generar-checklists-consolidados.js +273 -273
  262. package/scripts/generar-matriz-lenguajes.js +271 -271
  263. package/scripts/instalador.js +4 -1
  264. package/scripts/lib/artefactos-python.js +43 -43
  265. package/scripts/lib/auditar-invocaciones-comandos.js +104 -104
  266. package/scripts/lib/benchmark-metrics.js +160 -160
  267. package/scripts/lib/budget-enforcer.js +252 -252
  268. package/scripts/lib/ci-reader.js +193 -193
  269. package/scripts/lib/claude-sessions.js +1 -0
  270. package/scripts/lib/configurar-ci.js +380 -380
  271. package/scripts/lib/contadores-inventario.js +217 -217
  272. package/scripts/lib/detectar-host-swl.js +175 -175
  273. package/scripts/lib/detectar-stack-detallado.js +307 -307
  274. package/scripts/lib/detector-autoduplicacion-intra-archivo.js +234 -234
  275. package/scripts/lib/detector-reglas-duplicadas.js +220 -220
  276. package/scripts/lib/diary-entry.js +234 -234
  277. package/scripts/lib/eval-metrics-store.js +218 -218
  278. package/scripts/lib/eval-quality.js +171 -171
  279. package/scripts/lib/eval-schemas.js +144 -144
  280. package/scripts/lib/eval-self-correct.js +106 -106
  281. package/scripts/lib/eval-validator.js +185 -185
  282. package/scripts/lib/evidencia-release.js +322 -322
  283. package/scripts/lib/gate-hooks-requires.js +249 -249
  284. package/scripts/lib/gate-licencias.js +212 -212
  285. package/scripts/lib/git-metricas.js +257 -257
  286. package/scripts/lib/jaccard-similarity.js +98 -98
  287. package/scripts/lib/longmemeval-runner.js +125 -125
  288. package/scripts/lib/metricas-dora.js +204 -204
  289. package/scripts/lib/npm-version.js +261 -261
  290. package/scripts/lib/paquetes-conocidos.js +50 -50
  291. package/scripts/lib/plan-lock.js +275 -275
  292. package/scripts/lib/pr-analyzer.js +399 -399
  293. package/scripts/lib/preservar-usuario.js +39 -5
  294. package/scripts/lib/prompt-builder.js +264 -264
  295. package/scripts/lib/reglas-globales-conocidas.json +180 -180
  296. package/scripts/lib/resolver-plan-fase.js +37 -37
  297. package/scripts/lib/rrf-fusion.js +175 -175
  298. package/scripts/lib/schema-version.js +164 -164
  299. package/scripts/lib/scoring-instintos.js +277 -277
  300. package/scripts/lib/semantic-search.js +252 -252
  301. package/scripts/lib/tool-cost-analyzer.js +1 -0
  302. package/scripts/limpiar-artefactos-python.js +131 -131
  303. package/scripts/migrar-csv-a-array.js +168 -168
  304. package/scripts/migrar-fase-dominio.js +200 -200
  305. package/scripts/publicar.js +497 -497
  306. package/scripts/run-eval.js +141 -141
  307. package/scripts/tui/componentes/selector-multi.js +189 -189
  308. package/scripts/tui/componentes/selector-unico.js +158 -158
  309. package/scripts/tui/ejecutores.js +375 -375
  310. package/scripts/tui/index.js +162 -162
  311. package/scripts/tui/lib/colores.js +129 -129
  312. package/scripts/tui/lib/render.js +264 -264
  313. package/scripts/tui/lib/teclas.js +113 -113
  314. package/scripts/tui/pantallas/inspect.js +173 -173
  315. package/scripts/tui/pantallas/install-wizard.js +334 -334
  316. package/scripts/tui/pantallas/menu-principal.js +52 -52
  317. package/scripts/tui/pantallas/progreso.js +274 -274
  318. package/scripts/tui/pantallas/resumen.js +132 -132
  319. package/scripts/tui/pantallas/uninstall-wizard.js +208 -208
  320. package/scripts/tui/pantallas/update-wizard.js +232 -232
  321. package/scripts/tui/pantallas/welcome.js +187 -187
  322. package/scripts/validar-userland-vacio.js +110 -110
  323. package/scripts/validar.js +1 -1
  324. package/scripts/verificar-release.js +51 -0
  325. package/hooks/lib/context-compressor.js +0 -657
  326. package/hooks/linea-estado.js +0 -326
  327. package/hooks/monitor-contexto.js +0 -373
@@ -1,148 +1,148 @@
1
- ---
2
- name: agent-deep-links
3
- description: >
4
- Constructor y validador de deep links para abrir archivos, líneas, carpetas y
5
- ajustes directamente en IDEs y editores desde notificaciones, mensajes del
6
- gateway o output de agentes. Cubre VS Code (vscode://), VS Code Insiders,
7
- Cursor (cursor://), JetBrains (jetbrains://), Codex Desktop (codex://) y
8
- fallbacks para apps sin esquema oficial. Cargar cuando un agente o hook deba
9
- emitir referencias a archivo:línea que el usuario pueda abrir con un clic
10
- desde Telegram, desktop notifications, Discord, Slack o e-mail.
11
- version: 1.0.0
12
- nivelRiesgo: BAJO
13
- herramientasPermitidas: [Read]
14
- exclusiones:
15
- - "No invocar para generar URLs HTTP/HTTPS de navegación web — esto es solo para deep links a apps de escritorio."
16
- - "No invocar para integraciones con servicios externos (Linear, Notion, Jira); este skill solo cubre IDEs y editores locales del desarrollador."
17
- - "No invocar para enlaces a sesiones de Claude Code en la nube — esos son URLs claude.ai/code/..., no deep links."
18
- ---
19
-
20
- # /habilidades/agent-deep-links — Deep links a IDEs
21
-
22
- ## Cuándo cargar
23
-
24
- - Antes de emitir una notificación que incluya referencias a archivos del proyecto
25
- desde `notificador-swl`, `hooks/lib/gateway-notify.js`, `inbox-aviso.js`,
26
- `notificacion-sesion-stop.js` o cualquier hook que mencione `archivo:línea`.
27
- - Al diseñar nuevos hooks o agentes que produzcan output con referencias a código
28
- que el usuario pueda querer abrir directamente.
29
- - Antes de generar mensajes desde el `documentador-swl` cuyo destino sea un canal
30
- externo (Telegram, Discord, e-mail) y el receptor probablemente esté en su
31
- IDE.
32
-
33
- ## Cuándo NO cargar
34
-
35
- - Cuando la notificación es solo texto plano sin referencias a archivos
36
- (mensajes de status, métricas agregadas).
37
- - Cuando el receptor es un agente, no un humano (los agentes no abren IDEs).
38
- - Cuando estás generando URLs de navegación web (HTTP/HTTPS) — usa generación
39
- estándar.
40
- - Cuando el proyecto no expone su path absoluto al gateway (los deep links de
41
- IDE requieren absolute paths).
42
-
43
- ## Helper programático
44
-
45
- La lógica del skill está implementada en `hooks/lib/deep-links.js`. El skill
46
- documenta **qué** generar; el helper genera **cómo**. Para uso desde código:
47
-
48
- ```js
49
- const { construirDeepLink, soportaDeepLinks } = require('./lib/deep-links');
50
-
51
- const url = construirDeepLink({
52
- ide: 'cursor', // 'vscode' | 'vscode-insiders' | 'cursor' | 'codex' | 'jetbrains' | 'visualstudio'
53
- rutaAbsoluta: '/abs/path/a/archivo.js',
54
- linea: 42,
55
- columna: 8,
56
- });
57
- // → 'cursor://file//abs/path/a/archivo.js:42:8'
58
-
59
- if (!url) {
60
- // El IDE solicitado no soporta deep links — usar fallback en texto plano
61
- }
62
- ```
63
-
64
- ## Matriz de soporte por IDE
65
-
66
- | IDE / App | Esquema | Soporte | Patrón canónico | Notas |
67
- |---|---|---|---|---|
68
- | **VS Code** | `vscode://` | Total | `vscode://file/<absoluteFile>:<line>:<column>` | Requiere VS Code instalado en máquina del receptor. |
69
- | **VS Code Insiders** | `vscode-insiders://` | Total | `vscode-insiders://file/<absoluteFile>:<line>:<column>` | Esquema específico Insiders. |
70
- | **Cursor** | `cursor://` | Total | `cursor://file/<absoluteFile>:<line>:<column>` | Fork de VS Code; misma forma. |
71
- | **Codex Desktop** | `codex://` | Total | `codex://threads/<thread-uuid>`, `codex://settings` | Para hilos y settings; no archivos. |
72
- | **JetBrains (IntelliJ/PyCharm/WebStorm/...)** | `jetbrains://` | Total | `jetbrains://<ide-id>/navigate/reference?project=<name>&path=<relPath>` | Requiere nombre del proyecto. Ver fila JetBrains abajo. |
73
- | **JetBrains Toolbox URL** | `idea://` (deprecado), `jetbrains://idea/...` | Parcial | `jetbrains://idea/navigate/reference?project=<name>&path=<rel>:<line>` | Cada IDE tiene su `<ide-id>`: idea, pycharm, webstorm, goland, rubymine, etc. |
74
- | **Visual Studio (Windows)** | (no estándar) | Sin esquema oficial | Usar CLI fallback: `devenv /edit <rutaAbsoluta>` | Solo Windows. |
75
- | **Xcode** | `xcode://` | Parcial | `xcode://...` | Esquema existe; rutas de archivo no bien documentadas. NO confiable. |
76
- | **Claude Desktop** | `claude://` | Desconocido | `claude://...` | Esquema registrado, rutas no documentadas. |
77
- | **Codex CLI** (terminal) | n/a | No aplica | n/a | Es CLI; no abre archivos en IDE. Usar fallback texto plano. |
78
- | **Cualquier app web** | n/a | No aplica | n/a | Si el destino es navegador, usar URL HTTP estándar. |
79
-
80
- ## Reglas de construcción
81
-
82
- 1. **Path absoluto obligatorio**. Deep links con rutas relativas no funcionan.
83
- El helper rechaza `path.relative` y retorna `null`.
84
- 2. **Encoding de paths con espacios**: aplicar `encodeURI` al path completo (no
85
- solo al filename). El helper lo hace automáticamente.
86
- 3. **Línea y columna son opcionales**: si no se especifican, el IDE abre al
87
- inicio del archivo. Línea 1, columna 1 es válido pero redundante.
88
- 4. **JetBrains requiere `proyecto`**: sin el nombre del proyecto, el deep link
89
- no resuelve. Si no se conoce, usar `vscode://` como fallback (la mayoría de
90
- los desarrolladores tienen VS Code instalado).
91
- 5. **NUNCA inventar esquemas**: si la matriz dice "No aplica" o "Desconocido",
92
- el helper retorna `null` y el caller debe usar texto plano.
93
-
94
- ## Formato según receptor
95
-
96
- | Receptor | Forma del enlace |
97
- |---|---|
98
- | **Telegram** (Markdown V2) | `[abrir en IDE](cursor://file//abs/path:42:8)` |
99
- | **Discord** | `[abrir en IDE](cursor://file//abs/path:42:8)` |
100
- | **Slack** | `<cursor://file//abs/path:42:8\|abrir en Cursor>` (pipe-separado) |
101
- | **Desktop notification** (Linux/macOS) | URL plana sin label; el notificador maneja el clic |
102
- | **E-mail HTML** | `<a href="cursor://file//abs/path:42:8">abrir en Cursor</a>` |
103
- | **Texto plano / fallback** | `archivo.js:42 (abrir manualmente)` |
104
-
105
- ## Gotchas observables
106
-
107
- - **El receptor debe tener el IDE instalado**: un enlace `cursor://` no funciona
108
- si el receptor no tiene Cursor instalado. NO hay forma de detectarlo desde
109
- el emisor; documentar al usuario que el deep link es opt-in.
110
- - **Slack tiene su propia sintaxis** `<url|label>`, no Markdown estándar. Mezclar
111
- los formatos rompe el clic.
112
- - **Windows usa backslashes**: el path absoluto en Windows es
113
- `C:\Users\...\archivo.js`. El esquema `vscode://file/C:\\Users\\...` requiere
114
- doble-backslash en algunos casos; el helper normaliza con `path.resolve` +
115
- `encodeURI` para producir `vscode://file/C:/Users/...` (slashes forward) que
116
- VS Code/Cursor sí aceptan correctamente.
117
- - **JetBrains URL Handler debe estar habilitado**: en JetBrains está bajo
118
- Settings → Tools → Web Browsers and Preview → "Use JetBrains as a
119
- redirect..." NO está activado por defecto en todas las distribuciones.
120
-
121
- ## Integración con SWL
122
-
123
- Hoy se integra en `hooks/lib/gateway-notify.js` (opt-in): cuando un caller pasa
124
- `payload.fileRef = { archivo, linea, columna }` Y existe `payload.idePreferido`,
125
- el helper enriquece el mensaje con el deep link en el formato del adaptador
126
- destino (Telegram / Discord / etc.).
127
-
128
- Extensiones futuras (no implementadas hoy):
129
-
130
- - `notificador-swl` (Telegram nativo): pasar `idePreferido` desde
131
- `instintos/perfil-usuario.yaml § ide_preferido`.
132
- - `documentador-swl`: enlaces a archivos citados en docs generados.
133
- - `revisor-codigo-swl`: enlaces a archivo:línea en reportes de hallazgos.
134
-
135
- ## Origen
136
-
137
- Adaptado del skill `agent-deep-links` de
138
- `temp/awesome-codex-skills-master/agent-deep-links/` (ComposioHQ, MIT) con:
139
-
140
- - Frontmatter al estándar SWL (es-MX, `nivelRiesgo`, `exclusiones`,
141
- `herramientasPermitidas`).
142
- - Matriz extendida con JetBrains (no estaba) y Visual Studio fallback.
143
- - Sección "Formato según receptor" agregada para Telegram/Discord además del
144
- Slack original.
145
- - Helper Node.js (`hooks/lib/deep-links.js`) que el repo origen no tenía.
146
- - Sección "Integración con SWL" agregada.
147
-
148
- Documentado en ADR-0029 (integración parcial awesome-codex-skills, Opción B).
1
+ ---
2
+ name: agent-deep-links
3
+ description: >
4
+ Constructor y validador de deep links para abrir archivos, líneas, carpetas y
5
+ ajustes directamente en IDEs y editores desde notificaciones, mensajes del
6
+ gateway o output de agentes. Cubre VS Code (vscode://), VS Code Insiders,
7
+ Cursor (cursor://), JetBrains (jetbrains://), Codex Desktop (codex://) y
8
+ fallbacks para apps sin esquema oficial. Cargar cuando un agente o hook deba
9
+ emitir referencias a archivo:línea que el usuario pueda abrir con un clic
10
+ desde Telegram, desktop notifications, Discord, Slack o e-mail.
11
+ version: 1.0.0
12
+ nivelRiesgo: BAJO
13
+ herramientasPermitidas: [Read]
14
+ exclusiones:
15
+ - "No invocar para generar URLs HTTP/HTTPS de navegación web — esto es solo para deep links a apps de escritorio."
16
+ - "No invocar para integraciones con servicios externos (Linear, Notion, Jira); este skill solo cubre IDEs y editores locales del desarrollador."
17
+ - "No invocar para enlaces a sesiones de Claude Code en la nube — esos son URLs claude.ai/code/..., no deep links."
18
+ ---
19
+
20
+ # /habilidades/agent-deep-links — Deep links a IDEs
21
+
22
+ ## Cuándo cargar
23
+
24
+ - Antes de emitir una notificación que incluya referencias a archivos del proyecto
25
+ desde `notificador-swl`, `hooks/lib/gateway-notify.js`, `inbox-aviso.js`,
26
+ `notificacion-sesion-stop.js` o cualquier hook que mencione `archivo:línea`.
27
+ - Al diseñar nuevos hooks o agentes que produzcan output con referencias a código
28
+ que el usuario pueda querer abrir directamente.
29
+ - Antes de generar mensajes desde el `documentador-swl` cuyo destino sea un canal
30
+ externo (Telegram, Discord, e-mail) y el receptor probablemente esté en su
31
+ IDE.
32
+
33
+ ## Cuándo NO cargar
34
+
35
+ - Cuando la notificación es solo texto plano sin referencias a archivos
36
+ (mensajes de status, métricas agregadas).
37
+ - Cuando el receptor es un agente, no un humano (los agentes no abren IDEs).
38
+ - Cuando estás generando URLs de navegación web (HTTP/HTTPS) — usa generación
39
+ estándar.
40
+ - Cuando el proyecto no expone su path absoluto al gateway (los deep links de
41
+ IDE requieren absolute paths).
42
+
43
+ ## Helper programático
44
+
45
+ La lógica del skill está implementada en `hooks/lib/deep-links.js`. El skill
46
+ documenta **qué** generar; el helper genera **cómo**. Para uso desde código:
47
+
48
+ ```js
49
+ const { construirDeepLink, soportaDeepLinks } = require('./lib/deep-links');
50
+
51
+ const url = construirDeepLink({
52
+ ide: 'cursor', // 'vscode' | 'vscode-insiders' | 'cursor' | 'codex' | 'jetbrains' | 'visualstudio'
53
+ rutaAbsoluta: '/abs/path/a/archivo.js',
54
+ linea: 42,
55
+ columna: 8,
56
+ });
57
+ // → 'cursor://file//abs/path/a/archivo.js:42:8'
58
+
59
+ if (!url) {
60
+ // El IDE solicitado no soporta deep links — usar fallback en texto plano
61
+ }
62
+ ```
63
+
64
+ ## Matriz de soporte por IDE
65
+
66
+ | IDE / App | Esquema | Soporte | Patrón canónico | Notas |
67
+ |---|---|---|---|---|
68
+ | **VS Code** | `vscode://` | Total | `vscode://file/<absoluteFile>:<line>:<column>` | Requiere VS Code instalado en máquina del receptor. |
69
+ | **VS Code Insiders** | `vscode-insiders://` | Total | `vscode-insiders://file/<absoluteFile>:<line>:<column>` | Esquema específico Insiders. |
70
+ | **Cursor** | `cursor://` | Total | `cursor://file/<absoluteFile>:<line>:<column>` | Fork de VS Code; misma forma. |
71
+ | **Codex Desktop** | `codex://` | Total | `codex://threads/<thread-uuid>`, `codex://settings` | Para hilos y settings; no archivos. |
72
+ | **JetBrains (IntelliJ/PyCharm/WebStorm/...)** | `jetbrains://` | Total | `jetbrains://<ide-id>/navigate/reference?project=<name>&path=<relPath>` | Requiere nombre del proyecto. Ver fila JetBrains abajo. |
73
+ | **JetBrains Toolbox URL** | `idea://` (deprecado), `jetbrains://idea/...` | Parcial | `jetbrains://idea/navigate/reference?project=<name>&path=<rel>:<line>` | Cada IDE tiene su `<ide-id>`: idea, pycharm, webstorm, goland, rubymine, etc. |
74
+ | **Visual Studio (Windows)** | (no estándar) | Sin esquema oficial | Usar CLI fallback: `devenv /edit <rutaAbsoluta>` | Solo Windows. |
75
+ | **Xcode** | `xcode://` | Parcial | `xcode://...` | Esquema existe; rutas de archivo no bien documentadas. NO confiable. |
76
+ | **Claude Desktop** | `claude://` | Desconocido | `claude://...` | Esquema registrado, rutas no documentadas. |
77
+ | **Codex CLI** (terminal) | n/a | No aplica | n/a | Es CLI; no abre archivos en IDE. Usar fallback texto plano. |
78
+ | **Cualquier app web** | n/a | No aplica | n/a | Si el destino es navegador, usar URL HTTP estándar. |
79
+
80
+ ## Reglas de construcción
81
+
82
+ 1. **Path absoluto obligatorio**. Deep links con rutas relativas no funcionan.
83
+ El helper rechaza `path.relative` y retorna `null`.
84
+ 2. **Encoding de paths con espacios**: aplicar `encodeURI` al path completo (no
85
+ solo al filename). El helper lo hace automáticamente.
86
+ 3. **Línea y columna son opcionales**: si no se especifican, el IDE abre al
87
+ inicio del archivo. Línea 1, columna 1 es válido pero redundante.
88
+ 4. **JetBrains requiere `proyecto`**: sin el nombre del proyecto, el deep link
89
+ no resuelve. Si no se conoce, usar `vscode://` como fallback (la mayoría de
90
+ los desarrolladores tienen VS Code instalado).
91
+ 5. **NUNCA inventar esquemas**: si la matriz dice "No aplica" o "Desconocido",
92
+ el helper retorna `null` y el caller debe usar texto plano.
93
+
94
+ ## Formato según receptor
95
+
96
+ | Receptor | Forma del enlace |
97
+ |---|---|
98
+ | **Telegram** (Markdown V2) | `[abrir en IDE](cursor://file//abs/path:42:8)` |
99
+ | **Discord** | `[abrir en IDE](cursor://file//abs/path:42:8)` |
100
+ | **Slack** | `<cursor://file//abs/path:42:8\|abrir en Cursor>` (pipe-separado) |
101
+ | **Desktop notification** (Linux/macOS) | URL plana sin label; el notificador maneja el clic |
102
+ | **E-mail HTML** | `<a href="cursor://file//abs/path:42:8">abrir en Cursor</a>` |
103
+ | **Texto plano / fallback** | `archivo.js:42 (abrir manualmente)` |
104
+
105
+ ## Gotchas observables
106
+
107
+ - **El receptor debe tener el IDE instalado**: un enlace `cursor://` no funciona
108
+ si el receptor no tiene Cursor instalado. NO hay forma de detectarlo desde
109
+ el emisor; documentar al usuario que el deep link es opt-in.
110
+ - **Slack tiene su propia sintaxis** `<url|label>`, no Markdown estándar. Mezclar
111
+ los formatos rompe el clic.
112
+ - **Windows usa backslashes**: el path absoluto en Windows es
113
+ `C:\Users\...\archivo.js`. El esquema `vscode://file/C:\\Users\\...` requiere
114
+ doble-backslash en algunos casos; el helper normaliza con `path.resolve` +
115
+ `encodeURI` para producir `vscode://file/C:/Users/...` (slashes forward) que
116
+ VS Code/Cursor sí aceptan correctamente.
117
+ - **JetBrains URL Handler debe estar habilitado**: en JetBrains está bajo
118
+ Settings → Tools → Web Browsers and Preview → "Use JetBrains as a
119
+ redirect..." NO está activado por defecto en todas las distribuciones.
120
+
121
+ ## Integración con SWL
122
+
123
+ Hoy se integra en `hooks/lib/gateway-notify.js` (opt-in): cuando un caller pasa
124
+ `payload.fileRef = { archivo, linea, columna }` Y existe `payload.idePreferido`,
125
+ el helper enriquece el mensaje con el deep link en el formato del adaptador
126
+ destino (Telegram / Discord / etc.).
127
+
128
+ Extensiones futuras (no implementadas hoy):
129
+
130
+ - `notificador-swl` (Telegram nativo): pasar `idePreferido` desde
131
+ `instintos/perfil-usuario.yaml § ide_preferido`.
132
+ - `documentador-swl`: enlaces a archivos citados en docs generados.
133
+ - `revisor-codigo-swl`: enlaces a archivo:línea en reportes de hallazgos.
134
+
135
+ ## Origen
136
+
137
+ Adaptado del skill `agent-deep-links` de
138
+ `temp/awesome-codex-skills-master/agent-deep-links/` (ComposioHQ, MIT) con:
139
+
140
+ - Frontmatter al estándar SWL (es-MX, `nivelRiesgo`, `exclusiones`,
141
+ `herramientasPermitidas`).
142
+ - Matriz extendida con JetBrains (no estaba) y Visual Studio fallback.
143
+ - Sección "Formato según receptor" agregada para Telegram/Discord además del
144
+ Slack original.
145
+ - Helper Node.js (`hooks/lib/deep-links.js`) que el repo origen no tenía.
146
+ - Sección "Integración con SWL" agregada.
147
+
148
+ Documentado en ADR-0029 (integración parcial awesome-codex-skills, Opción B).
@@ -79,7 +79,7 @@ for await (const msg of query({
79
79
  allowedTools: ['Read', 'Glob', 'Grep'],
80
80
  maxTurns: 5, // Prevenir loops infinitos
81
81
  maxBudgetUsd: 0.15, // Hard cap en USD
82
- model: 'claude-sonnet-4-6',
82
+ model: 'claude-sonnet-5',
83
83
  hooks: { /* guardrails */ },
84
84
  },
85
85
  })) {
@@ -97,7 +97,7 @@ for await (const msg of query({
97
97
  | `allowedTools` | Whitelist de herramientas | `['Read', 'Glob', 'Grep']` para read-only |
98
98
  | `maxTurns` | Máximo de iteraciones | 3-10 según complejidad |
99
99
  | `maxBudgetUsd` | Costo máximo por invocación | $0.05-$0.50 según agente |
100
- | `model` | Modelo de IA | `claude-sonnet-4-6` para balance costo/calidad |
100
+ | `model` | Modelo de IA | `claude-sonnet-5` para balance costo/calidad |
101
101
 
102
102
  ## Separación Dev vs Prod
103
103
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: angular-moderno
3
3
  description: Angular v17+/v20+. Signals, standalone components, OnPush, host bindings, nueva sintaxis de control flow (@if/@for/@switch), defer blocks y patrones modernos.
4
- version: "1.0.1"
4
+ version: "1.0.3"
5
5
  herramientasPermitidas: [Read]
6
6
  exclusiones:
7
7
  - "No cargar para patrones Angular avanzados (zoneless, SSR, Resource API, interceptores funcionales) — para eso cargar `angular-avanzado`."
@@ -177,6 +177,10 @@ Para ejemplos completos de host bindings con clases dinámicas, services store c
177
177
 
178
178
  ## Gotchas / Errores comunes no obvios
179
179
 
180
+ **`NativeDateAdapter.parse()` de Angular Material ignora `MAT_DATE_LOCALE` al parsear texto tecleado a mano — solo `.format()` respeta el locale vía `Intl`**: con locale `es-MX`, las fechas se MUESTRAN como dd/MM/yyyy, pero al TECLEAR "31/12/2026" en un `matInput` con datepicker el parse usa el orden de `Date.parse` (MM/DD) — "31/12/2026" se rechaza sin mensaje visible y "01/08/2026" se guarda invertido como 8 de enero sin ninguna advertencia. Causa: `NativeDateAdapter.parse()` delega en `new Date(string)`, que no consulta el locale. Fix: proveer un `DateAdapter` custom que parsee dd/MM/yyyy explícitamente (regex + `new Date(y, m-1, d)`) y registrarlo como provider en cada componente que importe `MatDatepickerModule` — o global en `app.config.ts`. Origen: SIGAF 2026-07-02, 45 archivos afectados, verificado E2E con persistencia real.
181
+
182
+ **Verificar la corrección de un provider faltante NO basta con `grep` del patrón viejo — comparar "quién importa el módulo" contra "quién ya tiene el provider" con `comm -23`**: un barrido que solo busca el provider INCORRECTO tiene falso negativo con los componentes que importan `MatDatepickerModule` sin NINGÚN provider (ni roto ni correcto) — estado más grave: `NullInjectorError` en runtime. Fix: generar dos listas ordenadas (`grep -rl "MatDatepickerModule" | sort` y `grep -rl "provideDateAdapter" | sort`) y `comm -23` para obtener los huérfanos. Origen: SIGAF 2026-07-02 — el barrido inicial de 43 archivos dejó 2 huérfanos descubiertos después.
183
+
180
184
  **`@for` sin `track` compila con advertencia en v17 pero causa re-renderizado completo de la lista**: si se omite `track` (o se usa `track $index` en listas mutables), Angular recrea todos los elementos DOM al cambiar el array en lugar de hacer reconciliación. Causa: sin `track`, Angular no puede identificar qué elemento cambió. Fix: usar `track item.id` con el identificador estable del elemento; solo usar `track $index` en listas de solo lectura que nunca cambian de orden.
181
185
 
182
186
  **`computed()` que lee otra signal dentro de un `effect()` no re-ejecuta el efecto cuando cambia la computed**: si un `effect()` lee `this.total()` que es un `computed()`, el efecto sí se suscribe a la computed — pero si dentro del `effect` se llama a un método que modifica otra signal no leída directamente en el efecto, ese efecto no se re-ejecuta. Causa: Angular rastrea solo las signals leídas síncronamente dentro del cuerpo del efecto. Fix: leer explícitamente todas las signals de las que depende el efecto en su cuerpo, no mediante funciones intermedias.
@@ -222,3 +226,22 @@ export class GlobalErrorHandler implements ErrorHandler {
222
226
  - Delegar a `console.error(error)` para preservar DevTools (no silenciar para devs).
223
227
  - El reporter debe tener throttle propio (ej: 10 eventos/5s) y silenciar respuestas esperadas (401/403/404/429) — los detalles del reporter viven en su propio service, no en el `ErrorHandler`.
224
228
  - Anti-bucle: el `ErrorReporterInterceptor` (si existe) debe excluir llamadas al propio endpoint POST de reportes.
229
+
230
+ **Split de un god-component: el CSS del bloque extraído queda MUERTO si se deja en el padre (ViewEncapsulation.Emulated)**: al mover HTML a un componente hijo, su CSS DEBE moverse también al CSS del hijo. Bajo emulated encapsulation (default) cada regla se reescribe con el atributo `[_ngcontent-<id>]` del componente DUEÑO del template; el DOM del hijo recibe otro `[_ngcontent]`, así que las reglas del padre dejan de matchear → CSS muerto y el bloque colapsa a content-width. **Crítico**: `ng build` (prod) compila VERDE — el CSS mal-scopeado no es error de compilación, solo el navegador detecta la regresión de layout.
231
+
232
+ ```typescript
233
+ // MAL: extraer HTML al hijo pero dejar su CSS en el padre
234
+ // "los estilos viven en el padre para mantener la encapsulación" ← racionalización FALSA
235
+ // El elemento custom <app-hijo> además es display:inline por defecto → colapsa a su content-width.
236
+
237
+ // BIEN: mover el CSS al hijo + declarar el host como bloque
238
+ // hijo.component.css
239
+ :host { display: block; } /* sin esto el custom element queda inline y colapsa */
240
+ .bloque { /* ...reglas movidas desde el padre... */ }
241
+ ```
242
+
243
+ **Checklist de las 4 migraciones de un split de god-component OnPush** (migrar JUNTO con el HTML, no solo el markup):
244
+ 1. estado template-bound mutado en async (`subscribe.next`/`.then`/`setTimeout`) → `signal<Map/...>` (un `markForCheck` omitido deja el template stale).
245
+ 2. signals que indexan un array de longitud variable → resetear al cargar el nuevo array (índice viejo → panel vacío sin item activo).
246
+ 3. fallbacks de array en bindings de hijo OnPush → constante `EMPTY_ARRAY` (`?? []` inline crea nueva ref cada CD → re-render; `readonly never[]` rompe el tipado de inputs `T[]`).
247
+ 4. el CSS del bloque → al CSS del hijo + `:host{display:block}` (esta entrada).