@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
@@ -1,180 +1,47 @@
1
1
  # Regla: Coordinación obligatoria al detectar sesión paralela
2
2
 
3
- Esta regla es OBLIGATORIA y aplica cuando Claude detecta — o el usuario
4
- informa — que **otra sesión de IA** (Claude Code, Codex CLI, Cursor, otro
5
- agente) está trabajando **simultáneamente** sobre el mismo repositorio /
6
- proyecto.
7
-
8
- ---
3
+ Regla OBLIGATORIA cuando Claude detecta — o el usuario informa — que otra sesión de IA
4
+ (Claude Code, Codex CLI, Cursor, otro agente) trabaja **simultáneamente** sobre el mismo
5
+ repositorio/proyecto.
9
6
 
10
7
  ## Principio
11
8
 
12
- > Cuando detectes que otra sesión está activa sobre el mismo repo y los
13
- > cambios pueden colisionar en archivos compartidos, **DETÉN tu flujo
14
- > actual y presenta 4 opciones explícitas de coordinación al usuario antes
15
- > de proceder con cualquier escritura**. NUNCA decidas unilateralmente
16
- > continuar.
17
-
18
- El patrón opuesto (continuar y resolver conflictos al final) es costoso:
19
- resolución manual de merge conflicts en archivos canónicos del sistema
20
- (`package.json`, `plugin.json`, `CHANGELOG.md`, manifiestos) toma 30+
21
- minutos vs 2 minutos de coordinación previa.
22
-
23
- ---
24
-
25
- ## Cómo detectar sesión paralela
9
+ > Al detectar sesión paralela sobre el mismo repo con posible colisión en archivos
10
+ > compartidos: **DETÉN toda escritura y presenta las 4 opciones explícitas de
11
+ > coordinación al usuario antes de proceder**. NUNCA decidas unilateralmente continuar.
12
+ > Continuar y resolver conflictos al final cuesta 30+ min de merge resolution en
13
+ > archivos canónicos (`package.json`, `CHANGELOG.md`, manifiestos) vs 2 min de
14
+ > coordinación previa.
26
15
 
27
- Señales que disparan la regla:
16
+ ## Señales de detección
28
17
 
29
- - El usuario lo informa explícitamente: *"hay otra sesión trabajando en
30
- esto agregando X"*.
31
- - `git status` muestra archivos modificados que no modificaste en esta
32
- sesión.
33
- - Commits aparecen en `git log --oneline` con timestamps muy recientes
34
- cuyo autor o mensaje no coinciden con tu trabajo.
35
- - ADRs o PLAN.md aparecen en `.planning/` con números cercanos pero
36
- contenido que no escribiste (`0019-X-completa.md` cuando tu trabajo era
37
- ADR-0020).
38
- - Archivos `.swl-install-state.json` o lockfiles con mtime posterior al
39
- inicio de tu sesión.
18
+ - El usuario lo informa explícitamente ("hay otra sesión trabajando en esto").
19
+ - `git status` con archivos modificados que esta sesión no tocó; commits recientes en `git log` con autor/mensaje ajenos.
20
+ - ADRs/PLAN.md en `.planning/` con números cercanos pero contenido no propio; lockfiles o `.swl-install-state.json` con mtime posterior al inicio de la sesión.
40
21
 
41
- Tras detectar cualquier señal: **pausar inmediatamente** antes de la
42
- siguiente escritura.
43
-
44
- ---
22
+ Tras cualquier señal: **pausar inmediatamente** antes de la siguiente escritura. Solo lecturas (`Read`/`Grep`/`Glob`) quedan permitidas.
45
23
 
46
24
  ## Las 4 opciones obligatorias
47
25
 
48
- Presentar al usuario **literalmente** estas 4 opciones (sin inventar
49
- variantes hasta que el usuario las pida):
50
-
51
- | Opción | Estrategia | Cuándo conviene |
52
- |--------|-----------|-----------------|
53
- | **A — Ceder prioridad** | Pausar tu trabajo. Revertir cambios no commiteados. Esperar a que la otra sesión termine. Retomar después con `git pull` y rebase. | La otra sesión está cerca de terminar y tu trabajo es ortogonal o no urgente. |
54
- | **B — Avance no-conflictivo** | Continuar trabajando, pero SOLO en archivos que la otra sesión NO toca. Identificar y enumerar el subconjunto seguro. Diferir cambios en archivos compartidos hasta que la otra sesión cierre. | Tu trabajo cabe en archivos disjuntos (skills nuevos, scripts nuevos, tests). |
55
- | **C — Release combinada** | Coordinar con la otra sesión un cierre conjunto: mismo release, mismo PR, ambos trabajos integrados. Implica sincronización explícita en docs canónicas, CHANGELOG, versión. | Ambas líneas de trabajo apuntan al mismo bump de versión y los cambios son complementarios. |
56
- | **D — Continuar conflictivo** | Continuar todo tu plan. Resolver merge conflicts al final manualmente. **NO RECOMENDADO** salvo bloqueador urgente. | Solo si la coordinación es imposible (otra sesión inalcanzable) y el trabajo es bloqueante. |
57
-
58
- Tras presentar las opciones, **esperar la decisión del usuario** antes de
59
- escribir cualquier archivo. La excepción son lecturas (`Read`, `Grep`,
60
- `Glob`) que no modifican estado.
61
-
62
- ---
63
-
64
- ## Cómo presentar el reporte al usuario
65
-
66
- Formato mínimo del mensaje de detección:
67
-
68
- ```markdown
69
- Pauso inmediatamente. Hay riesgo de conflicto crítico entre las dos sesiones.
70
-
71
- ## Estado actual de las dos sesiones
72
-
73
- ### Sesión actual (esta) — <descripción breve>
74
- **Cambios en disco**: <lista de archivos modificados por mí>
75
- **Pendiente**: <sub-fases restantes>
76
-
77
- ### Sesión paralela — <descripción de qué hace>
78
- **Cambios detectados**: <archivos modificados por la otra sesión>
79
-
80
- ## Archivos en colisión potencial al avanzar
26
+ Presentarlas **literalmente** (sin inventar variantes) y esperar la decisión del usuario:
81
27
 
82
- | Archivo | Mi necesidad | Otra sesión | Riesgo |
83
- |---------|-------------|-------------|--------|
84
- | package.json (versión) | bump vX vY | bump probablemente también | ALTO |
85
- | plugin.json | +N skills | posiblemente +runtimes | Medio |
86
- | CHANGELOG.md | sección nueva | sección nueva | ALTO conflict garantizado |
87
- | docs canónicas | docs feature X | docs feature Y | Medio |
88
-
89
- ## Opciones
90
-
91
- [A/B/C/D con descripciones]
92
-
93
- ## Recomendación
94
-
95
- [Opción recomendada con justificación en 1 párrafo]
96
- ```
97
-
98
- ---
28
+ | Opción | Estrategia |
29
+ |---|---|
30
+ | **A Ceder prioridad** | Pausar, revertir lo no commiteado, esperar; retomar con `git pull` + rebase. Conviene si la otra sesión está por terminar y tu trabajo no urge. |
31
+ | **B Avance no-conflictivo** | Continuar SOLO en archivos que la otra sesión NO toca, con lista explícita del subconjunto seguro; diferir los compartidos hasta que la otra sesión cierre. |
32
+ | **C Release combinada** | Cierre conjunto coordinado: mismo release/PR, sincronización explícita de versión, CHANGELOG y docs canónicas. |
33
+ | **D Continuar conflictivo** | Continuar todo y resolver merge conflicts al final. **NO RECOMENDADO** salvo bloqueador urgente con sesión inalcanzable. |
99
34
 
100
35
  ## Reglas duras
101
36
 
102
- - **NUNCA decidir unilateralmente** continuar tras detectar sesión paralela.
103
- - **NUNCA hacer commits** en archivos compartidos hasta que el usuario
104
- confirme la estrategia de coordinación.
105
- - **NUNCA pushear** cambios sin saber el estado de la otra sesión.
106
- - Tras decidir Opción B (avance no-conflictivo): **mantener una lista
107
- explícita** de archivos seguros vs archivos diferidos. Verificar antes
108
- de cada `Write`/`Edit` que el archivo no está en la zona diferida.
109
- - Si durante el trabajo aparece un nuevo conflicto no anticipado, **pausar
110
- de nuevo y reportar** — no resolver en silencio.
111
- - Tras decidir Opción C (release combinada): coordinar **versión y
112
- ubicaciones canónicas** explícitamente (¿quién bumpea? ¿en qué orden se
113
- mergean los PRs? ¿quién regenera INVENTARIO.md al final?).
114
- - **NUNCA revertir cambios pendientes en working tree de una sesión paralela
115
- por interpretación errónea de una instrucción del usuario**. Si el usuario
116
- dice "no cambies de versión", "no toques X", "deja Y como está" durante un
117
- flujo del agente actual, esa instrucción **aplica al trabajo nuevo del
118
- agente actual**, no al trabajo previo ya pendiente en working tree de
119
- otra sesión. **Antes de revertir cualquier archivo modificado que no
120
- modificó la sesión actual**, ejecutar:
121
- ```bash
122
- git diff HEAD -- <archivo> # ver el cambio pendiente
123
- git log --oneline -3 -- <archivo> # ver historia del archivo
124
- grep -l "<bump-keyword>" .planning/APRENDIZAJES.md # buscar trazabilidad
125
- ```
126
- Si el cambio pendiente está documentado como trabajo de sesión previa
127
- (entry en APRENDIZAJES.md, mensaje del usuario citándolo, evidencia en
128
- `.planning/sessions/diary/`), **NO revertirlo**. Reportar al usuario:
129
- *"Detecté cambio pendiente en X de sesión paralela (evidencia: Y). Mi
130
- instrucción de no-cambiar-versión aplica solo a mi trabajo nuevo — ¿confirmas
131
- que preserve los bumps previos?"*. La instrucción del usuario sobre
132
- versiones se interpreta **a partir del momento en que se emite**, no
133
- retroactivamente sobre el working tree.
134
-
135
- ---
136
-
137
- ## Excepciones legítimas
138
-
139
- NO aplicar la regla cuando:
140
-
141
- 1. **La otra sesión es de lectura pura** (consulta, exploración) y no
142
- modifica archivos del repo.
143
- 2. **Las sesiones trabajan en branches distintas** y el merge a main será
144
- por PR independiente (no hay riesgo de colisión hasta el merge final).
145
- 3. **El usuario explícitamente autorizó** continuar sin coordinación.
146
-
147
- ---
148
-
149
- ## Origen de esta regla
150
-
151
- Sesión 2026-05-15 en swl-ses. Mientras una sesión analizaba `temp/cc-sdd-main`
152
- para absorber patrones SDD (Opción B aprobada por el usuario), otra sesión
153
- paralela trabajaba en agregar Codex y Cursor como targets de primera clase
154
- (ADR-0019). Ambas sesiones modificaban `scripts/instalador.js`,
155
- `manifiestos/modulos.json`, docs canónicas y planeaban bumpear a v1.5.0.
156
-
157
- El usuario informó la situación con: *"hay otra sesion trabajando en el mismo
158
- proyecto: 'Extension CLI' que esta agregando a swl-ses a codex y cursor como
159
- targets"*. La sesión actual pausó, reportó 4 opciones, esperó decisión. El
160
- usuario eligió Opción B (avance no-conflictivo en skills nuevos y scripts
161
- disjuntos; deferir docs y release a "modo D" cuando la otra sesión
162
- terminara). Resultado: **cero conflictos al cerrar v1.5.0** vía PR #25
163
- unificado.
164
-
165
- Sin esta regla, el patrón habitual hubiera sido continuar y resolver
166
- conflictos en cada `git pull` — costo estimado ~30 min de merge resolution
167
- en `CHANGELOG.md`, `plugin.json`, `package.json`, `manifiestos/modulos.json`
168
- y `INVENTARIO.md`.
37
+ - NUNCA commits en archivos compartidos sin estrategia confirmada; NUNCA push sin conocer el estado de la otra sesión.
38
+ - En Opción B: mantener lista explícita de archivos seguros vs diferidos y verificarla antes de cada `Write`/`Edit`. En Opción C: coordinar versión y ubicaciones canónicas (quién bumpea, orden de PRs).
39
+ - Nuevo conflicto no anticipado → pausar de nuevo y reportar, no resolver en silencio.
40
+ - NUNCA revertir working tree pendiente de otra sesión por interpretación de una instrucción del usuario ("no cambies X" aplica al trabajo nuevo de esta sesión, no retroactivamente): antes de revertir un archivo que esta sesión no modificó, verificar procedencia con `git diff HEAD -- <archivo>`, `git log -- <archivo>` y trazabilidad en APRENDIZAJES/diary; si es trabajo de sesión previa, preservarlo y preguntar al usuario.
169
41
 
170
- ---
42
+ ## Excepciones
171
43
 
172
- ## Checklist al detectar sesión paralela
44
+ No aplica si la otra sesión es de lectura pura, si trabajan en branches distintas
45
+ (merge por PR independiente), o si el usuario autorizó explícitamente continuar.
173
46
 
174
- - [ ] Pausé mi escritura actual antes de la siguiente `Write`/`Edit`
175
- - [ ] Ejecuté `git status` y `git log --since="1 hour ago"` para mapear cambios
176
- - [ ] Identifiqué los archivos potencialmente compartidos
177
- - [ ] Presenté al usuario un reporte con las 4 opciones (A/B/C/D) y mi recomendación
178
- - [ ] Esperé decisión explícita antes de la siguiente escritura
179
- - [ ] Si elegimos B: mantengo lista de archivos diferidos visible
180
- - [ ] Si elegimos C: confirmé versión objetivo y orden de PRs
47
+ Detalle extendido (formato completo del reporte, protocolo anti-revert con comandos, caso de origen v1.5.0, checklist): `Skill("meta-reglas-extendido")` → `recursos/sesiones-paralelas.md`.
@@ -1,182 +1,41 @@
1
1
  # Regla: Sin duplicación de reglas globales en CLAUDE.md de proyecto
2
2
 
3
- Esta regla es **OBLIGATORIA** y aplica al diseño/auditoría de cualquier
4
- `CLAUDE.md` de proyecto donde el sistema SWL esté instalado. Extiende el
5
- contrato canónico de `swl-claudemd` con un sub-caso específico: la
6
- duplicación inline de reglas que ya viven en `~/.claude/rules/`.
7
-
8
- ---
3
+ Regla OBLIGATORIA en el diseño/auditoría de cualquier `CLAUDE.md` de proyecto con SWL
4
+ instalado. Extiende el contrato canónico de `swl-claudemd` con un sub-caso específico:
5
+ la duplicación inline de reglas que ya viven en `~/.claude/rules/`.
9
6
 
10
7
  ## Principio
11
8
 
12
- > Cuando una regla ya está documentada en `~/.claude/rules/` (carga global
13
- > automática en todas las sesiones del usuario), **el `CLAUDE.md` del
14
- > proyecto NO debe duplicarla inline**. La duplicación viola DRY a nivel
15
- > de gobernanza, genera drift cuando la regla global se actualiza, y
16
- > erosiona el contrato canónico de `CLAUDE.md` (200 LOC).
17
-
18
- La regla global es **la fuente de verdad**. El `CLAUDE.md` del proyecto
19
- puede referenciarla con `@~/.claude/rules/<archivo>.md` o agregar
20
- **matices propios del proyecto**, pero NUNCA re-derivar el principio.
21
-
22
- ---
23
-
24
- ## Cuándo aplicar
25
-
26
- OBLIGATORIO al:
27
-
28
- - Crear un `CLAUDE.md` de proyecto nuevo (`/swl:claudemd init-project`,
29
- `/swl:nuevo-proyecto`, `/swl:adoptar-proyecto`).
30
- - Modificar `CLAUDE.md` de proyecto inline (`/swl:aprender` Paso 6 Tipo A,
31
- edición manual del usuario, `Edit`/`Write` programático).
32
- - Revisar `CLAUDE.md` (`/swl:claudemd audit`, `/swl:claudemd refactor`,
33
- hook `claudemd-bloat-detector`, hook `claudemd-duplicacion-detector`).
34
-
35
- NO aplica al:
36
-
37
- - `~/.claude/CLAUDE.md` (user-level) — ahí SÍ pueden declararse
38
- preferencias personales que parafrasean o complementan reglas globales.
39
- - Documentación dentro del proyecto que no es `CLAUDE.md` (READMEs,
40
- ADRs, docs de feature) — ahí no aplica el contrato canónico.
9
+ > Cuando una regla ya está documentada en `~/.claude/rules/` (carga global automática en
10
+ > todas las sesiones), el `CLAUDE.md` del proyecto NUNCA la duplica inline. La duplicación
11
+ > viola DRY a nivel de gobernanza, genera drift cuando la global se actualiza y erosiona el
12
+ > contrato canónico (≤200 LOC). La regla global es **la fuente de verdad**: referenciarla
13
+ > con `@~/.claude/rules/<archivo>.md` o agregar matiz local3 líneas — jamás re-derivar
14
+ > el principio.
41
15
 
42
- ---
16
+ ## Cuándo aplica
43
17
 
44
- ## Catálogo de reglas globales conocidas
45
-
46
- Las siguientes reglas globales se cargan automáticamente cada sesión y
47
- NO deben duplicarse en `CLAUDE.md` de proyecto:
48
-
49
- | Regla global | Sección canónica | Referencia para citar |
50
- |---|---|---|
51
- | `brevedad-output.md` | Idioma obligatorio: español de México | `@~/.claude/rules/brevedad-output.md § Idioma obligatorio` |
52
- | `brevedad-output.md` | Brevedad y eficiencia de output | `@~/.claude/rules/brevedad-output.md § Brevedad` |
53
- | `git-coauthor.md` | Sin co-autores en commits | `@~/.claude/rules/git-coauthor.md` |
54
- | `arreglar-al-detectar.md` | Detectar → Informar → Arreglar | `@~/.claude/rules/arreglar-al-detectar.md` |
55
- | `debatir-antes-de-aceptar.md` | Debatir decisiones que chocan con reglas | `@~/.claude/rules/debatir-antes-de-aceptar.md` |
56
- | `usar-context7.md` | Consultar Context7 antes de dependencias | `@~/.claude/rules/usar-context7.md` |
57
-
58
- Catálogo declarativo completo:
59
- `scripts/lib/reglas-globales-conocidas.json`. El catálogo es la fuente
60
- de verdad consumida por el auditor (`scripts/auditar-claudemd.js`) y el
61
- hook (`hooks/claudemd-duplicacion-detector.js`).
62
-
63
- ---
18
+ - Al crear (`/swl:claudemd init-project`, `/swl:nuevo-proyecto`, `/swl:adoptar-proyecto`), modificar (`/swl:aprender` Tipo A, edición manual o programática) o auditar (`/swl:claudemd audit|refactor`, hooks `claudemd-bloat-detector` / `claudemd-duplicacion-detector`) un `CLAUDE.md` de proyecto. NO aplica a `~/.claude/CLAUDE.md` (user-level) ni a docs que no son `CLAUDE.md` (READMEs, ADRs).
64
19
 
65
20
  ## Qué SÍ es legítimo en CLAUDE.md de proyecto
66
21
 
67
- Lo siguiente NO se considera duplicación y es bienvenido:
68
-
69
- 1. **Matiz local específico**: "Convenciones locales: identificadores
70
- técnicos en inglés (rutas, comandos), prosa en español." — el matiz
71
- es del proyecto, no la regla del idioma.
72
- 2. **Override explícito documentado**: "Override de
73
- `~/.claude/rules/brevedad-output.md` § Brevedad: este proyecto usa
74
- docstrings extendidos por requerimiento legal." — el override es
75
- explícito y nombra la regla global.
76
- 3. **Excepción acotada con justificación**: "Excepción a
77
- `~/.claude/rules/arreglar-al-detectar.md`: bugs cosméticos en el
78
- módulo legacy `X/` se difieren a Q3 por congelación." — la excepción
79
- nombra la regla y justifica.
80
- 4. **Referencia `@`**: `@~/.claude/rules/<archivo>.md` — incluir la
81
- regla por referencia, no inline.
82
-
83
- ---
84
-
85
- ## Cómo detectarlo
86
-
87
- ### Manual
22
+ - **Matiz local específico**: convención propia del proyecto, no la regla en sí.
23
+ - **Override explícito documentado** que nombra la regla global sobrescrita y su razón.
24
+ - **Excepción acotada con justificación** que nombra la regla y el alcance.
25
+ - **Referencia `@~/.claude/rules/<archivo>.md`**: incluir por referencia, no inline.
88
26
 
89
- ```bash
90
- node scripts/auditar-claudemd.js
91
- # Buscar en el output: "duplicacion-reglas-globales"
92
- ```
27
+ ## Detección y remediación
93
28
 
94
- ### Automático
95
-
96
- - **Auditor síncrono**: `scripts/auditar-claudemd.js` (dimensión 7,
97
- severidad WARN, no bloquea).
98
- - **Hook async**: `hooks/claudemd-duplicacion-detector.js` (PostToolUse,
99
- emite nudge a `.planning/evolution/nudges.jsonl`).
100
- - **Comando**: `/swl:claudemd audit` reporta el conteo; `/swl:claudemd
101
- refactor` propone el reemplazo concreto.
102
-
103
- ---
104
-
105
- ## Cómo remediar
106
-
107
- 1. **Identificar el bloque** señalado por el auditor (línea aproximada).
108
- 2. **Decidir**:
109
- - ¿El bloque es 100% paráfrasis de la regla global? → **eliminar**.
110
- - ¿El bloque agrega matiz local? → **reescribir como matiz corto**
111
- (≤3 líneas) que nombra la regla global ("Convenciones locales:
112
- <matiz>. Ver `@~/.claude/rules/<archivo>.md`.").
113
- 3. **Verificar**: re-ejecutar `node scripts/auditar-claudemd.js` hasta
114
- que la duplicación desaparezca.
115
-
116
- ---
29
+ - **Detección**: `node scripts/auditar-claudemd.js` (dimensión 7, WARN) + hook `claudemd-duplicacion-detector.js`; catálogo fuente de verdad en `scripts/lib/reglas-globales-conocidas.json`.
30
+ - **Remediación**: paráfrasis pura → eliminar; con matiz → reescribir en ≤3 líneas nombrando la regla global; re-ejecutar el auditor hasta 0 hallazgos `duplicacion-reglas-globales`.
117
31
 
118
32
  ## Anti-patrones
119
33
 
120
- - **Copiar contenido de reglas globales "para que esté visible"**: la
121
- regla global YA está visible se carga automáticamente. Copiarla en
122
- cada proyecto es deuda silenciosa.
123
- - **Re-derivar el principio con palabras propias**: si dices "todo
124
- contenido generado debe ser en español de México con acentos
125
- correctos…" estás re-derivando `brevedad-output.md § Idioma`.
126
- - **Bloque "Reglas de máxima prioridad" que repite reglas globales**:
127
- las reglas globales SON prioritarias por construcción — duplicarlas
128
- no aumenta su prioridad.
129
- - **Idioma "Language" en inglés que dice "español"**: paradójico y
130
- duplica la regla.
131
- - **Override implícito sin nombrar la regla global**: "este proyecto
132
- usa docstrings extendidos" sin decir que es override de qué.
133
- - **Ignorar el WARN del auditor argumentando "es para claridad"**: el
134
- auditor lleva razón. La regla global es suficiente claridad.
135
-
136
- ---
137
-
138
- ## Relación con otras reglas
139
-
140
- - `~/.claude/rules/memoria-consolidada.md § Reglas de no-duplicación`:
141
- principio general "un dato vive en exactamente un canal". Esta regla
142
- lo aplica al canal CLAUDE.md.
143
- - `~/.claude/rules/fragmentos-compartidos.md`: la analogía a nivel de
144
- agentes (fragmentos `_*.md` se incrustan, no se duplican).
145
- - `~/.claude/rules/skills-estandar.md`: la analogía a nivel de skills
146
- (skill referencia otro skill, no duplica su contenido).
147
- - `reglas/auditorias-documentales-estructurales.md § Para prosa
148
- cuantificada en campos descriptivos`: hermana — verifica drift
149
- cross-manifest. Esta regla verifica drift cross-fuente.
150
-
151
- ---
152
-
153
- ## Origen de esta regla
154
-
155
- Sesión 2026-05-22, swl-ses v1.7.0. El usuario pegó 4 fragmentos de
156
- `CLAUDE.md` de distintos proyectos que repetían la misma regla de idioma
157
- "español de México" en formas distintas (lista con bullets, H3 inline,
158
- lista numerada, sección "Language" en inglés). El análisis reveló:
159
-
160
- - La regla ya vivía en `~/.claude/rules/brevedad-output.md § Idioma
161
- obligatorio: español de México` desde sesiones previas.
162
- - Cada proyecto la había re-derivado por iteraciones de
163
- `/swl:aprender` Tipo A sin que ningún check detectara la
164
- duplicación.
165
- - El bloat acumulado en cada `CLAUDE.md` consumía 7-15 líneas que
166
- podían eliminarse sin perder semántica.
167
-
168
- Resolución: crear el catálogo declarativo + detector + dimensión 7 del
169
- auditor + hook PostToolUse + esta regla. Release v1.7.0 MINOR.
170
-
171
- ---
172
-
173
- ## Checklist al modificar CLAUDE.md de proyecto
34
+ - Copiar la regla global "para que esté visible" — ya está visible: se carga automáticamente; copiarla es deuda silenciosa.
35
+ - Re-derivar el principio con palabras propias (ej. re-explicar el idioma de `brevedad-output.md § Idioma`).
36
+ - Bloque "Reglas de máxima prioridad" que repite globales — ya son prioritarias por construcción.
37
+ - Sección "Language" en inglés que dice "español" paradójico y duplica la regla.
38
+ - Override implícito sin nombrar qué regla global sobrescribe.
39
+ - Ignorar el WARN del auditor argumentando "es para claridad" la regla global es suficiente claridad.
174
40
 
175
- - [ ] ¿El bloque que voy a agregar parafrasea una regla global de
176
- `~/.claude/rules/`?
177
- - [ ] Si sí: ¿agrega matiz local genuino, o solo repite el principio?
178
- - [ ] Si solo repite: NO agregar — la regla global ya aplica.
179
- - [ ] Si agrega matiz: redactar en ≤3 líneas que **nombran la regla
180
- global** (referencia con `@~/.claude/rules/<archivo>.md`).
181
- - [ ] Tras escribir: ejecutar `node scripts/auditar-claudemd.js` y
182
- confirmar 0 hallazgos `duplicacion-reglas-globales`.
41
+ Detalle extendido (catálogo de reglas globales conocidas, ejemplos completos, comandos de detección, remediación paso a paso, relación con otras reglas, caso de origen, checklist): `Skill("meta-reglas-extendido")` → `recursos/sin-duplicacion-reglas-globales.md`.