@saulwade/swl-ses 1.5.2 → 1.6.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 (64) hide show
  1. package/CLAUDE.md +32 -61
  2. package/README.md +20 -3
  3. package/agentes/datos-swl.md +1 -1
  4. package/agentes/frontend-angular-swl.md +7 -7
  5. package/agentes/frontend-css-swl.md +4 -4
  6. package/agentes/frontend-react-swl.md +7 -7
  7. package/agentes/frontend-swl.md +9 -9
  8. package/agentes/frontend-tailwind-swl.md +4 -4
  9. package/agentes/rendimiento-swl.md +2 -2
  10. package/bin/swl-ses.js +49 -7
  11. package/comandos/swl/brainstorm.md +1 -0
  12. package/comandos/swl/compactar.md +1 -1
  13. package/comandos/swl/discutir-fase.md +15 -1
  14. package/comandos/swl/mapear-codebase.md +1 -1
  15. package/comandos/swl/nemesis.md +29 -0
  16. package/comandos/swl/planear-fase.md +2 -2
  17. package/comandos/swl/verificar.md +4 -4
  18. package/habilidades/aprendizaje-continuo/SKILL.md +7 -1
  19. package/habilidades/diseno-herramientas-agente/SKILL.md +1 -0
  20. package/habilidades/doc-sync/SKILL.md +441 -1
  21. package/habilidades/doubt-driven-review/SKILL.md +177 -171
  22. package/habilidades/feynman-auditor-swl/SKILL.md +129 -123
  23. package/habilidades/infra-github-actions/SKILL.md +172 -166
  24. package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
  25. package/habilidades/nemesis-evaluacion-json/SKILL.md +5 -0
  26. package/habilidades/nemesis-redistribuir/SKILL.md +5 -0
  27. package/habilidades/node-experto/SKILL.md +197 -3
  28. package/habilidades/prevencion-racionalizacion/SKILL.md +1 -0
  29. package/habilidades/privacy-memoria/SKILL.md +1 -0
  30. package/habilidades/sre-patrones/SKILL.md +1 -1
  31. package/habilidades/state-inconsistency-auditor-swl/SKILL.md +172 -166
  32. package/habilidades/tdd-workflow/SKILL.md +178 -3
  33. package/habilidades/verificacion-evidencia/SKILL.md +1 -0
  34. package/habilidades/web-fetcher-routing/SKILL.md +81 -75
  35. package/habilidades/workflow-claude-code/SKILL.md +2 -2
  36. package/hooks/extraccion-aprendizajes.js +11 -0
  37. package/manifiestos/modulos.json +2 -1
  38. package/manifiestos/skills-lock.json +1142 -1114
  39. package/package.json +7 -4
  40. package/plugin.json +4 -2
  41. package/reglas/auditorias-documentales-estructurales.md +205 -0
  42. package/schemas/agent-frontmatter.schema.json +1 -1
  43. package/scripts/desinstalar.js +105 -24
  44. package/scripts/generar-inventario.js +450 -420
  45. package/scripts/instalador.js +55 -4
  46. package/scripts/lib/parsear-opciones.js +3 -0
  47. package/scripts/lib/ui.js +148 -22
  48. package/scripts/tui/componentes/selector-multi.js +189 -0
  49. package/scripts/tui/componentes/selector-unico.js +158 -0
  50. package/scripts/tui/ejecutores.js +375 -0
  51. package/scripts/tui/index.js +162 -0
  52. package/scripts/tui/lib/colores.js +129 -0
  53. package/scripts/tui/lib/render.js +264 -0
  54. package/scripts/tui/lib/teclas.js +113 -0
  55. package/scripts/tui/pantallas/inspect.js +173 -0
  56. package/scripts/tui/pantallas/install-wizard.js +334 -0
  57. package/scripts/tui/pantallas/menu-principal.js +52 -0
  58. package/scripts/tui/pantallas/progreso.js +274 -0
  59. package/scripts/tui/pantallas/resumen.js +132 -0
  60. package/scripts/tui/pantallas/uninstall-wizard.js +208 -0
  61. package/scripts/tui/pantallas/update-wizard.js +232 -0
  62. package/scripts/tui/pantallas/welcome.js +187 -0
  63. package/scripts/verificar-docs-vs-codigo.js +654 -0
  64. package/scripts/verificar-evolucion.js +19 -3
@@ -1,75 +1,81 @@
1
- ---
2
- name: web-fetcher-routing
3
- description: >
4
- Routing inteligente para fetching de URLs según dominio y formato:
5
- GitHub raw, PDF, sitios JS-heavy y default. Reduce tokens consumidos
6
- evitando WebFetch cuando hay alternativa más eficiente. Cargar antes
7
- de hacer WebFetch a URLs externas, especialmente repositorios GitHub,
8
- PDFs públicos, o sitios con paywall/Cloudflare/JS heavy.
9
- ---
10
-
11
- # web-fetcher-routing
12
-
13
- Selecciona la herramienta correcta para cada URL antes de intentar el fetch.
14
- Un WebFetch al HTML de GitHub UI consume 10-30× más tokens que leer el raw.
15
- Un PDF vía Read devuelve basura binaria. La elección equivocada cuesta tokens
16
- reales; este skill la automatiza.
17
-
18
- ## Cuándo cargar
19
-
20
- - Antes de hacer `WebFetch` a cualquier URL externa no trivial.
21
- - Cuando la URL apunta a GitHub (repositorio, archivo o blob).
22
- - Cuando la URL termina en `.pdf` o el contexto indica documento PDF.
23
- - Cuando el fetch previo falló con 402, página de login o contenido vacío
24
- (señal de JS-heavy o Cloudflare).
25
-
26
- ## Cuándo NO cargar
27
-
28
- - URLs internas del proyecto o localhost usar `Read` directamente.
29
- - Contenido ya cargado en el contexto de esta sesión no re-fetchar.
30
- - Cuando el usuario dictó explícitamente la herramienta a usar
31
- ("usa WebFetch", "lee con curl").
32
-
33
- ## Tabla de routing
34
-
35
- | Patrón de URL | Herramienta | Razón |
36
- |---|---|---|
37
- | `github.com/[user]/[repo]/blob/[branch]/[path]` | Reescribir a `raw.githubusercontent.com/[user]/[repo]/[branch]/[path]` y hacer `WebFetch` con la URL reescrita | Evita el HTML de la UI de GitHub; 10-30× menos tokens |
38
- | `raw.githubusercontent.com/...` | `WebFetch` directo | Ya es raw content |
39
- | URL termina en `.pdf` | Invocar `Skill("swl-markitdown")` para conversión con `pdftotext` o `markitdown` | `Read` no soporta PDF; `WebFetch` devuelve binario o HTML de visor |
40
- | `x.com`, `twitter.com`, cualquier host con CAPTCHA o Cloudflare detectado | Invocar `Skill("agent-browser")` con headless Chrome | `WebFetch` devuelve 402 o página de login; `agent-browser` usa accessibility tree (~82% menos tokens que screenshots) |
41
- | `mp.weixin.qq.com`, `feishu.cn`, `larksuite.com` | Invocar `Skill("agent-browser")` | Plataformas chinas con autenticación o JS requerido |
42
- | Todo lo demás | `WebFetch` directo | El caso común; probar primero antes de escalar |
43
-
44
- ## Algoritmo de decisión
45
-
46
- 1. Parsear la URL: extraer esquema, dominio y extensión del path.
47
- 2. Comparar con los patrones de la tabla, en orden de arriba hacia abajo.
48
- 3. Si el dominio es `github.com` con segmento `/blob/` en el path:
49
- reescribir la URL antes de hacer el fetch.
50
- 4. Invocar la herramienta asignada al patrón que coincide.
51
- 5. Si el resultado tiene señales de paywall o error (primeras 10 líneas
52
- contienen "Subscribe", "Sign in", "403", página vacía): escalar al
53
- patrón JS-heavy con `Skill("agent-browser")`.
54
- 6. Reportar qué método se usó y por qué, en una línea antes del contenido.
55
-
56
- ## Ejemplo de reescritura GitHub
57
-
58
- ```
59
- # URL original
60
- https://github.com/tw93/Waza/blob/main/skills/read/SKILL.md
61
-
62
- # URL reescrita para raw
63
- https://raw.githubusercontent.com/tw93/Waza/main/skills/read/SKILL.md
64
- ```
65
-
66
- ## Señales de fallo que activan escalado
67
-
68
- | Señal en la respuesta | Acción |
69
- |---|---|
70
- | HTTP 402 | Escalar a `agent-browser` |
71
- | Primeras líneas con "Sign in" o "Subscribe" | Detener, avisar al usuario |
72
- | Contenido HTML con menos de 200 caracteres | Reintentar con método alternativo |
73
- | Binario o caracteres ilegibles | Verificar si es PDF; si sí, usar `swl-markitdown` |
74
-
75
- <!-- Adaptado de Waza/skills/read bajo MIT License (tw93/Waza) -->
1
+ ---
2
+ name: web-fetcher-routing
3
+ description: >
4
+ Routing inteligente para fetching de URLs según dominio y formato:
5
+ GitHub raw, PDF, sitios JS-heavy y default. Reduce tokens consumidos
6
+ evitando WebFetch cuando hay alternativa más eficiente. Cargar antes
7
+ de hacer WebFetch a URLs externas, especialmente repositorios GitHub,
8
+ PDFs públicos, o sitios con paywall/Cloudflare/JS heavy.
9
+ version: "1.0.0"
10
+ exclusiones:
11
+ - "No cargar para descarga de archivos binarios grandes (>10 MB) — el routing está optimizado para texto y HTML."
12
+ - "No cargar cuando la URL ya es directa al recurso (raw GitHub, PDF, JSON API) y no hay duda de cómo procesarla."
13
+ - "No cargar para web scraping con interacción (login, formularios) — eso es agent-browser."
14
+ - "No cargar para fetching local de filesystem (file://) usar Read tool."
15
+ ---
16
+
17
+ # web-fetcher-routing
18
+
19
+ Selecciona la herramienta correcta para cada URL antes de intentar el fetch.
20
+ Un WebFetch al HTML de GitHub UI consume 10-30× más tokens que leer el raw.
21
+ Un PDF vía Read devuelve basura binaria. La elección equivocada cuesta tokens
22
+ reales; este skill la automatiza.
23
+
24
+ ## Cuándo cargar
25
+
26
+ - Antes de hacer `WebFetch` a cualquier URL externa no trivial.
27
+ - Cuando la URL apunta a GitHub (repositorio, archivo o blob).
28
+ - Cuando la URL termina en `.pdf` o el contexto indica documento PDF.
29
+ - Cuando el fetch previo falló con 402, página de login o contenido vacío
30
+ (señal de JS-heavy o Cloudflare).
31
+
32
+ ## Cuándo NO cargar
33
+
34
+ - URLs internas del proyecto o localhost — usar `Read` directamente.
35
+ - Contenido ya cargado en el contexto de esta sesión no re-fetchar.
36
+ - Cuando el usuario dictó explícitamente la herramienta a usar
37
+ ("usa WebFetch", "lee con curl").
38
+
39
+ ## Tabla de routing
40
+
41
+ | Patrón de URL | Herramienta | Razón |
42
+ |---|---|---|
43
+ | `github.com/[user]/[repo]/blob/[branch]/[path]` | Reescribir a `raw.githubusercontent.com/[user]/[repo]/[branch]/[path]` y hacer `WebFetch` con la URL reescrita | Evita el HTML de la UI de GitHub; 10-30× menos tokens |
44
+ | `raw.githubusercontent.com/...` | `WebFetch` directo | Ya es raw content |
45
+ | URL termina en `.pdf` | Invocar `Skill("swl-markitdown")` para conversión con `pdftotext` o `markitdown` | `Read` no soporta PDF; `WebFetch` devuelve binario o HTML de visor |
46
+ | `x.com`, `twitter.com`, cualquier host con CAPTCHA o Cloudflare detectado | Invocar `Skill("agent-browser")` con headless Chrome | `WebFetch` devuelve 402 o página de login; `agent-browser` usa accessibility tree (~82% menos tokens que screenshots) |
47
+ | `mp.weixin.qq.com`, `feishu.cn`, `larksuite.com` | Invocar `Skill("agent-browser")` | Plataformas chinas con autenticación o JS requerido |
48
+ | Todo lo demás | `WebFetch` directo | El caso común; probar primero antes de escalar |
49
+
50
+ ## Algoritmo de decisión
51
+
52
+ 1. Parsear la URL: extraer esquema, dominio y extensión del path.
53
+ 2. Comparar con los patrones de la tabla, en orden de arriba hacia abajo.
54
+ 3. Si el dominio es `github.com` con segmento `/blob/` en el path:
55
+ reescribir la URL antes de hacer el fetch.
56
+ 4. Invocar la herramienta asignada al patrón que coincide.
57
+ 5. Si el resultado tiene señales de paywall o error (primeras 10 líneas
58
+ contienen "Subscribe", "Sign in", "403", página vacía): escalar al
59
+ patrón JS-heavy con `Skill("agent-browser")`.
60
+ 6. Reportar qué método se usó y por qué, en una línea antes del contenido.
61
+
62
+ ## Ejemplo de reescritura GitHub
63
+
64
+ ```
65
+ # URL original
66
+ https://github.com/tw93/Waza/blob/main/skills/read/SKILL.md
67
+
68
+ # URL reescrita para raw
69
+ https://raw.githubusercontent.com/tw93/Waza/main/skills/read/SKILL.md
70
+ ```
71
+
72
+ ## Señales de fallo que activan escalado
73
+
74
+ | Señal en la respuesta | Acción |
75
+ |---|---|
76
+ | HTTP 402 | Escalar a `agent-browser` |
77
+ | Primeras líneas con "Sign in" o "Subscribe" | Detener, avisar al usuario |
78
+ | Contenido HTML con menos de 200 caracteres | Reintentar con método alternativo |
79
+ | Binario o caracteres ilegibles | Verificar si es PDF; si sí, usar `swl-markitdown` |
80
+
81
+ <!-- Adaptado de Waza/skills/read bajo MIT License (tw93/Waza) -->
@@ -14,7 +14,7 @@ exclusiones:
14
14
  - "No cargar para configurar la estructura de directorios de un proyecto Claude-ready; usar `estructura-proyecto-claude`."
15
15
  - "No cargar para resolver problemas de degradación de contexto en mitad de una sesión larga; en ese caso ejecutar `/swl:compactar` directamente."
16
16
  - "No cargar para consultar documentación de librerías o frameworks externos; usar Context7 MCP."
17
- - "No cargar para ajustar permisos de herramientas en settings.json; usar `Skill('update-config')`."
17
+ - "No cargar para ajustar permisos de herramientas en settings.json; usar editar manualmente `.claude/settings.json` o `~/.claude/settings.json`."
18
18
  evolvable: true # default para skill estandar
19
19
  ---
20
20
  # Workflow con Claude Code
@@ -37,7 +37,7 @@ Para ESTRUCTURA de proyecto, usar `estructura-proyecto-claude`.
37
37
  - Se necesita estructura de archivos para un proyecto Claude-ready (CLAUDE.md, .claude/agents/, etc.); usar `estructura-proyecto-claude`.
38
38
  - El contexto ya está al 70%+ y el usuario quiere compactar ahora mismo; ejecutar `/swl:compactar` sin cargar skills adicionales.
39
39
  - El usuario pregunta por una librería específica (ej: "¿cómo uso FastAPI?"); la respuesta está en Context7 MCP, no en este skill de workflow.
40
- - Se busca configurar hooks, permisos o settings.json; usar `Skill("update-config")`.
40
+ - Se busca configurar hooks, permisos o settings.json; editar manualmente `.claude/settings.json` o `~/.claude/settings.json`.
41
41
 
42
42
  ---
43
43
 
@@ -618,6 +618,17 @@ const PATRONES_ARCHIVO_SWL_EXCLUIDO = [
618
618
  /(?:^|[\\/])plantillas[\\/]/,
619
619
  /(?:^|[\\/])contextos[\\/]/,
620
620
  /(?:^|[\\/])instintos[\\/]/,
621
+ // Tests (cualquier convención): los comentarios JSDoc/docstring de un test
622
+ // describen el SUT y suelen contener palabras como "bug", "patrón", "fix"
623
+ // de forma narrativa-descriptiva, no como descubrimiento. Detectado cuando
624
+ // el hook capturó comentarios del propio test que valida un fix y los
625
+ // promovió a APRENDIZAJES.md como entradas truncadas.
626
+ /(?:^|[\\/])tests?[\\/]/,
627
+ /(?:^|[\\/])__tests__[\\/]/,
628
+ /(?:^|[\\/])spec[\\/]/,
629
+ /\.(?:test|spec)\.(?:js|ts|jsx|tsx|mjs|cjs)$/i,
630
+ /(?:^|[\\/])test_.*\.py$/,
631
+ /_test\.(?:py|go)$/i,
621
632
  // Todo .planning/ salvo wiki/ (que puede contener conocimiento del proyecto usuario).
622
633
  // En swl-ses .planning/ es meta del sistema; los aprendizajes se gestionan manualmente.
623
634
  /(?:^|[\\/])\.planning[\\/](?!wiki[\\/])/,
@@ -886,7 +886,8 @@
886
886
  "reglas/usar-sistema-swl.md",
887
887
  "reglas/arreglar-al-detectar.md",
888
888
  "reglas/analisis-previo-tareas-grandes.md",
889
- "reglas/registro-componentes-nuevos.md"
889
+ "reglas/registro-componentes-nuevos.md",
890
+ "reglas/auditorias-documentales-estructurales.md"
890
891
  ],
891
892
  "targets": [
892
893
  "claude",