@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.
- package/CLAUDE.md +194 -241
- package/README.md +600 -597
- package/agentes/_intent-spec.md +73 -73
- package/agentes/_propose-step.md +90 -90
- package/agentes/abogado-diablo-swl.md +145 -0
- package/agentes/accesibilidad-wcag-swl.md +690 -690
- package/agentes/arquitecto-swl.md +267 -267
- package/agentes/auto-evolucion-swl.md +908 -908
- package/agentes/backend-api-swl.md +1 -1
- package/agentes/backend-csharp-swl.md +420 -420
- package/agentes/backend-go-swl.md +390 -390
- package/agentes/backend-java-swl.md +281 -281
- package/agentes/backend-node-swl.md +1 -1
- package/agentes/backend-python-swl.md +1 -1
- package/agentes/backend-rust-swl.md +364 -364
- package/agentes/backend-workers-swl.md +482 -482
- package/agentes/cloud-infra-swl.md +509 -509
- package/agentes/consolidador-swl.md +541 -541
- package/agentes/datos-swl.md +1 -1
- package/agentes/depurador-swl.md +352 -352
- package/agentes/devops-ci-swl.md +400 -400
- package/agentes/disenador-ui-swl.md +569 -569
- package/agentes/documentador-swl.md +345 -345
- package/agentes/frontend-angular-swl.md +621 -621
- package/agentes/frontend-css-swl.md +716 -716
- package/agentes/frontend-react-swl.md +692 -692
- package/agentes/frontend-swl.md +496 -496
- package/agentes/frontend-tailwind-swl.md +826 -826
- package/agentes/gh-fix-ci-swl.md +6 -1
- package/agentes/implementador-swl.md +1 -1
- package/agentes/investigador-swl.md +432 -432
- package/agentes/investigador-ux-swl.md +505 -505
- package/agentes/llm-apps-swl.md +1 -1
- package/agentes/migrador-swl.md +442 -442
- package/agentes/mobile-android-swl.md +511 -511
- package/agentes/mobile-cross-swl.md +541 -541
- package/agentes/mobile-ios-swl.md +502 -502
- package/agentes/mobile-testing-swl.md +302 -302
- package/agentes/nemesis-auditor-swl.md +285 -285
- package/agentes/notificador-swl.md +1 -1
- package/agentes/observabilidad-swl.md +438 -438
- package/agentes/pagos-swl.md +310 -310
- package/agentes/perfilador-usuario-swl.md +321 -321
- package/agentes/planificador-swl.md +399 -399
- package/agentes/producto-prd-swl.md +589 -589
- package/agentes/red-team-swl.md +218 -218
- package/agentes/release-manager-swl.md +590 -590
- package/agentes/rendimiento-swl.md +713 -713
- package/agentes/resolutor-build-swl.md +10 -1
- package/agentes/revisor-angular-swl.md +278 -278
- package/agentes/revisor-codigo-swl.md +1 -1
- package/agentes/revisor-csharp-swl.md +264 -264
- package/agentes/revisor-go-swl.md +259 -259
- package/agentes/revisor-java-swl.md +257 -257
- package/agentes/revisor-kotlin-swl.md +273 -273
- package/agentes/revisor-nextjs-swl.md +281 -281
- package/agentes/revisor-php-swl.md +271 -271
- package/agentes/revisor-react-swl.md +278 -278
- package/agentes/revisor-rust-swl.md +346 -346
- package/agentes/revisor-seguridad-swl.md +399 -399
- package/agentes/revisor-swift-swl.md +268 -268
- package/agentes/revisor-typescript-swl.md +346 -346
- package/agentes/sre-swl.md +1 -1
- package/agentes/tdd-qa-swl.md +393 -393
- package/bin/lib/bot-comandos.js +1 -1
- package/bin/swl-ses.js +6 -0
- package/comandos/swl/adoptar-proyecto.md +14 -2
- package/comandos/swl/configurar-ci.md +8 -1
- package/comandos/swl/deuda-codigo.md +97 -97
- package/comandos/swl/discutir-fase.md +22 -118
- package/comandos/swl/fix.md +118 -0
- package/comandos/swl/nuevo-proyecto.md +54 -3
- package/comandos/swl/predecir.md +32 -2
- package/comandos/swl/seguridad.md +189 -0
- package/comandos/swl/status.md +5 -3
- package/habilidades/aprendizaje-continuo/SKILL.md +3 -1
- package/habilidades/discutir-fase/SKILL.md +84 -81
- package/habilidades/discutir-fase/recursos/plantilla-contexto.md +136 -0
- package/habilidades/doc-sync/SKILL.md +3 -1
- package/habilidades/doubt-driven-review/SKILL.md +15 -1
- package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
- package/habilidades/estructura-proyecto-claude/SKILL.md +11 -2
- package/habilidades/harness-claude-code/SKILL.md +3 -1
- package/habilidades/instalar-sistema/SKILL.md +3 -1
- package/habilidades/meta-reglas-extendido/SKILL.md +92 -0
- package/habilidades/meta-reglas-extendido/recursos/analisis-previo-tareas-grandes.md +186 -0
- package/habilidades/meta-reglas-extendido/recursos/analizar-directorios-antes-de-escribir.md +235 -0
- package/habilidades/meta-reglas-extendido/recursos/api-diseno.md +413 -0
- package/habilidades/meta-reglas-extendido/recursos/arquitectura.md +491 -0
- package/habilidades/meta-reglas-extendido/recursos/arreglar-al-detectar.md +264 -0
- package/habilidades/meta-reglas-extendido/recursos/debatir-antes-de-aceptar.md +152 -0
- package/habilidades/meta-reglas-extendido/recursos/git-workflow.md +259 -0
- package/habilidades/meta-reglas-extendido/recursos/gobernanza.md +291 -0
- package/habilidades/meta-reglas-extendido/recursos/memoria-consolidada.md +263 -0
- package/habilidades/meta-reglas-extendido/recursos/seguridad-agentes.md +443 -0
- package/habilidades/meta-reglas-extendido/recursos/sesiones-paralelas.md +190 -0
- package/habilidades/meta-reglas-extendido/recursos/sin-duplicacion-reglas-globales.md +179 -0
- package/habilidades/meta-reglas-extendido/recursos/skills-estandar.md +394 -0
- package/habilidades/meta-reglas-extendido/recursos/usar-code-review-graph.md +156 -0
- package/habilidades/meta-reglas-extendido/recursos/usar-context7.md +236 -0
- package/habilidades/meta-reglas-extendido/recursos/usar-sistema-swl.md +253 -0
- package/habilidades/meta-reglas-extendido/recursos/verificar-citas-normativas.md +527 -0
- package/habilidades/meta-skills-estandar/SKILL.md +3 -1
- package/habilidades/nuevo-proyecto/SKILL.md +20 -3
- package/habilidades/php-experto/SKILL.md +10 -3
- package/habilidades/{filament-admin/SKILL.md → php-experto/recursos/filament-admin.md} +23 -39
- package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -166
- package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -85
- package/habilidades/proceso-debate-adversarial/recursos/personas.md +5 -4
- package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -0
- package/hooks/check-update.js +19 -10
- package/hooks/contexto-subagente.js +68 -68
- package/hooks/degradacion-instintos.js +1 -1
- package/hooks/extraccion-aprendizajes.js +2 -2
- package/hooks/lib/briefing.js +3 -3
- package/hooks/lib/nudge-tracker.js +1 -1
- package/hooks/lib/otlp-exporter.js +1 -1
- package/hooks/lib/webhook-dedup.js +1 -1
- package/hooks/session-briefing.js +1 -1
- package/llms.txt +6 -6
- package/manifiestos/canonical-hashes.json +989 -0
- package/manifiestos/hooks-config.json +469 -469
- package/manifiestos/invariantes-criticos.json +30 -30
- package/manifiestos/modulos.json +168 -135
- package/manifiestos/perfiles.json +0 -2
- package/manifiestos/skills-lock.json +52 -59
- package/package.json +7 -5
- package/plantillas/github-workflows/README.md +15 -1
- package/plantillas/github-workflows/swl-devsecops.yml +70 -0
- package/plugin.json +5 -5
- package/reglas/analisis-previo-tareas-grandes.md +30 -156
- package/reglas/analizar-directorios-antes-de-escribir.md +30 -211
- package/reglas/api-diseno.md +28 -398
- package/reglas/arquitectura.md +35 -456
- package/reglas/arreglar-al-detectar.md +30 -230
- package/reglas/debatir-antes-de-aceptar.md +30 -143
- package/reglas/docs.md +7 -0
- package/reglas/estilo-codigo.md +9 -0
- package/reglas/fragmentos-compartidos.md +6 -0
- package/reglas/git-workflow.md +44 -240
- package/reglas/gobernanza.md +23 -262
- package/reglas/memoria-consolidada.md +34 -228
- package/reglas/performance.md +8 -0
- package/reglas/pruebas.md +12 -0
- package/reglas/seguridad-agentes.md +37 -418
- package/reglas/seguridad.md +12 -0
- package/reglas/sesiones-paralelas.md +29 -162
- package/reglas/sin-duplicacion-reglas-globales.md +25 -166
- package/reglas/skills-estandar.md +23 -373
- package/reglas/usar-code-review-graph.md +31 -140
- package/reglas/usar-context7.md +30 -208
- package/reglas/usar-sistema-swl.md +47 -242
- package/reglas/verificar-citas-normativas.md +47 -537
- package/scripts/actualizar.js +253 -253
- package/scripts/audit-tools/auditar-relleno-inventario.js +145 -0
- package/scripts/auditar-clases-conocidas.js +106 -0
- package/scripts/bootstrap-instintos.js +2 -2
- package/scripts/canario-hooks.js +166 -0
- package/scripts/cli/configurar-ci.js +2 -1
- package/scripts/evidencia-valor.js +93 -0
- package/scripts/field-report.js +1 -1
- package/scripts/generar-comandos.js +143 -0
- package/scripts/generar-inventario.js +236 -23
- package/scripts/generar-matriz-lenguajes.js +1 -1
- package/scripts/instalador.js +15 -1
- package/scripts/lib/configurar-ci.js +10 -3
- package/scripts/lib/detectar-runtime.js +12 -3
- package/scripts/lib/diary-entry.js +3 -1
- package/scripts/lib/drift-detector.js +1 -1
- package/scripts/lib/evidencia-valor.js +189 -0
- package/scripts/lib/expandir-targets.js +71 -71
- package/scripts/lib/frontmatter-md.js +63 -0
- package/scripts/lib/parsear-opciones.js +2 -0
- package/scripts/lib/prune-componentes.js +180 -0
- package/scripts/lib/reglas-globales-conocidas.json +16 -2
- package/scripts/lib/scoring-instintos.js +2 -2
- package/scripts/lib/toml-merge.js +204 -204
- package/scripts/lib/transformadores/claude.js +1 -1
- package/scripts/lib/transformadores/codex.js +1 -1
- package/scripts/lib/transformadores/copilot.js +1 -1
- package/scripts/lib/transformadores/cursor.js +1 -1
- package/scripts/lib/transformadores/gemini.js +22 -2
- package/scripts/lib/transformadores/opencode.js +1 -1
- package/scripts/mcp-server/auth.js +105 -105
- package/scripts/mcp-server/cache.js +106 -106
- package/scripts/prune.js +102 -0
- package/scripts/publicar.js +18 -2
- package/scripts/tui/pantallas/inspect.js +175 -175
- package/scripts/tui/pantallas/uninstall-wizard.js +210 -210
- package/scripts/tui/pantallas/update-wizard.js +234 -234
- package/scripts/tui/pantallas/welcome.js +189 -189
- package/habilidades/paid-media-tracking/SKILL.md +0 -269
- package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +0 -220
- package/habilidades/paid-media-tracking/recursos/google-ads-api.md +0 -215
- package/habilidades/tracking-measurement/SKILL.md +0 -239
- package/habilidades/tracking-measurement/recursos/consent-mode.md +0 -231
- package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +0 -216
- 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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
>
|
|
13
|
-
>
|
|
14
|
-
>
|
|
15
|
-
>
|
|
16
|
-
>
|
|
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
|
|
16
|
+
## Señales de detección
|
|
28
17
|
|
|
29
|
-
- El usuario lo informa explícitamente
|
|
30
|
-
|
|
31
|
-
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
|
83
|
-
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
|
|
|
87
|
-
|
|
|
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
|
-
-
|
|
103
|
-
-
|
|
104
|
-
|
|
105
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
>
|
|
14
|
-
>
|
|
15
|
-
>
|
|
16
|
-
>
|
|
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 local ≤3 líneas — jamás re-derivar
|
|
14
|
+
> el principio.
|
|
41
15
|
|
|
42
|
-
|
|
16
|
+
## Cuándo aplica
|
|
43
17
|
|
|
44
|
-
|
|
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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
90
|
-
node scripts/auditar-claudemd.js
|
|
91
|
-
# Buscar en el output: "duplicacion-reglas-globales"
|
|
92
|
-
```
|
|
27
|
+
## Detección y remediación
|
|
93
28
|
|
|
94
|
-
|
|
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
|
-
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
|
|
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`.
|