Workflow Jujutsu
Pour le codage par agent, préférez jj (Jujutsu) à git brut dès lors qu'un dépôt .jj/ est présent — c'est la couche de modification locale supérieure. Git reste l'interface distante/canonique pour les PR, CI et audits : modifiez avec jj, vérifiez avec Git en lecture seule.
1. Détecter et bloquer d'abord
Exécutez ${CLAUDE_SKILL_DIR}/scripts/detect_jj_state.sh, ou vérifiez manuellement :
.jj/présent → dépôt jj : utilisezjj, jamaisgiten modification..jj/et.git/→ colocalisé : modifiez avecjj, lisez avec git, ne touchez jamais à l'index/staging de git.- seulement
.git/→ dépôt Git standard : n'introduisez pasjjsauf demande explicite.
Voir references/git-interop.md.
2. Règles de sécurité pour l'agent (non négociables)
- Toujours
--no-pagersur les commandes de sortie ; définissezjj config set --user ui.paginate never. - Toujours
-m. Ne jamais exécuter d'éditeur/formulaire TUI — les commandesjj describe|commit|squashnues,jj split(interactif),jj squash -i,jj resolve,jj diffeditbloquent les agents. jjprend un instantané de la copie de travail uniquement lorsqu'une commande jj est exécutée, pas à chaque écriture de fichier.
Voir references/agent-safety.md.
3. Boucle d'édition
jj --no-pager status
# modifier les fichiers (instantané pris à la prochaine commande jj)
jj --no-pager diff
jj describe -m "<message conventionnel du projet>"
jj new -m "<prochaine unité>" # un changement par unité logique — évite un commit unique trop gros
Diviser un changement mixte de manière non interactive : jj split <chemin> -m "<msg>". Voir references/command-map.md.
4. Récupération (réversible)
jj --no-pager op log → jj undo (dernière opération) ou jj op restore <id>. Les conflits sont de première classe : jj status les signale ; résolvez en éditant les marqueurs, puis vérifiez. Voir references/recovery-playbook.md.
5. Remise via Git
jj git fetch
jj rebase -d <branche-par-défaut>
jj bookmark create <branche> -r @-
jj git push --bookmark <branche> # les nouveaux signets poussent directement
Ne jamais pousser vers une branche protégée/par défaut ; ne jamais réécrire l'historique public sauf autorisation. Ouvrez la PR avec gh/glab. Voir references/pr-handoff.md.
6. Agents parallèles
Un jj workspace par agent concurrent — ne partagez jamais la copie de travail. Voir references/parallel-agents.md.
7. Vérifier avant « terminé »
Exécutez ${CLAUDE_SKILL_DIR}/scripts/verify_handoff.sh, ou rapporter jj --no-pager status, jj --no-pager log --limit 10, jj --no-pager diff --stat, git status --short --branch. Rapportez les commandes exactes et leur sortie ; ne déclarez jamais « terminé/testé/prêt » sans cela ; divulguez les force-push, récupérations, conflits.
Pourquoi jj bat git pour les agents (et quand ne PAS l'utiliser) : references/why-jj-for-agents.md.