ulk
dixdix de deniersChroniqueusedes séances closesDeniers

Chroniqueuse

chroniqueuse des séances closes

trace de session vers le vault

Rédige le résumé de la session (fait, décidé, reste à faire, bloquant) que le hook de fin de session dépose dans le vault Obsidian pour Hermes, et active ou coupe cette trace. Utiliser pour « résume la session » / « trace de session » / « active la trace vers le vault ». Pas pour le commit de fin de séance (peon).

On lui ditrésume la session

Où elle intervient — 1 parcours

Fichier de Chroniqueuse

ulk/plugins/ulk/skills/chroniqueuse/SKILL.md

Chroniqueuse — 126 lignes, telles qu'elles sont dans ulk.

En-tête — première ligne de chaque sortie, seule : Dix de Denier — chroniqueuse

Voix — avant la première sortie, lire ${CLAUDE_PLUGIN_ROOT}/ressources/voix.md.

Racine — ${CLAUDE_PLUGIN_ROOT} est le dossier du plugin ulk ; dans tout fichier lu ensuite, ${CLAUDE_PLUGIN_ROOT} désigne ce même dossier.

/ulk:chroniqueuse — la trace de session

Décision : docs/decisions.md § ADR-002 · issue #48.

Le hook session-persist.sh écrit à chaque fin de session une note dans le vault Obsidian, sans modèle : faits du dépôt seulement. Cette carte ajoute l’intention, et c’est elle qui allume ou éteint la trace. Trois gestes, un par appel.

Appel Geste
/ulk:chroniqueuse rédige le résumé de la session courante
/ulk:chroniqueuse activer <chemin du vault> [commande d'envoi] allume la trace
/ulk:chroniqueuse couper éteint la trace

Pas de goal à poser : aucun des trois gestes n’est une tâche à mener au vert.

Le fichier de réglage : ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/ulk-vault. Ligne 1 : chemin absolu du vault. Ligne 2, facultative : commande d’envoi vers la machine d’Hermes. Présent = trace active ; absent = inactive.


1. Résumer — /ulk:chroniqueuse

  1. Lire le réglage et le chemin du résumé de cette session :
    CONF="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/ulk-vault"; test -f "$CONF" && sed -n 1p "$CONF"; echo "résumé : ${ULK_SESSION_RESUME:-absent}"
    • Réglage absent → sortie : Trace inactive · pour l'allumer : /ulk:chroniqueuse activer <chemin du vault>. Fin.
    • résumé : absent → sortie : Cette session n'a pas de trace ouverte (démarrée avant l'activation) · relancer Claude Code, puis /ulk:chroniqueuse. Fin.
  2. Rassembler les faits de cette session : la conversation, puis git log --oneline -20 et git status --short pour les confirmer. Seul ce qui s’est passé dans cette session compte.
  3. Écrire le fichier $ULK_SESSION_RESUME (Write, chemin lu à l’étape 1). Il vit hors du dépôt, un par session : rien à ignorer dans git, et deux sessions ouvertes sur le même projet ne mélangent pas leurs résumés. Exactement ces quatre titres, dans cet ordre, rien avant ni après :
    ## Fait
    
    - <une ligne par résultat livré, avec #issue, PR ou commit court quand il existe>
    
    ## Décidé
    
    - <arbitrage pris et sa raison en une ligne> — ou « — »
    
    ## Reste à faire
    
    - <prochain geste concret, commande comprise> — ou « — »
    
    ## Bloquant
    
    - <ce qui empêche d'avancer et qui doit trancher> — ou « — »
    Règles : littéral, au passé pour « Fait », 40 lignes au plus. Jamais de secret : on nomme un compte ou une clé, jamais sa valeur. Hermes lit cette note telle quelle, donc rien de supposé : ce qui n’a pas été vérifié le dit.
  4. Sortie : Résumé écrit · il part dans le vault à la fermeture de la session (<chemin du vault>). puis « tu peux t’arrêter ici ». Le résumé réécrit plus tard dans la même session remplace le précédent : relancer la carte suffit.

2. Activer — /ulk:chroniqueuse activer <chemin> [commande]

  1. Chemin absent de l’appel → AskUserQuestion : « Quel est le chemin absolu de ton vault Obsidian ? ». Le chemin doit être absolu et exister : test -d "<chemin>". Sinon le dire en une ligne et s’arrêter.
  2. Écrire le réglage (ligne 2 seulement si une commande est donnée) :
    CONF="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/ulk-vault"
    printf '%s\n' "<chemin>" > "$CONF"
    # avec commande d'envoi :
    printf '%s\n%s\n' "<chemin>" "<commande>" > "$CONF"
    mkdir -p "<chemin>/ulk/sessions"
    La commande d’envoi tourne en arrière-plan après chaque note ; $ULK_VAULT y vaut le chemin du vault. Exemple : rsync -a "$ULK_VAULT/ulk/" hermes:/chemin/ulk/. Sans commande : la synchronisation du vault est faite par l’outil de l’utilisateur (Obsidian Sync, Syncthing…), et la livraison chez Hermes n’est pas vérifiée par ulk.
  3. Sortie : Trace active à partir de la prochaine session · notes dans <chemin>/ulk/sessions/<projet>/. Puis une ligne : Avant de fermer une session : /ulk:chroniqueuse.

3. Couper — /ulk:chroniqueuse couper

rm -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/ulk-vault"

Sortie : Trace coupée · les notes déjà écrites restent dans le vault.


Ce que fait le hook, pour répondre aux questions

  • Fin de session : une note <vault>/ulk/sessions/<projet>/AAAA-MM-JJ-HHMM-<session_id>.md. Frontmatter projet, session_id, date, debut, fin, branche, statut (terminée | interrompue), source (mecanique | redigee). Corps : les quatre titres ci-dessus, puis les faits du dépôt (commits, fichiers, non commité).
  • Vault injoignable : la note attend dans l’état local d’ulk (~/.claude/state/session-persist/) et part au prochain démarrage où le vault répond ; le démarrage le dit.
  • Arrêt brutal : au démarrage suivant, une session morte sans note reçoit une note statut: interrompue. Une session encore ouverte n’est jamais touchée.
  • Envoi en échec : le démarrage le dit et relance l’envoi.
  • Note de session = journal, pas mémoire durable : ne pas la verser dans docs/_memory/ (archiviste — mémoire de projet dans Obsidian).
  • L’état du projet dans le vault appartient à Hermes : ni le hook ni cette carte n’y écrivent.