Communitygithub.com

Aresfangxx/fade-away-skill

Una capa de memoria duradera para chats de IA: lleva un diario de trabajo, rastrea tareas y construye una base de conocimiento con control humano en una bóveda de Obsidian en Markdown plano. Un skill de seguimiento de sesiones para Claude Code y Codex.

¿Qué es fade-away-skill?

fade-away es una habilidad (skill) diseñada para Claude Code y Codex que implementa un sistema de memoria persistente y no intrusivo para agentes de IA. Su función principal es mantener un diario de trabajo detallado por sesión, rastrear tareas activas y, opcionalmente, promover información relevante a una base de conocimiento estructurada dentro de una bóveda de Obsidian, todo ello con control humano. A diferencia de otras soluciones, fade-away no depende de una base de datos externa: toda la información se almacena en archivos Markdown planos dentro de la bóveda, lo que facilita su revisión, edición y portabilidad. El skill opera bajo un contrato claro: cada vez que el asistente produce una respuesta sustancial, añade automáticamente una línea de progreso al diario activo. También gestiona la creación de índices semanales y de tareas, la vinculación de entradas del diario a páginas de temas (topic pages) y la promoción de conocimiento reutilizable de vuelta a la base de conocimiento. Para evitar conflictos, fade-away implementa detección de sesiones concurrentes y un protocolo robusto de escritura en el diario. Está optimizado para mantener un 'camino caliente' reducido, cargando flujos de trabajo infrecuentes (como el bootstrap inicial o la promoción de conocimiento) solo cuando se activan mediante comandos específicos del usuario.

Compatible con✓Claude Code✓Codex CLI~Cursor
npx skills add Aresfangxx/fade-away-skill

Preguntar en tu IA favorita

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

Documentación

fade-away

Mantén una capa de memoria ligera compuesta por: diario -> wiki de temas -> índice -> MOC semanal -> base de conocimiento, para que el usuario pueda cambiar de tarea y construir una base de conocimiento personal para LLM sin tener que reexplicar el contexto.

Contrato de operación

Este skill se ejecuta durante toda la conversación, no solo en el primer turno. Antes de cada respuesta del asistente, verifica si el turno activa: inicio de sesión, guardado por turno, cambio de tema, registro manual, promoción de tema, tareas semanales/dashboard/lint o promoción de conocimiento. La regla que más se suele omitir es el guardado por turno: cada turno sustancial del asistente añade una línea (HH:MM) <progreso> a la entrada activa del diario.

Mantén la ruta caliente (hot path) pequeña. Coloca los mecanismos de baja frecuencia en references/ y cárgalos solo cuando se active su disparador.

Rutas

<RAIZ_BOVEDA> es la bóveda de Obsidian que mantiene fade-away. Resuélvela una vez por sesión, en este orden:

  1. El campo Vault root declarado en el archivo AGENTS.md / CLAUDE.md del proyecto (escrito por el instalador bootstrap, scripts/bootstrap_vault.py).
  2. Si no existe dicho campo, trata el directorio actual del proyecto / de trabajo como la raíz de la bóveda.

Siempre expande <RAIZ_BOVEDA> a esa ruta absoluta antes de leer o escribir:

  • Diario: <RAIZ_BOVEDA>/03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-MM-DD.md donde <YYYY-MM> es el propio mes de la fecha y <YYYY-Wnn> es la semana ISO de esa fecha.
  • Índice semanal: <RAIZ_BOVEDA>/03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-Wnn 周索引.md donde <YYYY-MM> es el mes que contiene el domingo de la semana.
  • Índice de tareas: <RAIZ_BOVEDA>/00 Tasks/_Index.md
  • Páginas de temas: <RAIZ_BOVEDA>/00 Tasks/<nombre-tema>.md
  • Páginas de conocimiento: <RAIZ_BOVEDA>/02 Knowledge/<dominio>/<pagina>.md
  • Referencias: el directorio references/ de este skill

Si faltan 00 Tasks/ o _Index.md, omite la lógica de índice de tareas y temas para la sesión. No crees 00 Tasks/ automáticamente a mitad de sesión. El registro del diario sigue funcionando.

Archivos de nivel superior como 备忘.md pueden vivir directamente bajo 03 Journal/; no los muevas.

Regla de zona horaria

Todas las fechas y horas registradas por este skill DEBEN usar una zona consistente, llamada hora-bóveda. Resuelve la hora-bóveda a partir del campo Time zone en el archivo AGENTS.md / CLAUDE.md del proyecto; si no se ha configurado ninguna, recurre a la zona local de la máquina. El instalador bootstrap establece por defecto Asia/Hong_Kong, por lo que las bóvedas no configuradas se comportan como Asia/Hong_Kong / GMT+8 / UTC+8.

Usa la hora-bóveda para los nombres de archivo del diario, rutas padre, encabezados, líneas de progreso, metadatos del tema, marcas de tiempo de _Index.md e inferencia del índice semanal.

Verificación preferida en shell (sustituye tu zona configurada):

TZ=Asia/Hong_Kong date

Confía en la hora-bóveda por encima de las indicaciones de hora del entorno (harness date hints). Si la hora del entorno entra en conflicto con la hora-bóveda, deriva el nombre del archivo del diario, la semana ISO y HH:MM a partir de una lectura fresca de la hora-bóveda. Para detalles sobre anexado/concurrencia, lee references/journal-write-protocol.md.

Estado de la sesión

Realiza un seguimiento interno de:

  • current_entry_start: HH:MM de inicio de la entrada activa del diario.
  • current_entry_date: YYYY-MM-DD de la entrada activa del diario.
  • current_entry_title: título corto de la tarea actual en chino.
  • bound_topic: nombre del archivo del tema sin .md, o None.
  • bind_skipped: True solo después de que el usuario elija no vincular.
  • task_auto_bind_checked / task_auto_bind_skipped: se reinician para cada nueva entrada del diario.
  • knowledge_candidate_prompted / knowledge_candidate_skipped: se reinician para cada nueva entrada del diario.
  • knowledge_context_checked: True después de que la solicitud actual del usuario haya pasado el Portal de Recuperación de Conocimiento, o cuando el portal se omite intencionalmente.
  • tracking_disabled: True solo si el usuario opta por no participar en esta sesión.

Inicio de la conversación

  1. Lee <RAIZ_BOVEDA>/00 Tasks/_Index.md si está presente. Analiza las filas del cuerpo de la tabla como [[tema]] | marca-tiempo | siguiente-paso; trata los archivos faltantes como un índice vacío.

  2. Verifica de forma económica si hay una sesión concurrente del mismo tema. Lee el final del diario de hoy según la hora-bóveda si existe. Si la última línea de progreso está dentro de los 15 minutos de hora-bóveda y su entrada se superpone plausiblemente con el primer mensaje del usuario, muestra:

    ⚠️ 另一会话 <HH:MM> 刚写过 [[<tema>]],可能在并行做同一件事。我先扫一眼最新进展再回。
    

    Luego lee la entrada reciente para que esta respuesta no contradiga el trabajo paralelo. Si no hay una entrada reciente superpuesta, omite silenciosamente.

  3. Ejecuta el Portal de Recuperación de Conocimiento para cualquier solicitud sustancial antes de confiar solo en _Index.md, el diario de hoy o la página del tema coincidente. Lee references/knowledge-retrieval-trigger.md cuando la solicitud trata sobre un proyecto/dominio/persona/método que pueda tener contexto duradero en <RAIZ_BOVEDA>/02 Knowledge/, o cuando el usuario pide contexto, análisis, decisiones, estrategia, continuación, revisión, estilo de escritura, flujo de trabajo reutilizable o trabajo anterior. Utiliza el enrutamiento de inventario primero: lista el árbol de Conocimiento vivo, deriva las carpetas/proyectos actuales a partir de él, luego empareja nombres de archivo, H1/título, alias, etiquetas, status: canonical, páginas de navegación y páginas fuente de verdad antes de cualquier búsqueda amplia en el cuerpo. Omite solo los saludos pendientes de confirmación, informes de solo dashboard/lint, tareas de mantenimiento de diario puro, consultas de utilidad atómica y casos donde no exista un resultado de Conocimiento relevante después de esta pasada basada en metadatos.

  4. Despacha según el primer mensaje del usuario, en este orden:

    • Intención de bootstrap/configuración (install fade-away, setup, bootstrap, 初始化, 第一次使用, 开源部署, o un _Index.md faltante más una solicitud de usuario para inicializar): lee references/bootstrap-vault.md. Bootstrap es una ruta de configuración única; pregunta por la raíz de la bóveda si no está clara y nunca crees archivos a menos que el usuario lo confirme.
    • Intención de verificación de contexto/instrucciones (AGENTS, CLAUDE, 上下文, context, 经验继承, 规则漂移, estructura del proyecto, mantenimiento de skill/bóveda/flujo de trabajo, o un nuevo límite de cwd/proyecto): lee references/context-check.md. Informa solo si se encuentra desviación o si el usuario lo pide explícitamente; no escribas archivos de instrucción a menos que el usuario confirme el parche específico.
    • Intención de lint de memoria (lint, 体检, health check, 检查知识库, 检查任务索引, 看看哪些适合变成 wiki, o similar): lee references/lint-vault-memory.md; renderiza un informe primero y no escribas correcciones o páginas de conocimiento a menos que el usuario lo confirme.
    • Intención de promoción de conocimiento (沉淀成知识, 写进 knowledge, 变成 wiki, 归档成知识页, o similar): lee references/promote-to-knowledge.md.
    • Intención de índice semanal (周索引, 周报, weekly index, weekly summary, 本周总结, o similar): lee references/render-weekly-index.md. Abre una entrada del diario solo si el módulo escribe o actualiza un índice semanal.
    • Intención de dashboard (看下任务, 看板, dashboard, 总览, o similar): lee references/render-dashboard.md, renderiza solo, y no abras aún una entrada del diario.
    • Coincidencia clara de tema existente: lee esa página de tema silenciosamente, establece bound_topic, luego abre una entrada del diario.
    • Saludo vago (hi, 你好, 在吗, 开始干活了, etc.): si _Index.md tiene filas, emite ⏮️ 上次:<tarea>,下一步是 <siguiente-paso>。继续这个还是新任务? y espera la respuesta. Vincula a la primera fila solo si el usuario confirma.
    • Nueva tarea sustancial: no menciones tareas antiguas; deja bound_topic = None.

Abrir entrada del diario

Abre una entrada del diario solo cuando el trabajo realmente comience. Calcula la ruta diaria de hora-bóveda como 03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-MM-DD.md, donde <YYYY-MM> es el propio mes de la fecha y <YYYY-Wnn> es la semana ISO. Crea las carpetas de mes/semana faltantes con mkdir -p.

Si el archivo diario falta, créalo a partir de la plantilla en references/journal-write-protocol.md. Asegúrate de que exista ## 🕐 任务时间线, luego añade un encabezado al final de esa sección:

  • Sin vincular: ### HH:MM ▶️ <título corto en chino>
  • Vinculado: ### HH:MM ▶️ <título corto en chino> → [[00 Tasks/<tema_vinculado>]]

Almacena current_entry_start, current_entry_date y current_entry_title. Reinicia los indicadores de tarea, candidato de conocimiento y recuperación de conocimiento para la nueva entrada.

Guardado por turno

Después de cada turno del asistente con resultados sustanciales, añade exactamente una línea de progreso dentro de la entrada activa del diario:

(HH:MM) <progreso en una frase>

Añade al final del cuerpo de la entrada activa, inmediatamente antes del siguiente encabezado de línea de tiempo ### o del fin del archivo. No reescribas líneas de progreso anteriores. Omite el guardado si el turno es solo una pregunta de aclaración o si tracking_disabled = True.

Antes de escribir, lee references/journal-write-protocol.md cuando necesites la ubicación exacta del anexado, el reajuste de escritura concurrente, el manejo de límites de hora-bóveda, la sintaxis de líneas problemáticas o la plantilla del diario.

Comprobaciones posteriores al guardado

Ejecuta estas comprobaciones después del guardado por turno:

  1. Promoción explícita: si la salida visible contiene un marcador explícito ➡️ 下一步 o una sección ## ➡️ 下一步, actualiza la capa de tema/índice. Si bound_topic está establecido, lee references/topic-update-protocol.md; de lo contrario, si bind_skipped = False, lee references/promote-to-wiki.md.
  2. Actualización automática de tema: cuando bound_topic está establecido y no ha aparecido un siguiente paso explícito, lee references/topic-update-protocol.md si la entrada activa puede superar los umbrales de desactualización existentes. Mantén el comportamiento actual de actualización automática; no lo conviertas en un mensaje de confirmación a menos que el usuario lo pida.
  3. Vinculación automática de tarea: cuando la entrada activa no está vinculada y carece de un ➡️ 下一步 explícito, lee references/task-candidate-trigger.md. Crea/vincula un tema automáticamente para sesiones con naturaleza de tarea; omite solo preguntas y respuestas triviales, saludos, informes de solo dashboard/lint, pura aclaración o sesiones sin naturaleza de tarea.
  4. Candidato a conocimiento: cuando puede haber surgido conocimiento reutilizable y el usuario aún no ha solicitado la promoción, lee references/knowledge-candidate-trigger.md. No crees ni actualices 02 Knowledge/ automáticamente.

Cambio de tema a mitad de sesión

Si el usuario dice 继续做 X, 回到 X, o de alguna manera pide cambiar mientras ya hay una entrada abierta:

  1. Empareja X con _Index.md de forma conservadora.
  2. Si no existe una coincidencia clara, haz una pregunta corta de aclaración.
  3. Si la coincidencia es clara y difiere de bound_topic, pregunta: 切到 [[X]]?我会给当前 entry 追加一行切换记录,然后打开新的 X entry。
  4. Tras la confirmación, añade (HH:MM) 切出当前任务,转到 [[00 Tasks/X]]。, lee la página del tema, establece bound_topic = X, y abre una nueva entrada de diario vinculada.
  5. Si el usuario declina, mantén la vinculación existente.

No cambies de tema silenciosamente a mitad de sesión.

Solicitud de registro manual

Si el usuario dice 记录一下, 记一下刚才的进展, o similar, añade una línea de progreso adicional a la entrada actual resumiendo el progreso desde el guardado anterior. No abras una nueva entrada ni cierres la entrada actual a menos que el usuario lo pida explícitamente para cambiar de tarea.

Módulos

Carga los flujos de trabajo de baja frecuencia solo cuando sea necesario:

  • references/journal-write-protocol.md: creación del diario, ubicación del anexado, manejo de límites de hora-bóveda, reajuste de escritura concurrente, sintaxis de líneas problemáticas y plantilla del diario.
  • references/bootstrap-vault.md: flujo de trabajo de configuración única para la bóveda de Obsidian de un nuevo usuario; crea la estructura de directorios/plantillas/índices y puntos de entrada de instrucciones mínimos de fade-away solo después de la confirmación.
  • references/context-check.md: verificación de inicio en frío o cambio de límite para superficies de instrucciones/contexto obsoletas como AGENTS.md, CLAUDE.md, notas de estructura del proyecto y herencia de Conocimiento; informa desviaciones sin escribir hasta que se confirme.
  • references/task-candidate-trigger.md: vincula automáticamente entradas de tareas sustanciales no vinculadas a 00 Tasks; omite sesiones triviales o que no sean de tarea.
  • references/topic-update-protocol.md: actualiza las páginas de temas vinculados, refresca _Index.md y ejecuta el comportamiento actual de Actualización Automática de Temas.
  • references/promote-to-wiki.md: vincula una entrada de diario no vinculada a una página de tema y actualiza _Index.md después de un ➡️ 下一步 explícito o un disparador de vinculación automática de tarea.
  • references/render-dashboard.md: renderiza un dashboard de tareas de solo lectura desde _Index.md.
  • references/render-weekly-index.md: genera o actualiza un MOC semanal bajo demanda en 03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-Wnn 周索引.md.
  • references/lint-vault-memory.md: renderiza un informe de salud de solo lectura para las capas de tareas, diario, índice semanal y conocimiento.
  • references/knowledge-retrieval-trigger.md: antes de un trabajo sustancial, inventaría el árbol vivo de 02 Knowledge/, clasifica candidatos a partir de metadatos y lee un pequeño número de páginas relevantes para que el contexto duradero anterior, métodos y hechos del proyecto puedan influir en la respuesta.
  • references/knowledge-candidate-trigger.md: propone material de diario reutilizable para 02 Knowledge/ sin escribir hasta que se confirme.
  • references/promote-to-knowledge.md: crea o actualiza páginas seleccionadas bajo 02 Knowledge/ después de la confirmación.

Reglas de formato

  • Formato de hora: HH:MM de 24 horas usando la zona horaria de bóveda configurada.
  • Título del diario: corto, descriptivo, en chino; evita títulos genéricos como 任务1.
  • Nombre de archivo del tema: kebab-case, sin espacios, extensión .md solo en disco.
  • Wikilink del tema en el diario: [[00 Tasks/<tema>]].
  • Formato de fila del índice: | [[<tema>]] | YYYY-MM-DD HH:MM | <siguiente-paso escapado> |.
  • Los directorios heredados task-tracker se han eliminado; si el usuario pregunta por el antiguo tracker, explica que fade-away lo ha reemplazado.

Casos límite

  • Usuario opta por no participar (这次不用记录): establece tracking_disabled = True; omite todas las escrituras de la sesión, pero se permite leer _Index.md para contexto.
  • Cruce de medianoche: usa la medianoche de la hora-bóveda. Después de la medianoche de la hora-bóveda, abre una entrada de continuación en el diario del nuevo día de hora-bóveda y continúa los guardados por turno allí.
  • Turno de solo dashboard: renderiza el dashboard y espera; no abras una entrada del diario hasta que el usuario comience el trabajo real.
  • Página de tema faltante para una coincidencia de índice: di que la fila del tema existe pero falta la página, luego pregunta si recrearla o continuar sin vincular.

Skills relacionados