@saulwade/swl-ses 2.3.0 → 2.4.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 +241 -199
- package/README.md +597 -597
- package/agentes/_intent-spec.md +73 -73
- package/agentes/_propose-step.md +90 -90
- package/agentes/accesibilidad-wcag-swl.md +2 -2
- package/agentes/arquitecto-swl.md +2 -2
- package/agentes/auto-evolucion-swl.md +2 -2
- package/agentes/backend-api-swl.md +2 -2
- package/agentes/backend-csharp-swl.md +2 -2
- package/agentes/backend-go-swl.md +2 -2
- package/agentes/backend-java-swl.md +2 -2
- package/agentes/backend-node-swl.md +2 -2
- package/agentes/backend-python-swl.md +2 -2
- package/agentes/backend-rust-swl.md +2 -2
- package/agentes/backend-workers-swl.md +2 -2
- package/agentes/cloud-infra-swl.md +2 -2
- package/agentes/consolidador-swl.md +2 -2
- package/agentes/datos-swl.md +2 -2
- package/agentes/depurador-swl.md +2 -2
- package/agentes/devops-ci-swl.md +2 -2
- package/agentes/disenador-ui-swl.md +2 -2
- package/agentes/documentador-swl.md +2 -2
- package/agentes/frontend-angular-swl.md +2 -2
- package/agentes/frontend-css-swl.md +2 -2
- package/agentes/frontend-react-swl.md +2 -2
- package/agentes/frontend-swl.md +2 -2
- package/agentes/frontend-tailwind-swl.md +2 -2
- package/agentes/gh-fix-ci-swl.md +275 -275
- package/agentes/implementador-swl.md +2 -2
- package/agentes/investigador-swl.md +2 -2
- package/agentes/investigador-ux-swl.md +2 -2
- package/agentes/llm-apps-swl.md +2 -2
- package/agentes/migrador-swl.md +2 -2
- package/agentes/mobile-android-swl.md +2 -2
- package/agentes/mobile-cross-swl.md +2 -2
- package/agentes/mobile-ios-swl.md +2 -2
- package/agentes/mobile-testing-swl.md +2 -2
- package/agentes/nemesis-auditor-swl.md +1 -1
- package/agentes/notificador-swl.md +2 -2
- package/agentes/observabilidad-swl.md +2 -2
- package/agentes/orquestador-swl.md +41 -14
- package/agentes/pagos-swl.md +2 -2
- package/agentes/perfilador-usuario-swl.md +2 -2
- package/agentes/planificador-swl.md +2 -2
- package/agentes/producto-prd-swl.md +2 -2
- package/agentes/red-team-swl.md +218 -218
- package/agentes/release-manager-swl.md +2 -2
- package/agentes/rendimiento-swl.md +2 -2
- package/agentes/resolutor-build-swl.md +2 -2
- package/agentes/revisor-angular-swl.md +2 -2
- package/agentes/revisor-codigo-swl.md +36 -3
- package/agentes/revisor-csharp-swl.md +2 -2
- package/agentes/revisor-go-swl.md +2 -2
- package/agentes/revisor-java-swl.md +2 -2
- package/agentes/revisor-kotlin-swl.md +2 -2
- package/agentes/revisor-nextjs-swl.md +2 -2
- package/agentes/revisor-php-swl.md +2 -2
- package/agentes/revisor-react-swl.md +2 -2
- package/agentes/revisor-rust-swl.md +2 -2
- package/agentes/revisor-seguridad-swl.md +2 -2
- package/agentes/revisor-swift-swl.md +2 -2
- package/agentes/revisor-typescript-swl.md +2 -2
- package/agentes/sre-swl.md +2 -2
- package/agentes/tdd-qa-swl.md +2 -2
- package/comandos/swl/briefing.md +119 -119
- package/comandos/swl/contexto.md +0 -2
- package/comandos/swl/contribuir.md +233 -233
- package/comandos/swl/deuda-codigo.md +97 -0
- package/comandos/swl/predecir.md +139 -139
- package/comandos/swl/sesiones.md +1 -1
- package/gateway/agent-executor.js +1 -1
- package/gateway/lib/event-channel.js +191 -191
- package/habilidades/agent-deep-links/SKILL.md +148 -148
- package/habilidades/agentes-como-servicio/SKILL.md +2 -2
- package/habilidades/angular-moderno/SKILL.md +24 -1
- package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -276
- package/habilidades/backend-async-postgres-testing/SKILL.md +215 -215
- package/habilidades/backend-error-design/SKILL.md +221 -221
- package/habilidades/backend-production-resilience/SKILL.md +288 -288
- package/habilidades/benchmark-memoria/SKILL.md +186 -186
- package/habilidades/calidad-anti-patrones-universales/SKILL.md +368 -368
- package/habilidades/calidad-contract-testing/SKILL.md +165 -165
- package/habilidades/calidad-mutation-testing/SKILL.md +170 -170
- package/habilidades/changelog-generator/scripts/parse-commits.js +367 -367
- package/habilidades/checklist-seguridad/recursos/stride-cobertura.md +60 -60
- package/habilidades/contenedores-docker/SKILL.md +3 -1
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
- package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
- package/habilidades/drift-detection/SKILL.md +179 -179
- package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +1 -1
- package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +57 -57
- package/habilidades/eval-framework/SKILL.md +212 -212
- package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -108
- package/habilidades/harness-claude-code/SKILL.md +4 -4
- package/habilidades/harness-claude-code/recursos/disciplina-harness-regla.md +253 -252
- package/habilidades/legacy-code-rescue/SKILL.md +268 -267
- package/habilidades/meta-skills-estandar/SKILL.md +1 -1
- package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +2 -2
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
- package/habilidades/perfil-usuario/SKILL.md +200 -200
- package/habilidades/postgresql-experto/SKILL.md +3 -1
- package/habilidades/prevencion-sobreingenieria/SKILL.md +70 -92
- package/habilidades/prevencion-sobreingenieria/recursos/EXAMPLES.md +580 -580
- package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -0
- package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -0
- package/habilidades/proceso-ddia-fundamentos/SKILL.md +255 -255
- package/habilidades/proceso-ddia-streaming/SKILL.md +231 -231
- package/habilidades/proceso-debate-adversarial/recursos/personas.md +105 -105
- package/habilidades/proceso-discovery-machote/SKILL.md +157 -157
- package/habilidades/proceso-dynamic-workflows/SKILL.md +138 -138
- package/habilidades/proceso-dynamic-workflows/recursos/template-adversarial-verify.js +65 -65
- package/habilidades/proceso-dynamic-workflows/recursos/template-triage.js +65 -65
- package/habilidades/proceso-intent-engineering/SKILL.md +269 -269
- package/habilidades/proceso-modular-split/SKILL.md +256 -256
- package/habilidades/prompt-engineering/recursos/patrones-avanzados.md +2 -2
- package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -147
- package/habilidades/structured-outputs/SKILL.md +2 -2
- package/habilidades/swl-claudemd/recursos/contrato-aprender.md +83 -83
- package/habilidades/swl-claudemd/recursos/duplicacion-reglas-globales.md +85 -85
- package/habilidades/swl-claudemd/recursos/plantillas-init.md +94 -94
- package/habilidades/swl-dashboard/SKILL.md +2 -2
- package/habilidades/tdd-workflow/recursos/gherkin-bdd.md +111 -111
- package/habilidades/validacion-ci-sistema/recursos/validadores-completos.md +1 -1
- package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +1 -1
- package/hooks/audit-trail.js +4 -4
- package/hooks/calidad-pre-commit.js +15 -11
- package/hooks/captura-acciones-post.js +3 -2
- package/hooks/captura-acciones-session.js +3 -2
- package/hooks/ciclo-evolucion-subagente.js +26 -26
- package/hooks/ciclo-evolucion.js +26 -26
- package/hooks/claudemd-bloat-detector.js +161 -161
- package/hooks/claudemd-duplicacion-detector.js +170 -170
- package/hooks/contexto-iteracion.js +145 -144
- package/hooks/contexto-subagente.js +68 -0
- package/hooks/guardrail-modelo.js +14 -4
- package/hooks/inyeccion-contexto.js +12 -12
- package/hooks/lib/agent-routing.js +107 -107
- package/hooks/lib/auto-consolidator.js +335 -335
- package/hooks/lib/autonomia.js +208 -208
- package/hooks/lib/ciclo-evolucion.js +47 -47
- package/hooks/lib/deep-links.js +185 -185
- package/hooks/lib/error-classifier.js +308 -308
- package/hooks/lib/etapa-auto-evolucion.js +701 -701
- package/hooks/lib/etapa-metricas.js +388 -388
- package/hooks/lib/etapa-perfil-usuario.js +376 -376
- package/hooks/lib/loop-telemetry.js +321 -321
- package/hooks/lib/merkle-audit.js +96 -96
- package/hooks/lib/model-router.js +2 -2
- package/hooks/lib/propose-step.js +358 -358
- package/hooks/lib/provenance-tracker.js +191 -191
- package/hooks/lib/rate-limit-tracker.js +253 -253
- package/hooks/lib/resource-quota.js +122 -122
- package/hooks/lib/retry-jitter.js +165 -165
- package/hooks/lib/security-net.js +201 -201
- package/hooks/lib/skill-auditor.js +588 -588
- package/hooks/lib/sync-status.js +228 -228
- package/hooks/lib/taint-tracker.js +107 -107
- package/hooks/lib/text-similarity.js +241 -241
- package/hooks/lib/token-estimator.js +1 -0
- package/hooks/lib/toon-compressor.js +245 -245
- package/hooks/lib/usage-model.js +1 -1
- package/hooks/registro-turnos.js +210 -209
- package/hooks/session-briefing.js +98 -98
- package/hooks/spec-gate.js +212 -211
- package/hooks/sugerir-contribuir.js +2 -1
- package/hooks/sugerir-regenerar-inventario.js +171 -170
- package/hooks/tdd-gate.js +242 -241
- package/hooks/telemetria-skill-routing.js +100 -100
- package/hooks/validar-formato-post-subagente.js +140 -140
- package/hooks/validar-intent-spec.js +242 -242
- package/hooks/validar-memoria-hook.js +218 -218
- package/hooks/validar-planning-paths.js +134 -134
- package/instintos/autonomia.yaml +27 -27
- package/instintos/prompt-appendices.yaml +57 -57
- package/llms.txt +29 -29
- package/manifiestos/agent-output-schemas.json +57 -57
- package/manifiestos/canonical-hashes.json +2948 -1964
- package/manifiestos/hook-profiles.json +0 -2
- package/manifiestos/hooks-config.json +469 -477
- package/manifiestos/invariantes-criticos.json +30 -0
- package/manifiestos/modulos.json +1390 -1390
- package/manifiestos/planning-paths.json +44 -44
- package/manifiestos/skills-lock.json +1282 -1282
- package/package.json +93 -93
- package/plantillas/auditor-veto-template.md +105 -105
- package/plantillas/github-workflows/README.md +47 -47
- package/plantillas/github-workflows/release-please.yml +44 -44
- package/plantillas/github-workflows/swl-ci.yml +107 -107
- package/plantillas/github-workflows/swl-security.yml +51 -51
- package/plugin.json +369 -371
- package/reglas/accesibilidad.md +10 -10
- package/reglas/analisis-previo-tareas-grandes.md +172 -172
- package/reglas/api-diseno.md +9 -9
- package/reglas/arreglar-al-detectar.md +240 -240
- package/reglas/auditorias-documentales-estructurales.md +7 -7
- package/reglas/cloud-infra.md +8 -8
- package/reglas/consultar-vault-primero.md +195 -195
- package/reglas/debatir-antes-de-aceptar.md +158 -158
- package/reglas/fragmentos-compartidos.md +183 -183
- package/reglas/hooks.md +6 -6
- package/reglas/intent-engineering.md +218 -218
- package/reglas/markitdown.md +8 -8
- package/reglas/monitor-ci.md +309 -309
- package/reglas/patrones.md +6 -6
- package/reglas/sesiones-paralelas.md +180 -180
- package/reglas/sin-duplicacion-reglas-globales.md +182 -182
- package/reglas/skills-estandar.md +6 -6
- package/reglas/testing.md +7 -7
- package/reglas/tests-cleanup.md +224 -224
- package/reglas/usar-code-review-graph.md +155 -155
- package/reglas/usar-context7.md +226 -226
- package/reglas/verificar-citas-normativas.md +548 -548
- package/schemas/agent-frontmatter.schema.json +5 -3
- package/schemas/agent-message.schema.json +73 -73
- package/schemas/agent-output-implementacion.schema.json +114 -114
- package/schemas/agent-output-planificacion.schema.json +150 -150
- package/schemas/agent-output-review.schema.json +98 -98
- package/schemas/diary-entry.schema.json +112 -112
- package/schemas/hook-profiles.schema.json +54 -54
- package/schemas/hooks-config.schema.json +89 -89
- package/schemas/modulos.schema.json +38 -38
- package/schemas/perfiles.schema.json +36 -36
- package/schemas/plugin.schema.json +77 -77
- package/schemas/skill-evals.schema.json +119 -119
- package/schemas/skill-frontmatter.schema.json +245 -245
- package/scripts/audit-tools/audit-history.js +330 -330
- package/scripts/audit-tools/bundle-tracker.js +290 -290
- package/scripts/audit-tools/canary-monitor.js +352 -352
- package/scripts/audit-tools/code-profiler.js +605 -605
- package/scripts/audit-tools/dep-doctor.js +320 -320
- package/scripts/audit-tools/env-validator.js +206 -206
- package/scripts/audit-tools/lib/fs-walk.js +48 -48
- package/scripts/audit-tools/lib/output.js +23 -23
- package/scripts/audit-tools/migration-checker.js +392 -392
- package/scripts/audit-tools/pentest-scanner.js +1436 -1436
- package/scripts/benchmark-memoria.js +167 -167
- package/scripts/cli/aprobar-plan.js +73 -73
- package/scripts/cli/briefing.js +23 -23
- package/scripts/cli/ciclo-evolucion.js +26 -26
- package/scripts/cli/configurar-ci.js +40 -40
- package/scripts/cli/derivar-feature-list.js +25 -25
- package/scripts/cli/detectar-host.js +27 -27
- package/scripts/cli/diary-entry.js +69 -69
- package/scripts/cli/execution-state.js +18 -18
- package/scripts/cli/gateway-notify.js +41 -41
- package/scripts/cli/liberar-fase.js +42 -42
- package/scripts/cli/loop-telemetry.js +125 -125
- package/scripts/cli/mark-evolved.js +56 -56
- package/scripts/cli/metricas-dora.js +26 -26
- package/scripts/cli/near-duplicate.js +55 -55
- package/scripts/cli/notificaciones.js +123 -123
- package/scripts/cli/propose-step.js +29 -29
- package/scripts/cli/schedule-parse.js +19 -19
- package/scripts/cli/sugerir-modelo.js +20 -20
- package/scripts/cli/verificar-plan.js +36 -36
- package/scripts/cli/verificar-trazabilidad.js +35 -35
- package/scripts/configurar-branch-protection.js +418 -418
- package/scripts/detectar-aprendizajes-duplicados.js +151 -151
- package/scripts/field-report.js +199 -199
- package/scripts/generar-checklists-consolidados.js +273 -273
- package/scripts/generar-matriz-lenguajes.js +271 -271
- package/scripts/instalador.js +4 -1
- package/scripts/lib/artefactos-python.js +43 -43
- package/scripts/lib/auditar-invocaciones-comandos.js +104 -104
- package/scripts/lib/benchmark-metrics.js +160 -160
- package/scripts/lib/budget-enforcer.js +252 -252
- package/scripts/lib/ci-reader.js +193 -193
- package/scripts/lib/claude-sessions.js +1 -0
- package/scripts/lib/configurar-ci.js +380 -380
- package/scripts/lib/contadores-inventario.js +217 -217
- package/scripts/lib/detectar-host-swl.js +175 -175
- package/scripts/lib/detectar-stack-detallado.js +307 -307
- package/scripts/lib/detector-autoduplicacion-intra-archivo.js +234 -234
- package/scripts/lib/detector-reglas-duplicadas.js +220 -220
- package/scripts/lib/diary-entry.js +234 -234
- package/scripts/lib/eval-metrics-store.js +218 -218
- package/scripts/lib/eval-quality.js +171 -171
- package/scripts/lib/eval-schemas.js +144 -144
- package/scripts/lib/eval-self-correct.js +106 -106
- package/scripts/lib/eval-validator.js +185 -185
- package/scripts/lib/evidencia-release.js +322 -322
- package/scripts/lib/gate-hooks-requires.js +249 -249
- package/scripts/lib/gate-licencias.js +212 -212
- package/scripts/lib/git-metricas.js +257 -257
- package/scripts/lib/jaccard-similarity.js +98 -98
- package/scripts/lib/longmemeval-runner.js +125 -125
- package/scripts/lib/metricas-dora.js +204 -204
- package/scripts/lib/npm-version.js +261 -261
- package/scripts/lib/paquetes-conocidos.js +50 -50
- package/scripts/lib/plan-lock.js +275 -275
- package/scripts/lib/pr-analyzer.js +399 -399
- package/scripts/lib/preservar-usuario.js +39 -5
- package/scripts/lib/prompt-builder.js +264 -264
- package/scripts/lib/reglas-globales-conocidas.json +180 -180
- package/scripts/lib/resolver-plan-fase.js +37 -37
- package/scripts/lib/rrf-fusion.js +175 -175
- package/scripts/lib/schema-version.js +164 -164
- package/scripts/lib/scoring-instintos.js +277 -277
- package/scripts/lib/semantic-search.js +252 -252
- package/scripts/lib/tool-cost-analyzer.js +1 -0
- package/scripts/limpiar-artefactos-python.js +131 -131
- package/scripts/migrar-csv-a-array.js +168 -168
- package/scripts/migrar-fase-dominio.js +200 -200
- package/scripts/publicar.js +497 -497
- package/scripts/run-eval.js +141 -141
- package/scripts/tui/componentes/selector-multi.js +189 -189
- package/scripts/tui/componentes/selector-unico.js +158 -158
- package/scripts/tui/ejecutores.js +375 -375
- package/scripts/tui/index.js +162 -162
- package/scripts/tui/lib/colores.js +129 -129
- package/scripts/tui/lib/render.js +264 -264
- package/scripts/tui/lib/teclas.js +113 -113
- package/scripts/tui/pantallas/inspect.js +173 -173
- package/scripts/tui/pantallas/install-wizard.js +334 -334
- package/scripts/tui/pantallas/menu-principal.js +52 -52
- package/scripts/tui/pantallas/progreso.js +274 -274
- package/scripts/tui/pantallas/resumen.js +132 -132
- package/scripts/tui/pantallas/uninstall-wizard.js +208 -208
- package/scripts/tui/pantallas/update-wizard.js +232 -232
- package/scripts/tui/pantallas/welcome.js +187 -187
- package/scripts/validar-userland-vacio.js +110 -110
- package/scripts/validar.js +1 -1
- package/scripts/verificar-release.js +51 -0
- package/hooks/lib/context-compressor.js +0 -657
- package/hooks/linea-estado.js +0 -326
- package/hooks/monitor-contexto.js +0 -373
|
@@ -1,182 +1,182 @@
|
|
|
1
|
-
# Regla: Sin duplicación de reglas globales en CLAUDE.md de proyecto
|
|
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
|
-
---
|
|
9
|
-
|
|
10
|
-
## Principio
|
|
11
|
-
|
|
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.
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
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
|
-
---
|
|
64
|
-
|
|
65
|
-
## Qué SÍ es legítimo en CLAUDE.md de proyecto
|
|
66
|
-
|
|
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
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
node scripts/auditar-claudemd.js
|
|
91
|
-
# Buscar en el output: "duplicacion-reglas-globales"
|
|
92
|
-
```
|
|
93
|
-
|
|
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
|
-
---
|
|
117
|
-
|
|
118
|
-
## Anti-patrones
|
|
119
|
-
|
|
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
|
|
174
|
-
|
|
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`.
|
|
1
|
+
# Regla: Sin duplicación de reglas globales en CLAUDE.md de proyecto
|
|
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
|
+
---
|
|
9
|
+
|
|
10
|
+
## Principio
|
|
11
|
+
|
|
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.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
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
|
+
---
|
|
64
|
+
|
|
65
|
+
## Qué SÍ es legítimo en CLAUDE.md de proyecto
|
|
66
|
+
|
|
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
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
node scripts/auditar-claudemd.js
|
|
91
|
+
# Buscar en el output: "duplicacion-reglas-globales"
|
|
92
|
+
```
|
|
93
|
+
|
|
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
|
+
---
|
|
117
|
+
|
|
118
|
+
## Anti-patrones
|
|
119
|
+
|
|
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
|
|
174
|
+
|
|
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`.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/habilidades/**"
|
|
4
|
-
- "**/skills/**"
|
|
5
|
-
- "**/_userland/**"
|
|
6
|
-
---
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/habilidades/**"
|
|
4
|
+
- "**/skills/**"
|
|
5
|
+
- "**/_userland/**"
|
|
6
|
+
---
|
|
7
7
|
# Regla: Estándar Oficial de Claude Agent Skills para el Sistema SWL
|
|
8
8
|
|
|
9
9
|
**Aplica a**: Toda skill nueva o modificada en `habilidades/` y `skills/`
|
package/reglas/testing.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.tsx"
|
|
4
|
-
- "**/*.jsx"
|
|
5
|
-
- "**/vitest.config.{js,ts,mjs}"
|
|
6
|
-
- "**/playwright.config.{js,ts}"
|
|
7
|
-
---
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.tsx"
|
|
4
|
+
- "**/*.jsx"
|
|
5
|
+
- "**/vitest.config.{js,ts,mjs}"
|
|
6
|
+
- "**/playwright.config.{js,ts}"
|
|
7
|
+
---
|
|
8
8
|
# Regla: Testing — Next.js
|
|
9
9
|
|
|
10
10
|
Probar Next.js con App Router requiere estrategia porque existen tres tipos de
|