hello

Briefing de début de session — état du projet, tâches en cours, prochaines actions.

Hello — Briefing de début de session

Stratégie d'exécution

Objectif : briefing en 2 batches, zéro appel superflu.

RÈGLE ANTI-CASCADE : ; exit 0 sur toute commande réseau/optionnelle.

Batch 1 — Collecter (tout en parallèle)

  1. Read : TODO.md
  2. Read : ~/.claude/settings.json (statusline)
  3. Read : ${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json (version installée)
  4. Bash : git status --short && echo "---BRANCH---" && git branch --show-current && echo "---LOG---" && git log --oneline -5 && echo "---DATE---" && date '+%Y-%m-%d %H:%M' && echo "---WEEK---" && git log --since="7 days ago" --oneline 2>/dev/null | wc -l && echo "---HOTSPOTS---" && git log --since="7 days ago" --pretty=format: --name-only 2>/dev/null | grep -v '^$' | sort | uniq -c | sort -rn | head -3
  5. Bash : node -e "require('https').get('https://raw.githubusercontent.com/vendeesign/codebloom/main/.claude-plugin/plugin.json',r=>{let d='';r.on('data',c=>d+=c);r.on('end',()=>console.log(d))}).on('error',()=>{})" 2>/dev/null; exit 0
  6. Bash : wc -l CLAUDE.md 2>/dev/null | awk '{print $1}'; grep -c '<!-- codebloom:format:lean' CLAUDE.md 2>/dev/null; grep -c '<!-- codebloom:rules:start' CLAUDE.md 2>/dev/null; test -f .claude/settings.local.json && echo "LOCAL=1" || echo "LOCAL=0"; exit 0 — comptage rapide pour le health-check + détection settings.local.json parasite

Batch 2 — Écrire (après analyse)

  • Edit DEV_TIME.md (marqueur chrono) — créer depuis template si absent
  • Bash : screenshot watcher
  • Conditionnel : CHANGELOG distant si MAJ disponible

Puis afficher le briefing.


Actions

1. Contexte

  • CLAUDE.md est déjà en contexte → ne PAS relire
  • TODO.md → batch 1

2. Mise à jour

Version installée = plugin.json local (batch 1). Version distante = plugin.json remote (batch 1). Version projet = ligne **Codebloom** dans CLAUDE.md (déjà en contexte).

  • Distante > installée → "🌸 Codebloom v[distante] disponible/plugin marketplace add vendeesign/codebloom puis /codebloom:update"
  • Installée > projet → "🌸 Codebloom mis à jour → v[installée]/codebloom:update pour intégrer"
  • Tout aligné → silence
  • Réseau absent → silence

Si MAJ détectée et CHANGELOG nécessaire → lire dans le batch 2.

3. Briefing

"🌸 [Nom] — Briefing

🔹 Branche : [branche] 🔹 Dernier commit : [hash + message] 🔹 État : [✅ propre / ⚠️ modifs non commitées] 🔹 Backlog : [X bugs, Y tâches, Z idées] (si TODO.md) 🔹 Vélocité 7j : [X commits] — hotspots : [fichier1] ([N]), [fichier2] ([N]), [fichier3] ([N]) 🔹 CLAUDE.md : [voir règle ci-dessous — afficher uniquement si non-OK]

On fait quoi ?"

Règle vélocité :

À partir des blocs ---WEEK--- et ---HOTSPOTS--- du batch 1 :

  • 0 commit sur 7j → afficher 🔹 **Vélocité 7j :** aucune activité — reprise de projet ?
  • ≥1 commit sur 7j → afficher le nombre et les top 3 hotspots au format : X commits — hotspots : path/file1.ts (5), path/file2.ts (3), path/file3.ts (2)
  • Ligne hotspots vide ou erreur git → afficher uniquement le nombre de commits sans hotspots
  • Pas de repo git (erreur sur toute la commande) → ne pas afficher la ligne Vélocité du tout

Cette ligne est une source de vérité rapide pour l'utilisateur : il voit immédiatement sur quoi il a travaillé dans la semaine, sans avoir à lancer l'agent git-historian. Si un fichier en top hotspot est inquiétant (candidat refactor, récurrence de bugs), il sait qu'il peut lancer git-historian à la demande pour une analyse profonde.

Règle CLAUDE.md (ligne conditionnelle) :

À partir des résultats du batch 1 (étape 6 — wc, grep format:lean, grep rules:start) :

SituationLigne à afficher
wc ≤ 120 + format:lean présent + rules:start présentSilence (ligne omise)
wc 121-150 + markers OK🟡 {X} lignes — ça commence à être long
wc 151-199 + markers OK🟠 {X} lignes — risque de dilution, à slim manuellement
wc ≥ 200 + markers OK🔴 {X} lignes — règles risquent d'être ignorées, slim CLAUDE.md en priorité
format:lean absent (ancien format)🔄 Format ancien détecté — /codebloom:update pour migrer
rules:start absent🛡️ Bloc règles inviolables absent — /codebloom:update pour ajouter
CLAUDE.md absent (wc retourne rien)📋 Pas de CLAUDE.md — /codebloom:setup (déjà géré dans les alertes § 7)

Si plusieurs situations s'appliquent : afficher uniquement la plus grave (format ancien > bloc rules absent > taille ≥ 200 > taille 151-199 > taille 121-150).

4. Statusline

  • ~/.claude/settings.json déjà lu (batch 1)
  • statusLine absent → ajouter silencieusement, mentionner dans le briefing
  • statusLine présent → rien

5. Chrono

  • DEV_TIME.md à la racine du projet → ajouter/remplacer > Session en cours depuis : [YYYY-MM-DD HH:MM]
  • Fichier absent → le créer depuis ${CLAUDE_PLUGIN_ROOT}/references/DEV_TIME.md

6. Screenshot watcher

node "${CLAUDE_PLUGIN_ROOT}/hooks/screenshot.js" > /dev/null 2>&1 &

Premier démarrage → mentionner. Sinon silence.

7. Alertes (si applicable)

Modifs non commitées (git status non vide) — afficher la ligne contextuelle :

  • Update Codebloom en attente (version installée > version projet, cf. §2) → "🔄 Update Codebloom dispo : /codebloom:update d'abord, tes modifs partiront avec le /push en fin de session"
  • Pas d'update → "📝 Modifs non commitées en attente (reprise de session ou travail en cours)" — pas d'action prescrite, /push est end-of-session

Autres alertes :

  • Pas de CLAUDE.md → "📋 /codebloom:setup ?"
  • Branche != main → "🔀 Tu continues sur [branche] ?"
  • LOCAL=1 (settings.local.json détecté, cf. batch 1 étape 6) → "⚠️ .claude/settings.local.json détecté — écrase les permissions Codebloom, /codebloom:update pour nettoyer"

La ligne CLAUDE.md (taille / format / bloc rules) est gérée directement dans le briefing § 3 à partir du batch 1, pas ici.

Règles

  • Bref et direct — pas de prose
  • Ne commence aucune tâche
  • Ne modifie rien sauf : chrono DEV_TIME.md, statusline settings, screenshot watcher