Communitygithub.com

Sibyl-Labs/sibyl-save

Sincronización de memoria de sesión multiharness y extracción de habilidades para el Sibyl Memory Plugin. Una habilidad para Claude Code / Codex / Cursor / Hermes. MIT.

¿Qué es sibyl-save?

Sibyl-save es una habilidad complementaria del Sibyl Memory Plugin que captura todo el contexto de una sesión de trabajo con un agente de IA (como Claude Code, Codex, Cursor o Hermes) y lo inyecta en la base de datos de memoria local del plugin a través de su interfaz oficial, respetando la indexación de texto completo y los límites del nivel gratuito. Posteriormente, analiza los patrones reutilizables de la sesión y propone la creación de nuevas habilidades nativas para el harness actual, como archivos SKILL.md para Claude Code o prompts para Codex. La habilidad funciona en tres modos: setup (configuración interactiva), run (ejecución completa con sincronización y extracción) y preview (simulación sin efectos). Es útil para desarrolladores que desean persistir el estado de sus sesiones, mantener prioridades organizadas y automatizar la creación de skills a partir de su trabajo diario con asistentes de IA.

Compatible con✓Claude Code✓Codex CLI✓Cursor
npx skills add Sibyl-Labs/sibyl-save

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

/sibyl-save - Sincronización de Memoria de Sesión + Extracción de Habilidades (Sibyl Memory Plugin)

Parte de la colección abierta de habilidades de Sibyl Labs. Licencia MIT. Creado por Sibyl Labs, LLC.

Una habilidad complementaria para el Sibyl Memory Plugin. Captura todo lo que ocurrió en esta sesión y lo inyecta en la base de datos de memoria local del plugin (~/.sibyl-memory/memory.db) a través de su propia interfaz, luego extrae patrones reutilizables en nuevas habilidades.

No escribe archivos de memoria sin procesar. Toda la memoria pasa por el plugin, por lo que se respetan la clasificación por niveles, la indexación de texto completo y el límite del nivel gratuito. Debido a que el plugin expone las mismas herramientas MCP en todos los harness que soporta (Claude Code, Codex y cualquier host MCP; Hermes a través del SDK de Python), esta única habilidad es multiharness por construcción.

Requisitos

El Sibyl Memory Plugin, instalado y conectado:

pip install sibyl-memory-cli
sibyl init                 # activación de navegador/billetera, escribe ~/.sibyl-memory/
sibyl setup claude-code    # o: codex | hermes  (conecta la interfaz de memoria a su harness)

Esta habilidad se comunica con el plugin a través de una de dos superficies:

  • MCP (Claude Code, Codex, Cursor, cualquier host MCP): las 8 herramientas memory_* a continuación.
  • SDK de Python (Hermes o cualquier agente Python): sibyl_memory_client.MemoryClient / sibyl_memory_hermes.SibylMemoryProvider.

La interfaz del plugin

PropósitoHerramienta MCPSDK de Python
Guardar un hecho/entidadmemory_remember(category, name, body)client.set_entity(category, name, body)
Recuperar una entidadmemory_recall(category, name)client.get_entity(category, name)
Listar entidadesmemory_list(category, limit)client.list_entities(category)
Búsqueda de texto completomemory_search(query, limit, tiers)client.search(query)
Establecer un documento de estadomemory_set_state(key, body)client.set_state(key, body)
Obtener un documento de estadomemory_get_state(key)client.get_state(key)
Registrar un evento de diariomemory_record_event(kind, body, category, name)client.write_event(...)
Archivar/olvidarmemory_forget(category, name, reason)client.archive_entity(category, name, reason)

Los ejemplos a continuación usan los nombres MCP. En Hermes o un agente Python, use la columna del SDK.

Mapeo de niveles

Contenido de la sesiónNivelLlamada
Puntero/resumen/elementos futuros de la sesiónHOT (estado)memory_set_state("session", ...)
Prioridades ordenadasHOT (estado)memory_set_state("priorities", ...)
Entrada de registro de sesiónCOLD (diario)memory_record_event("session_save", ...)
Proyectos/personas/productosWARM (entidades)memory_remember(category, name, body)
Elementos cerrados/muertosARCHIVEmemory_forget(category, name, reason)
Configuración de esta habilidad + marcador deltaHOT (estado)memory_set_state("sibyl_save:config" / "sibyl_save:last_save", ...)

Modos

  • run (predeterminado): /sibyl-save, save session, sync memory. Inyecta el contexto de la sesión en el plugin, luego ofrece extracción de habilidades.
  • setup: /sibyl-save setup, /sibyl-save config. Interactivo. Construye o edita la configuración (almacenada en el plugin en la clave de estado sibyl_save:config). Ejecute una vez antes del primer uso.
  • preview (simulación): /sibyl-save preview, /sibyl-save --dry-run. Ejecuta el análisis completo e informa cada escritura planificada. No llama a nada que mute la base de datos. No avanza el marcador delta.

Modo: setup (configuración dinámica)

Objetivo: escribir la configuración en el plugin en la clave de estado sibyl_save:config. Sea interactivo y mínimo. Infiera lo que pueda; pregunte solo lo que no pueda.

  1. Harness. Detecte o pregunte qué harness es (claude-code, codex, cursor, hermes, otro). Esto determina dónde escribe la Fase 2 los archivos de habilidades.
  2. Salida de habilidades. Dónde se escriben las nuevas habilidades para este harness. Valor predeterminado para Claude Code: .claude/skills/<name>/SKILL.md. Para otros harness, confirme la ubicación y el formato de la habilidad. Almacene como skill_output: {dir, format}.
  3. Prioridades. Clave de estado para la lista ordenada (predeterminado priorities) y un límite. Límite predeterminado 15. Techo máximo 30: nunca acepte un valor superior a 30. Una lista de más de 30 es un backlog, no un conjunto de prioridades.
  4. Categorías de entidades. Qué categorías WARM rastrea (predeterminado project, person, product). El usuario agrega o elimina.
  5. Captura adicional. Opcionalmente, nombre claves de estado adicionales o categorías de entidades que el guardado debe poblar en cada ejecución (un documento de estado de métricas, una categoría de contactos). Este es el punto de extensión.
  6. Modo simulación predeterminado. Alterne dry_run_default (predeterminado falso).
  7. Escriba la configuración mediante memory_set_state("sibyl_save:config", {...}). No toque el marcador delta.

Forma de la configuración: ver examples/sibyl-save-config.example.json. Volver a ejecutar el setup lo edita en el lugar.


Modo: run

Fase 1: Sincronización de Memoria (en la base de datos del plugin)

Paso 0 - Cargar configuración + delta

memory_get_state("sibyl_save:config"). Si está ausente, cambie a setup. memory_get_state("sibyl_save:last_save") para el ancla delta (qué cambió desde el último guardado). Si dry_run_default es verdadero y no se proporcionó ningún modo, ejecute como preview.

Paso 1 - Leer el estado actual

  • memory_get_state("session") y memory_get_state(<clave de prioridades>)
  • memory_list(category, limit) para las categorías rastreadas, y memory_recall / memory_search para las entidades tocadas en esta sesión
  • cualquier clave de estado o categoría adicional nombrada en la configuración

Paso 1.5 - Verificación y conciliación de prioridades

Lea el documento de estado de prioridades y concilie en el lugar (reescriba con memory_set_state). Condiciones y la acción que cada una requiere:

  • Elemento COMPLETADO aún listado: elimínelo; registre el cierre mediante memory_record_event("priority_closed", {...}).
  • RANK_DRIFT / DUP_RANK (rangos no contiguos 1..N, o un rango se repite): renumere a 1..N.
  • OVER_CAP (más elementos que el límite): mueva los elementos de menor prioridad a un documento de estado de backlog hasta estar en o por debajo del límite.
  • STALE_ITEM (>14 días sin tocar): muéstrelo al usuario.
  • TERMINAL entity (la entidad referenciada está archivada/muerta): cierre la prioridad.
  • BROKEN entity ref (apunta a una entidad inexistente): corríjala a una category/name real.

Aplique el límite en cada escritura (nunca exceda 30).

Paso 2 - Analizar la sesión

Revise la conversación desde el ancla delta (o desde el inicio de la sesión en el primer guardado). Extraiga:

  • Entidades tocadas - proyectos, personas, productos creados, leídos o modificados
  • Acciones realizadas - cosas concretas que sucedieron, con identificadores
  • Decisiones tomadas - opciones estratégicas y su fundamento
  • Elementos futuros - acciones para la próxima sesión, comenzando con verbo ("desplegar...", "dar seguimiento a...", "verificar...")
  • Advertencias - riesgos activos, bloqueos, plazos, cuasi accidentes
  • Lecciones aprendidas - mejoras operativas (alimentan la Fase 2)
  • Capturas adicionales - datos para cualquier clave de estado/categoría adicional en la configuración

Paso 3 - Inyectar en la base de datos del plugin

En modo preview, no llame a nada que mute. Informe las escrituras planificadas (Paso 4) y deténgase.

  1. Estado de la sesión - memory_set_state("session", { last_session, summary, forward, entities_touched, warnings }). Los elementos futuros son solo referencias de acción, nunca instantáneas de saldo ni nada que se vuelva obsoleto.
  2. Evento de diario - memory_record_event("session_save", { evaluated, acted, forward, extra }). Un evento por guardado (solo anexar por diseño).
  3. Prioridades - memory_set_state(<clave de prioridades>, { updated, cap, items }), limitado. Desbordamiento a un documento de estado de backlog.
  4. Entidades - para cada entidad cambiada, memory_remember(category, name, body). Las nuevas entidades son solo nuevas llamadas memory_remember; el plugin las indexa, por lo que no hay un registro separado que mantener.
  5. Cerradas/muertas - memory_forget(category, name, reason).
  6. Capturas adicionales - aplique cada clave de estado/categoría adicional configurada.
  7. Marcador delta - memory_set_state("sibyl_save:last_save", { ts: <ahora> }). Omitir en preview.

Paso 4 - Informe

Resumen conciso: entidades escritas, documentos de estado actualizados, id del evento de diario, prioridades agregadas/cerradas, capturas adicionales y elementos futuros para la próxima sesión. En modo preview, etiquete cada línea con "haría" y confirme que no se escribió nada.


Fase 2: Extracción de Habilidades (nativas del harness)

Las habilidades se presentan de la misma manera independientemente del harness: identificar, proponer, luego crear como un archivo de habilidad nativa para el harness actual.

Paso 5 - Identificar patrones reutilizables

Escanee la sesión en busca de operaciones que cumplan AL MENOS UNA de estas: repetida (más de una vez en esta sesión), recurrente (probablemente de nuevo), multipaso (3+ pasos secuenciales), no obvia (un workaround que vale la pena conservar), propensa a errores (necesita una lista de verificación). Para cada candidato evalúe nombre (frase de verbo imperativo corta), activador, parámetros, complejidad (cualquier paso peligroso), frecuencia.

Paso 6 - Proponer candidatos

Presente cada uno como una línea con nombre, descripción y frecuencia estimada. Luego pregunte: "¿Crear estas? ¿O saltar alguna?"

Paso 7 - Crear habilidades aprobadas (nativas del harness)

Lea skill_output de la configuración para saber dónde y en qué formato espera este harness las habilidades. Valores predeterminados:

HarnessUbicación de la habilidadFormato
claude-code.claude/skills/<name>/SKILL.mdFrontmatter YAML (nombre, descripción) + cuerpo Markdown
codex~/.codex/prompts/<name>.md (confirmar en setup)Prompt Markdown
cursor.cursor/ comando/regla (confirmar en setup)según convención de Cursor
otrode skill_output.dirde skill_output.format

Para cada habilidad aprobada, escriba el archivo en la ubicación configurada con frases activadoras, instrucciones paso a paso, descripciones de parámetros, verificaciones de seguridad para cualquier paso peligroso y un ejemplo de invocación. Informe la ruta.

NO cree habilidades que: dupliquen una habilidad existente (verifique primero la ubicación de la habilidad), sean demasiado específicas de la sesión para repetirse, envuelvan un solo comando trivial, o requieran editar archivos que sus reglas operativas protejan (muéstrelos, no se autoedite).


Reglas (no negociables)

  • Nunca almacene datos vivos (saldos, precios, cuentas) como hechos duraderos. Capture referencias, no instantáneas.
  • Los elementos futuros de la sesión están orientados a la acción y comienzan con verbo.
  • Un evento de diario por guardado (solo anexar; nunca reescriba el historial).
  • Las prioridades tienen un límite (predeterminado 15, nunca superior a 30). Desbordamiento a un documento de estado de backlog.
  • Las entidades se abordan por category + name; deje que el plugin sea el índice. Sin registro paralelo.
  • Todas las escrituras de memoria pasan por la interfaz del plugin. Nunca escriba archivos ~/.sibyl-memory/ ni abra memory.db directamente: el cliente maneja el bloqueo y el límite del nivel gratuito.
  • Trate las habilidades existentes como solo lectura. Cree nuevas en lugar de editar en el lugar a menos que se le solicite explícitamente.

Licencia y procedencia

MIT (ver LICENSE). El comentario de marca de agua en la parte superior de cada archivo Markdown es atribución y procedencia, no una restricción de uso. Verifique una copia con node scripts/watermark.mjs verify. Detalles en WATERMARK.md.

Skills relacionados