@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
|
@@ -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.
|