Git worktree monitor for Claude Code — status line, file guard hooks, and worktree management skills
npx claudepluginhub lsagetlethias/claude-worktree-monitor-pluginGit worktree monitor — status line, protection hooks, and skills for multi-worktree Claude Code sessions
Plugin Claude Code pour le monitoring et la protection des git worktrees.
/worktree-monitor:setup pour configurer, /worktree-monitor:set pour sélectionner un worktree, /worktree-monitor:widgets pour configurer les widgetsDans une session Claude Code :
/plugin marketplace add lsagetlethias/claude-worktree-monitor-plugin
/plugin install worktree-monitor
Puis lancer /worktree-monitor:setup pour configurer les hooks et la status line.
git clone https://github.com/lsagetlethias/claude-worktree-monitor-plugin.git \
~/.claude/plugins/local/worktree-monitor
cd ~/.claude/plugins/local/worktree-monitor
pnpm install
pnpm build
Puis lancer /worktree-monitor:setup dans une session Claude Code.
📁 my-app [main] │ 🤖 Opus 4.6 │ 42% 85k/200k
| Widget ID | Exemple | Description |
|---|---|---|
worktree | 📁 my-app [main] / 🌳 my-app [main] | Projet + branche (🌳 si worktree secondaire) |
model | 🤖 Opus 4.6 | Modèle Claude actif |
context | 42% 85k/200k | Utilisation du contexte (tokens utilisés/total) |
| Widget ID | Exemple | Description |
|---|---|---|
git-ahead-behind | ⬆1 ⬇0 | Commits en avance/retard vs upstream |
git-dirty | ✏️ 3 dirty | Fichiers modifiés (ou clean) |
git-diff-stat | +42 -17 | Lignes ajoutées/supprimées (unstaged) |
git-stash | 📦 2 stash | Entrées dans le stash (masqué si 0) |
git-last-commit | 🕐 2h ago | Age du dernier commit |
git-branch-commits | 🔀 5 commits | Commits sur la branche vs main/master |
git-state | ⚠️ REBASE | Etat git actif (merge, rebase, cherry-pick, revert) |
git-tag | 🏷 v1.2.0 | Tag courant |
| Widget ID | Exemple | Description |
|---|---|---|
wt-count | 🌳 3 wt | Nombre total de worktrees (masqué si ≤ 1) |
wt-dirty | 🌳 2/3 clean | Worktrees propres vs total |
wt-branches | 🌳 main│feat│fix | Branches de tous les worktrees |
| Preset | Widgets |
|---|---|
| Minimal (défaut) | worktree, model, context |
| Git | Minimal + git-ahead-behind, git-dirty, git-state |
| Git complet | Git + tous les widgets git et multi-worktree |
| Personnalisé | Sélection interactive widget par widget |
Les widgets git ne déclenchent des commandes git que s'ils sont activés — le preset Minimal n'exécute aucune commande git.
Les widgets se configurent via /worktree-monitor:widgets ou manuellement dans ~/.claude/worktree-monitor.json :
{
"hooks": { ... },
"widgets": ["worktree", "model", "context", "git-dirty", "git-state"]
}
Le tableau widgets détermine quels widgets sont affichés et dans quel ordre.
| Hook | Comportement | Par défaut |
|---|---|---|
SessionStart (compact) | Liste les worktrees et demande confirmation | Actif |
PreToolUse (file guard) | Contrôle d'accès intelligent hors worktree | Inactif |
PostToolUse (file warn) | Warning non-bloquant pour les opérations hors worktree | Inactif |
Les hooks PreToolUse et PostToolUse s'activent via /worktree-monitor:setup.
Quand un chemin est hors du worktree actif, le hook analyse le contexte :
| Situation | Comportement |
|---|---|
| Chemin pas dans un repo git | Auto-accept silencieux |
| Chemin dans un autre repo git | Auto-accept silencieux |
| Chemin dans un autre worktree du même repo | Demande permission (readonly/readwrite) |
Pour les accès inter-worktree, les permissions sont sauvegardées dans .claude/.worktree-monitor-permissions (JSON) :
{
"/chemin/vers/autre-worktree": "readonly"
}
Si une opération d'écriture est tentée sur un worktree en readonly, le hook propose un upgrade vers readwrite.
Les chemins suivants ne sont jamais bloqués par les hooks :
/tmp/*~/.claude/*/dev/*Si le worktree root ne peut pas être déterminé (pas de repo git, pas de jq), les hooks laissent passer silencieusement.
/worktree-monitor:setupConfigure le plugin : hooks à activer, status line, settings globaux Claude Code.