@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,180 +1,180 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema-version": "1.0.0",
|
|
3
|
-
"description": "Catálogo de reglas globales ~/.claude/rules/ que NO deben duplicarse inline en CLAUDE.md de proyectos. Consumido por scripts/lib/detector-reglas-duplicadas.js y por scripts/auditar-claudemd.js dimensión 'duplicacion-reglas-globales'. Cada entrada lista: nombre canónico, archivo origen, sección canónica para referenciar, patrones de detección (regex), y reemplazo sugerido.",
|
|
4
|
-
"version": "1.1.0",
|
|
5
|
-
"actualizado": "2026-05-22",
|
|
6
|
-
"reglas": [
|
|
7
|
-
{
|
|
8
|
-
"id": "idioma-espanol-mexico",
|
|
9
|
-
"regla_global": "brevedad-output.md",
|
|
10
|
-
"seccion_canonica": "Idioma obligatorio: español de México",
|
|
11
|
-
"referencia_canonica": "@~/.claude/rules/brevedad-output.md § Idioma obligatorio",
|
|
12
|
-
"descripcion": "Idioma obligatorio español de México en todo contenido generado. Ya cubierto globalmente.",
|
|
13
|
-
"patrones": [
|
|
14
|
-
"\\bespañol\\s+de\\s+M[ée]xico\\b",
|
|
15
|
-
"\\bidioma\\s+obligatorio\\b",
|
|
16
|
-
"\\bacentuaci[oó]n\\s+correcta\\b",
|
|
17
|
-
"\\bgram[aá]tica\\s+normativa\\b",
|
|
18
|
-
"\\bevitar\\s+anglicismos\\b",
|
|
19
|
-
"^\\s*#+\\s*Language\\s*$",
|
|
20
|
-
"\\bdomain\\s+terms\\b.*\\bin\\s+\\*?\\*?Spanish\\b",
|
|
21
|
-
"\\bmensajes?\\s+de\\s+commit.*siempre\\s+en\\s+español\\b"
|
|
22
|
-
],
|
|
23
|
-
"min_matches": 2,
|
|
24
|
-
"scope": "project-level",
|
|
25
|
-
"remediacion_sugerida": "Eliminar el bloque local de idioma. La regla global `~/.claude/rules/brevedad-output.md` (cargada en cada sesión SWL) ya lo cubre. Si el proyecto tiene matices propios (ej: identificadores técnicos en inglés), conservar SOLO esos matices con frase corta: \"Convenciones locales: identificadores técnicos en inglés (rutas, comandos)\"."
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"id": "brevedad-sin-aiisms",
|
|
29
|
-
"regla_global": "brevedad-output.md",
|
|
30
|
-
"seccion_canonica": "Brevedad y eficiencia de output",
|
|
31
|
-
"referencia_canonica": "@~/.claude/rules/brevedad-output.md § Brevedad y eficiencia de output",
|
|
32
|
-
"descripcion": "Brevedad, sin preámbulos de cortesía ni cierres. Ya cubierto globalmente.",
|
|
33
|
-
"patrones": [
|
|
34
|
-
"\\bsin\\s+pre[aá]mbulos\\s+de\\s+cortes[ií]a\\b",
|
|
35
|
-
"\\bnunca\\s+iniciar\\s+con\\s+[\"']?claro",
|
|
36
|
-
"\\bnunca\\s+terminar\\s+con\\s+[\"']?espero",
|
|
37
|
-
"\\bno\\s+iniciar\\s+respuestas?\\s+con\\b.*\\bcortes[ií]a"
|
|
38
|
-
],
|
|
39
|
-
"min_matches": 1,
|
|
40
|
-
"scope": "project-level",
|
|
41
|
-
"remediacion_sugerida": "Eliminar el bloque local de brevedad. La regla global ya cubre el contrato. Si el proyecto tiene matices (formato específico de revisiones, etc.) conservar solo esos."
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"id": "git-sin-coautores",
|
|
45
|
-
"regla_global": "git-coauthor.md",
|
|
46
|
-
"seccion_canonica": "Sin co-autores en commits",
|
|
47
|
-
"referencia_canonica": "@~/.claude/rules/git-coauthor.md",
|
|
48
|
-
"descripcion": "Los commits NO deben incluir Co-Authored-By de Claude/IA. Ya cubierto globalmente.",
|
|
49
|
-
"patrones": [
|
|
50
|
-
"\\bSin\\s+co-?autores\\s+en\\s+commits\\b",
|
|
51
|
-
"\\bNO\\s+incluir\\s+\\W?Co-?Authored-?By\\b",
|
|
52
|
-
"\\bnunca\\s+incluir\\s+[\"'`]?Co-Authored-By:?\\s+Claude",
|
|
53
|
-
"\\bsin\\s+atribuci[oó]n\\s+a\\s+Claude\\b",
|
|
54
|
-
"\\bcommits?\\s+son\\s+del\\s+desarrollador\\b"
|
|
55
|
-
],
|
|
56
|
-
"min_matches": 1,
|
|
57
|
-
"scope": "project-level",
|
|
58
|
-
"remediacion_sugerida": "Eliminar el bloque local. La regla global `~/.claude/rules/git-coauthor.md` aplica a todos los proyectos del usuario."
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"id": "arreglar-al-detectar",
|
|
62
|
-
"regla_global": "arreglar-al-detectar.md",
|
|
63
|
-
"seccion_canonica": "Detectar → Informar → Arreglar en mismo turno",
|
|
64
|
-
"referencia_canonica": "@~/.claude/rules/arreglar-al-detectar.md",
|
|
65
|
-
"descripcion": "Patrón detectar-informar-arreglar en mismo turno. Ya cubierto globalmente.",
|
|
66
|
-
"patrones": [
|
|
67
|
-
"\\bdetectar\\s*[→\\-]\\s*informar\\s*[→\\-]\\s*arreglar\\b",
|
|
68
|
-
"\\bno\\s+dejar\\s+pendientes\\b.*\\barreglar\\s+en\\s+(el\\s+)?mismo\\s+turno",
|
|
69
|
-
"\\barreglar\\s+en\\s+mismo\\s+turno\\b"
|
|
70
|
-
],
|
|
71
|
-
"min_matches": 1,
|
|
72
|
-
"scope": "project-level",
|
|
73
|
-
"remediacion_sugerida": "Eliminar el bloque local. La regla global cubre el principio. Si el proyecto tiene excepciones específicas (fix urgente con incidente activo), documentarlas como excepción local sin re-derivar el principio."
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
"id": "debatir-antes-de-aceptar",
|
|
77
|
-
"regla_global": "debatir-antes-de-aceptar.md",
|
|
78
|
-
"seccion_canonica": "Debatir antes de aceptar decisiones que chocan con reglas",
|
|
79
|
-
"referencia_canonica": "@~/.claude/rules/debatir-antes-de-aceptar.md",
|
|
80
|
-
"descripcion": "Debatir decisiones del usuario que chocan con reglas documentadas. Ya cubierto globalmente.",
|
|
81
|
-
"patrones": [
|
|
82
|
-
"\\bdebatir\\s+antes\\s+de\\s+aceptar\\b",
|
|
83
|
-
"\\bnunca\\s+la\\s+aceptes\\s+por\\s+reflejo\\b",
|
|
84
|
-
"\\bcita\\s+concreta\\s*\\+\\s*riesgo\\s+observable\\s*\\+\\s*alternativa\\b"
|
|
85
|
-
],
|
|
86
|
-
"min_matches": 1,
|
|
87
|
-
"scope": "project-level",
|
|
88
|
-
"remediacion_sugerida": "Eliminar el bloque local. La regla global aplica."
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
"id": "usar-context7",
|
|
92
|
-
"regla_global": "usar-context7.md",
|
|
93
|
-
"seccion_canonica": "Consultar Context7 antes de generar código con dependencias externas",
|
|
94
|
-
"referencia_canonica": "@~/.claude/rules/usar-context7.md",
|
|
95
|
-
"descripcion": "Consultar Context7 antes de agregar/usar librerías externas. Ya cubierto globalmente.",
|
|
96
|
-
"patrones": [
|
|
97
|
-
"\\bconsultar\\s+Context7\\s+antes\\b",
|
|
98
|
-
"\\bantes\\s+de\\s+agregar\\s+dependencia\\b.*\\bverificar\\b",
|
|
99
|
-
"\\bContext7\\s+obligatorio\\b"
|
|
100
|
-
],
|
|
101
|
-
"min_matches": 1,
|
|
102
|
-
"scope": "project-level",
|
|
103
|
-
"remediacion_sugerida": "Eliminar el bloque local. La regla global aplica."
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
"id": "usar-sistema-swl",
|
|
107
|
-
"regla_global": "usar-sistema-swl.md",
|
|
108
|
-
"seccion_canonica": "Uso obligatorio del sistema SWL",
|
|
109
|
-
"referencia_canonica": "@~/.claude/rules/usar-sistema-swl.md",
|
|
110
|
-
"descripcion": "Uso obligatorio del sistema SWL: invocar agentes/skills/comandos especializados en lugar de trabajo directo con Read/Write/Edit. Ya cubierto globalmente.",
|
|
111
|
-
"patrones": [
|
|
112
|
-
"\\bSIEMPRE\\s+usar\\s+el\\s+sistema\\s+SWL\\b",
|
|
113
|
-
"\\busar\\s+el\\s+sistema\\s+SWL\\s+completo\\b",
|
|
114
|
-
"\\bNO\\s+hacer\\s+trabajo\\s+directo\\s+que\\s+un\\s+agente\\s+SWL\\b",
|
|
115
|
-
"\\bagentes?\\s+especializados?\\b.*\\borquestador-swl\\b",
|
|
116
|
-
"\\binvocar\\s+`?orquestador-swl`?\\b.*\\bpunto\\s+de\\s+entrada\\b",
|
|
117
|
-
"\\bFlujo\\s+de\\s+trabajo\\s+obligatorio\\s*[—\\-]\\s*Sistema\\s+SWL\\b"
|
|
118
|
-
],
|
|
119
|
-
"min_matches": 2,
|
|
120
|
-
"scope": "project-level",
|
|
121
|
-
"remediacion_sugerida": "Eliminar el bloque local de flujo de trabajo SWL. La regla global `~/.claude/rules/usar-sistema-swl.md` cubre el principio y la matriz operacional completa (qué componente usar para cada tipo de tarea, excepciones legítimas, anti-patrones). Si el proyecto tiene matices propios (ej: agentes específicos del dominio, ejemplos de invocaciones validadas, casos edge), conservar SOLO esos matices con frase corta + referencia: \"Ver @~/.claude/rules/usar-sistema-swl.md. En este proyecto, además: <matiz>\"."
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
"id": "analisis-previo-tareas-grandes",
|
|
125
|
-
"regla_global": "analisis-previo-tareas-grandes.md",
|
|
126
|
-
"seccion_canonica": "Análisis previo ante tareas grandes",
|
|
127
|
-
"referencia_canonica": "@~/.claude/rules/analisis-previo-tareas-grandes.md",
|
|
128
|
-
"descripcion": "Tareas grandes (>10 archivos, >500 LOC, cross-módulo, replicar/portar todo) requieren tabla comparativa + 3 opciones (mínima/media/completa) + recomendación + confirmación. Ya cubierto globalmente.",
|
|
129
|
-
"patrones": [
|
|
130
|
-
"\\btabla\\s+comparativa\\b.*\\bgap\\b",
|
|
131
|
-
"\\btres\\s+opciones\\s+de\\s+alcance\\b",
|
|
132
|
-
"\\b(mínima|minima)\\s*[\\/\\|]\\s*media\\s*[\\/\\|]\\s*completa\\b",
|
|
133
|
-
"\\breplicar\\s+íntegramente\\b.*\\banálisis\\s+comparativo\\b"
|
|
134
|
-
],
|
|
135
|
-
"min_matches": 2,
|
|
136
|
-
"scope": "project-level",
|
|
137
|
-
"remediacion_sugerida": "Eliminar el bloque local. La regla global cubre el protocolo de auditoría previa + 3 opciones + recomendación + confirmación. Si el proyecto tiene umbrales propios (ej: >5 archivos en lugar de >10), conservar solo el umbral con referencia."
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
"id": "registro-componentes-nuevos",
|
|
141
|
-
"regla_global": "registro-componentes-nuevos.md",
|
|
142
|
-
"seccion_canonica": "Registro obligatorio de componentes nuevos en manifiestos",
|
|
143
|
-
"referencia_canonica": "@~/.claude/rules/registro-componentes-nuevos.md",
|
|
144
|
-
"descripcion": "Todo componente nuevo (agente/skill/comando/hook/regla) DEBE registrarse en manifiestos + plugin.json + INVENTARIO en el mismo commit. Ya cubierto globalmente.",
|
|
145
|
-
"patrones": [
|
|
146
|
-
"\\btodo\\s+componente\\s+nuevo\\b.*\\bregistr(?:ar(?:se)?|o|ado)\\b",
|
|
147
|
-
"\\bregistro\\s+obligatorio\\s+(de\\s+)?componentes?\\s+nuevos\\b",
|
|
148
|
-
"\\bmanifiestos?\\s*\\/\\s*modulos\\.json\\b.*\\bplugin\\.json\\b",
|
|
149
|
-
"\\bplugin\\.json\\b.*\\bmanifiestos?\\s*\\/\\s*modulos\\.json\\b",
|
|
150
|
-
"\\bregistro\\s+obligatorio\\s+en\\s+manifiestos\\b",
|
|
151
|
-
"\\ben\\s+el\\s+mismo\\s+commit\\b.*\\bmanifiestos?\\b"
|
|
152
|
-
],
|
|
153
|
-
"min_matches": 2,
|
|
154
|
-
"scope": "project-level",
|
|
155
|
-
"remediacion_sugerida": "Eliminar el bloque local. La regla global `~/.claude/rules/registro-componentes-nuevos.md` cubre la tabla de propagación obligatoria (qué archivos tocar por tipo de componente) y los gates de CI que la enforzan. Si el proyecto tiene componentes propios además de los del sistema, conservar SOLO esos matices."
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
"id": "consultar-vault-primero",
|
|
159
|
-
"regla_global": "consultar-vault-primero.md",
|
|
160
|
-
"seccion_canonica": "Consultar el vault Obsidian antes de leer múltiples archivos",
|
|
161
|
-
"referencia_canonica": "@~/.claude/rules/consultar-vault-primero.md",
|
|
162
|
-
"descripcion": "Antes de leer 3+ archivos del codebase para construir contexto general, consultar el vault Obsidian con obsidian_simple_search. Ya cubierto globalmente.",
|
|
163
|
-
"patrones": [
|
|
164
|
-
"\\bconsultar\\s+el\\s+vault\\s+Obsidian\\s+primero\\b",
|
|
165
|
-
"\\bantes\\s+de\\s+leer\\s+3\\+?\\s+archivos\\b.*\\bvault\\b",
|
|
166
|
-
"\\bobsidian_simple_search\\b.*\\bantes\\b"
|
|
167
|
-
],
|
|
168
|
-
"min_matches": 1,
|
|
169
|
-
"scope": "project-level",
|
|
170
|
-
"remediacion_sugerida": "Eliminar el bloque local. La regla global aplica a cualquier proyecto con vault Obsidian disponible."
|
|
171
|
-
}
|
|
172
|
-
],
|
|
173
|
-
"configuracion": {
|
|
174
|
-
"severidad_default": "WARN",
|
|
175
|
-
"scope_default": "project-level",
|
|
176
|
-
"ignore_si_user_level": true,
|
|
177
|
-
"min_lineas_archivo": 20,
|
|
178
|
-
"comentario": "Solo evaluar archivos >=20 LOC (CLAUDE.md mínimos no acumulan duplicaciones). User-level (~/.claude/CLAUDE.md) NO se evalúa contra este detector porque ahí sí puede declarar preferencias personales."
|
|
179
|
-
}
|
|
180
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema-version": "1.0.0",
|
|
3
|
+
"description": "Catálogo de reglas globales ~/.claude/rules/ que NO deben duplicarse inline en CLAUDE.md de proyectos. Consumido por scripts/lib/detector-reglas-duplicadas.js y por scripts/auditar-claudemd.js dimensión 'duplicacion-reglas-globales'. Cada entrada lista: nombre canónico, archivo origen, sección canónica para referenciar, patrones de detección (regex), y reemplazo sugerido.",
|
|
4
|
+
"version": "1.1.0",
|
|
5
|
+
"actualizado": "2026-05-22",
|
|
6
|
+
"reglas": [
|
|
7
|
+
{
|
|
8
|
+
"id": "idioma-espanol-mexico",
|
|
9
|
+
"regla_global": "brevedad-output.md",
|
|
10
|
+
"seccion_canonica": "Idioma obligatorio: español de México",
|
|
11
|
+
"referencia_canonica": "@~/.claude/rules/brevedad-output.md § Idioma obligatorio",
|
|
12
|
+
"descripcion": "Idioma obligatorio español de México en todo contenido generado. Ya cubierto globalmente.",
|
|
13
|
+
"patrones": [
|
|
14
|
+
"\\bespañol\\s+de\\s+M[ée]xico\\b",
|
|
15
|
+
"\\bidioma\\s+obligatorio\\b",
|
|
16
|
+
"\\bacentuaci[oó]n\\s+correcta\\b",
|
|
17
|
+
"\\bgram[aá]tica\\s+normativa\\b",
|
|
18
|
+
"\\bevitar\\s+anglicismos\\b",
|
|
19
|
+
"^\\s*#+\\s*Language\\s*$",
|
|
20
|
+
"\\bdomain\\s+terms\\b.*\\bin\\s+\\*?\\*?Spanish\\b",
|
|
21
|
+
"\\bmensajes?\\s+de\\s+commit.*siempre\\s+en\\s+español\\b"
|
|
22
|
+
],
|
|
23
|
+
"min_matches": 2,
|
|
24
|
+
"scope": "project-level",
|
|
25
|
+
"remediacion_sugerida": "Eliminar el bloque local de idioma. La regla global `~/.claude/rules/brevedad-output.md` (cargada en cada sesión SWL) ya lo cubre. Si el proyecto tiene matices propios (ej: identificadores técnicos en inglés), conservar SOLO esos matices con frase corta: \"Convenciones locales: identificadores técnicos en inglés (rutas, comandos)\"."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "brevedad-sin-aiisms",
|
|
29
|
+
"regla_global": "brevedad-output.md",
|
|
30
|
+
"seccion_canonica": "Brevedad y eficiencia de output",
|
|
31
|
+
"referencia_canonica": "@~/.claude/rules/brevedad-output.md § Brevedad y eficiencia de output",
|
|
32
|
+
"descripcion": "Brevedad, sin preámbulos de cortesía ni cierres. Ya cubierto globalmente.",
|
|
33
|
+
"patrones": [
|
|
34
|
+
"\\bsin\\s+pre[aá]mbulos\\s+de\\s+cortes[ií]a\\b",
|
|
35
|
+
"\\bnunca\\s+iniciar\\s+con\\s+[\"']?claro",
|
|
36
|
+
"\\bnunca\\s+terminar\\s+con\\s+[\"']?espero",
|
|
37
|
+
"\\bno\\s+iniciar\\s+respuestas?\\s+con\\b.*\\bcortes[ií]a"
|
|
38
|
+
],
|
|
39
|
+
"min_matches": 1,
|
|
40
|
+
"scope": "project-level",
|
|
41
|
+
"remediacion_sugerida": "Eliminar el bloque local de brevedad. La regla global ya cubre el contrato. Si el proyecto tiene matices (formato específico de revisiones, etc.) conservar solo esos."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "git-sin-coautores",
|
|
45
|
+
"regla_global": "git-coauthor.md",
|
|
46
|
+
"seccion_canonica": "Sin co-autores en commits",
|
|
47
|
+
"referencia_canonica": "@~/.claude/rules/git-coauthor.md",
|
|
48
|
+
"descripcion": "Los commits NO deben incluir Co-Authored-By de Claude/IA. Ya cubierto globalmente.",
|
|
49
|
+
"patrones": [
|
|
50
|
+
"\\bSin\\s+co-?autores\\s+en\\s+commits\\b",
|
|
51
|
+
"\\bNO\\s+incluir\\s+\\W?Co-?Authored-?By\\b",
|
|
52
|
+
"\\bnunca\\s+incluir\\s+[\"'`]?Co-Authored-By:?\\s+Claude",
|
|
53
|
+
"\\bsin\\s+atribuci[oó]n\\s+a\\s+Claude\\b",
|
|
54
|
+
"\\bcommits?\\s+son\\s+del\\s+desarrollador\\b"
|
|
55
|
+
],
|
|
56
|
+
"min_matches": 1,
|
|
57
|
+
"scope": "project-level",
|
|
58
|
+
"remediacion_sugerida": "Eliminar el bloque local. La regla global `~/.claude/rules/git-coauthor.md` aplica a todos los proyectos del usuario."
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "arreglar-al-detectar",
|
|
62
|
+
"regla_global": "arreglar-al-detectar.md",
|
|
63
|
+
"seccion_canonica": "Detectar → Informar → Arreglar en mismo turno",
|
|
64
|
+
"referencia_canonica": "@~/.claude/rules/arreglar-al-detectar.md",
|
|
65
|
+
"descripcion": "Patrón detectar-informar-arreglar en mismo turno. Ya cubierto globalmente.",
|
|
66
|
+
"patrones": [
|
|
67
|
+
"\\bdetectar\\s*[→\\-]\\s*informar\\s*[→\\-]\\s*arreglar\\b",
|
|
68
|
+
"\\bno\\s+dejar\\s+pendientes\\b.*\\barreglar\\s+en\\s+(el\\s+)?mismo\\s+turno",
|
|
69
|
+
"\\barreglar\\s+en\\s+mismo\\s+turno\\b"
|
|
70
|
+
],
|
|
71
|
+
"min_matches": 1,
|
|
72
|
+
"scope": "project-level",
|
|
73
|
+
"remediacion_sugerida": "Eliminar el bloque local. La regla global cubre el principio. Si el proyecto tiene excepciones específicas (fix urgente con incidente activo), documentarlas como excepción local sin re-derivar el principio."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"id": "debatir-antes-de-aceptar",
|
|
77
|
+
"regla_global": "debatir-antes-de-aceptar.md",
|
|
78
|
+
"seccion_canonica": "Debatir antes de aceptar decisiones que chocan con reglas",
|
|
79
|
+
"referencia_canonica": "@~/.claude/rules/debatir-antes-de-aceptar.md",
|
|
80
|
+
"descripcion": "Debatir decisiones del usuario que chocan con reglas documentadas. Ya cubierto globalmente.",
|
|
81
|
+
"patrones": [
|
|
82
|
+
"\\bdebatir\\s+antes\\s+de\\s+aceptar\\b",
|
|
83
|
+
"\\bnunca\\s+la\\s+aceptes\\s+por\\s+reflejo\\b",
|
|
84
|
+
"\\bcita\\s+concreta\\s*\\+\\s*riesgo\\s+observable\\s*\\+\\s*alternativa\\b"
|
|
85
|
+
],
|
|
86
|
+
"min_matches": 1,
|
|
87
|
+
"scope": "project-level",
|
|
88
|
+
"remediacion_sugerida": "Eliminar el bloque local. La regla global aplica."
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"id": "usar-context7",
|
|
92
|
+
"regla_global": "usar-context7.md",
|
|
93
|
+
"seccion_canonica": "Consultar Context7 antes de generar código con dependencias externas",
|
|
94
|
+
"referencia_canonica": "@~/.claude/rules/usar-context7.md",
|
|
95
|
+
"descripcion": "Consultar Context7 antes de agregar/usar librerías externas. Ya cubierto globalmente.",
|
|
96
|
+
"patrones": [
|
|
97
|
+
"\\bconsultar\\s+Context7\\s+antes\\b",
|
|
98
|
+
"\\bantes\\s+de\\s+agregar\\s+dependencia\\b.*\\bverificar\\b",
|
|
99
|
+
"\\bContext7\\s+obligatorio\\b"
|
|
100
|
+
],
|
|
101
|
+
"min_matches": 1,
|
|
102
|
+
"scope": "project-level",
|
|
103
|
+
"remediacion_sugerida": "Eliminar el bloque local. La regla global aplica."
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"id": "usar-sistema-swl",
|
|
107
|
+
"regla_global": "usar-sistema-swl.md",
|
|
108
|
+
"seccion_canonica": "Uso obligatorio del sistema SWL",
|
|
109
|
+
"referencia_canonica": "@~/.claude/rules/usar-sistema-swl.md",
|
|
110
|
+
"descripcion": "Uso obligatorio del sistema SWL: invocar agentes/skills/comandos especializados en lugar de trabajo directo con Read/Write/Edit. Ya cubierto globalmente.",
|
|
111
|
+
"patrones": [
|
|
112
|
+
"\\bSIEMPRE\\s+usar\\s+el\\s+sistema\\s+SWL\\b",
|
|
113
|
+
"\\busar\\s+el\\s+sistema\\s+SWL\\s+completo\\b",
|
|
114
|
+
"\\bNO\\s+hacer\\s+trabajo\\s+directo\\s+que\\s+un\\s+agente\\s+SWL\\b",
|
|
115
|
+
"\\bagentes?\\s+especializados?\\b.*\\borquestador-swl\\b",
|
|
116
|
+
"\\binvocar\\s+`?orquestador-swl`?\\b.*\\bpunto\\s+de\\s+entrada\\b",
|
|
117
|
+
"\\bFlujo\\s+de\\s+trabajo\\s+obligatorio\\s*[—\\-]\\s*Sistema\\s+SWL\\b"
|
|
118
|
+
],
|
|
119
|
+
"min_matches": 2,
|
|
120
|
+
"scope": "project-level",
|
|
121
|
+
"remediacion_sugerida": "Eliminar el bloque local de flujo de trabajo SWL. La regla global `~/.claude/rules/usar-sistema-swl.md` cubre el principio y la matriz operacional completa (qué componente usar para cada tipo de tarea, excepciones legítimas, anti-patrones). Si el proyecto tiene matices propios (ej: agentes específicos del dominio, ejemplos de invocaciones validadas, casos edge), conservar SOLO esos matices con frase corta + referencia: \"Ver @~/.claude/rules/usar-sistema-swl.md. En este proyecto, además: <matiz>\"."
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"id": "analisis-previo-tareas-grandes",
|
|
125
|
+
"regla_global": "analisis-previo-tareas-grandes.md",
|
|
126
|
+
"seccion_canonica": "Análisis previo ante tareas grandes",
|
|
127
|
+
"referencia_canonica": "@~/.claude/rules/analisis-previo-tareas-grandes.md",
|
|
128
|
+
"descripcion": "Tareas grandes (>10 archivos, >500 LOC, cross-módulo, replicar/portar todo) requieren tabla comparativa + 3 opciones (mínima/media/completa) + recomendación + confirmación. Ya cubierto globalmente.",
|
|
129
|
+
"patrones": [
|
|
130
|
+
"\\btabla\\s+comparativa\\b.*\\bgap\\b",
|
|
131
|
+
"\\btres\\s+opciones\\s+de\\s+alcance\\b",
|
|
132
|
+
"\\b(mínima|minima)\\s*[\\/\\|]\\s*media\\s*[\\/\\|]\\s*completa\\b",
|
|
133
|
+
"\\breplicar\\s+íntegramente\\b.*\\banálisis\\s+comparativo\\b"
|
|
134
|
+
],
|
|
135
|
+
"min_matches": 2,
|
|
136
|
+
"scope": "project-level",
|
|
137
|
+
"remediacion_sugerida": "Eliminar el bloque local. La regla global cubre el protocolo de auditoría previa + 3 opciones + recomendación + confirmación. Si el proyecto tiene umbrales propios (ej: >5 archivos en lugar de >10), conservar solo el umbral con referencia."
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"id": "registro-componentes-nuevos",
|
|
141
|
+
"regla_global": "registro-componentes-nuevos.md",
|
|
142
|
+
"seccion_canonica": "Registro obligatorio de componentes nuevos en manifiestos",
|
|
143
|
+
"referencia_canonica": "@~/.claude/rules/registro-componentes-nuevos.md",
|
|
144
|
+
"descripcion": "Todo componente nuevo (agente/skill/comando/hook/regla) DEBE registrarse en manifiestos + plugin.json + INVENTARIO en el mismo commit. Ya cubierto globalmente.",
|
|
145
|
+
"patrones": [
|
|
146
|
+
"\\btodo\\s+componente\\s+nuevo\\b.*\\bregistr(?:ar(?:se)?|o|ado)\\b",
|
|
147
|
+
"\\bregistro\\s+obligatorio\\s+(de\\s+)?componentes?\\s+nuevos\\b",
|
|
148
|
+
"\\bmanifiestos?\\s*\\/\\s*modulos\\.json\\b.*\\bplugin\\.json\\b",
|
|
149
|
+
"\\bplugin\\.json\\b.*\\bmanifiestos?\\s*\\/\\s*modulos\\.json\\b",
|
|
150
|
+
"\\bregistro\\s+obligatorio\\s+en\\s+manifiestos\\b",
|
|
151
|
+
"\\ben\\s+el\\s+mismo\\s+commit\\b.*\\bmanifiestos?\\b"
|
|
152
|
+
],
|
|
153
|
+
"min_matches": 2,
|
|
154
|
+
"scope": "project-level",
|
|
155
|
+
"remediacion_sugerida": "Eliminar el bloque local. La regla global `~/.claude/rules/registro-componentes-nuevos.md` cubre la tabla de propagación obligatoria (qué archivos tocar por tipo de componente) y los gates de CI que la enforzan. Si el proyecto tiene componentes propios además de los del sistema, conservar SOLO esos matices."
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"id": "consultar-vault-primero",
|
|
159
|
+
"regla_global": "consultar-vault-primero.md",
|
|
160
|
+
"seccion_canonica": "Consultar el vault Obsidian antes de leer múltiples archivos",
|
|
161
|
+
"referencia_canonica": "@~/.claude/rules/consultar-vault-primero.md",
|
|
162
|
+
"descripcion": "Antes de leer 3+ archivos del codebase para construir contexto general, consultar el vault Obsidian con obsidian_simple_search. Ya cubierto globalmente.",
|
|
163
|
+
"patrones": [
|
|
164
|
+
"\\bconsultar\\s+el\\s+vault\\s+Obsidian\\s+primero\\b",
|
|
165
|
+
"\\bantes\\s+de\\s+leer\\s+3\\+?\\s+archivos\\b.*\\bvault\\b",
|
|
166
|
+
"\\bobsidian_simple_search\\b.*\\bantes\\b"
|
|
167
|
+
],
|
|
168
|
+
"min_matches": 1,
|
|
169
|
+
"scope": "project-level",
|
|
170
|
+
"remediacion_sugerida": "Eliminar el bloque local. La regla global aplica a cualquier proyecto con vault Obsidian disponible."
|
|
171
|
+
}
|
|
172
|
+
],
|
|
173
|
+
"configuracion": {
|
|
174
|
+
"severidad_default": "WARN",
|
|
175
|
+
"scope_default": "project-level",
|
|
176
|
+
"ignore_si_user_level": true,
|
|
177
|
+
"min_lineas_archivo": 20,
|
|
178
|
+
"comentario": "Solo evaluar archivos >=20 LOC (CLAUDE.md mínimos no acumulan duplicaciones). User-level (~/.claude/CLAUDE.md) NO se evalúa contra este detector porque ahí sí puede declarar preferencias personales."
|
|
179
|
+
}
|
|
180
|
+
}
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* resolver-plan-fase.js
|
|
5
|
-
*
|
|
6
|
-
* Resuelve la ruta del PLAN.md de una fase a partir de las opciones del CLI.
|
|
7
|
-
* Compartido por los subcomandos `aprobar-plan` y `verificar-plan`.
|
|
8
|
-
*
|
|
9
|
-
* Acepta `--plan=<ruta>` explícito o `--fase=N` (deriva
|
|
10
|
-
* `.planning/fases/0N-PLAN.md`, con fallback sin cero a la izquierda).
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
const fs = require('node:fs');
|
|
14
|
-
const path = require('node:path');
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* @param {{plan?:string, fase?:(string|number|boolean)}} [opciones]
|
|
18
|
-
* @returns {string|null} ruta al PLAN, o null si no se pudo derivar.
|
|
19
|
-
*/
|
|
20
|
-
function resolverPlanPath(opciones = {}) {
|
|
21
|
-
if (opciones && opciones.plan && typeof opciones.plan === 'string') {
|
|
22
|
-
return opciones.plan;
|
|
23
|
-
}
|
|
24
|
-
const fase = opciones ? opciones.fase : undefined;
|
|
25
|
-
if (fase == null || fase === true) return null;
|
|
26
|
-
const n = String(fase).padStart(2, '0');
|
|
27
|
-
const candidatos = [
|
|
28
|
-
path.join('.planning', 'fases', `${n}-PLAN.md`),
|
|
29
|
-
path.join('.planning', 'fases', `${fase}-PLAN.md`),
|
|
30
|
-
];
|
|
31
|
-
for (const c of candidatos) {
|
|
32
|
-
if (fs.existsSync(c)) return c;
|
|
33
|
-
}
|
|
34
|
-
return candidatos[0];
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
module.exports = { resolverPlanPath };
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* resolver-plan-fase.js
|
|
5
|
+
*
|
|
6
|
+
* Resuelve la ruta del PLAN.md de una fase a partir de las opciones del CLI.
|
|
7
|
+
* Compartido por los subcomandos `aprobar-plan` y `verificar-plan`.
|
|
8
|
+
*
|
|
9
|
+
* Acepta `--plan=<ruta>` explícito o `--fase=N` (deriva
|
|
10
|
+
* `.planning/fases/0N-PLAN.md`, con fallback sin cero a la izquierda).
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
const fs = require('node:fs');
|
|
14
|
+
const path = require('node:path');
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @param {{plan?:string, fase?:(string|number|boolean)}} [opciones]
|
|
18
|
+
* @returns {string|null} ruta al PLAN, o null si no se pudo derivar.
|
|
19
|
+
*/
|
|
20
|
+
function resolverPlanPath(opciones = {}) {
|
|
21
|
+
if (opciones && opciones.plan && typeof opciones.plan === 'string') {
|
|
22
|
+
return opciones.plan;
|
|
23
|
+
}
|
|
24
|
+
const fase = opciones ? opciones.fase : undefined;
|
|
25
|
+
if (fase == null || fase === true) return null;
|
|
26
|
+
const n = String(fase).padStart(2, '0');
|
|
27
|
+
const candidatos = [
|
|
28
|
+
path.join('.planning', 'fases', `${n}-PLAN.md`),
|
|
29
|
+
path.join('.planning', 'fases', `${fase}-PLAN.md`),
|
|
30
|
+
];
|
|
31
|
+
for (const c of candidatos) {
|
|
32
|
+
if (fs.existsSync(c)) return c;
|
|
33
|
+
}
|
|
34
|
+
return candidatos[0];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
module.exports = { resolverPlanPath };
|