@saulwade/swl-ses 2.4.2 → 2.5.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 (198) hide show
  1. package/CLAUDE.md +194 -241
  2. package/README.md +600 -597
  3. package/agentes/_intent-spec.md +73 -73
  4. package/agentes/_propose-step.md +90 -90
  5. package/agentes/abogado-diablo-swl.md +145 -0
  6. package/agentes/accesibilidad-wcag-swl.md +690 -690
  7. package/agentes/arquitecto-swl.md +267 -267
  8. package/agentes/auto-evolucion-swl.md +908 -908
  9. package/agentes/backend-api-swl.md +1 -1
  10. package/agentes/backend-csharp-swl.md +420 -420
  11. package/agentes/backend-go-swl.md +390 -390
  12. package/agentes/backend-java-swl.md +281 -281
  13. package/agentes/backend-node-swl.md +1 -1
  14. package/agentes/backend-python-swl.md +1 -1
  15. package/agentes/backend-rust-swl.md +364 -364
  16. package/agentes/backend-workers-swl.md +482 -482
  17. package/agentes/cloud-infra-swl.md +509 -509
  18. package/agentes/consolidador-swl.md +541 -541
  19. package/agentes/datos-swl.md +1 -1
  20. package/agentes/depurador-swl.md +352 -352
  21. package/agentes/devops-ci-swl.md +400 -400
  22. package/agentes/disenador-ui-swl.md +569 -569
  23. package/agentes/documentador-swl.md +345 -345
  24. package/agentes/frontend-angular-swl.md +621 -621
  25. package/agentes/frontend-css-swl.md +716 -716
  26. package/agentes/frontend-react-swl.md +692 -692
  27. package/agentes/frontend-swl.md +496 -496
  28. package/agentes/frontend-tailwind-swl.md +826 -826
  29. package/agentes/gh-fix-ci-swl.md +6 -1
  30. package/agentes/implementador-swl.md +1 -1
  31. package/agentes/investigador-swl.md +432 -432
  32. package/agentes/investigador-ux-swl.md +505 -505
  33. package/agentes/llm-apps-swl.md +1 -1
  34. package/agentes/migrador-swl.md +442 -442
  35. package/agentes/mobile-android-swl.md +511 -511
  36. package/agentes/mobile-cross-swl.md +541 -541
  37. package/agentes/mobile-ios-swl.md +502 -502
  38. package/agentes/mobile-testing-swl.md +302 -302
  39. package/agentes/nemesis-auditor-swl.md +285 -285
  40. package/agentes/notificador-swl.md +1 -1
  41. package/agentes/observabilidad-swl.md +438 -438
  42. package/agentes/pagos-swl.md +310 -310
  43. package/agentes/perfilador-usuario-swl.md +321 -321
  44. package/agentes/planificador-swl.md +399 -399
  45. package/agentes/producto-prd-swl.md +589 -589
  46. package/agentes/red-team-swl.md +218 -218
  47. package/agentes/release-manager-swl.md +590 -590
  48. package/agentes/rendimiento-swl.md +713 -713
  49. package/agentes/resolutor-build-swl.md +10 -1
  50. package/agentes/revisor-angular-swl.md +278 -278
  51. package/agentes/revisor-codigo-swl.md +1 -1
  52. package/agentes/revisor-csharp-swl.md +264 -264
  53. package/agentes/revisor-go-swl.md +259 -259
  54. package/agentes/revisor-java-swl.md +257 -257
  55. package/agentes/revisor-kotlin-swl.md +273 -273
  56. package/agentes/revisor-nextjs-swl.md +281 -281
  57. package/agentes/revisor-php-swl.md +271 -271
  58. package/agentes/revisor-react-swl.md +278 -278
  59. package/agentes/revisor-rust-swl.md +346 -346
  60. package/agentes/revisor-seguridad-swl.md +399 -399
  61. package/agentes/revisor-swift-swl.md +268 -268
  62. package/agentes/revisor-typescript-swl.md +346 -346
  63. package/agentes/sre-swl.md +1 -1
  64. package/agentes/tdd-qa-swl.md +393 -393
  65. package/bin/lib/bot-comandos.js +1 -1
  66. package/bin/swl-ses.js +6 -0
  67. package/comandos/swl/adoptar-proyecto.md +14 -2
  68. package/comandos/swl/configurar-ci.md +8 -1
  69. package/comandos/swl/deuda-codigo.md +97 -97
  70. package/comandos/swl/discutir-fase.md +22 -118
  71. package/comandos/swl/fix.md +118 -0
  72. package/comandos/swl/nuevo-proyecto.md +54 -3
  73. package/comandos/swl/predecir.md +32 -2
  74. package/comandos/swl/seguridad.md +189 -0
  75. package/comandos/swl/status.md +5 -3
  76. package/habilidades/aprendizaje-continuo/SKILL.md +3 -1
  77. package/habilidades/discutir-fase/SKILL.md +84 -81
  78. package/habilidades/discutir-fase/recursos/plantilla-contexto.md +136 -0
  79. package/habilidades/doc-sync/SKILL.md +3 -1
  80. package/habilidades/doubt-driven-review/SKILL.md +15 -1
  81. package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
  82. package/habilidades/estructura-proyecto-claude/SKILL.md +11 -2
  83. package/habilidades/harness-claude-code/SKILL.md +3 -1
  84. package/habilidades/instalar-sistema/SKILL.md +3 -1
  85. package/habilidades/meta-reglas-extendido/SKILL.md +92 -0
  86. package/habilidades/meta-reglas-extendido/recursos/analisis-previo-tareas-grandes.md +186 -0
  87. package/habilidades/meta-reglas-extendido/recursos/analizar-directorios-antes-de-escribir.md +235 -0
  88. package/habilidades/meta-reglas-extendido/recursos/api-diseno.md +413 -0
  89. package/habilidades/meta-reglas-extendido/recursos/arquitectura.md +491 -0
  90. package/habilidades/meta-reglas-extendido/recursos/arreglar-al-detectar.md +264 -0
  91. package/habilidades/meta-reglas-extendido/recursos/debatir-antes-de-aceptar.md +152 -0
  92. package/habilidades/meta-reglas-extendido/recursos/git-workflow.md +259 -0
  93. package/habilidades/meta-reglas-extendido/recursos/gobernanza.md +291 -0
  94. package/habilidades/meta-reglas-extendido/recursos/memoria-consolidada.md +263 -0
  95. package/habilidades/meta-reglas-extendido/recursos/seguridad-agentes.md +443 -0
  96. package/habilidades/meta-reglas-extendido/recursos/sesiones-paralelas.md +190 -0
  97. package/habilidades/meta-reglas-extendido/recursos/sin-duplicacion-reglas-globales.md +179 -0
  98. package/habilidades/meta-reglas-extendido/recursos/skills-estandar.md +394 -0
  99. package/habilidades/meta-reglas-extendido/recursos/usar-code-review-graph.md +156 -0
  100. package/habilidades/meta-reglas-extendido/recursos/usar-context7.md +236 -0
  101. package/habilidades/meta-reglas-extendido/recursos/usar-sistema-swl.md +253 -0
  102. package/habilidades/meta-reglas-extendido/recursos/verificar-citas-normativas.md +527 -0
  103. package/habilidades/meta-skills-estandar/SKILL.md +3 -1
  104. package/habilidades/nuevo-proyecto/SKILL.md +20 -3
  105. package/habilidades/php-experto/SKILL.md +10 -3
  106. package/habilidades/{filament-admin/SKILL.md → php-experto/recursos/filament-admin.md} +23 -39
  107. package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -166
  108. package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -85
  109. package/habilidades/proceso-debate-adversarial/recursos/personas.md +5 -4
  110. package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -0
  111. package/hooks/check-update.js +19 -10
  112. package/hooks/contexto-subagente.js +68 -68
  113. package/hooks/degradacion-instintos.js +1 -1
  114. package/hooks/extraccion-aprendizajes.js +2 -2
  115. package/hooks/lib/briefing.js +3 -3
  116. package/hooks/lib/nudge-tracker.js +1 -1
  117. package/hooks/lib/otlp-exporter.js +1 -1
  118. package/hooks/lib/webhook-dedup.js +1 -1
  119. package/hooks/session-briefing.js +1 -1
  120. package/llms.txt +6 -6
  121. package/manifiestos/canonical-hashes.json +989 -0
  122. package/manifiestos/hooks-config.json +469 -469
  123. package/manifiestos/invariantes-criticos.json +30 -30
  124. package/manifiestos/modulos.json +168 -135
  125. package/manifiestos/perfiles.json +0 -2
  126. package/manifiestos/skills-lock.json +52 -59
  127. package/package.json +7 -5
  128. package/plantillas/github-workflows/README.md +15 -1
  129. package/plantillas/github-workflows/swl-devsecops.yml +70 -0
  130. package/plugin.json +5 -5
  131. package/reglas/analisis-previo-tareas-grandes.md +30 -156
  132. package/reglas/analizar-directorios-antes-de-escribir.md +30 -211
  133. package/reglas/api-diseno.md +28 -398
  134. package/reglas/arquitectura.md +35 -456
  135. package/reglas/arreglar-al-detectar.md +30 -230
  136. package/reglas/debatir-antes-de-aceptar.md +30 -143
  137. package/reglas/docs.md +7 -0
  138. package/reglas/estilo-codigo.md +9 -0
  139. package/reglas/fragmentos-compartidos.md +6 -0
  140. package/reglas/git-workflow.md +44 -240
  141. package/reglas/gobernanza.md +23 -262
  142. package/reglas/memoria-consolidada.md +34 -228
  143. package/reglas/performance.md +8 -0
  144. package/reglas/pruebas.md +12 -0
  145. package/reglas/seguridad-agentes.md +37 -418
  146. package/reglas/seguridad.md +12 -0
  147. package/reglas/sesiones-paralelas.md +29 -162
  148. package/reglas/sin-duplicacion-reglas-globales.md +25 -166
  149. package/reglas/skills-estandar.md +23 -373
  150. package/reglas/usar-code-review-graph.md +31 -140
  151. package/reglas/usar-context7.md +30 -208
  152. package/reglas/usar-sistema-swl.md +47 -242
  153. package/reglas/verificar-citas-normativas.md +47 -537
  154. package/scripts/actualizar.js +253 -253
  155. package/scripts/audit-tools/auditar-relleno-inventario.js +145 -0
  156. package/scripts/auditar-clases-conocidas.js +106 -0
  157. package/scripts/bootstrap-instintos.js +2 -2
  158. package/scripts/canario-hooks.js +166 -0
  159. package/scripts/cli/configurar-ci.js +2 -1
  160. package/scripts/evidencia-valor.js +93 -0
  161. package/scripts/field-report.js +1 -1
  162. package/scripts/generar-comandos.js +143 -0
  163. package/scripts/generar-inventario.js +236 -23
  164. package/scripts/generar-matriz-lenguajes.js +1 -1
  165. package/scripts/instalador.js +15 -1
  166. package/scripts/lib/configurar-ci.js +10 -3
  167. package/scripts/lib/detectar-runtime.js +12 -3
  168. package/scripts/lib/diary-entry.js +3 -1
  169. package/scripts/lib/drift-detector.js +1 -1
  170. package/scripts/lib/evidencia-valor.js +189 -0
  171. package/scripts/lib/expandir-targets.js +71 -71
  172. package/scripts/lib/frontmatter-md.js +63 -0
  173. package/scripts/lib/parsear-opciones.js +2 -0
  174. package/scripts/lib/prune-componentes.js +180 -0
  175. package/scripts/lib/reglas-globales-conocidas.json +16 -2
  176. package/scripts/lib/scoring-instintos.js +2 -2
  177. package/scripts/lib/toml-merge.js +204 -204
  178. package/scripts/lib/transformadores/claude.js +1 -1
  179. package/scripts/lib/transformadores/codex.js +1 -1
  180. package/scripts/lib/transformadores/copilot.js +1 -1
  181. package/scripts/lib/transformadores/cursor.js +1 -1
  182. package/scripts/lib/transformadores/gemini.js +22 -2
  183. package/scripts/lib/transformadores/opencode.js +1 -1
  184. package/scripts/mcp-server/auth.js +105 -105
  185. package/scripts/mcp-server/cache.js +106 -106
  186. package/scripts/prune.js +102 -0
  187. package/scripts/publicar.js +18 -2
  188. package/scripts/tui/pantallas/inspect.js +175 -175
  189. package/scripts/tui/pantallas/uninstall-wizard.js +210 -210
  190. package/scripts/tui/pantallas/update-wizard.js +234 -234
  191. package/scripts/tui/pantallas/welcome.js +189 -189
  192. package/habilidades/paid-media-tracking/SKILL.md +0 -269
  193. package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +0 -220
  194. package/habilidades/paid-media-tracking/recursos/google-ads-api.md +0 -215
  195. package/habilidades/tracking-measurement/SKILL.md +0 -239
  196. package/habilidades/tracking-measurement/recursos/consent-mode.md +0 -231
  197. package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +0 -216
  198. package/habilidades/tracking-measurement/recursos/meta-capi.md +0 -262
@@ -0,0 +1,92 @@
1
+ ---
2
+ name: meta-reglas-extendido
3
+ description: >
4
+ Contenido extendido de las reglas base más pesadas del sistema (dieta de
5
+ contexto, Fase D): protocolos completos, ejemplos MAL/BIEN, casos de origen
6
+ y checklists que se extrajeron del núcleo de cada regla para reducir el
7
+ contexto fijo por sesión. Cargar cuando el núcleo de una regla base
8
+ (17 reglas: las 5 del piloto — verificar-citas-normativas, arquitectura,
9
+ seguridad-agentes, api-diseno, skills-estandar — y las 12 de la ola 2, de
10
+ gobernanza a usar-code-review-graph) remita a su detalle extendido, o cuando se necesite el
11
+ procedimiento paso a paso, un ejemplo de código o el caso histórico que el
12
+ núcleo solo resume.
13
+ version: "1.1.0"
14
+ herramientasPermitidas: [Read]
15
+ evolvable: true # default para skill estandar
16
+ exclusiones:
17
+ - "No cargar para aplicar el día a día de una regla — el núcleo en reglas/ (instalado en ~/.claude/rules/) es autosuficiente para el 90% de las decisiones."
18
+ - "No cargar para editar o crear reglas nuevas — eso es Edit directo sobre reglas/ (fuente) siguiendo el patrón núcleo/extendido de esta Fase D."
19
+ - "No cargar para el estándar de skills — el detalle avanzado de skills vive en meta-skills-estandar (precedente de este patrón)."
20
+ ---
21
+ # Reglas base — contenido extendido (dieta de contexto, Fase D)
22
+
23
+ Las reglas base se cargan en TODAS las sesiones; su costo fijo de contexto se
24
+ paga siempre. La Fase D (ROADMAP-EVOLUCION) partió las más pesadas en:
25
+
26
+ - **Núcleo** (`reglas/<nombre>.md`, instalado en `~/.claude/rules/`): principio,
27
+ reglas duras y anti-patrones — lo que decide el 90% de los casos. ≤50 líneas.
28
+ - **Extendido** (`recursos/<nombre>.md` de este skill): protocolos completos,
29
+ ejemplos MAL/BIEN, casos de origen, checklists — se carga solo cuando hace falta.
30
+
31
+ Precedente validado: split de `skills-estandar` v1→v2 (core + `meta-skills-estandar`),
32
+ ahorro declarado ~18 KB/sesión.
33
+
34
+ ## Cuándo cargar
35
+
36
+ - El núcleo de una regla remite a su extendido y necesitas el detalle
37
+ (procedimiento paso a paso, ejemplo de código, protocolo de verificación).
38
+ - Auditorías que exigen citar el caso de origen o el checklist completo de
39
+ una regla base.
40
+ - Dudas sobre la aplicación fina de una regla que el núcleo solo resume.
41
+
42
+ ## Cuándo NO cargar
43
+
44
+ - Aplicación cotidiana de la regla — el núcleo instalado basta.
45
+ - Autoría de skills (→ `Skill("meta-skills-estandar")`).
46
+ - Reglas que no están en este catálogo (siguen completas en `reglas/`).
47
+
48
+ ## Recursos (extendido por regla)
49
+
50
+ | Regla (núcleo en reglas/) | Extendido |
51
+ |---|---|
52
+ | verificar-citas-normativas | [recursos/verificar-citas-normativas.md](recursos/verificar-citas-normativas.md) |
53
+ | arquitectura | [recursos/arquitectura.md](recursos/arquitectura.md) |
54
+ | seguridad-agentes | [recursos/seguridad-agentes.md](recursos/seguridad-agentes.md) |
55
+ | api-diseno | [recursos/api-diseno.md](recursos/api-diseno.md) |
56
+ | skills-estandar | [recursos/skills-estandar.md](recursos/skills-estandar.md) |
57
+ | gobernanza | [recursos/gobernanza.md](recursos/gobernanza.md) |
58
+ | arreglar-al-detectar | [recursos/arreglar-al-detectar.md](recursos/arreglar-al-detectar.md) |
59
+ | usar-sistema-swl | [recursos/usar-sistema-swl.md](recursos/usar-sistema-swl.md) |
60
+ | memoria-consolidada | [recursos/memoria-consolidada.md](recursos/memoria-consolidada.md) |
61
+ | git-workflow | [recursos/git-workflow.md](recursos/git-workflow.md) |
62
+ | analizar-directorios-antes-de-escribir | [recursos/analizar-directorios-antes-de-escribir.md](recursos/analizar-directorios-antes-de-escribir.md) |
63
+ | usar-context7 | [recursos/usar-context7.md](recursos/usar-context7.md) |
64
+ | sin-duplicacion-reglas-globales | [recursos/sin-duplicacion-reglas-globales.md](recursos/sin-duplicacion-reglas-globales.md) |
65
+ | sesiones-paralelas | [recursos/sesiones-paralelas.md](recursos/sesiones-paralelas.md) |
66
+ | analisis-previo-tareas-grandes | [recursos/analisis-previo-tareas-grandes.md](recursos/analisis-previo-tareas-grandes.md) |
67
+ | debatir-antes-de-aceptar | [recursos/debatir-antes-de-aceptar.md](recursos/debatir-antes-de-aceptar.md) |
68
+ | usar-code-review-graph | [recursos/usar-code-review-graph.md](recursos/usar-code-review-graph.md) |
69
+
70
+ ## Reglas de mantenimiento (obligatorias)
71
+
72
+ 1. **Cero pérdida de información**: todo lo que sale de un núcleo DEBE existir
73
+ en su extendido. La densidad viene de estructura, no de omisión.
74
+ 2. **El núcleo manda**: si núcleo y extendido divergen, el núcleo es la norma
75
+ vigente y el extendido se corrige (mismo contrato que regla→skill en
76
+ `skills-estandar`).
77
+ 3. **Ediciones nuevas**: gotchas y casos nuevos entran al extendido; el núcleo
78
+ solo cambia si la NORMA cambia. Ambos con el mismo commit.
79
+ 4. **Migrar otra regla al patrón**: crear `recursos/<nombre>.md`, dejar núcleo
80
+ ≤50 líneas con la línea de referencia estándar, actualizar la tabla de
81
+ arriba y registrar en modulos.json/plugin.json (regla
82
+ registro-componentes-nuevos).
83
+
84
+ ## Gotchas / Errores comunes no obvios
85
+
86
+ - **Poner el extendido dentro de `reglas/` o `~/.claude/rules/`**: los archivos
87
+ del directorio de reglas se cargan automáticamente — el "extendido" se
88
+ cargaría siempre y el ahorro sería cero. Por eso vive en un skill (carga
89
+ solo bajo demanda), siguiendo el precedente de meta-skills-estandar.
90
+ - **Recortar el núcleo omitiendo reglas duras**: el núcleo no es un resumen —
91
+ es la norma operativa completa en forma densa. Lo que se va al extendido es
92
+ el POR QUÉ y el CÓMO detallado, nunca el QUÉ obligatorio.
@@ -0,0 +1,186 @@
1
+ # Análisis previo ante tareas grandes — extendido
2
+
3
+ > Extendido de `reglas/analisis-previo-tareas-grandes.md` (Fase D, dieta de
4
+ > contexto). El núcleo instalado es la norma; aquí viven los formatos completos,
5
+ > los ejemplos y los casos de origen.
6
+
7
+ ## Índice
8
+
9
+ - [Principio](#principio)
10
+ - [Cómo aplicar](#cómo-aplicar)
11
+ - [Detección — qué cuenta como "tarea grande"](#detección--qué-cuenta-como-tarea-grande)
12
+ - [Paso 1 — Auditar lo que ya existe](#paso-1--auditar-lo-que-ya-existe)
13
+ - [Paso 2 — Tabla comparativa](#paso-2--tabla-comparativa)
14
+ - [Paso 3 — Tres opciones de alcance](#paso-3--tres-opciones-de-alcance)
15
+ - [Paso 4 — Recomendación explícita](#paso-4--recomendación-explícita)
16
+ - [Paso 5 — Esperar confirmación](#paso-5--esperar-confirmación)
17
+ - [Excepciones — cuándo NO aplicar la regla](#excepciones--cuándo-no-aplicar-la-regla)
18
+ - [Cómo presentar la tabla y opciones](#cómo-presentar-la-tabla-y-opciones)
19
+ - [Anti-patrones](#anti-patrones)
20
+ - [Origen de esta regla](#origen-de-esta-regla)
21
+
22
+ ---
23
+
24
+ ## Principio
25
+
26
+ > Cuando el usuario pide "replicar íntegramente X", "portar todo Y", "implementar
27
+ > el sistema completo Z", **responde primero con análisis comparativo (qué ya
28
+ > existe vs. qué falta) y propón 3 opciones de alcance** (mínima / media /
29
+ > completa) antes de escribir código. Nunca arrancar el porte literal sin
30
+ > confirmación explícita tras presentar opciones.
31
+
32
+ ---
33
+
34
+ ## Cómo aplicar
35
+
36
+ ### Detección — qué cuenta como "tarea grande"
37
+
38
+ Cualquier solicitud que tenga al menos uno de estos atributos:
39
+
40
+ - Más de ~10 archivos a crear, mover o reescribir.
41
+ - Más de ~500 LOC estimadas a tocar en un solo turno.
42
+ - Toca más de un dominio (backend + frontend, o varios módulos backend).
43
+ - "Replicar X" donde X es un sistema externo con su propia arquitectura.
44
+ - "Portar todo de Y" donde Y es un repo, framework o lib voluminoso.
45
+ - "Implementar todo Z" donde Z es una fase, un sub-sistema, una capa nueva.
46
+ - Análisis de un repo en `temp/` con la pregunta abierta "¿qué adoptamos?".
47
+
48
+ Si la solicitud encaja en cualquiera de estas, aplicar la regla.
49
+
50
+ ### Paso 1 — Auditar lo que ya existe
51
+
52
+ Antes de proponer el porte:
53
+
54
+ - `Glob` / `Grep` / `Read` para mapear el código actual del usuario.
55
+ - Identificar componentes que ya cubren parte de la solicitud.
56
+ - Verificar versiones, dependencias, convenciones del proyecto.
57
+ - Si es repo externo en `temp/`: aplicar **filtro de dominio** primero
58
+ (ver `reglas/arquitectura.md` § "Análisis de repositorios externos").
59
+ Descartar 80-95% del contenido vertical antes de análisis profundo.
60
+
61
+ ### Paso 2 — Tabla comparativa
62
+
63
+ Producir una tabla con tres columnas:
64
+
65
+ | Componente del sistema externo | Equivalente actual del usuario | Gap |
66
+ |---|---|---|
67
+ | ... | ya existe / parcial / no existe | qué falta agregar |
68
+
69
+ Sin la tabla, no se proponen opciones. La tabla es la base objetiva de la decisión.
70
+
71
+ ### Paso 3 — Tres opciones de alcance
72
+
73
+ Siempre presentar tres opciones:
74
+
75
+ - **Mínima** — solo cierra los gaps críticos (lo que NO existe). Esfuerzo
76
+ estimado bajo. Usuario acepta vivir con diferencias menores en lo demás.
77
+ - **Media** — cierra gaps + alinea componentes parciales con el patrón externo.
78
+ Esfuerzo medio. Convergencia parcial sin reescribir lo que ya funciona.
79
+ - **Completa** — porte literal de todo lo que el usuario pidió, sin reusar
80
+ componentes existentes. Esfuerzo alto. Justificable solo cuando la
81
+ arquitectura externa es estrictamente superior.
82
+
83
+ Cada opción incluye:
84
+
85
+ - Estimación de esfuerzo (turnos, LOC, archivos afectados).
86
+ - Lista de tareas concretas si se elige.
87
+ - Riesgos / tradeoffs específicos.
88
+
89
+ ### Paso 4 — Recomendación explícita
90
+
91
+ Tras las tres opciones, **recomendar una** con razonamiento. No dejar la
92
+ decisión "abierta" — el usuario espera tu juicio técnico.
93
+
94
+ Patrón de recomendación:
95
+
96
+ > **Recomiendo la opción [N]** porque [razón concreta]. Las opciones [otras]
97
+ > son válidas si [condición específica].
98
+
99
+ ### Paso 5 — Esperar confirmación
100
+
101
+ Después de presentar tabla + opciones + recomendación: detenerse y esperar.
102
+
103
+ NO arrancar a escribir código asumiendo aprobación implícita. La autorización
104
+ debe ser literal del usuario ("procede con la opción 2", "adelante con la
105
+ mínima", "hagamos la completa").
106
+
107
+ ---
108
+
109
+ ## Excepciones — cuándo NO aplicar la regla
110
+
111
+ NO aplicar cuando:
112
+
113
+ 1. **El usuario ya pidió explícitamente la opción**: "implementa la versión
114
+ mínima de X" o "porta solo el módulo Y" — la elección ya está hecha.
115
+ 2. **El alcance es trivial** — menos de 5 archivos, una sola dependencia.
116
+ 3. **El usuario pidió análisis y ya decidió**: si ya hubo una sesión previa con
117
+ la tabla comparativa y el usuario eligió, proceder sin re-presentar.
118
+ 4. **Es un fix urgente de producción** — bug crítico, vulnerabilidad activa,
119
+ incidente. El análisis se reduce a confirmar la causa y aplicar el fix
120
+ específico.
121
+
122
+ ---
123
+
124
+ ## Cómo presentar la tabla y opciones
125
+
126
+ ### Formato de tabla comparativa (mínimo)
127
+
128
+ ```markdown
129
+ | Componente | Sistema externo | Tu sistema actual | Gap |
130
+ |---|---|---|---|
131
+ | Auth | OAuth2 + PKCE | JWT custom | parcial — falta PKCE |
132
+ | Storage | S3 + presigned | filesystem local | falta — pendiente migración |
133
+ | ... | ... | ... | ... |
134
+ ```
135
+
136
+ ### Formato de las tres opciones (mínimo)
137
+
138
+ ```markdown
139
+ **Opción A — Mínima** (~3 turnos, ~15 archivos)
140
+ - Cerrar solo gaps críticos: PKCE, presigned URLs.
141
+ - No tocar lo que ya funciona.
142
+ - Riesgo: leve divergencia con sistema externo en convenciones menores.
143
+
144
+ **Opción B — Media** (~6 turnos, ~30 archivos)
145
+ - Cerrar gaps + alinear `auth/` con patrón OAuth2 completo.
146
+ - Mantener storage actual con migración planeada en fase futura.
147
+ - Riesgo: refactor en `auth/` puede romper integraciones existentes.
148
+
149
+ **Opción C — Completa** (~15 turnos, ~80 archivos)
150
+ - Porte literal del sistema externo completo.
151
+ - Reemplaza todo lo equivalente, no importa que ya funcione.
152
+ - Riesgo: regresiones en funcionalidad madura.
153
+
154
+ **Recomiendo la Opción A**: el sistema actual cubre el 80% del valor;
155
+ los gaps específicos resuelven el caso concreto sin riesgo de regresión.
156
+ ```
157
+
158
+ ---
159
+
160
+ ## Anti-patrones
161
+
162
+ - Arrancar a escribir código tras "replícame X" sin tabla comparativa.
163
+ - Presentar las opciones sin recomendar — pasar la pelota al usuario.
164
+ - Listar 5+ opciones cuando 3 son suficientes (mínima / media / completa).
165
+ - Estimar esfuerzo en términos vagos ("bastante trabajo", "no mucho") sin
166
+ cuantificar turnos / archivos / LOC.
167
+ - Omitir la auditoría de lo que ya existe y proponer porte literal de todo.
168
+ - Cuando el usuario pide la opción mínima, expandir el alcance "porque
169
+ conviene" sin pedir confirmación.
170
+
171
+ ---
172
+
173
+ ## Origen de esta regla
174
+
175
+ Consolidada el 2026-05-04 desde feedback del usuario en sesión 2026-04-18 sobre
176
+ porte de Hermes Agent: tras pedir "replicar íntegramente Hermes Agent" (~960
177
+ archivos Python), aceptó la propuesta de cerrar solo 3 gaps específicos
178
+ (perfil de usuario, cron natural, auto-evolución). Lección: la auditoría previa
179
+ + opciones explícitas evita re-implementar 80% de funcionalidad ya existente.
180
+
181
+ Reforzada en análisis de repos en `temp/` durante v1.1.0 de swl-ses (2026-04-23):
182
+ filtro de dominio descartó 97% del contenido de 5 repos antes de análisis
183
+ profundo, ahorrando horas de trabajo en arquitectura externa irrelevante.
184
+
185
+ Memoria nativa local correspondiente (`feedback_analisis_previo.md` en swl-ses):
186
+ redundante tras esta regla; el contenido operativo vive aquí.
@@ -0,0 +1,235 @@
1
+ # Analizar directorios antes de escribir — extendido
2
+
3
+ > Extendido de `reglas/analizar-directorios-antes-de-escribir.md` (Fase D,
4
+ > dieta de contexto). El núcleo instalado es la norma; aquí viven la tabla
5
+ > completa de variantes por dominio, la jerarquía de desempate desarrollada,
6
+ > el eje técnico-runtime con ejemplos swl-ses, los anti-patrones con casos
7
+ > reales y el checklist completo.
8
+
9
+ ## Índice
10
+
11
+ - [Contexto — el patrón que cierra esta regla](#contexto--el-patrón-que-cierra-esta-regla)
12
+ - [Cuándo aplicar](#cuándo-aplicar)
13
+ - [Cómo aplicar — protocolo de 4 pasos](#cómo-aplicar--protocolo-de-4-pasos)
14
+ - [La tensión es/en — cómo resolverla (no es "español siempre")](#la-tensión-esen--cómo-resolverla-no-es-español-siempre)
15
+ - [Eje técnico-runtime vs vocabulario-de-dominio (refina la jerarquía)](#eje-técnico-runtime-vs-vocabulario-de-dominio-refina-la-jerarquía)
16
+ - [Anti-patrones explícitos](#anti-patrones-explícitos)
17
+ - [Excepciones legítimas](#excepciones-legítimas)
18
+ - [Checklist antes de escribir un MD/reporte o crear un directorio](#checklist-antes-de-escribir-un-mdreporte-o-crear-un-directorio)
19
+ - [Origen de esta regla](#origen-de-esta-regla)
20
+
21
+ ---
22
+
23
+ ## Contexto — el patrón que cierra esta regla
24
+
25
+ La regla aplica cada vez que Claude va a **crear un directorio nuevo** o
26
+ **escribir un archivo de documentación** (`.md`, `.json` de reporte, informe,
27
+ ADR, plan, análisis, output de auditoría/diseño/research) en cualquier
28
+ proyecto del usuario.
29
+
30
+ Cierra un patrón conductual recurrente: el agente escribe un documento en un
31
+ directorio nuevo elegido ad-hoc — en idioma o nombre distinto al que el
32
+ proyecto ya usa para ese dominio — y produce **directorios paralelos
33
+ divergentes** que fragmentan la memoria institucional.
34
+
35
+ El costo de un `ls` antes de escribir es de 1 segundo. El costo de un
36
+ directorio paralelo es: referencias colgadas, búsquedas que fallan, memoria
37
+ institucional partida, y una sesión futura de depuración/unificación.
38
+
39
+ ---
40
+
41
+ ## Cuándo aplicar
42
+
43
+ OBLIGATORIO antes de:
44
+
45
+ - Escribir un reporte de auditoría, verificación, nemesis, revisión, análisis.
46
+ - Escribir un documento de diseño/UX (propuesta, tokens, discovery, UI-SPEC).
47
+ - Crear un ADR, plan, spec, runbook, research output.
48
+ - Crear cualquier directorio nuevo bajo `.planning/`, `docs/`, o equivalente.
49
+ - Persistir cualquier `.md`/`.json` que sea memoria del proyecto (no código).
50
+
51
+ NO aplica cuando:
52
+
53
+ - El comando/agente/herramienta **fija un path canónico de output** — en ese
54
+ caso úsalo tal cual, no lo cuestiones (ej: un agente que pinea
55
+ `.planning/audit/findings/iter-N/`).
56
+ - El archivo es código fuente (sigue las convenciones del lenguaje/framework).
57
+ - El usuario indicó explícitamente la ruta exacta donde escribir.
58
+ - Es un archivo efímero de scratch que se borrará en el mismo turno.
59
+
60
+ ---
61
+
62
+ ## Cómo aplicar — protocolo de 4 pasos
63
+
64
+ ### Paso 1 — Listar la estructura existente
65
+
66
+ Antes de elegir dónde escribir:
67
+
68
+ ```bash
69
+ ls .planning/ # o el directorio raíz de docs del proyecto
70
+ ls docs/
71
+ ```
72
+
73
+ O con Glob: `**/{audit,auditoria,diseno*,ux,design,research,specs}/`.
74
+
75
+ ### Paso 2 — Buscar si el dominio ya tiene directorio (incluye variantes es/en)
76
+
77
+ Pregúntate: ¿ya existe un directorio para este tipo de artefacto? Busca
78
+ **variantes en ambos idiomas** y sinónimos:
79
+
80
+ | Dominio | Variantes a buscar antes de crear |
81
+ |---|---|
82
+ | Auditoría | `audit/`, `auditoria/`, `auditorias/`, `findings/` |
83
+ | Diseño/UX | `diseno/`, `diseno-visual/`, `ux/`, `ui/`, `design/` |
84
+ | Investigación | `research/`, `investigacion/`, `knowledge/` |
85
+ | Decisiones | `adrs/`, `adr/`, `decisiones/` |
86
+ | Sesiones | `sessions/`, `sesiones/` |
87
+ | Deuda | `DEUDAS.md`, `DEUDA-TECNICA.md`, `deuda/`, `debt/` |
88
+
89
+ ### Paso 3 — Decidir el destino
90
+
91
+ - **Si ya existe un directorio para el dominio** → escribe ahí. Punto. Aunque
92
+ el nombre existente esté en el "idioma equivocado", reusarlo es superior a
93
+ crear un paralelo. La consistencia gana sobre la preferencia de idioma.
94
+ - **Si existe un path canónico de la herramienta** (swl-ses pinea
95
+ `.planning/audit/`, `knowledge/outputs/`, `sessions/`, etc.) → ese path es
96
+ la fuente de verdad. NO lo dupliques en español.
97
+ - **Si NO existe precedente** → crea uno nuevo siguiendo la convención
98
+ dominante del proyecto (mira cómo están nombrados los directorios hermanos).
99
+
100
+ ### Paso 4 — Desempate del nombre (solo para directorios genuinamente nuevos)
101
+
102
+ Cuando creas un nombre nuevo sin precedente ni path canónico:
103
+
104
+ - Prefiere **español de México** (consistente con
105
+ `~/.claude/rules/brevedad-output.md § Idioma obligatorio`): `diseno/`,
106
+ `investigacion/`, `auditoria/` antes que `design/`, `research/`, `audit/`.
107
+ - **PERO**: si el proyecto ya tiene una convención de idioma dominante para
108
+ sus directorios (ej: swl-ses usa mayormente inglés: `audit/`, `knowledge/`,
109
+ `sessions/`, `research/`), respeta ESA convención sobre la preferencia
110
+ general — la coherencia intra-proyecto manda.
111
+ - Identificadores técnicos (nombres que un comando/script consume como string)
112
+ siguen la convención del consumidor, no la preferencia de idioma.
113
+
114
+ ---
115
+
116
+ ## La tensión es/en — cómo resolverla (no es "español siempre")
117
+
118
+ "Preferir español" es un **desempate**, no un mandato absoluto. La jerarquía
119
+ de decisión, de mayor a menor prioridad:
120
+
121
+ 1. **Path canónico fijado por la herramienta** (gana siempre, aunque sea inglés).
122
+ 2. **Directorio existente para el dominio** (reusar, aunque el idioma "no cuadre").
123
+ 3. **Convención de idioma dominante del proyecto** (si el proyecto es es → es;
124
+ si es en → en).
125
+ 4. **Preferencia general español de México** (solo cuando 1-3 no aplican).
126
+
127
+ Renombrar un path canónico inglés establecido a español **viola** esta regla:
128
+ reintroduce divergencia en vez de eliminarla. El objetivo es UNA convención por
129
+ proyecto, no "todo en español".
130
+
131
+ ---
132
+
133
+ ## Eje técnico-runtime vs vocabulario-de-dominio (refina la jerarquía)
134
+
135
+ La jerarquía de arriba decide entre español e inglés *cuando todo el árbol usa
136
+ un solo idioma*. Pero muchos proyectos adoptan una convención **mixta por
137
+ categoría**: "identificadores técnicos en inglés, vocabulario de cara al usuario
138
+ en el idioma del proyecto" (caso swl-ses). Ahí, **clasifica el directorio ANTES**
139
+ de aplicar la jerarquía:
140
+
141
+ - **Path runtime/técnico → inglés.** Telemetría, estado interno, caches, logs
142
+ archivados, outputs de tooling, índices. No los lee el usuario final; los
143
+ consume el código como string. Ej. en swl-ses: `.planning/evolution/`,
144
+ `.planning/auto-evolution/`, `.planning/user-profile/`, `.planning/archive/`,
145
+ `.planning/traces/`, `.planning/sessions/`, `.planning/audit/`.
146
+ - **Vocabulario de dominio de cara al usuario → idioma del proyecto.** Artefactos
147
+ acoplados a comandos/UX cuyo nombre el usuario lee y escribe. Ej. en swl-ses:
148
+ `.planning/fases/` permanece **español** porque su comando es `/swl:planear-fase`
149
+ (español, intocable). Cambiar el dir sin cambiar el comando crea una
150
+ inconsistencia comando↔directorio *peor* que la divergencia que se quería evitar.
151
+
152
+ **Regla de coherencia comando↔directorio:** el nombre del data dir debe espejar
153
+ el idioma del comando que escribe en él. NUNCA partir un par comando↔directorio
154
+ en dos idiomas.
155
+
156
+ **Consolidar islas runtime SÍ es válido (no viola "no renombrar paths
157
+ establecidos"):** si un proyecto con convención técnico-inglés tiene islas
158
+ runtime en español (`evolucion/`, `archivo/`), alinearlas a inglés *reduce*
159
+ divergencia — es lo opuesto a "renombrar `audit/` a español". La prohibición de
160
+ renombrar aplica a mover *desde* la convención establecida, no *hacia* ella. Las
161
+ islas runtime alineadas requieren shim de migración (renombrar el dir físico en
162
+ proyectos que ya tienen datos) — ver `scripts/instalador.js § 6c-bis` en swl-ses.
163
+
164
+ ---
165
+
166
+ ## Anti-patrones explícitos
167
+
168
+ - **Crear `ux/` cuando ya existe `diseno-visual/`** (o viceversa) sin haber
169
+ hecho `ls .planning/` primero. Caso real: SIGM acumuló ambos por sesiones
170
+ distintas que no verificaron el precedente.
171
+ - **Crear `auditoria/` (es) cuando la herramienta pinea `audit/` (en)** como
172
+ path canónico. Caso real: `/swl:verificar` y el consolidado de `/swl:nemesis`
173
+ escribieron en `auditoria/` mientras los reportes por-router iban a
174
+ `audit/findings/` — misma corrida, dos directorios.
175
+ - **Renombrar `audit/`, `knowledge/`, `sessions/` a español** "porque la
176
+ preferencia es español". Eso rompe paths canónicos y reintroduce divergencia.
177
+ - **Escribir un reporte en un directorio top-level nuevo** sin revisar los
178
+ directorios hermanos existentes.
179
+ - **Asumir que no hay precedente sin buscar variantes es/en** del nombre del
180
+ dominio.
181
+
182
+ ---
183
+
184
+ ## Excepciones legítimas
185
+
186
+ NO aplicar (o aplicar con criterio reducido) cuando:
187
+
188
+ 1. El comando/agente **pinea el path** — úsalo, no analices.
189
+ 2. El usuario dictó la ruta exacta.
190
+ 3. Es un archivo de scratch efímero del mismo turno.
191
+ 4. Es el **primer** documento del proyecto (no hay estructura que analizar
192
+ todavía) — ahí creas la convención; hazlo deliberadamente y en español si
193
+ no hay restricción técnica.
194
+
195
+ ---
196
+
197
+ ## Checklist antes de escribir un MD/reporte o crear un directorio
198
+
199
+ - [ ] Ejecuté `ls`/`Glob` sobre el directorio raíz de docs (`.planning/`, `docs/`).
200
+ - [ ] Busqué variantes es/en del nombre del dominio (audit/auditoria,
201
+ diseno/ux/design, research/investigacion).
202
+ - [ ] Si existe directorio para el dominio → escribo ahí (no creo paralelo).
203
+ - [ ] Si la herramienta pinea path canónico → uso ese (aunque sea inglés).
204
+ - [ ] Si creo uno nuevo → sigue la convención de idioma dominante del proyecto;
205
+ español como desempate solo sin precedente ni path canónico.
206
+ - [ ] No reintroduje divergencia renombrando un path canónico establecido.
207
+
208
+ ---
209
+
210
+ ## Origen de esta regla
211
+
212
+ Sesión 2026-05-31, proyecto SIGM. Al depurar `.planning/` se detectaron **dos
213
+ pares de directorios divergentes** creados por sesiones distintas para el mismo
214
+ dominio, en idiomas distintos:
215
+
216
+ - `.planning/audit/` (en, canónico swl-ses) vs `.planning/auditoria/` (es,
217
+ ad-hoc). La misma corrida de `/swl:nemesis` quedó partida entre ambos; 8
218
+ documentos con referencias colgadas tras la consolidación.
219
+ - `.planning/ux/` (en, 2026-05-30) vs `.planning/diseno-visual/` (es,
220
+ 2026-05-11). La sesión 05-30 creó `ux/` sin verificar que `diseno-visual/`
221
+ ya existía.
222
+
223
+ Causa raíz dual: (a) **conductual** — el agente no analiza la estructura
224
+ existente antes de escribir (esta regla); (b) **de herramienta** — varios
225
+ comandos/agentes de swl-ses no fijan path canónico de output (ticket
226
+ `DT-PLANNING-OUTPUT-PATHS` en swl-ses). Esta regla ataca el lado conductual y
227
+ aplica a todo proyecto del usuario, use o no swl-ses.
228
+
229
+ Relación con otras reglas:
230
+ - `~/.claude/rules/brevedad-output.md § Idioma obligatorio` — la preferencia
231
+ español que esta regla usa como desempate.
232
+ - `~/.claude/rules/memoria-consolidada.md § no-duplicación` — un dato vive en
233
+ un solo canal; esta regla extiende el principio a directorios.
234
+ - `~/.claude/rules/sin-duplicacion-reglas-globales.md` — analogía: no duplicar
235
+ contenido que ya vive en su lugar canónico.