@saulwade/swl-ses 2.4.3 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/CLAUDE.md +194 -241
  2. package/README.md +600 -597
  3. package/agentes/_intent-spec.md +73 -73
  4. package/agentes/_propose-step.md +90 -90
  5. package/agentes/abogado-diablo-swl.md +145 -0
  6. package/agentes/accesibilidad-wcag-swl.md +690 -690
  7. package/agentes/arquitecto-swl.md +267 -267
  8. package/agentes/auto-evolucion-swl.md +908 -908
  9. package/agentes/backend-api-swl.md +1 -1
  10. package/agentes/backend-csharp-swl.md +420 -420
  11. package/agentes/backend-go-swl.md +390 -390
  12. package/agentes/backend-java-swl.md +281 -281
  13. package/agentes/backend-node-swl.md +1 -1
  14. package/agentes/backend-python-swl.md +1 -1
  15. package/agentes/backend-rust-swl.md +364 -364
  16. package/agentes/backend-workers-swl.md +482 -482
  17. package/agentes/cloud-infra-swl.md +509 -509
  18. package/agentes/consolidador-swl.md +541 -541
  19. package/agentes/datos-swl.md +1 -1
  20. package/agentes/depurador-swl.md +352 -352
  21. package/agentes/devops-ci-swl.md +400 -400
  22. package/agentes/disenador-ui-swl.md +569 -569
  23. package/agentes/documentador-swl.md +345 -345
  24. package/agentes/frontend-angular-swl.md +621 -621
  25. package/agentes/frontend-css-swl.md +716 -716
  26. package/agentes/frontend-react-swl.md +692 -692
  27. package/agentes/frontend-swl.md +496 -496
  28. package/agentes/frontend-tailwind-swl.md +826 -826
  29. package/agentes/gh-fix-ci-swl.md +6 -1
  30. package/agentes/implementador-swl.md +1 -1
  31. package/agentes/investigador-swl.md +432 -432
  32. package/agentes/investigador-ux-swl.md +505 -505
  33. package/agentes/llm-apps-swl.md +1 -1
  34. package/agentes/migrador-swl.md +442 -442
  35. package/agentes/mobile-android-swl.md +511 -511
  36. package/agentes/mobile-cross-swl.md +541 -541
  37. package/agentes/mobile-ios-swl.md +502 -502
  38. package/agentes/mobile-testing-swl.md +302 -302
  39. package/agentes/nemesis-auditor-swl.md +285 -285
  40. package/agentes/notificador-swl.md +1 -1
  41. package/agentes/observabilidad-swl.md +438 -438
  42. package/agentes/pagos-swl.md +310 -310
  43. package/agentes/perfilador-usuario-swl.md +321 -321
  44. package/agentes/planificador-swl.md +399 -399
  45. package/agentes/producto-prd-swl.md +589 -589
  46. package/agentes/red-team-swl.md +218 -218
  47. package/agentes/release-manager-swl.md +590 -590
  48. package/agentes/rendimiento-swl.md +713 -713
  49. package/agentes/resolutor-build-swl.md +10 -1
  50. package/agentes/revisor-angular-swl.md +278 -278
  51. package/agentes/revisor-codigo-swl.md +1 -1
  52. package/agentes/revisor-csharp-swl.md +264 -264
  53. package/agentes/revisor-go-swl.md +259 -259
  54. package/agentes/revisor-java-swl.md +257 -257
  55. package/agentes/revisor-kotlin-swl.md +273 -273
  56. package/agentes/revisor-nextjs-swl.md +281 -281
  57. package/agentes/revisor-php-swl.md +271 -271
  58. package/agentes/revisor-react-swl.md +278 -278
  59. package/agentes/revisor-rust-swl.md +346 -346
  60. package/agentes/revisor-seguridad-swl.md +399 -399
  61. package/agentes/revisor-swift-swl.md +268 -268
  62. package/agentes/revisor-typescript-swl.md +346 -346
  63. package/agentes/sre-swl.md +1 -1
  64. package/agentes/tdd-qa-swl.md +393 -393
  65. package/bin/lib/bot-comandos.js +1 -1
  66. package/bin/swl-ses.js +6 -0
  67. package/comandos/swl/adoptar-proyecto.md +14 -2
  68. package/comandos/swl/configurar-ci.md +8 -1
  69. package/comandos/swl/deuda-codigo.md +97 -97
  70. package/comandos/swl/discutir-fase.md +22 -118
  71. package/comandos/swl/fix.md +118 -0
  72. package/comandos/swl/nuevo-proyecto.md +54 -3
  73. package/comandos/swl/predecir.md +32 -2
  74. package/comandos/swl/seguridad.md +189 -0
  75. package/comandos/swl/status.md +5 -3
  76. package/habilidades/aprendizaje-continuo/SKILL.md +3 -1
  77. package/habilidades/discutir-fase/SKILL.md +84 -81
  78. package/habilidades/discutir-fase/recursos/plantilla-contexto.md +136 -0
  79. package/habilidades/doc-sync/SKILL.md +3 -1
  80. package/habilidades/doubt-driven-review/SKILL.md +15 -1
  81. package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
  82. package/habilidades/estructura-proyecto-claude/SKILL.md +11 -2
  83. package/habilidades/harness-claude-code/SKILL.md +3 -1
  84. package/habilidades/instalar-sistema/SKILL.md +3 -1
  85. package/habilidades/meta-reglas-extendido/SKILL.md +92 -0
  86. package/habilidades/meta-reglas-extendido/recursos/analisis-previo-tareas-grandes.md +186 -0
  87. package/habilidades/meta-reglas-extendido/recursos/analizar-directorios-antes-de-escribir.md +235 -0
  88. package/habilidades/meta-reglas-extendido/recursos/api-diseno.md +413 -0
  89. package/habilidades/meta-reglas-extendido/recursos/arquitectura.md +491 -0
  90. package/habilidades/meta-reglas-extendido/recursos/arreglar-al-detectar.md +264 -0
  91. package/habilidades/meta-reglas-extendido/recursos/debatir-antes-de-aceptar.md +152 -0
  92. package/habilidades/meta-reglas-extendido/recursos/git-workflow.md +259 -0
  93. package/habilidades/meta-reglas-extendido/recursos/gobernanza.md +291 -0
  94. package/habilidades/meta-reglas-extendido/recursos/memoria-consolidada.md +263 -0
  95. package/habilidades/meta-reglas-extendido/recursos/seguridad-agentes.md +443 -0
  96. package/habilidades/meta-reglas-extendido/recursos/sesiones-paralelas.md +190 -0
  97. package/habilidades/meta-reglas-extendido/recursos/sin-duplicacion-reglas-globales.md +179 -0
  98. package/habilidades/meta-reglas-extendido/recursos/skills-estandar.md +394 -0
  99. package/habilidades/meta-reglas-extendido/recursos/usar-code-review-graph.md +156 -0
  100. package/habilidades/meta-reglas-extendido/recursos/usar-context7.md +236 -0
  101. package/habilidades/meta-reglas-extendido/recursos/usar-sistema-swl.md +253 -0
  102. package/habilidades/meta-reglas-extendido/recursos/verificar-citas-normativas.md +527 -0
  103. package/habilidades/meta-skills-estandar/SKILL.md +3 -1
  104. package/habilidades/nuevo-proyecto/SKILL.md +20 -3
  105. package/habilidades/php-experto/SKILL.md +10 -3
  106. package/habilidades/{filament-admin/SKILL.md → php-experto/recursos/filament-admin.md} +23 -39
  107. package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -166
  108. package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -85
  109. package/habilidades/proceso-debate-adversarial/recursos/personas.md +5 -4
  110. package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -0
  111. package/hooks/check-update.js +19 -10
  112. package/hooks/contexto-subagente.js +68 -68
  113. package/hooks/degradacion-instintos.js +1 -1
  114. package/hooks/extraccion-aprendizajes.js +2 -2
  115. package/hooks/lib/briefing.js +3 -3
  116. package/hooks/lib/nudge-tracker.js +1 -1
  117. package/hooks/lib/otlp-exporter.js +1 -1
  118. package/hooks/lib/webhook-dedup.js +1 -1
  119. package/hooks/session-briefing.js +1 -1
  120. package/llms.txt +6 -6
  121. package/manifiestos/canonical-hashes.json +713 -52
  122. package/manifiestos/hooks-config.json +469 -469
  123. package/manifiestos/invariantes-criticos.json +30 -30
  124. package/manifiestos/modulos.json +168 -135
  125. package/manifiestos/perfiles.json +0 -2
  126. package/manifiestos/skills-lock.json +49 -56
  127. package/package.json +7 -5
  128. package/plantillas/github-workflows/README.md +15 -1
  129. package/plantillas/github-workflows/swl-devsecops.yml +70 -0
  130. package/plugin.json +5 -5
  131. package/reglas/analisis-previo-tareas-grandes.md +30 -156
  132. package/reglas/analizar-directorios-antes-de-escribir.md +30 -211
  133. package/reglas/api-diseno.md +28 -398
  134. package/reglas/arquitectura.md +35 -456
  135. package/reglas/arreglar-al-detectar.md +30 -230
  136. package/reglas/debatir-antes-de-aceptar.md +30 -143
  137. package/reglas/docs.md +7 -0
  138. package/reglas/estilo-codigo.md +9 -0
  139. package/reglas/fragmentos-compartidos.md +6 -0
  140. package/reglas/git-workflow.md +44 -240
  141. package/reglas/gobernanza.md +23 -262
  142. package/reglas/memoria-consolidada.md +34 -228
  143. package/reglas/performance.md +8 -0
  144. package/reglas/pruebas.md +12 -0
  145. package/reglas/seguridad-agentes.md +37 -418
  146. package/reglas/seguridad.md +12 -0
  147. package/reglas/sesiones-paralelas.md +29 -162
  148. package/reglas/sin-duplicacion-reglas-globales.md +25 -166
  149. package/reglas/skills-estandar.md +23 -373
  150. package/reglas/usar-code-review-graph.md +31 -140
  151. package/reglas/usar-context7.md +30 -208
  152. package/reglas/usar-sistema-swl.md +47 -242
  153. package/reglas/verificar-citas-normativas.md +47 -537
  154. package/scripts/actualizar.js +253 -253
  155. package/scripts/audit-tools/auditar-relleno-inventario.js +145 -0
  156. package/scripts/auditar-clases-conocidas.js +106 -0
  157. package/scripts/bootstrap-instintos.js +2 -2
  158. package/scripts/canario-hooks.js +166 -0
  159. package/scripts/cli/configurar-ci.js +2 -1
  160. package/scripts/evidencia-valor.js +93 -0
  161. package/scripts/field-report.js +1 -1
  162. package/scripts/generar-comandos.js +143 -0
  163. package/scripts/generar-inventario.js +236 -23
  164. package/scripts/generar-matriz-lenguajes.js +1 -1
  165. package/scripts/instalador.js +15 -1
  166. package/scripts/lib/configurar-ci.js +10 -3
  167. package/scripts/lib/diary-entry.js +3 -1
  168. package/scripts/lib/drift-detector.js +1 -1
  169. package/scripts/lib/evidencia-valor.js +189 -0
  170. package/scripts/lib/expandir-targets.js +71 -71
  171. package/scripts/lib/frontmatter-md.js +63 -0
  172. package/scripts/lib/parsear-opciones.js +2 -0
  173. package/scripts/lib/prune-componentes.js +180 -0
  174. package/scripts/lib/reglas-globales-conocidas.json +16 -2
  175. package/scripts/lib/scoring-instintos.js +2 -2
  176. package/scripts/lib/toml-merge.js +204 -204
  177. package/scripts/lib/transformadores/claude.js +1 -1
  178. package/scripts/lib/transformadores/codex.js +1 -1
  179. package/scripts/lib/transformadores/copilot.js +1 -1
  180. package/scripts/lib/transformadores/cursor.js +1 -1
  181. package/scripts/lib/transformadores/gemini.js +22 -2
  182. package/scripts/lib/transformadores/opencode.js +1 -1
  183. package/scripts/mcp-server/auth.js +105 -105
  184. package/scripts/mcp-server/cache.js +106 -106
  185. package/scripts/prune.js +102 -0
  186. package/scripts/publicar.js +18 -2
  187. package/scripts/tui/pantallas/inspect.js +175 -175
  188. package/scripts/tui/pantallas/uninstall-wizard.js +210 -210
  189. package/scripts/tui/pantallas/update-wizard.js +234 -234
  190. package/scripts/tui/pantallas/welcome.js +189 -189
  191. package/habilidades/paid-media-tracking/SKILL.md +0 -269
  192. package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +0 -220
  193. package/habilidades/paid-media-tracking/recursos/google-ads-api.md +0 -215
  194. package/habilidades/tracking-measurement/SKILL.md +0 -239
  195. package/habilidades/tracking-measurement/recursos/consent-mode.md +0 -231
  196. package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +0 -216
  197. package/habilidades/tracking-measurement/recursos/meta-capi.md +0 -262
@@ -1,11 +1,7 @@
1
1
  # Regla: Detectar → Informar → Arreglar en el mismo turno
2
2
 
3
- Esta regla es OBLIGATORIA y aplica a todo trabajo que Claude ejecute en cualquier
4
- proyecto del usuario. Consolida cuatro feedbacks repetidos en sesiones distintas
5
- entre 2026-04-23 y 2026-05-03 con la misma señal: el usuario rechaza entregas
6
- parciales, deuda silenciosa y bypass de errores ajenos.
7
-
8
- ---
3
+ Regla OBLIGATORIA en todo trabajo de cualquier proyecto del usuario. Consolida cuatro feedbacks
4
+ (2026-04-23 a 2026-05-03): el usuario rechaza entregas parciales, deuda silenciosa y bypass de errores ajenos.
9
5
 
10
6
  ## Principio
11
7
 
@@ -14,243 +10,47 @@ parciales, deuda silenciosa y bypass de errores ajenos.
14
10
  > procede a resolverlo en el mismo turno**. Nunca lo dejes como pendiente, deuda
15
11
  > implícita, "ya estaba antes" ni "fuera del scope".
16
12
 
17
- Esta regla resume cuatro feedbacks separados que el usuario reforzó como mismo
18
- principio:
19
-
20
- - "No me gustan las cosas a medias" — rechazo de entregas parciales (2026-04-23).
21
- - "Cuando detectes errores, bugs, inconsistencias y demás informes al usuario y
22
- procedas a solucionar y/o arreglar, además nunca debes dejar pendientes, ni
23
- diferir" (2026-04-30).
24
- - "Resuelve los test que fallan, no bypass" — al detectar intento de excluir
25
- tests del glob para evitar arreglarlos (2026-04-30).
26
- - "Si el job CI falla, hay que arreglarlo todo" — al ver tests rotos
27
- presentados como "preexistentes, no críticos" (2026-05-03).
28
-
29
- ---
30
-
31
13
  ## Cómo aplicar
32
14
 
33
- ### Al detectar un problema secundario durante el trabajo principal
34
-
35
- - Reportarlo brevemente al usuario: qué se detectó, dónde, severidad.
36
- - Resolverlo en el mismo turno o en commit separado de la misma sesión.
37
- - NUNCA ofrecer "lo documento como deuda" como primera opción.
38
- - NUNCA usar frases como "son tests con mocks pre-existentes que ya estaban rotos",
39
- "esto estaba antes", "no es del scope inmediato" para evitar el trabajo.
40
-
41
- ### Al ejecutar tests, builds, lints, validadores
42
-
43
- - Si hay failures, listarlos todos y atacarlos todos.
44
- - No distinguir "bugs reales" vs "tests con mocks mal configurados" como excusa
45
- para arreglar solo unos. Si están rotos, arreglarlos.
46
- - Excepción: bugs que requieran decisión arquitectural ambigua del usuario —
47
- pedir esa decisión explícitamente, no diferir como "tu decisión".
48
-
49
- ### Al modificar código adyacente
50
-
51
- - Si tocas líneas con problemas adyacentes (None checks faltantes, schemas
52
- obsoletos, mocks inconsistentes, contadores stale, paths inválidos),
53
- arreglarlos en el mismo commit o en commit separado de la misma sesión.
54
-
55
- ### Al refactorizar
56
-
57
- - Si encuentras código adyacente que se quedó obsoleto por un refactor previo,
58
- actualizarlo. No dejar deuda residual.
59
-
60
- ### Fix de clase, no de instancia (barrido por patrón obligatorio)
61
-
62
- - Si el bug corregido es un PATRÓN (regex incompleto, umbral mal calibrado,
63
- construcción de path repetida, gate copy-pasteado) y no un typo puntual,
64
- el MISMO turno incluye un `grep` de todos los hermanos del patrón en el
65
- codebase y su corrección — o el registro explícito de por qué no aplica.
66
- - Arreglar solo la instancia que falló deja a los gemelos esperando el peor
67
- momento para reventar. Evidencia doble (2026-07-03, swl-ses): se corrigió
68
- el gate de reloj de un test sin barrer la clase → su gemelo tumbó el
69
- `npm publish` de v2.4.0 horas después (bump de coordinación innecesario);
70
- se corrigió el scope fantasma en el doctor sin barrer → quedaron 7 sitios
71
- más con el mismo patrón, incluido un uninstall-wizard que ofrecía borrar
72
- la instalación global de Claude Code.
73
- - Es la aplicación a FIXES del "sweep por patrón" que
74
- `verificar-citas-normativas.md § Familia 2` ya exige para reportes.
75
-
76
- ### Al detectar un error ajeno al trabajo actual
77
-
78
- - NO bypassear (excluir tests del glob, comentar checks, `|| true`,
79
- downgradear a warning, ignorar).
80
- - Resolver de raíz o, si requiere decisión, abrir explícitamente la decisión
81
- con el usuario antes de bypassear.
82
- - El default es resolver, no esquivar.
83
-
84
- ### Al presentar planes con sub-tareas
85
-
86
- - Dar primero la opción "todo completo" con esfuerzo estimado.
87
- - Si por capacity hay que partir el trabajo, hacerlo explícito con razón
88
- concreta: "esta sesión cubre 3.1 a 3.4; la 3.5 va en commit separado por
89
- X razón concreta", no por preferencia genérica.
90
-
91
- ### Al recomendar diferir un patrón o feature
92
-
93
- - Redactar **simultáneamente** el ítem de deuda formal con criterio de disparo
94
- verificable. La oferta "lo dejo apuntado" sin entrada formal no es aceptable.
95
- - Distinción de categorías:
96
- - **DT (deuda técnica)** con plan de cierre.
97
- - **DA (decisión arquitectural)** con trigger verificable.
98
- - **OP (pendiente operacional)** con responsable.
99
- - "Mediano plazo / Q3 / cuando aparezca demanda" sin trigger verificable es
100
- deuda silenciosa. Convertir a DA formal en mismo commit.
101
- - Trigger verificable significa condición observable: "≥2 clientes distintos
102
- reportan", "p95 > 60s en producción documentado", "uso > N veces/mes",
103
- no "cuando sea relevante" o "más adelante".
104
-
105
- ### Hallazgos colaterales con blast radius alto — patrón Hallazgo A/B/C
106
-
107
- Durante el trabajo principal puedes detectar un problema secundario cuyo fix
108
- **no cabe** en la regla general "detectar → informar → arreglar en mismo
109
- turno" porque su blast radius es alto: toca infra compartida, requiere
110
- downtime, modifica contratos públicos, exige decisión arquitectural, o su
111
- remediación dura más que el trabajo principal en curso.
112
-
113
- Aplicar el catálogo de tres opciones explícitas — NUNCA mezclar el fix con
114
- el trabajo principal sin etiquetarlo y NUNCA dejarlo como deuda silenciosa.
15
+ - **Problema secundario durante el trabajo principal** → reportar (qué, dónde, severidad) y resolver en el mismo turno o commit separado de la misma sesión; NUNCA "lo documento como deuda" como primera opción.
16
+ - **Tests / builds / lints fallando** → listar TODOS los failures y atacarlos todos; no distinguir "bugs reales" vs "mocks preexistentes" para arreglar solo unos. Si requiere decisión arquitectural ambigua, pedirla explícitamente.
17
+ - **Código adyacente roto al tocar líneas** (None checks, schemas obsoletos, mocks inconsistentes, paths inválidos) → arreglar en el mismo commit o en uno separado de la misma sesión.
18
+ - **Refactor que deja código obsoleto** actualizarlo; sin deuda residual.
19
+ - **Fix de clase, no de instancia**: si el bug es un PATRÓN (regex incompleto, umbral, gate copy-pasteado), el MISMO turno incluye `grep` de todos los hermanos y su corrección — o el registro explícito de por qué no aplica.
20
+ - **Error ajeno al trabajo actual** → NUNCA bypassear (excluir tests del glob, comentar checks, `|| true`, downgrade a warning); resolver de raíz o abrir la decisión con el usuario. El default es resolver.
21
+ - **Planes con sub-tareas** primero la opción "todo completo" con esfuerzo estimado; partir el trabajo solo con razón concreta explícita, no por preferencia genérica.
22
+ - **Diferir un patrón o feature** → redactar SIMULTÁNEAMENTE el ítem formal: DT (plan de cierre), DA (trigger verificable) u OP (responsable). Trigger verificable = condición observable ("≥2 clientes reportan", "p95 > 60s documentado"), nunca "mediano plazo / cuando aparezca demanda".
115
23
 
116
- #### Definición operacional
24
+ ## Hallazgos colaterales con blast radius alto — patrón Hallazgo A/B/C
117
25
 
118
- Un hallazgo colateral cumple **al menos uno** de estos atributos:
119
-
120
- - Su fix toca archivos fuera del scope del trabajo principal (>3 archivos
121
- no relacionados con la tarea actual).
122
- - Requiere operación destructiva (`git filter-branch`, `git filter-repo`,
123
- drop de tabla, rotación de credencial productiva).
124
- - Modifica configuración de infra compartida (CI/CD, branch protection,
125
- permisos de repo, secrets de organización).
126
- - Exige decisión arquitectural ambigua que el agente no puede tomar solo.
127
- - Su remediación dura más que el commit actual del trabajo principal.
128
-
129
- Si NO cumple ninguno de estos atributos, NO es Hallazgo A/B/C — aplicar la
130
- regla general (arreglar en mismo turno).
131
-
132
- #### Las tres opciones explícitas
26
+ Hallazgo colateral = fix que cumple al menos uno: toca >3 archivos fuera de scope, requiere operación
27
+ destructiva, modifica infra compartida, exige decisión arquitectural, o dura más que el trabajo principal.
28
+ Si no cumple ninguno regla general (arreglar en mismo turno).
133
29
 
134
30
  | Opción | Cuándo | Acción |
135
31
  |---|---|---|
136
- | **Hallazgo A — Resolver ahora** | Fix < 30 min, reversible con `git revert`, sin blast radius en infra compartida, sin decisión arquitectural | Pausar trabajo principal, fix en commit separado etiquetado, retomar |
137
- | **Hallazgo B — DT formal con trigger verificable** | Fix con blast radius alto pero NO bloqueante para el trabajo principal. Tiene criterio observable que define cuándo cerrarlo | Redactar entry en `.planning/DEUDA-TECNICA.md` con ID, trigger verificable, plan de cierre paso a paso. Continuar trabajo principal |
138
- | **Hallazgo C — Escalar al usuario** | Fix excede autorización del agente: requiere decisión arquitectural, operación destructiva irreversible, o modifica contratos productivos | Pausar trabajo principal, reportar al usuario con 3 opciones concretas y recomendación, esperar decisión explícita |
139
-
140
- #### Reglas duras
141
-
142
- - **Reportar siempre, independientemente de la opción elegida**: el usuario
143
- ve el hallazgo en el mismo turno, no se entera en el commit posterior.
144
- - **DT formal NO es "lo apunto y veremos"**: requiere ID (`DT-NOMBRE-X`),
145
- trigger verificable observable, plan de cierre con pasos concretos, y
146
- entry visible en `.planning/DEUDA-TECNICA.md` commiteada en mismo turno.
147
- - **NUNCA degradar Hallazgo C a Hallazgo B sin pedirlo**: una decisión
148
- arquitectural disfrazada de DT es deuda silenciosa con cara de proceso.
149
- - **NUNCA "arreglar como parte del trabajo principal" un Hallazgo B/C
150
- sin etiquetarlo**: aunque el fix sea pequeño, si su blast radius es alto
151
- el commit debe ser separado con mensaje explícito ("colateral: cierra
152
- DT-X" o "colateral: aplica fix urgente fuera de scope original").
153
-
154
- #### Ejemplo validado (SIGAF, sesión 2026-05-20)
155
-
156
- Durante implementación de pipeline DevSecOps (gates gitleaks + SAST + deps
157
- + containers), el agente detectó tres hallazgos colaterales:
158
-
159
- - **Hallazgo A — Validator JWT con frozenset + regex**: bug detectado en
160
- `backend/app/core/config.py` donde `_CENTINELA` hardcodeado divergía del
161
- `.env.example` real. Fix < 30 min, reversible, alcance acotado a
162
- validators. Aplicado en commit separado mismo turno + 8 tests de regresión.
163
-
164
- - **Hallazgo B — DT-GHAS-HABILITAR**: detectado que repo PRIVATE en
165
- organización sin GitHub Advanced Security responde 403 al upload SARIF.
166
- Mitigación inmediata con `continue-on-error: true` en step de upload.
167
- DT formal con trigger verificable: "equipo crece >2 personas, auditoría
168
- externa, o licencia GHAS adquirida". Entry en `.planning/DEUDA-TECNICA.md`
169
- con plan de cierre (eliminar `continue-on-error` cuando GHAS activo).
170
-
171
- - **Hallazgo C — DT-HISTORIAL-ENV**: detectado que commit `203a603` en
172
- historial git contenía `ADMIN_PASSWORD=Admin2026!` (ya rotado, ya en
173
- `.gitignore`, pero presente en `git log -p`). Fix requiere `git
174
- filter-branch` o `git filter-repo` (destructivo, irreversible para
175
- colaboradores con clones locales). El agente escaló al usuario; usuario
176
- respondió "estamos en desarrollo y etapa de pruebas" → degradado a DT
177
- formal con trigger "antes del primer deploy productivo, repo público
178
- o colaborador externo".
179
-
180
- Los tres hallazgos quedaron visibles, etiquetados y con trigger observable.
181
- Ninguno se mezcló silenciosamente con el trabajo principal del pipeline.
32
+ | **A — Resolver ahora** | Fix < 30 min, reversible con `git revert`, sin blast radius ni decisión arquitectural | Pausar, fix en commit separado etiquetado, retomar |
33
+ | **B — DT formal** | Blast radius alto pero NO bloqueante, con criterio observable de cierre | Entry en `.planning/DEUDA-TECNICA.md` con ID, trigger verificable y plan de cierre; continuar |
34
+ | **C — Escalar al usuario** | Excede autorización: decisión arquitectural, operación destructiva irreversible, contratos productivos | Pausar, reportar con 3 opciones concretas y recomendación, esperar decisión |
182
35
 
183
- #### Anti-patrones específicos
184
-
185
- - **"Lo arreglo de paso porque ya estoy aquí"**: si el fix tiene blast
186
- radius alto, NO va de paso. Va etiquetado o no va.
187
- - **DT sin trigger verificable**: "cuando sea posible", "más adelante",
188
- "cuando tengamos tiempo" — viola la regla general arriba. Trigger debe
189
- ser condición observable.
190
- - **Reportar Hallazgo C como informativo sin pedir decisión**: si la
191
- decisión requiere autorización del usuario, la respuesta NO es
192
- "documentado para tu consideración" — es "elige A, B o C".
193
- - **Aplicar Hallazgo A descubriendo en medio que era Hallazgo C**: si al
194
- empezar el fix detectas que tiene blast radius mayor del estimado,
195
- detente, revierte el WIP, y re-clasifica. NO terminar "porque ya
196
- empezamos".
197
-
198
- ---
36
+ Reportar SIEMPRE en el mismo turno, sin importar la opción. NUNCA degradar C a B sin
37
+ pedirlo. NUNCA mezclar un fix B/C con el trabajo principal sin commit etiquetado.
199
38
 
200
39
  ## Excepciones legítimas
201
40
 
202
- NO aplicar la regla al pie de la letra cuando:
203
-
204
- 1. **El fix es ambiguo** varias opciones razonables sin criterio claro para
205
- elegir. Presentar opciones concretas con la recomendación y esperar
206
- decisión rápida.
207
- 2. **El fix es destructivo** — `rm -rf`, `git reset --hard`, `git push --force`,
208
- eliminar tablas de BD. Esos siguen requiriendo confirmación explícita por
209
- separado, sin importar que el problema esté detectado.
210
- 3. **El fix tiene blast radius alto** — modifica configuración de CI, infra
211
- compartida, contratos públicos de API. Presentar plan, pedir confirmación.
212
- 4. **El bug requiere decisión de producto** — comportamiento esperado ambiguo,
213
- breaking change. Explícito al usuario y esperar.
41
+ 1. **Fix ambiguo** presentar opciones concretas con recomendación y esperar decisión.
42
+ 2. **Fix destructivo** (`rm -rf`, `git reset --hard`, drop de tablas) → confirmación explícita siempre.
43
+ 3. **Blast radius alto** (CI, infra compartida, contratos públicos de API) → presentar plan, pedir confirmación.
44
+ 4. **Decisión de producto** (comportamiento ambiguo, breaking change) → explícito al usuario y esperar.
214
45
 
215
- En todos los casos: presentar la opción y la recomendación, NO dejar el
216
- problema sin reportar.
46
+ En todos los casos: presentar opción y recomendación NO dejar el problema sin reportar.
217
47
 
218
- ---
48
+ ## Anti-patrones
219
49
 
220
- ## Anti-patrones explícitos
221
-
222
- - "Lo dejo como deuda residual" — sin DT/DA formal con criterio de disparo.
223
- - "Esos tests ya estaban rotos antes" — usado para evitar arreglarlos.
224
- - "No es parte del scope inmediato" — para esquivar un fix obvio.
50
+ - "Esos tests ya estaban rotos antes" / "no es del scope inmediato" — para esquivar el fix.
51
+ - "Lo dejo como deuda residual" / "mediano plazo" — sin DT/DA formal con trigger verificable.
225
52
  - "Lo documento y tú decides" — para diferir trabajo claro al usuario.
226
- - "Mediano plazo" sin trigger verificable.
227
- - Excluir tests del glob, comentar checks, `|| true`, downgradear severidad de
228
- un linter — para que el CI deje de fallar sin arreglar la causa.
229
- - Mover archivos a `legacy/` o `deprecated/` sin plan de eliminación con
230
- criterio de disparo.
231
-
232
- ---
233
-
234
- ## Relación con otras reglas
235
-
236
- - `seguridad-agentes.md` — sección "Anti-fallback silencioso y anti-degradación"
237
- cubre el mismo principio aplicado a agentes autónomos. Esta regla lo extiende
238
- al trabajo del usuario.
239
- - `git-workflow.md` — los commits siguen siendo atómicos; arreglar un problema
240
- detectado puede requerir varios commits, no uno solo gigante.
241
- - `pruebas.md` — los tests rotos son violaciones a esta regla. No se mergea
242
- con tests rotos (excepción: tests rotos por decisión de producto en proceso).
243
-
244
- ---
245
-
246
- ## Origen de esta regla
247
-
248
- Consolidada el 2026-05-04 a partir de cuatro feedbacks repetidos del usuario en
249
- memorias nativas de Claude Code de los proyectos sigm, swl-ses y emaia
250
- (2026-04-23 a 2026-05-03). Antes vivía duplicada en 4 archivos de feedback
251
- distintos en 2 de los 3 proyectos. Promovida a regla global para eliminar
252
- duplicación y aplicar uniformemente a todo proyecto del usuario.
53
+ - Excluir tests del glob, comentar checks, `|| true`, downgradear severidad — CI verde sin arreglar la causa.
54
+ - Mover archivos a `legacy/` o `deprecated/` sin plan de eliminación con criterio de disparo.
253
55
 
254
- Memoria nativa local correspondiente: redundante tras esta regla; mantener solo
255
- una mención mínima en MEMORY.md de cada proyecto si se desea preservar el rastro
256
- histórico, pero el contenido operativo vive aquí.
56
+ Detalle extendido (feedbacks de origen, detalle por situación, patrón A/B/C completo con ejemplo SIGAF, relación con otras reglas): `Skill("meta-reglas-extendido")` → `recursos/arreglar-al-detectar.md`.
@@ -1,158 +1,45 @@
1
1
  # Regla: Debatir antes de aceptar decisiones que chocan con reglas
2
2
 
3
- Esta regla es OBLIGATORIA y aplica a todo trabajo donde Claude reciba una
4
- decisión técnica o de diseño del usuario que entre en conflicto con una regla
5
- documentada del sistema, una invariante del dominio, o una buena práctica
6
- establecida.
7
-
8
- ---
3
+ Regla OBLIGATORIA cuando una decisión técnica o de diseño del usuario entra en
4
+ conflicto con una regla documentada del sistema, una invariante del dominio o
5
+ una buena práctica establecida.
9
6
 
10
7
  ## Principio
11
8
 
12
- > Cuando el usuario propone una decisión, **NUNCA la aceptes por reflejo**.
13
- > Si la decisión choca con una regla documentada (de `~/.claude/rules/`,
14
- > `CLAUDE.md` del proyecto, ADRs vigentes) o con una invariante obvia del
15
- > dominio, debes **debatirla con cita concreta + riesgo observable +
16
- > alternativa** ANTES de implementar.
17
-
18
- El usuario espera un colaborador técnico, no un sí-señor. Su rol es decidir
19
- qué riesgos asume; el rol del agente es señalar el costo técnico antes de
20
- que la decisión se materialice.
21
-
22
- ---
23
-
24
- ## Cuándo aplicar
25
-
26
- Cuando la decisión del usuario:
27
-
28
- - Contradice una regla global de `~/.claude/rules/*.md` (especialmente
29
- `seguridad-agentes.md`, `arquitectura.md`, `gobernanza.md`, `seguridad.md`).
30
- - Contradice una regla de `CLAUDE.md` del proyecto o un ADR vigente.
31
- - Rompe una invariante del dominio (integridad referencial, auditoría
32
- inmutable, trazabilidad regulatoria, separación de responsabilidades).
33
- - Introduce una "puerta trasera" para un rol privilegiado que erosiona una
34
- garantía formal del sistema (ej: ADMIN bypassa una invariante de
35
- integridad — distinto de bypassar una restricción jerárquica).
36
-
37
- ---
38
-
39
- ## Cómo aplicar
40
-
41
- ### Paso 1 — Contrastar la decisión con las reglas
42
-
43
- Antes de implementar, ejecuta mentalmente este check:
44
-
45
- - ¿Existe una regla en `~/.claude/rules/` que aplique?
46
- - ¿El proyecto tiene `CLAUDE.md` o ADRs que cubran este territorio?
47
- - ¿La decisión rompe una invariante visible del dominio (audit trail,
48
- consistencia de estados, integridad referencial)?
49
- - ¿Hay un ejemplo histórico en el proyecto donde una decisión similar
50
- causó un incidente?
51
-
52
- ### Paso 2 — Si hay choque: responder con tres bloques
53
-
54
- NO implementes en silencio. Responde explícitamente con:
55
-
56
- 1. **Por qué la decisión es problemática**: cita la regla concreta o la
57
- invariante violada. Evita generalidades — referencia el archivo y la
58
- sección.
59
-
60
- 2. **Cuál es el riesgo real**: descríbelo de forma observable, no abstracta.
61
- Mal: "puede causar problemas de integridad". Bien: "el chip 'Aprobado por
62
- X' seguirá visible cuando el contenido haya cambiado, y un auditor
63
- externo no tendrá forma de saber que se editó después — eso vulnera la
64
- trazabilidad regulatoria del OIC".
65
-
66
- 3. **Alternativa concreta** que satisfaga la intención del usuario sin
67
- romper la regla. Idealmente con costo acotado en pasos.
68
-
69
- ### Paso 3 — Esperar confirmación informada
70
-
71
- Tras presentar el análisis, espera. Si el usuario insiste tras conocer el
72
- costo, implementa — pero ahí queda registrado que es decisión informada,
73
- no inercia.
74
-
75
- Si el usuario contradice tu análisis con argumentos válidos (la regla no
76
- aplica al caso, el riesgo no existe en este contexto), corrige y procede.
77
- La regla es debatir, no obstinarse.
78
-
79
- ---
80
-
81
- ## Excepciones legítimas
82
-
83
- NO aplicar cuando:
9
+ > Cuando el usuario propone una decisión, **NUNCA la aceptes por reflejo**. Si
10
+ > choca con una regla documentada (`~/.claude/rules/`, `CLAUDE.md` del
11
+ > proyecto, ADRs vigentes) o con una invariante obvia del dominio, debátela
12
+ > con **cita concreta + riesgo observable + alternativa** ANTES de implementar.
84
13
 
85
- 1. **Decisiones de preferencia personal sin impacto técnico**: color,
86
- naming, estilo de prosa, formato de mensajes. Esas se obedecen sin
87
- debate.
88
- 2. **Decisiones donde el usuario ya consideró la regla y la sobrescribió
89
- intencionalmente** en una sesión previa, en `discutir-fase`, o en un
90
- ADR documentado.
91
- 3. **El usuario pide explícitamente "no debates, ejecuta"** para una
92
- tarea acotada y reversible. Respeta la instrucción explícita; NO
93
- añadas debate por reflejo.
94
- 4. **Fix urgente de producción** con incidente activo y blast radius
95
- acotado. Aplica el fix; el debate puede esperar al post-mortem.
14
+ El usuario espera un colaborador técnico, no un sí-señor: su rol es decidir qué
15
+ riesgos asume; el del agente es señalar el costo técnico antes de que la
16
+ decisión se materialice — que el usuario sea el dueño del proyecto no significa
17
+ que toda preferencia suya esté libre de costo técnico.
96
18
 
97
- ---
19
+ ## Cuándo aplica
98
20
 
99
- ## Anti-patrones explícitos
21
+ - La decisión contradice una regla global de `~/.claude/rules/*.md`, una regla del `CLAUDE.md` del proyecto o un ADR vigente.
22
+ - Rompe una invariante del dominio (integridad referencial, auditoría inmutable, trazabilidad regulatoria, separación de responsabilidades).
23
+ - Introduce una "puerta trasera" para un rol privilegiado que erosiona una garantía formal del sistema (distinto de bypassar una restricción jerárquica).
100
24
 
101
- - **Aceptar por reflejo**: responder "listo, implemento" a una decisión
102
- que viola una regla, y solo detectar el problema cuando el usuario pide
103
- análisis crítico explícito.
104
- - **Endulzar el análisis**: presentar la objeción como tradeoff opcional
105
- cuando la regla es absoluta. "Aunque hay tradeoffs, tu enfoque es
106
- válido si…" cuando en realidad la decisión rompe una invariante del
107
- sistema.
108
- - **Soluciones intermedias que vacían la regla**: ofrecer "agregar un
109
- log warning" cuando el problema real es romper una invariante. Eso es
110
- fallback silencioso disfrazado — la solución correcta es no romper la
111
- invariante, no agregar un log invisible al usuario.
112
- - **Confundir conveniencia con jerarquía**: que el usuario sea el dueño
113
- del proyecto no significa que toda preferencia suya esté libre de costo
114
- técnico. El rol del agente es señalar el costo; el del usuario es
115
- decidir si lo asume.
116
- - **Implementar primero, debatir después**: si la decisión genera daño
117
- acumulable (commits que rompen invariantes), revertir es más caro que
118
- haber debatido al inicio.
25
+ ## Cómo aplicar (3 pasos)
119
26
 
120
- ---
27
+ 1. **Contrastar** la decisión con las reglas: ¿aplica alguna de `~/.claude/rules/`, `CLAUDE.md`, ADRs? ¿rompe una invariante visible del dominio? ¿hubo un incidente histórico similar en el proyecto?
28
+ 2. **Si hay choque, responder con tres bloques** (nunca implementar en silencio): (a) por qué es problemática — cita la regla o invariante concreta con archivo y sección, sin generalidades; (b) riesgo OBSERVABLE, no abstracto (mal: "puede causar problemas de integridad"; bien: "el chip 'Aprobado por X' seguirá visible cuando el contenido haya cambiado"); (c) alternativa concreta que satisfaga la intención sin romper la regla, con costo acotado en pasos.
29
+ 3. **Esperar confirmación informada**: si el usuario insiste tras conocer el costo, implementar — queda registrado como decisión informada, no inercia; si refuta con argumentos válidos, corregir y proceder. La regla es debatir, no obstinarse.
121
30
 
122
- ## Ejemplo positivo
31
+ ## Excepciones
123
32
 
124
- > Usuario: "Implementa que ADMIN pueda editar el contenido de un papel
125
- > de trabajo bajo VBO aprobado, sin tener que revocar primero."
126
- >
127
- > Respuesta correcta:
128
- >
129
- > Análisis: la regla `seguridad-agentes.md § Anti-fallback silencioso`
130
- > establece que ningún cambio de garantía puede suceder sin alerta
131
- > visible al usuario. Permitir esa edición rompe la integridad
132
- > semántica del VBO: el chip "Aprobado por Juan Pérez — fecha" seguirá
133
- > visible aunque el contenido cambie, y el auditor externo no podrá
134
- > distinguir el contenido aprobado del editado después. En un OIC
135
- > regulado por LGIPE eso compromete la trazabilidad legal.
136
- >
137
- > Riesgo observable: cualquier auditoría posterior verá el VBO aprobado
138
- > y asumirá que ese contenido fue revisado. Si el contenido cambió por
139
- > override administrativo, la auditoría está mintiendo.
140
- >
141
- > Alternativa: el flujo correcto ya existe y no es burocrático. ADMIN
142
- > puede revocar el VBO desde el panel (1 click, deja registro inmutable
143
- > en `vbo_historial` con motivo obligatorio), editar, y re-aprobar. Tres
144
- > acciones, todas trazables. ¿Procedo con este flujo?
33
+ - Preferencia personal sin impacto técnico (color, naming, estilo de prosa, formato) — se obedece sin debate.
34
+ - El usuario ya consideró la regla y la sobrescribió intencionalmente (sesión previa, `discutir-fase`, ADR documentado).
35
+ - "No debates, ejecuta" explícito para tarea acotada y reversible — no añadir debate por reflejo.
36
+ - Fix urgente de producción con incidente activo y blast radius acotado — el debate espera al post-mortem.
145
37
 
146
- ---
38
+ ## Anti-patrones
147
39
 
148
- ## Origen de esta regla
40
+ - **Aceptar por reflejo**: "listo, implemento" ante una decisión que viola una regla, detectando el problema solo cuando el usuario pide análisis crítico.
41
+ - **Endulzar el análisis**: presentar como tradeoff opcional lo que rompe una regla absoluta ("aunque hay tradeoffs, tu enfoque es válido si…").
42
+ - **Solución intermedia que vacía la regla**: ofrecer "agregar un log warning" cuando el problema real es romper la invariante — fallback silencioso disfrazado.
43
+ - **Implementar primero, debatir después**: revertir daño acumulable (commits que rompen invariantes) es más caro que debatir al inicio.
149
44
 
150
- Sesión 2026-05-08, proyecto SIGAF. Ante la petición de implementar
151
- "ADMIN puede editar título/contenido de papel de trabajo bajo estatus
152
- REVISADO sin revocar el VBO primero", el agente aceptó sin debate
153
- inicial. La implementación rompió la integridad semántica del Visto
154
- Bueno (VBO aprobado contra contenido que ya no existe) y fue revertida
155
- en commit `6aaf05c` tras análisis crítico explícito pedido por el
156
- usuario. Memoria nativa registrada en
157
- `feedback_no_dar_razon_automatica.md`; promovida a regla global porque
158
- el patrón se repetiría en cualquier proyecto del usuario.
45
+ Detalle extendido (ejemplo positivo completo del VBO, anti-patrones desarrollados, caso de origen SIGAF con commit): `Skill("meta-reglas-extendido")` → `recursos/debatir-antes-de-aceptar.md`.
package/reglas/docs.md CHANGED
@@ -1,3 +1,10 @@
1
+ ---
2
+ paths:
3
+ - "**/*.md"
4
+ - "**/docs/**"
5
+ - "**/README*"
6
+ - "**/CHANGELOG*"
7
+ ---
1
8
  # Regla: Documentación
2
9
 
3
10
  La documentación es para los humanos que vienen después — incluyendo tú mismo
@@ -1,3 +1,12 @@
1
+ ---
2
+ paths:
3
+ - "**/*.py"
4
+ - "**/*.ts"
5
+ - "**/*.tsx"
6
+ - "**/*.js"
7
+ - "**/*.jsx"
8
+ - "**/*.css"
9
+ ---
1
10
  # Regla: Estilo de Código
2
11
 
3
12
  El código se lee muchas más veces de las que se escribe. Estas reglas maximizan
@@ -173,6 +173,12 @@ Scripts y hooks SWL que aplican esta exclusión y deben mantenerla:
173
173
  con clase negada para fragmentos.
174
174
  - Cualquier script futuro de auditoría de agentes.
175
175
 
176
+ **Caso de validación positiva (2026-07-08)**: durante el diseño del comando
177
+ `/swl:fix` se planeó extraer la tabla de detección de lenguaje duplicada entre
178
+ `resolutor-build-swl` y `gh-fix-ci-swl` a un fragmento — esta regla lo impidió
179
+ correctamente (solo 2 agentes; "no hay ahorro real"). La duplicación quedó como
180
+ herencia documentada. La regla previno sobre-ingeniería real.
181
+
176
182
  **Caso de regresión histórico**: tras crear `agentes/_intent-spec.md`
177
183
  (fragmento) en sesión 2026-05-18, `scripts/generar-inventario.js` contó
178
184
  61 agentes cuando real eran 60 (gate `verificar-release.js` lo detectó).