| name | git-sync |
| description | Synchronisation Git pour roo-extensions avec gestion du submodule mcps/internal et résolution manuelle des conflits (multi-machines). Utilise ce skill en début de session, avant de travailler, ou quand un message RooSync signale des commits. Phrase déclencheur : "git sync", "pull", "synchronise", "mets à jour le repo". |
Skill : Git Sync - Override roo-extensions
Override projet : Surcharge la skill globale ~/.claude/skills/git-sync/SKILL.md.
Template generique : .claude/configs/skills/git-sync/SKILL.md
Synchronisation Git pour roo-extensions avec submodule mcps/internal et merges conservatifs (multi-machines).
Quand utiliser
- En debut de session pour recuperer les changements distants
- Pendant un tour de sync (Phase 2)
- Avant de commencer du travail pour etre a jour
- Apres reception d'un message RooSync signalant des commits
Workflow
Phase 0 : Grounding Sémantique (Bookend Début)
OBLIGATOIRE avant toute synchronisation.
codebase_search(query: "git sync submodule conflict merge resolution", workspace: "d:\\roo-extensions")
But : Identifier les patterns de résolution de conflits, les workflows git existants, et les fichiers de configuration submodule.
Etape 1 : Fetch et analyse
git fetch origin
git log HEAD..origin/main --oneline
- Compter les commits entrants
- Identifier les auteurs et les fichiers modifies
Etape 2 : Pull conservatif
git pull --no-rebase origin main
TOUJOURS --no-rebase pour preserver l'historique et eviter les conflits en cascade.
Etape 3 : Resolution de conflits (si necessaire)
Si des conflits sont detectes :
- Lister fichiers en conflit (
git status)
- Pour chaque fichier :
- Lire avec marqueurs
<<<<<<<, =======, >>>>>>>
- Analyser les deux versions
- Resoudre (garder version recente/complete ou combiner)
- Editer pour supprimer les marqueurs
git add fichiers resolus
git commit (message merge)
Apres resolution : pusher immediatement pour debloquer les autres machines.
Etape 4 : Submodule update
git submodule update --init --recursive
Si le submodule est en conflit ou divergent :
- Verifier modifications locales (
cd mcps/internal && git status)
- Si modifs importantes :
git stash ou git commit -m "wip"
- Sinon :
git checkout -- . (abandon)
- Retour repertoire principal
Etape 5 : Verification finale
git status --short
git log --oneline -3
git submodule status
Etape 5b : Worktree Cleanup Check
Après chaque pull/sync, vérifier l'accumulation de worktrees orphelins.
git worktree list --porcelain | grep -c "^worktree"
Si > 2 worktrees actifs (en plus du main) :
# Dry run cleanup
powershell -ExecutionPolicy Bypass -File scripts/claude/worktree-cleanup.ps1 -WhatIf
# Si des orphelins sont détectés, exécuter le cleanup
powershell -ExecutionPolicy Bypass -File scripts/claude/worktree-cleanup.ps1 -Force
Pourquoi : Les sessions Claude Code et les sous-agents créent des worktrees qui ne sont pas toujours nettoyés. Un check après chaque sync prévient l'accumulation (issue #856).
Rapport
## Git Sync Status
### Remote
- Commits entrants : X
- Auteurs : [liste]
### Merge
- Status : Success | Conflits resolus | Conflits non resolus
- Fichiers modifies : Y
- Conflits resolus : [liste si applicable]
### Submodule mcps/internal
- Commit : [hash]
- Status : Clean | Modified
### Etat actuel
- Branch : main @ [hash]
- Pret pour push : Oui | Non (raison)
Commandes de reference
Status complet
git status --short && git submodule status
Derniers commits
git log --oneline -10
Commits du submodule
cd mcps/internal && git log --oneline -5
Preparation commit (sans commiter)
git diff --stat
git status
Regles
- TOUJOURS utiliser
--no-rebase pour preserver l'historique
- JAMAIS de force push
- JAMAIS de
git checkout ou git pull dans le submodule mcps/internal/ sans verification
- En cas de conflit, resoudre proprement (ne jamais
git add a l'aveugle)
- Les fichiers de config locaux (.claude/local/*) sont ignores par git
- NE PAS commiter sans instruction explicite de l'utilisateur
Phase 6 : Validation Sémantique (Bookend Fin)
OBLIGATOIRE après toute synchronisation réussie.
codebase_search(query: "git status submodule synced merged resolved", workspace: "d:\\roo-extensions")
But : Confirmer que l'état de synchronisation est cohérent avec l'index. Vérifier que les fichiers modifiés pendant le sync sont visibles dans les résultats.