Sistema de Memoria Engram
Carga esta skill cuando estes por guardar o consultar memoria en Engram.
[REGLAS] REGLA DE ORO
Guardá SIN PREGUNTAR. No le preguntes al usuario "¿guardo esto?". Guardalo. Siempre.
Si no estás seguro del proyecto, pensalo 2 segundos. Si aún así no sabés, preguntá. Pero no preguntes "¿lo guardo?", preguntá "¿en qué proyecto?".
AUTO-READ (OBLIGATORIO al iniciar sesión)
Antes de cualquier acción, ejecutá en paralelo:
mem_context→ últimas sesiones, contexto frescomem_search topic_key:preference/*scope:personal → preferencias del usermem_search topic_key:skill/mini/*→ mini-skills del proyectomem_search topic_key:pattern/*→ patrones del proyecto
Propósito: que cada sesión arranque sabiendo quién es el user, qué le gusta, qué mini-skills están disponibles, y qué patrones aplican.
Jerarquía de topic_key (carpetas virtuales)
topic_key = <area>/<subarea>
| Carpeta | Para qué | Ejemplo |
|---|---|---|
architecture/infra |
Servidores, redes, Tailscale, VPNs | architecture/infra |
architecture/data |
Pipelines, ETL, DB schema | architecture/data |
architecture/frontend |
Componentes, estado, routing | architecture/frontend |
architecture/system |
Ecosistema, agentes, skills, SDD | architecture/system |
architecture/database |
SQL, esquemas, migraciones | architecture/database |
bugfix/python |
Errores en código Python | bugfix/python |
bugfix/infra |
Errores de infraestructura | bugfix/infra |
bugfix/config |
Errores de configuración | bugfix/config |
bugfix/tool |
Errores de herramientas/MCPs | bugfix/tool |
pattern/python |
Patrones de Python | pattern/python |
pattern/git |
Patrones de git y PRs | pattern/git |
pattern/workflow |
Patrones de flujo de trabajo | pattern/workflow |
pattern/architecture |
Patrones arquitectónicos | pattern/architecture |
skill/mini/<name> |
Mini-skills (micro-patrones reutilizables) | skill/mini/commit-format |
discovery/tool |
Descubrimientos sobre herramientas | discovery/tool |
discovery/workflow |
Descubrimientos sobre procesos | discovery/workflow |
discovery/ecosystem |
Descubrimientos sobre el ecosistema | discovery/ecosystem |
config/mcp |
Configuraciones de MCPs | config/mcp |
config/environment |
Variables de entorno, setup | config/environment |
config/tool |
Configuraciones de herramientas | config/tool |
config/system |
Config del ecosistema | config/system |
decision/architecture |
Decisiones arquitectónicas | decision/architecture |
decision/tool |
Decisiones sobre herramientas | decision/tool |
decision/workflow |
Decisiones sobre flujo | decision/workflow |
learning/language |
Aprendizaje de lenguajes | learning/language |
learning/tool |
Aprendizaje de herramientas | learning/tool |
learning/domain |
Aprendizaje de dominios | learning/domain |
preference/workflow |
Cómo le gusta trabajar al usuario | preference/workflow |
preference/tech-stack |
Tecnologías que prefiere | preference/tech-stack |
preference/communication |
Cómo le gusta que le hablen | preference/communication |
preference/general |
Otras preferencias | preference/general |
Guardado automático (sin preguntar)
| Cuándo | type | topic_key | scope |
|---|---|---|---|
| Cambiaste configuración | config |
config/<area> |
project |
| Encontraste y fixeaste un bug | bugfix |
bugfix/<area> |
project |
| Tomaste una decisión con tradeoffs | decision |
decision/<area> |
project |
| Descubriste algo no obvio | discovery |
discovery/<area> |
project |
| Identificaste un patrón reusable | pattern |
pattern/<area> |
project |
| Aprendiste algo del usuario | user_preference |
preference/<area> |
personal |
| Definiste arquitectura | architecture |
architecture/<area> |
project |
| Terminaste una sesión | session_summary |
— | project |
| Aprendizaje general | learning |
learning/<area> |
project |
Perfil del usuario (crece solo)
Cuando descubras algo nuevo del usuario (cómo trabaja, qué prefiere, qué no le gusta):
- Guardalo como
user_preferencecon scopepersonal - Usá topic_key
preference/<area>(ej:preference/communication,preference/tech-stack) - Si ya existe una entrada con ese topic_key, se actualiza sola (upsert)
- No preguntes — guardalo y seguí
Formato del contenido
**What**: [qué pasó, una línea]
**Why**: [por qué, qué problema resolvía]
**Where**: [archivos/componentes afectados, o la fuente del aprendizaje]
**Learned**: [gotchas, edge cases, decisiones no obvias — omitir si no aplica]
Árbol de tipos
¿Qué tipo de información es?
│
├── architecture → decisiones de alto nivel sobre estructura
│ → topic_key: architecture/<area>
│ → scope: project
│
├── bugfix → bugs con causa raíz y solución
│ → topic_key: bugfix/<area>
│ → scope: project
│
├── pattern → patrones reutilizables, convenciones
│ → topic_key: pattern/<area>
│ → scope: project
│
├── config → configuraciones, setup, instalaciones
│ → topic_key: config/<area>
│ → scope: project
│
├── discovery → gotchas, edge cases, aprendizajes no obvios
│ → topic_key: discovery/<area>
│ → scope: project
│
├── decision → elecciones con tradeoffs documentados
│ → topic_key: decision/<area>
│ → scope: project
│
├── learning → aprendizajes generales
│ → topic_key: learning/<area>
│ → scope: project
│
├── user_preference → todo sobre el usuario
│ → topic_key: preference/<area>
│ → scope: personal (SIEMPRE)
│
└── session_summary → resumen al finalizar sesión
→ usar mem_session_summary, NO mem_save
→ scope: project
Reglas de scope
| Scope | Cuándo usarlo |
|---|---|
project |
Código, arquitectura, bugs, config, skills del proyecto actual |
personal |
TODO lo que sea del usuario: preferencias, forma de trabajar, gustos |
LEND Workflow (modo auto-save)
1. DETECTAR
Antes de actuar, consultar Engram: mem_context para contexto reciente, mem_search para decisiones previas. Detectar si el evento actual merece guardado.
2. CLASIFICAR
Usar el árbol de tipos para elegir type, topic_key y scope. Si evoluciona en el tiempo → topic_key para upsert automático.
3. GUARDAR (sin preguntar — REGLA DE ORO)
mem_save con What/Why/Where/Learned. No preguntes "¿guardo esto?". Guardalo.
4. VERIFICAR + AUTO-EVOLUCIÓN
Confirmar que quedó guardado. Si hay conflictos con confianza > 0.7 → mem_judge automático. Si confianza < 0.7 → preguntar al user.
Auto-evolución del sistema de memoria
El sistema de memoria NO es estático. Evoluciona solo:
Detección de patrones
- Si un mismo topic_key se actualiza 3+ veces → considerar crear una skill dedicada
- Si un patrón de bugfix se repite → proponer test o guardia automática
- Si una preferencia del user aparece 2+ veces → consolidar en el perfil
Mini-skills evolution
- Un
skill/mini/<name>se usa 1-2 veces → sigue siendo mini - Se usa 3+ veces → considerar skill formal en
skills/<name>/SKILL.md - Se vuelve crítico → agregarlo a
opencode.jsonskills del agente correspondiente
Crecimiento autónomo
- Cada 5 sesiones: el
growth-enginerevisa patrones en Engram y propone nuevas skills - Si un discovery se vuelve recurrente → convertirlo en pattern
- Si un pattern se vuelve estándar → proponer skill formal
- Las mini-skills viejas (>5 sesiones sin uso) → archivar o eliminar
Frescura de la memoria
- mem_context al iniciar sesión (siempre)
- mem_search antes de decisiones importantes
- Si una memoria tiene >10 sesiones de antigüedad y no se consultó → consolidar o archivar
- No borrar memorias viejas automáticamente — pero priorizar las frescas en context
Cuando NO guardar
- Cada comando que ejecutaste (no es un log)
- Trivialidades (instalaciones de paquetes obvias)
- Info que ya esta en el codigo (para eso esta el repo)
- Lo mismo dos veces (usa topic_key para upsert)
Cuando consultar (antes de actuar)
- Al empezar sesion:
mem_context+mem_search topic_key:preference/*+mem_search topic_key:skill/mini/*+mem_search topic_key:pattern/* - Antes de decisiones importantes:
mem_search "tema" - Cuando un error parece conocido:
mem_search type:bugfix - Cuando no recordas una preferencia:
mem_search scope:personal topic_key:preference/* - Antes de crear algo nuevo: ver si ya hay patrones similares o mini-skills aplicables