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 — chroniqueuseVoix — 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
- 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.
- Réglage absent → sortie :
- Rassembler les faits de cette session : la conversation, puis
git log --oneline -20etgit status --shortpour les confirmer. Seul ce qui s’est passé dans cette session compte. - É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 :
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.## 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 « — » - 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]
- 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. - Écrire le réglage (ligne 2 seulement si une commande est donnée) :
La commande d’envoi tourne en arrière-plan après chaque note ;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"$ULK_VAULTy 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. - 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. Frontmatterprojet,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.