Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Claude Commit Message

Remplace le bouton ✨ « Generate Commit Message » de GitHub Copilot par un bouton équivalent qui appelle le CLI claude en mode headless (claude -p).

Où est le bouton ✨

Trois accès, du plus visible au plus fiable :

  1. Barre de titre du panneau Source Control (à côté de , , ) — contribution scm/title, API stable : marche toujours.

  2. 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) :

    "enable-proposed-api": ["local.claude-commit-message"]

    puis quitter et relancer complètement l'éditeur (Cmd+Q — un simple Reload Window ne suffit pas pour cette option).

  3. Palette de commandes : Cmd+Shift+P → « Générer le message de commit (Claude) ».

Pour masquer un des deux boutons : clic droit dessus → Hide.

Fonctionnement

  1. Récupère le diff staged (ou le diff non indexé si rien n'est en staging).
  2. Y joint la branche courante, le --stat et les 15 derniers sujets de commit (pour que Claude respecte la convention du dépôt, ex. Conventional Commits).
  3. Appelle claude --print --model sonnet --system-prompt … en passant le tout sur stdin.
  4. É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.

⚠️ Corollaire : Claude ne peut pas ouvrir de fichier. Une consigne du type « regarde 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églages (claudeCommitMessage.*)

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.

Raccourci clavier (optionnel)

Dans keybindings.json :

{
  "key": "cmd+alt+m",
  "command": "claudeCommitMessage.generate",
  "when": "scmRepository"
}

Installation (depuis l'archive partagée)

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.sh

Le 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 & partage

./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).

Debug

Panneau Output → Claude Commit Message : commande exécutée, taille du prompt, première ligne du message, erreurs.

About

VS Code button that writes your git commit message with Claude Code — a drop-in replacement for Copilot's sparkle button

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages