Remplace le bouton ✨ « Generate Commit Message » de GitHub Copilot par un bouton
équivalent qui appelle le CLI claude en mode headless (claude -p).
Trois accès, du plus visible au plus fiable :
-
Barre de titre du panneau Source Control (à côté de
✓,↻,…) — contributionscm/title, API stable : marche toujours. -
Dans le champ de saisie du message de commit, à l'emplacement exact de l'ancien bouton Copilot — contribution
scm/inputBox.⚠️ C'est une API proposée de VS Code (contribSourceControlInputBoxMenu), réservée aux extensions autorisées. Il faut donc, une fois pour toutes, dans~/.vscode/argv.json(et~/.cursor/argv.json) :puis quitter et relancer complètement l'éditeur (
Cmd+Q— un simple Reload Window ne suffit pas pour cette option). -
Palette de commandes :
Cmd+Shift+P→ « Générer le message de commit (Claude) ».
Pour masquer un des deux boutons : clic droit dessus → Hide.
- Récupère le diff staged (ou le diff non indexé si rien n'est en staging).
- Y joint la branche courante, le
--statet les 15 derniers sujets de commit (pour que Claude respecte la convention du dépôt, ex. Conventional Commits). - Appelle
claude --print --model sonnet --system-prompt …en passant le tout sur stdin. - Écrit la réponse directement dans la zone de commit.
Le texte déjà présent dans la zone de commit est envoyé comme hint d'intention, puis remplacé par le message généré.
Aucun outil n'est autorisé (--disallowed-tools), aucun MCP n'est chargé
(--strict-mcp-config), aucune session n'est persistée (--no-session-persistence) :
un appel isolé, ~5 s avec sonnet.
CONTRIBUTING.md » dans instructions reste donc sans effet. Pour lui
donner les conventions du dépôt, lister le fichier dans contextFiles : l'extension
en lit le contenu et l'injecte dans le prompt.
// .vscode/settings.json
"claudeCommitMessage.contextFiles": ["CONTRIBUTING.md"]| Réglage | Défaut | Rôle |
|---|---|---|
claudePath |
auto | Chemin du binaire claude (PATH, ~/.local/bin/claude, Homebrew…) |
model |
sonnet |
Modèle passé à --model (haiku pour plus rapide) |
language |
auto |
auto = langue des commits récents ; sinon english, français… |
instructions |
— | Consignes libres ajoutées au prompt (langue, préfixe de ticket…) |
contextFiles |
[] |
Fichiers dont le contenu est injecté comme conventions du dépôt (ex. ["CONTRIBUTING.md"]) |
maxContextFileChars |
12000 |
Troncature de chaque fichier de contextFiles |
recentCommitCount |
15 |
Nombre de sujets de commits envoyés comme exemples de style |
maxDiffChars |
60000 |
Troncature du diff |
contextLines |
8 |
git diff -U<n> |
excludePaths |
lockfiles, *.snap |
Fichiers retirés du corps du diff (restent dans le --stat) |
fallbackToUnstaged |
true |
Utiliser les modifs non indexées si rien n'est stagé |
timeoutSeconds |
120 |
Délai maximal |
extraArgs |
[] |
Arguments supplémentaires pour claude (ex. ["--effort","low"]) |
Les fichiers non suivis (untracked) ne sont pas dans le diff : seuls leurs noms sont transmis quand on retombe sur les modifs non indexées.
Dans keybindings.json :
{
"key": "cmd+alt+m",
"command": "claudeCommitMessage.generate",
"when": "scmRepository"
}Prérequis : le CLI Claude Code
installé et authentifié (claude doit répondre dans un terminal).
unzip claude-commit-message-*.zip
cd claude-commit-message
./install.shLe script installe l'extension dans VS Code / Cursor / VS Code Insiders (ceux qu'il
trouve), autorise l'API proposée dans argv.json (sauvegarde .bak-claude-commit)
et est ré-exécutable sans risque. Ensuite : quitter l'éditeur avec Cmd+Q et le
relancer.
Installation manuelle sans le script : Extensions → menu … → Install from VSIX…,
puis ajouter à la main "enable-proposed-api": ["local.claude-commit-message"] dans
~/.vscode/argv.json pour le bouton dans le champ de commit.
./build.sh # produit dist/claude-commit-message-<version>.vsix
./build.sh --install # + installe dans VS Code et Cursor
./build.sh --zip # archive partageable (vsix + install.sh + README)Pour partager : envoyer le .zip produit par --zip. Penser à incrémenter
version dans package.json à chaque évolution, sinon les installations
existantes ne se mettent pas à jour proprement.
Après installation, recharger la fenêtre (Developer: Reload Window).
Panneau Output → Claude Commit Message : commande exécutée, taille du prompt, première ligne du message, erreurs.