Communitygithub.com

fade-away

Une couche mémoire durable pour les conversations IA — journalise le travail, suit les tâches et enrichit une base de connaissances validée par l'humain dans un coffre Obsidian en Markdown simple. Un skill de suivi de session pour Claude Code & Codex.

Qu'est-ce que fade-away ?

fade-away est un skill d'agent IA conçu pour offrir une couche mémoire persistante et structurée, permettant aux développeurs utilisant Claude Code ou Codex de maintenir un contexte cohérent sur plusieurs sessions de travail. Il enregistre automatiquement chaque progression dans un journal horodaté, suit les tâches et les sujets, et promeut les connaissances réutilisables dans une base de connaissances organisée manuellement par l'humain, le tout stocké dans un coffre Obsidian en Markdown brut. Le skill détecte les changements de sujet, gère les entrées de journal concurrentes et propose une récupération intelligente du contexte via un inventaire metadata-first des pages de connaissance. Il réduit la charge cognitive en automatisant les mémos de progression tout en laissant le contrôle à l'utilisateur pour les décisions à fort impact, comme la création de pages wiki ou la liaison de tâches.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait fade-away ?

Maintient une couche mémoire légère : journal -> wiki thématique -> index -> MOC hebdomadaire -> base de connaissances, afin que l'utilisateur puisse changer de tâche et construire une base de connaissances LLM personnelle sans avoir à réexpliquer le contexte.

Contrat de fonctionnement

Ce skill s'exécute sur l'ensemble de la conversation, pas uniquement au premier tour. Avant chaque réponse de l'assistant, vérifiez si le tour déclenche : démarrage de session, sauvegarde par tour, changement de sujet, enregistrement manuel, promotion de sujet, hebdomadaire/tableau de bord/lint, ou promotion de connaissance. La règle la plus souvent oubliée est la sauvegarde par tour : chaque tour d'assistant substantiel ajoute une ligne (HH:MM) <进展> dans l'entrée de journal active.

Gardez le chemin chaud court. Placez les mécanismes peu fréquents dans references/ et chargez-les uniquement lorsque leur déclencheur se produit.

Chemins

<VAULT_ROOT> est le coffre Obsidian que fade-away maintient. Résolvez-le une fois par session, dans cet ordre :

  1. Le champ Vault root déclaré dans le fichier AGENTS.md / CLAUDE.md du projet (écrit par l'installateur bootstrap, scripts/bootstrap_vault.py).
  2. Si ce champ n'existe pas, traitez le répertoire de travail / projet courant comme la racine du coffre.

Développez toujours <VAULT_ROOT> en ce chemin absolu avant de lire ou d'écrire :

  • Journal : <VAULT_ROOT>/03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-MM-DD.md où <YYYY-MM> est le mois de la date elle-même et <YYYY-Wnn> est la semaine ISO de cette date.
  • Index hebdomadaire : <VAULT_ROOT>/03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-Wnn 周索引.md où <YYYY-MM> est le mois contenant le dimanche de la semaine.
  • Index des tâches : <VAULT_ROOT>/00 Tasks/_Index.md
  • Pages de sujet : <VAULT_ROOT>/00 Tasks/<topic-filename>.md
  • Pages de connaissance : <VAULT_ROOT>/02 Knowledge/<domain>/<page>.md
  • Références : le répertoire references/ de ce skill

Si 00 Tasks/ ou _Index.md est manquant, ignorez la logique d'index des tâches et de sujet pour la session. Ne créez pas automatiquement 00 Tasks/ en cours de session. La journalisation continue.

Les fichiers de premier niveau tels que 备忘.md peuvent résider directement sous 03 Journal/ ; ne les déplacez pas.

Règle de fuseau horaire

Toutes les dates et heures enregistrées par ce skill DOIVENT utiliser un fuseau cohérent, appelé vault-time. Résolvez vault-time à partir du champ Time zone dans le fichier AGENTS.md / CLAUDE.md du projet ; s'il n'est pas défini, utilisez le fuseau local de la machine. L'installateur bootstrap le définit par défaut sur Asia/Hong_Kong, donc les coffres non configurés se comportent comme Asia/Hong_Kong / GMT+8 / UTC+8.

Utilisez vault-time pour les noms de fichiers du journal, les chemins parents, les en-têtes, les lignes de progression, le frontmatter des sujets, les horodatages de _Index.md et l'inférence d'index hebdomadaire.

Vérification shell préférée (remplacez par votre fuseau configuré) :

TZ=Asia/Hong_Kong date

Faites confiance à vault-time plutôt qu'aux indications de fuseau de l'outil. Si le fuseau de l'outil entre en conflit avec vault-time, dérivez le nom du fichier journal, la semaine ISO et HH:MM d'une nouvelle lecture vault-time. Pour les détails d'ajout/concurrence, lisez references/journal-write-protocol.md.

État de session

Suivi interne :

  • current_entry_start : HH:MM de l'entrée de journal active.
  • current_entry_date : YYYY-MM-DD de l'entrée de journal active.
  • current_entry_title : titre court de tâche en chinois actuel.
  • bound_topic : nom de fichier du sujet sans .md, ou None.
  • bind_skipped : True uniquement après que l'utilisateur a choisi de ne pas lier.
  • task_auto_bind_checked / task_auto_bind_skipped : réinitialisé pour chaque nouvelle entrée de journal.
  • knowledge_candidate_prompted / knowledge_candidate_skipped : réinitialisé pour chaque nouvelle entrée de journal.
  • knowledge_context_checked : True après que la demande utilisateur actuelle a passé la barrière de récupération de connaissance, ou lorsque la barrière est intentionnellement ignorée.
  • tracking_disabled : True uniquement si l'utilisateur refuse le suivi pour cette session.

Début de conversation

  1. Lisez <VAULT_ROOT>/00 Tasks/_Index.md s'il existe. Analysez les lignes du corps du tableau comme [[topic]] | timestamp | next-step ; traitez les fichiers manquants comme un index vide.

  2. Vérifiez rapidement s'il existe une session simultanée sur le même sujet. Lisez la fin du journal d'aujourd'hui en vault-time s'il existe. Si la dernière ligne de progression date de moins de 15 minutes vault-time et que son entrée chevauche plausiblement le premier message de l'utilisateur, affichez :

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

    Lisez ensuite l'entrée récente pour que cette réponse ne contredise pas le travail parallèle. S'il n'existe pas d'entrée récente chevauchante, ignorez silencieusement.

  3. Exécutez la barrière de récupération de connaissance pour toute demande substantielle avant de vous fier uniquement à _Index.md, au journal du jour ou à la page de sujet correspondante. Lisez references/knowledge-retrieval-trigger.md lorsque la demande concerne un projet/domaine/personne/méthode pouvant avoir un contexte durable dans <VAULT_ROOT>/02 Knowledge/, ou lorsque l'utilisateur demande du contexte, une analyse, des décisions, une stratégie, une continuation, une révision, un style d'écriture, un workflow réutilisable, ou un travail plus ancien. Utilisez un routage d'inventaire d'abord : listez l'arborescence Knowledge active, déduisez les dossiers/projets actuels, puis faites correspondre les noms de fichiers, H1/titre, alias, tags, status: canonical, pages de navigation et pages source de vérité avant toute recherche large de corps. Sautez uniquement les salutations en attente de confirmation, les rapports de tableau de bord/lint uniquement, la tenue de journal pure, les requêtes utilitaires atomiques, et les cas où aucune connaissance pertinente n'est trouvée après ce passage metadata-first.

  4. Répartissez en fonction du premier message de l'utilisateur, dans cet ordre :

    • Intention d'installation/configuration (install fade-away, setup, bootstrap, 初始化, 第一次使用, 开源部署, ou un _Index.md manquant avec une demande d'initialisation) : lisez references/bootstrap-vault.md. Bootstrap est un chemin d'installation unique ; demandez la racine du coffre si elle n'est pas claire et ne créez jamais de fichiers sans confirmation de l'utilisateur.
    • Intention de vérification de contexte/instructions (AGENTS, CLAUDE, 上下文, context, 经验继承, 规则漂移, structure du projet, maintenance du skill/coffre/workflow, ou une nouvelle limite cwd/projet) : lisez references/context-check.md. Signalez uniquement en cas de dérive ou si l'utilisateur demande explicitement ; n'écrivez pas de fichiers d'instructions sans confirmation de l'utilisateur pour le correctif spécifique.
    • Intention d'audit mémoire (lint, 体检, health check, 检查知识库, 检查任务索引, 看看哪些适合变成 wiki, ou similaire) : lisez references/lint-vault-memory.md ; affichez d'abord un rapport et n'écrivez pas de correctifs ou de pages de connaissance sans confirmation de l'utilisateur.
    • Intention de promotion de connaissance (沉淀成知识, 写进 knowledge, 变成 wiki, 归档成知识页, ou similaire) : lisez references/promote-to-knowledge.md.
    • Intention d'index hebdomadaire (周索引, 周报, weekly index, weekly summary, 本周总结, ou similaire) : lisez references/render-weekly-index.md. N'ouvrez une entrée de journal que si le module écrit ou met à jour un index hebdomadaire.
    • Intention de tableau de bord (看下任务, 看板, dashboard, 总览, ou similaire) : lisez references/render-dashboard.md, affichez uniquement, et n'ouvrez pas encore d'entrée de journal.
    • Correspondance claire avec un sujet existant : lisez cette page de sujet silencieusement, définissez bound_topic, puis ouvrez une entrée de journal.
    • Salutation vague (hi, 你好, 在吗, 开始干活了, etc.) : si _Index.md a des lignes, émettez ⏮️ 上次:<task>,下一步是 <next-step>。继续这个还是新任务? et attendez la réponse. Liez à la première ligne uniquement si l'utilisateur confirme.
    • Nouvelle tâche substantielle : ne mentionnez pas les anciennes tâches ; laissez bound_topic = None.

Ouvrir une entrée de journal

N'ouvrez une entrée de journal que lorsque le travail commence réellement. Calculez le chemin quotidien en vault-time comme 03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-MM-DD.md, où <YYYY-MM> est le mois de la date elle-même et <YYYY-Wnn> est la semaine ISO. Créez les dossiers manquants du mois/semaine avec mkdir -p.

Si le fichier quotidien est manquant, créez-le à partir du modèle dans references/journal-write-protocol.md. Assurez-vous de ## 🕐 任务时间线, puis ajoutez un en-tête en bas de cette section :

  • Non lié : ### HH:MM ▶️ <短中文标题>
  • Lié : ### HH:MM ▶️ <短中文标题> → [[00 Tasks/<bound_topic>]]

Stockez current_entry_start, current_entry_date et current_entry_title. Réinitialisez les indicateurs de tâche, de candidat de connaissance et de récupération de connaissance pour la nouvelle entrée.

Sauvegarde par tour

Après chaque tour d'assistant avec une sortie substantielle, ajoutez exactement une ligne de progression à l'intérieur de l'entrée de journal active :

(HH:MM) <一句话进展>

Ajoutez à la fin du corps de l'entrée active, immédiatement avant le prochain en-tête de chronologie ### ou la fin du fichier. Ne réécrivez pas les lignes de progression antérieures. Ignorez la sauvegarde si le tour n'est qu'une question de clarification ou si tracking_disabled = True.

Avant d'écrire, lisez references/journal-write-protocol.md lorsque vous avez besoin de l'emplacement exact d'ajout, du rebasage d'écriture concurrente, de la gestion des limites vault-time, de la syntaxe des lignes pièges, ou du modèle de journal.

Vérifications post-sauvegarde

Exécutez ces vérifications après la sauvegarde par tour :

  1. Promotion explicite : si la sortie visible contient un marqueur ➡️ 下一步 explicite ou une section ## ➡️ 下一步, mettez à jour la couche sujet/index. Si bound_topic est défini, lisez references/topic-update-protocol.md ; sinon, si bind_skipped = False, lisez references/promote-to-wiki.md.
  2. Actualisation automatique du sujet : lorsque bound_topic est défini et qu'aucune étape suivante explicite n'est apparue, lisez references/topic-update-protocol.md si l'entrée active peut atteindre les seuils de vétusté existants. Conservez le comportement d'actualisation automatique actuel ; ne le convertissez pas en une invite de confirmation sauf si l'utilisateur le demande.
  3. Liaison automatique de tâche : lorsque l'entrée active n'est pas liée et manque d'un ➡️ 下一步 explicite, lisez references/task-candidate-trigger.md. Créez/liez automatiquement un sujet pour les sessions de type tâche ; ignorez uniquement les Q&A triviaux, les salutations, les rapports de tableau de bord/lint uniquement, la clarification pure, ou les sessions sans nature de tâche.
  4. Candidat de connaissance : lorsque des connaissances réutilisables peuvent avoir émergé et que l'utilisateur n'a pas déjà demandé de promotion, lisez references/knowledge-candidate-trigger.md. Ne créez ni ne mettez à jour 02 Knowledge/ automatiquement.

Changement de sujet en cours de session

Si l'utilisateur dit 继续做 X, 回到 X, ou demande autrement un changement alors qu'une entrée est déjà ouverte :

  1. Faites correspondre X avec _Index.md de manière prudente.
  2. Si aucune correspondance claire n'existe, posez une courte question de clarification.
  3. Si la correspondance est claire et différente de bound_topic, demandez : 切到 [[X]]?我会给当前 entry 追加一行切换记录,然后打开新的 X entry。
  4. Sur confirmation, ajoutez (HH:MM) 切出当前任务,转到 [[00 Tasks/X]]。, lisez la page de sujet, définissez bound_topic = X, et ouvrez une nouvelle entrée de journal liée.
  5. Si l'utilisateur refuse, conservez la liaison existante.

Ne changez pas silencieusement de sujet en cours de session.

Demande d'enregistrement manuel

Si l'utilisateur dit 记录一下, 记一下刚才的进展, ou similaire, ajoutez une ligne de progression supplémentaire à l'entrée actuelle résumant la progression depuis la dernière sauvegarde. N'ouvrez pas de nouvelle entrée et ne fermez pas l'entrée actuelle sauf si l'utilisateur le demande explicitement pour changer de tâche.

Modules

Chargez les workflows peu fréquents uniquement à la demande :

  • references/journal-write-protocol.md : création de journal, placement d'ajout, gestion des limites vault-time, rebasage d'écriture concurrente, syntaxe des lignes pièges et modèle de journal.
  • references/bootstrap-vault.md : workflow d'installation unique pour le coffre Obsidian d'un nouvel utilisateur ; crée le répertoire/modèle/index minimal de fade-away ainsi que les points d'entrée d'instructions uniquement après confirmation.
  • references/context-check.md : vérification à froid ou de changement de limite pour les surfaces d'instructions/contexte obsolètes telles que AGENTS.md, CLAUDE.md, les notes de structure de projet et l'héritage de connaissance ; signalez la dérive sans écrire tant qu'elle n'est pas confirmée.
  • references/task-candidate-trigger.md : lie automatiquement les entrées de tâches substantielles non liées à 00 Tasks ; ignore les sessions triviales ou sans tâche.
  • references/topic-update-protocol.md : met à jour les pages de sujet liées, rafraîchit _Index.md et exécute le comportement d'actualisation automatique du sujet actuel.
  • references/promote-to-wiki.md : lie une entrée de journal non liée à une page de sujet et met à jour _Index.md après un ➡️ 下一步 explicite ou un déclencheur de liaison automatique de tâche.
  • references/render-dashboard.md : affiche un tableau de bord de tâches en lecture seule à partir de _Index.md.
  • references/render-weekly-index.md : génère ou met à jour un MOC hebdomadaire à la demande dans 03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-Wnn 周索引.md.
  • references/lint-vault-memory.md : affiche un rapport d'état en lecture seule pour les couches tâche, journal, index hebdomadaire et connaissance.
  • references/knowledge-retrieval-trigger.md : avant un travail substantiel, inventorie l'arborescence 02 Knowledge/ active, classe les candidats à partir des métadonnées et lit un petit nombre de pages pertinentes afin que le contexte durable plus ancien, les méthodes et les faits du projet puissent influencer la réponse.
  • references/knowledge-candidate-trigger.md : propose du matériel de journal réutilisable pour 02 Knowledge/ sans écrire tant que ce n'est pas confirmé.
  • references/promote-to-knowledge.md : crée ou met à jour des pages organisées sous 02 Knowledge/ après confirmation.

Règles de format

  • Format de l'heure : HH:MM sur 24 heures en utilisant le fuseau horaire vault configuré.
  • Titre du journal : court, descriptif en chinois ; évitez les titres génériques comme 任务1.
  • Nom de fichier du sujet : kebab-case, sans espaces, extension .md uniquement sur disque.
  • Lien wiki du sujet dans le journal : [[00 Tasks/<topic>]].
  • Format de ligne d'index : | [[<topic>]] | YYYY-MM-DD HH:MM | <escaped next-step> |.
  • Les répertoires task-tracker hérités ont été supprimés ; si l'utilisateur demande l'ancien tracker, expliquez que fade-away l'a remplacé.

Cas particuliers

  • L'utilisateur refuse (这次不用记录) : définissez tracking_disabled = True ; ignorez toutes les écritures pour la session, mais la lecture de _Index.md pour le contexte est autorisée.
  • Minuit : utilisez minuit vault-time. Après minuit vault-time, ouvrez une entrée de continuation dans le journal du nouveau jour vault-time et continuez les sauvegardes par tour là-bas.
  • Tour uniquement tableau de bord : affichez le tableau de bord et attendez ; n'ouvrez pas d'entrée de journal tant que l'utilisateur n'a pas commencé un vrai travail.
  • Page de sujet manquante pour une correspondance d'index : dites que la ligne de sujet existe mais que la page est manquante, puis demandez s'il faut la recréer ou continuer sans liaison.

Skills associés