@saulwade/swl-ses 2.4.3 → 2.5.2

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 (200) 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 +1043 -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 +101 -0
  161. package/scripts/field-report.js +18 -2
  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/instalar-git-hook.js +8 -1
  167. package/scripts/lib/configurar-ci.js +10 -3
  168. package/scripts/lib/diary-entry.js +3 -1
  169. package/scripts/lib/drift-detector.js +1 -1
  170. package/scripts/lib/evidencia-valor.js +228 -0
  171. package/scripts/lib/expandir-targets.js +71 -71
  172. package/scripts/lib/frontmatter-md.js +63 -0
  173. package/scripts/lib/parsear-opciones.js +2 -0
  174. package/scripts/lib/prune-componentes.js +180 -0
  175. package/scripts/lib/reglas-globales-conocidas.json +16 -2
  176. package/scripts/lib/scoring-instintos.js +2 -2
  177. package/scripts/lib/toml-merge.js +204 -204
  178. package/scripts/lib/transformadores/claude.js +1 -1
  179. package/scripts/lib/transformadores/codex.js +1 -1
  180. package/scripts/lib/transformadores/copilot.js +1 -1
  181. package/scripts/lib/transformadores/cursor.js +1 -1
  182. package/scripts/lib/transformadores/gemini.js +22 -2
  183. package/scripts/lib/transformadores/opencode.js +1 -1
  184. package/scripts/mcp-server/auth.js +105 -105
  185. package/scripts/mcp-server/cache.js +106 -106
  186. package/scripts/prune.js +102 -0
  187. package/scripts/publicar.js +18 -2
  188. package/scripts/tui/index.js +10 -1
  189. package/scripts/tui/pantallas/inspect.js +175 -175
  190. package/scripts/tui/pantallas/install-wizard.js +21 -8
  191. package/scripts/tui/pantallas/uninstall-wizard.js +210 -210
  192. package/scripts/tui/pantallas/update-wizard.js +234 -234
  193. package/scripts/tui/pantallas/welcome.js +188 -189
  194. package/habilidades/paid-media-tracking/SKILL.md +0 -269
  195. package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +0 -220
  196. package/habilidades/paid-media-tracking/recursos/google-ads-api.md +0 -215
  197. package/habilidades/tracking-measurement/SKILL.md +0 -239
  198. package/habilidades/tracking-measurement/recursos/consent-mode.md +0 -231
  199. package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +0 -216
  200. package/habilidades/tracking-measurement/recursos/meta-capi.md +0 -262
@@ -1,250 +1,56 @@
1
1
  # Regla: Consolidación de memoria — dónde va cada dato
2
2
 
3
- Esta regla es **OBLIGATORIA** para todos los agentes, skills y comandos que
4
- escriben conocimiento persistente del sistema. Resuelve el problema de
5
- memoria fragmentada: SWL tiene 5 mecanismos de almacenamiento y sin una
6
- regla clara, un mismo dato puede terminar en el lugar incorrecto o duplicado.
7
-
8
- ---
3
+ OBLIGATORIA para todo agente, skill o comando que escribe conocimiento persistente.
4
+ SWL tiene 5 canales de memoria; sin asignación clara, un dato termina en el canal
5
+ incorrecto o duplicado.
9
6
 
10
7
  ## Los 5 canales de memoria
11
8
 
12
- | # | Canal | Formato | Fuente de verdad de |
13
- |---|-------|---------|---------------------|
14
- | 1 | **Memoria nativa de Claude Code** (`~/.claude/projects/.../memory/`) | Archivos `.md` con frontmatter `user`/`feedback`/`project`/`reference` | Perfil general del usuario y del proyecto, auto-gestionado por el harness |
15
- | 2 | **`.planning/APRENDIZAJES.md`** | Markdown con entradas `### [YYYY-MM-DD] Título` agrupadas por sección | Conocimiento del dominio (anti-patrones, patrones, decisiones, gotchas) |
16
- | 3 | **`instintos/proyecto.yaml` / `global.yaml` / `perfil-usuario.yaml`** | YAML estructurado con confidence, scope, evidence_count | Patrones aprendidos inductivamente, con promoción/degradación |
17
- | 4 | **`.planning/sessions/search-index.json`** | Índice FTS de sesiones pasadas | Búsqueda histórica de trabajo (qué se hizo, cuándo) |
18
- | 5 | **`.planning/evolution/*`** | JSONL (nudges, agentes) + JSON (métricas, alertas, evoluciones) | Estado del ciclo de auto-evolución |
19
-
20
- ---
21
-
22
- ## Eje cognitivo de memoria (semantic | episodic | procedural)
23
-
24
- Los 5 canales de arriba clasifican el conocimiento por **dónde se almacena**. El
25
- eje cognitivo lo clasifica por **qué tipo de memoria es** — y es **ORTOGONAL**: un
26
- dato vive en exactamente un canal (regla de no-duplicación abajo) y PUEDE
27
- etiquetarse con exactamente un tipo cognitivo. No reemplaza a los canales; los
28
- enriquece para mejorar la relevancia del recall.
29
-
30
- Origen: análisis "Self-Learning for Agents" (3 capas) —
31
- `.planning/knowledge/outputs/analisis-self-learning-agents-3-capas-2026-06-27.md`.
32
- Un agente que se auto-mejora necesita las tres clases; la mayoría de los sistemas
33
- solo tiene `semantic`.
34
-
35
- | Tipo | Qué es | Ejemplo | Cuándo usarlo |
36
- |------|--------|---------|---------------|
37
- | **semantic** | Hechos, decisiones, vocabulario, gotchas-como-hecho | "El proyecto usa repository pattern"; "la API de CFDI devuelve 200 en errores" | Conocimiento estable que se consulta como referencia |
38
- | **episodic** | Experiencia pasada de una sesión concreta (qué pasó, cuándo) | "En la sesión X el revert del commit Y resolvió el bug Z" | Recordar un caso vivido para no repetir el camino |
39
- | **procedural** | Cómo manejar un caso (cómo hacer / qué evitar) | "Paralelizar agentes solo sin dependencias de datos"; "no usar `display:initial` para re-mostrar celdas" | Guía de acción ante una situación recurrente |
40
-
41
- ### Dónde se materializa
42
-
43
- - **instintos** (`schemas/instinct.schema.json`): campo OPCIONAL `tipo_memoria`
44
- (enum `semantic|episodic|procedural`). Backward-compatible: instintos sin el
45
- campo siguen válidos. `scripts/bootstrap-instintos.js` lo infiere por sección de
46
- origen (heurístico declarado, no autoritativo):
47
- - `decisión` / `arquitectura` / `gotcha` / `regla-proyecto` → **semantic**
48
- - `patrón` / `anti-patrón` → **procedural**
49
- - **episodic** NO se infiere del bootstrap (nace de registros de sesión, canal 4,
50
- no de APRENDIZAJES).
51
- - **APRENDIZAJES.md** (canal 2): convención OPCIONAL — una entrada puede anotar
52
- `tipo_memoria:` en su cuerpo cuando el tipo no sea evidente por la sección.
53
-
54
- ### Anti-patrones del eje cognitivo
55
-
56
- - Tratar el tipo cognitivo como un sexto canal de almacenamiento (no lo es: es una
57
- etiqueta ortogonal sobre el dato que ya vive en su canal).
58
- - Forzar `episodic` en un instinto bootstrapeado de APRENDIZAJES (episodic viene de
59
- sesiones, no de conocimiento de dominio destilado).
60
-
61
- ---
62
-
63
- ## Regla de asignación — dónde va CADA tipo de dato
64
-
65
- ### A. Información del usuario
66
-
67
- | Tipo de dato | Canal correcto | NO va a |
68
- |---|---|---|
69
- | Rol profesional, años de experiencia | 1 (memoria `user`) + 3 (perfil-usuario.yaml) | APRENDIZAJES, sessions, proyecto.yaml |
70
- | Stack preferido del usuario | 3 (perfil-usuario.yaml) | APRENDIZAJES |
71
- | Corrección explícita del usuario ("prefiero X", "nunca Y") | 1 (memoria `feedback`) + 3 (perfil-usuario.yaml vía perfilador-usuario-swl) | APRENDIZAJES |
72
- | Preferencia de idioma, formalidad, longitud | 3 (perfil-usuario.yaml) | — |
73
- | Límites explícitos ("no guardes X") | 3 (perfil-usuario.yaml `limites_explicitos`) | — |
74
-
75
- ### B. Conocimiento del dominio (aplicable al proyecto o transversal)
76
-
77
- | Tipo de dato | Canal correcto | NO va a |
9
+ | # | Canal | Fuente de verdad de |
78
10
  |---|---|---|
79
- | Anti-patrón descubierto (ej: bug recurrente) | 2 (APRENDIZAJES.md sección "Anti-patrones") | perfil-usuario, instintos directamente |
80
- | Patrón exitoso reutilizable | 2 (APRENDIZAJES.md) eventual skill nuevo (tipo C) | perfil-usuario |
81
- | Decisión de arquitectura tomada | 2 (APRENDIZAJES.md sección "Decisiones") + eventualmente CLAUDE.md | perfil-usuario, instintos sin consolidar primero |
82
- | Gotcha específico de una librería | 2 (APRENDIZAJES.md) o skill existente | perfil-usuario |
83
-
84
- ### C. Estado del sistema y observabilidad
85
-
86
- | Tipo de dato | Canal correcto |
87
- |---|---|
88
- | Nudge emitido por un hook | 5 (`.planning/evolution/nudges.jsonl`) |
89
- | Evento de subagente terminado | 5 (`.planning/auto-evolution/agentes.jsonl`) |
90
- | Evolución aplicada/revertida a skill | 5 (`.planning/evolution/evoluciones.jsonl`) |
91
- | Alerta persistente (nudges ignorados) | 5 (`.planning/evolution/alertas-persistentes.json`) |
92
- | Métricas agregadas (health score) | 5 (`.planning/evolution/metricas.json`) |
93
- | Traza de ejecución de agente | `.planning/traces/` (OTLP-lite) |
94
- | Audit trail inmutable | `.planning/audit.jsonl` + Merkle |
11
+ | 1 | Memoria nativa de Claude Code (`~/.claude/projects/.../memory/`, frontmatter `user`/`feedback`/`project`/`reference`) | Perfil del usuario y del proyecto, auto-gestionado por el harness |
12
+ | 2 | `.planning/APRENDIZAJES.md` (entradas `### [YYYY-MM-DD]` por sección) | Conocimiento del dominio: anti-patrones, patrones, decisiones, gotchas |
13
+ | 3 | `instintos/proyecto.yaml` / `global.yaml` / `perfil-usuario.yaml` (YAML con confidence) | Patrones aprendidos inductivamente, con promoción/degradación |
14
+ | 4 | `.planning/sessions/search-index.json` (índice FTS) | Búsqueda histórica de trabajo (qué se hizo, cuándo) |
15
+ | 5 | `.planning/evolution/*` (JSONL + JSON) | Estado del ciclo de auto-evolución (nudges, métricas, alertas, evoluciones) |
95
16
 
96
- ### D. Patrones consolidados (inductivos, con confidence)
17
+ ## Regla de oro de asignación
97
18
 
98
- | Tipo de dato | Canal correcto |
99
- |---|---|
100
- | Patrón observado ≥1 vez con confidence < 0.5 | 3 (instintos/proyecto.yaml como draft) |
101
- | Patrón consolidado (confidence 0.5, evidence_count3) | 3 (instintos/proyecto.yaml activo) |
102
- | Patrón validado cross-proyecto (confidence > 0.8) | 3 (instintos/global.yaml tras promoción) |
103
- | Patrón contradicho (degradado ≥3 veces) | 3 (instintos/proyecto.yaml status `degraded`) o borrado |
104
-
105
- ### E. Búsqueda histórica
106
-
107
- | Tipo de dato | Canal correcto |
108
- |---|---|
109
- | "¿Qué hicimos la semana pasada en X?" | 4 (sessions/search-index.json) — vía `habilidades/memoria-busqueda` |
110
- | Sesión completa archivada | `.planning/sessions/*.json` |
111
-
112
- ---
19
+ - **Información del usuario** (rol, stack, preferencias, límites, corrección explícita "prefiero X") → 3 (`perfil-usuario.yaml`); las correcciones también a 1 (memoria `feedback`). NUNCA a APRENDIZAJES.
20
+ - **Conocimiento del dominio** (anti-patrón, patrón reutilizable, decisión, gotcha de librería) → 2 (APRENDIZAJES.md). NUNCA al perfil ni a instintos sin consolidar primero vía `/swl:aprender`.
21
+ - **Estado del sistema / métricas / telemetría** 5 (`.planning/evolution/*`); trazas a `.planning/traces/`, audit trail inmutable a `.planning/audit.jsonl`.
22
+ - **Patrón inductivo con confidence** 3 (draft <0.5 en proyecto.yaml; activo con 0.5 y evidence 3; a global.yaml SOLO con confidence >0.8 validado cross-proyecto; contradicho ≥3 veces → `degraded` o borrado).
23
+ - **Búsqueda histórica** ("¿qué hicimos en X?") 4, vía `habilidades/memoria-busqueda`.
24
+ - Eje cognitivo (`semantic|episodic|procedural`): etiqueta ORTOGONAL opcional sobre el dato en su canal — NO es un sexto canal; `episodic` nace de sesiones, no del bootstrap de APRENDIZAJES.
113
25
 
114
26
  ## Precedencia en caso de conflicto
115
27
 
116
- Si un mismo dato aparece en múltiples canales, la prioridad de verdad es:
117
-
118
- ```
119
- CLAUDE.md (regla explícita)
120
- > Memoria nativa tipo feedback del usuario (corrección explícita)
121
- > instintos con confidence ≥ 0.9
122
- > APRENDIZAJES.md (si es tipo Decisión)
123
- > perfil-usuario.yaml
124
- > instintos con confidence < 0.9
125
- > sesiones pasadas
126
- ```
127
-
128
- ---
28
+ `CLAUDE.md` > memoria nativa `feedback` > instintos con confidence ≥0.9 > APRENDIZAJES (tipo Decisión) > `perfil-usuario.yaml` > instintos <0.9 > sesiones pasadas.
129
29
 
130
30
  ## Reglas de no-duplicación
131
31
 
132
- 1. **Un dato vive en exactamente un canal** (salvo referencias explícitas).
133
- Si necesitas citarlo desde otro, usa un puntero/path, no copies el contenido.
134
-
135
- 2. **perfil-usuario.yaml NUNCA duplica APRENDIZAJES.md.** Una corrección del
136
- usuario va al perfil; un anti-patrón técnico va a APRENDIZAJES.
137
-
138
- 3. **instintos/proyecto.yaml bootstrap desde APRENDIZAJES.md** es válido
139
- (hace `scripts/bootstrap-instintos.js`), pero la fuente de verdad post-bootstrap
140
- es `instintos/proyecto.yaml`. Nuevos APRENDIZAJES no deben entrar a instintos
141
- automáticamente — primero se promueven con `/swl:aprender` (tipo C).
142
-
143
- 4. **La memoria nativa del harness no se sobreescribe** con contenido de SWL.
144
- El flujo es al revés: señales del usuario pueden alimentar ambos canales
145
- (native + perfil SWL), pero ninguno es copia del otro.
146
-
147
- 5. **Cuando detectes duplicación cross-canal**, registrarla como anti-patrón
148
- en APRENDIZAJES.md y corregir con `scripts/validar-memoria.js`.
149
-
150
- ---
151
-
152
- ## Validación automática
153
-
154
- El script `scripts/validar-memoria.js` detecta duplicaciones y violaciones
155
- de esta regla. Se ejecuta:
156
-
157
- - Manualmente: `node scripts/validar-memoria.js`
158
- - Automáticamente dentro de `scripts/validar.js` (parte del pipeline CI)
159
-
160
- Reporta: duplicación cross-canal, canal incorrecto para un tipo de dato
161
- conocido, datos en canales deprecados.
162
-
163
- ---
164
-
165
- ## Anti-patrones a detectar
166
-
167
- - **Corrección del usuario escrita a APRENDIZAJES.md** → debe ir al perfil
168
- - **Anti-patrón técnico escrito al perfil del usuario** → debe ir a APRENDIZAJES
169
- - **Métrica persistida en APRENDIZAJES.md** → debe ir a `.planning/evolution/`
170
- - **Secreto/credencial en cualquier canal** → bloqueo inmediato (`privacy-memoria`)
171
- - **Dato duplicado en proyecto.yaml y global.yaml** → uno debe borrarse
172
- (promover a global SOLO cuando confidence > 0.8 Y validado cross-proyecto)
173
- - **Instinto activo con `last_validated` antiguo (>180 días) sin feedback**
174
- → el `effective_confidence` ya está bajo `0.25`. Re-validar manualmente o
175
- marcar `status: archived`.
176
-
177
- ---
178
-
179
- ## Scoring de instintos: decay exponencial + maturity
180
-
181
- El campo `confidence` en instintos es **estático** (asignado al crear). El valor
182
- **efectivo** se computa dinámicamente con dos factores:
183
-
184
- 1. **Decay temporal**: la confianza decae exponencialmente desde `last_validated_at`.
185
- Half-life por defecto: 90 días. Tras 1 half-life → confianza × 0.5; tras 2 → × 0.25.
186
- 2. **Penalización por feedback dañino**: si `harmful_count / (helpful_count + harmful_count) > 0.3`
187
- con al menos 3 eventos, el instinto se propone para `status: degraded`.
188
-
189
- Implementación pura en `scripts/lib/scoring-instintos.js`:
190
-
191
- ```js
192
- const { effectiveConfidence, maturityState, applyFeedback } = require('./scoring-instintos');
193
-
194
- // Lectura
195
- const eff = effectiveConfidence(instinto, new Date());
196
- const maturity = maturityState(instinto, new Date());
197
- // → 'candidate' | 'established' | 'proven' | 'deprecated'
198
-
199
- // Escritura (pure)
200
- const conFeedback = applyFeedback(instinto, 'helpful');
201
- ```
202
-
203
- **Cuándo recomputar**:
204
- - `/swl:status salud` reporta instintos con `effective_confidence < 0.3` para revisión.
205
- - `hooks/degradacion-instintos.js` puede marcar `status_proposed: degraded`
206
- cuando `shouldAutoDeprecate(instinto)` devuelve `true`.
207
- - `bootstrap-instintos.js` emite los nuevos instintos con `decay_half_life_days: 90`,
208
- `helpful_count: 0`, `harmful_count: 0` por defecto.
209
-
210
- **Backward compat**: instintos antiguos sin los campos nuevos siguen siendo
211
- válidos. `effectiveConfidence` cae a `confidence * decay` cuando no hay feedback,
212
- y `last_validated` (sin `_at`) se usa como fallback.
213
-
214
- ---
215
-
216
- ## Source tracing en instintos y APRENDIZAJES
217
-
218
- Cada instinto puede declarar la **evidencia que lo respalda** mediante:
219
-
220
- - `source_sessions: ["sess-abc", "sess-def"]` — sesiones que lo generaron o validaron
221
- - `source_agents: ["orquestador-swl", "implementador-swl"]` — agentes que lo aplicaron exitosamente
222
- - `evidence_count: N` — total numérico (compatibilidad legacy)
32
+ - Un dato vive en exactamente UN canal; para citarlo desde otro, puntero/path — nunca copia.
33
+ - `perfil-usuario.yaml` NUNCA duplica APRENDIZAJES: corrección del usuario perfil; anti-patrón técnico → APRENDIZAJES.
34
+ - El bootstrap APRENDIZAJES→instintos (`scripts/bootstrap-instintos.js`) es válido; post-bootstrap la fuente de verdad es `instintos/proyecto.yaml`. La memoria nativa del harness no se sobreescribe con contenido SWL.
35
+ - Duplicación cross-canal detectada registrarla como anti-patrón en APRENDIZAJES y corregir con `scripts/validar-memoria.js` (corre también dentro de `scripts/validar.js` en CI).
223
36
 
224
- **Reglas**:
37
+ ## Scoring de instintos
225
38
 
226
- 1. Un instinto con `confidence 0.7` debe tener al menos 1 entrada en
227
- `source_sessions` o `source_agents` para justificar la confianza.
228
- 2. Para promover de `instintos/proyecto.yaml` a `instintos/global.yaml`, el
229
- instinto debe tener `source_agents.length ≥ 2` o `source_sessions.length ≥ 3`
230
- — un solo punto de evidencia no es suficiente para impacto cross-proyecto.
231
- 3. El campo `source_sessions` referencia IDs de `.planning/sessions/`. No copiar
232
- el contenido — usar el ID como puntero.
233
- 4. `addSource()` en `scripts/lib/scoring-instintos.js` mantiene unicidad
234
- automática. NUNCA editar manualmente con duplicados.
39
+ - `confidence` es estático; el valor efectivo aplica decay exponencial (half-life 90 días desde `last_validated_at`) y degradación por feedback dañino (`harmful/(helpful+harmful) > 0.3` con ≥3 eventos proponer `degraded`). Implementación pura: `scripts/lib/scoring-instintos.js`.
40
+ - Source tracing: instinto con confidence ≥0.7 exige ≥1 entrada en `source_sessions`/`source_agents`; promover a global exige `source_agents ≥ 2` o `source_sessions 3`; sesiones referenciadas por ID (puntero), nunca copiadas.
235
41
 
236
- **Anti-patrón**: instinto con `evidence_count: 10` pero `source_sessions: []` y
237
- `source_agents: []` — la cifra es opaca, no se puede auditar de dónde viene.
42
+ ## Anti-patrones
238
43
 
239
- ---
44
+ - Corrección del usuario en APRENDIZAJES.md → debe ir al perfil.
45
+ - Anti-patrón técnico en el perfil del usuario → debe ir a APRENDIZAJES.
46
+ - Métrica persistida en APRENDIZAJES.md → debe ir a `.planning/evolution/`.
47
+ - Secreto/credencial en cualquier canal → bloqueo inmediato (`privacy-memoria`).
48
+ - Dato duplicado en proyecto.yaml y global.yaml → uno debe borrarse.
49
+ - Instinto sin feedback con `last_validated` >180 días (effective ya <0.25) → re-validar o `status: archived`.
240
50
 
241
51
  ## Checklist antes de escribir a memoria
242
52
 
243
- Antes de que cualquier agente, skill o hook persista un dato, debe responder:
53
+ ¿Es dato de usuario, dominio, estado del sistema, patrón inductivo o búsqueda histórica? identifica el canal correcto según la asignación de arriba.
54
+ ¿Ya existe en otro canal? → actualiza ese, no dupliques. ¿Contiene PII/secretos? → cargar `privacy-memoria`. ¿Viene de texto del usuario? → escanear con `prompt-injection-scanner`.
244
55
 
245
- 1. ¿Es información del **usuario**, del **dominio**, de **estado del sistema**,
246
- un **patrón inductivo**, o **búsqueda histórica**? → identifica canal A-E.
247
- 2. ¿El canal elegido es el correcto según la tabla de asignación?
248
- 3. ¿El dato ya existe en otro canal? Si sí, actualiza ese, no dupliques.
249
- 4. ¿El dato contiene PII, secretos o contenido sensible? → cargar `privacy-memoria`.
250
- 5. ¿El dato viene de texto del usuario? → escanear con `prompt-injection-scanner`.
56
+ Detalle extendido (tablas de asignación A-E completas, eje cognitivo desarrollado, scoring con código, source tracing, validación automática): `Skill("meta-reglas-extendido")` → `recursos/memoria-consolidada.md`.
@@ -1,3 +1,11 @@
1
+ ---
2
+ paths:
3
+ - "**/*.py"
4
+ - "**/*.ts"
5
+ - "**/*.tsx"
6
+ - "**/*.js"
7
+ - "**/*.sql"
8
+ ---
1
9
  # Regla: Performance
2
10
 
3
11
  La optimización prematura es la raíz de todos los males — Donald Knuth.
package/reglas/pruebas.md CHANGED
@@ -1,3 +1,15 @@
1
+ ---
2
+ paths:
3
+ - "**/*.py"
4
+ - "**/*.ts"
5
+ - "**/*.tsx"
6
+ - "**/*.js"
7
+ - "**/tests/**"
8
+ - "**/test/**"
9
+ - "**/__tests__/**"
10
+ - "**/*.test.*"
11
+ - "**/*.spec.*"
12
+ ---
1
13
  # Regla: Pruebas
2
14
 
3
15
  Los tests no son opcionales. Son parte de la definición de "terminado" para