Skip to content

Commits par l'IA ​

Le serveur MCP propose des commandes (des « prompts » MCP) pour des commits qui suivent les conventions du dépôt. Dans Claude Code, ce sont /mcp__atelier__commit, /mcp__atelier__rework-commit…

commit ​

Deux modes, aussi disponibles seuls en commit-all et commit-by-context :

  • all : un seul commit avec tous les changements ;
  • context : un commit par changement cohérent. Les fichiers qui s'appuient les uns sur les autres (via le graphe de contexte, s'il est activé) ou d'un même dossier vont ensemble ; la doc, les dépendances (Cargo.lock, package.json…) et la CI ont chacune leur commit. Huit commits au plus.

L'agent passe par trois outils : git_commit_plan (les conventions du dépôt lues dans son historique, les fichiers et leur découpage), git_diff (ce qui a changé) et git_commit (les commits).

Les conventions du dépôt sont déduites de ses 60 derniers commits : Conventional Commits, gitmoji ou texte libre, français ou anglais, types et portées utilisés, majuscule, point final, longueur, présence d'un corps. Chaque message est vérifié avant tout commit : si un seul ne les respecte pas, rien n'est commité.

Jamais de co-auteur : les lignes Co-authored-by et les attributions à une IA sont retirées du message, qui qu'en soit l'auteur. Rien n'est poussé ni modifié après coup (pas d'amend).

rework-commit ​

/rework-commit last 10 commits (aussi « since abc123 » ou abc123..HEAD) passe en revue les derniers commits et corrige les messages qui ne collent pas : le titre suit-il les conventions du dépôt et dit-il ce que fait vraiment le diff, et la description correspond-elle aux changements, sans rien affirmer de faux ?

git_rework_plan liste les commits (sujet, corps, fichiers modifiés) avec des constats automatiques :

  • titre hors conventions ;
  • type qui contredit les fichiers (docs: sur du code) ;
  • portée absente de tous les chemins modifiés ;
  • fichiers nommés dans le message mais non modifiés par le commit ;
  • co-auteur ;
  • gros changement sans description.

L'agent lit les diffs (git_show) et juge ; git_rework_apply ne réécrit que les messages choisis. Les arbres, les auteurs et les dates sont repris tels quels : aucun fichier ne bouge et aucun conflit n'est possible.

Garde-fous :

  • pas de merge dans la chaîne, et un arbre de travail propre ;
  • chaque message vérifié avant de toucher à quoi que ce soit ;
  • commits déjà poussés refusés, sauf accord explicite de l'utilisateur (allowPushed) ;
  • l'ancienne tête reste sous refs/atelier/backup/<date> (git reset --hard <ref> remet tout en place) ;
  • jamais de co-auteur, jamais de push.

Publié sous licence MIT.