git:commit
Créer des commits bien formatés avec format conventional et emoji
Best use case
git:commit is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Créer des commits bien formatés avec format conventional et emoji
Teams using git:commit should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/commit/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How git:commit Compares
| Feature / Agent | git:commit | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Créer des commits bien formatés avec format conventional et emoji
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Workflow Git Commit Créer un commit bien formaté avec les arguments : $ARGUMENTS ## IMPORTANT : Task Management System obligatoire **RÈGLE CRITIQUE** : Chaque étape DOIT être trackée via TaskCreate/TaskUpdate. - Créer TOUTES les tâches AVANT de commencer - Marquer `in_progress` au début de chaque étape - Marquer `completed` UNIQUEMENT quand l'étape est 100% terminée - NE JAMAIS sauter une étape ## Instructions à Exécuter ### Étape 1 : Créer TOUTES les tâches du workflow **OBLIGATOIRE** : Utilise TaskCreate pour créer ces 5 tâches dans cet ordre exact : ``` TaskCreate #1: "Vérifier les changements disponibles" - activeForm: "Checking available changes" - description: "git status + git diff pour voir les fichiers modifiés" TaskCreate #2: "Analyser le diff des changements" - activeForm: "Analyzing diff content" - description: "git diff --cached pour comprendre les changements" TaskCreate #3: "Déterminer la stratégie de commit" - activeForm: "Determining commit strategy" - description: "Décider si un ou plusieurs commits sont nécessaires" TaskCreate #4: "Créer le(s) commit(s)" - activeForm: "Creating commit(s)" - description: "git commit avec message formaté emoji + conventional" TaskCreate #5: "Push vers remote" - activeForm: "Pushing to remote" - description: "git push (sauf si --no-push)" ``` **Après création** : Affiche `TaskList` pour confirmer que les 5 tâches existent. --- ### Étape 2 : Vérifier les changements disponibles **TaskUpdate : Tâche #1 → `in_progress`** Exécute en parallèle : ```bash git status git diff --cached --stat ``` **Traitement** : 1. **SI** aucun changement (ni stagé, ni non-stagé) : - Affiche "❌ Aucun changement à committer" - **TaskUpdate : Tâche #1 → `completed`** - **STOP** - Ne pas continuer 2. **SI** des fichiers modifiés mais rien de stagé : - Exécute `git add .` pour tout stager - Exécute `git status` pour confirmer 3. **SI** des fichiers déjà stagés : - Continue avec ces fichiers uniquement **TaskUpdate : Tâche #1 → `completed`** --- ### Étape 3 : Analyser le diff des changements **TaskUpdate : Tâche #2 → `in_progress`** Exécute en parallèle : ```bash git diff --cached git log -5 --oneline ``` **Traitement** : 1. Lis TOUT le diff des changements stagés 2. Note le style des commits récents du repo 3. Identifie les types de changements présents : - feat (nouvelles fonctionnalités) - fix (corrections de bugs) - docs (documentation) - refactor (refactorisation) - test (tests) - chore (configuration, maintenance) - style (formatage) - perf (performance) **TaskUpdate : Tâche #2 → `completed`** --- ### Étape 4 : Déterminer la stratégie de commit **TaskUpdate : Tâche #3 → `in_progress`** **Critères pour DIVISER en plusieurs commits :** 1. Préoccupations distinctes (feat + docs + tests mélangés) 2. Types de changements différents (fix + refactor) 3. Fichiers non-liés modifiés ensemble 4. Diff > 200 lignes sur sujets différents **SI plusieurs types détectés :** - Liste les commits à créer - Pour chaque commit, utilise : ```bash git reset HEAD <fichiers-à-exclure> git commit -m "..." git add <fichiers-suivants> ``` **SINON :** - Continue avec un seul commit **TaskUpdate : Tâche #3 → `completed`** --- ### Étape 5 : Créer le(s) commit(s) **TaskUpdate : Tâche #4 → `in_progress`** **Pour CHAQUE commit à créer :** #### 5.1 Déterminer le message 1. **Type** : feat, fix, docs, refactor, test, chore, style, perf, ci, revert 2. **Emoji** : Voir table ci-dessous 3. **Scope** : Optionnel, entre parenthèses (auth, api, ui...) 4. **Description** : < 72 caractères, mode impératif, présent #### 5.2 Exécuter le commit **OBLIGATOIRE : Utilise TOUJOURS un HEREDOC pour le message :** ```bash git commit -m "$(cat <<'EOF' <emoji> <type>(<scope>): <description courte> <détails optionnels - explique le "pourquoi"> EOF )" ``` **Exemple simple :** ```bash git commit -m "$(cat <<'EOF' ✨ feat(auth): ajouter connexion OAuth Google EOF )" ``` **Exemple avec corps :** ```bash git commit -m "$(cat <<'EOF' 🐛 fix(api): corriger fuite mémoire dans le cache Le cache ne libérait pas les entrées expirées, causant une augmentation progressive de la mémoire utilisée. Fixes #123 EOF )" ``` **TaskUpdate : Tâche #4 → `completed`** --- ### Étape 6 : Push vers remote **TaskUpdate : Tâche #5 → `in_progress`** #### 6.1 Vérifier l'option --no-push **SI** `--no-push` présent dans $ARGUMENTS : - Affiche "📝 Commit local uniquement (--no-push)" - **TaskUpdate : Tâche #5 → `completed`** - **STOP** - Workflow terminé #### 6.2 Push automatique Le hook PostToolUse gère automatiquement : - Premier push : `git push -u origin <branch>` - Push suivants : `git push` **TaskUpdate : Tâche #5 → `completed`** --- ## Checklist de validation finale Avant de terminer, vérifie que TOUTES ces conditions sont remplies : - [ ] Tâche #1 completed : Changements vérifiés et stagés - [ ] Tâche #2 completed : Diff analysé - [ ] Tâche #3 completed : Stratégie déterminée - [ ] Tâche #4 completed : Commit(s) créé(s) avec HEREDOC - [ ] Tâche #5 completed : Push effectué (ou skip si --no-push) **Si une tâche n'est pas completed, NE PAS terminer.** --- ## Table des Emojis par Type | Type | Emoji | Usage | |------|-------|-------| | feat | ✨ | Nouvelle fonctionnalité | | fix | 🐛 | Correction de bug | | docs | 📝 | Documentation | | style | 💄 | Formatage/style (pas de changement de logique) | | refactor | ♻️ | Refactorisation de code | | perf | ⚡️ | Amélioration de performance | | test | ✅ | Ajout/modification de tests | | chore | 🔧 | Outils, configuration, maintenance | | ci | 🚀 | CI/CD | | revert | ⏪️ | Annulation de changements | ### Emojis Spécialisés | Contexte | Emoji | Description | |----------|-------|-------------| | Breaking change | 💥 | Changement cassant | | Security | 🔒️ | Sécurité | | Hotfix | 🚑️ | Correction critique urgente | | Typo | ✏️ | Faute de frappe | | WIP | 🚧 | Travail en cours | | Lint/warnings | 🚨 | Correction warnings linter | | Dependencies + | ➕ | Ajout dépendance | | Dependencies - | ➖ | Suppression dépendance | | Database | 🗃️ | Changements BDD | | Logs + | 🔊 | Ajout de logs | | Logs - | 🔇 | Suppression de logs | | Types | 🏷️ | Définitions de types | | UX | 🚸 | Amélioration UX | | Accessibility | ♿️ | Accessibilité | | i18n | 🌐 | Internationalisation | | Business logic | 👔 | Logique métier | | Architecture | 🏗️ | Changements architecturaux | | Dead code | ⚰️ | Suppression code mort | | Remove files | 🔥 | Suppression fichiers | | Move/rename | 🚚 | Déplacement/renommage | | Assets | 🍱 | Assets (images, etc.) | | UI animations | 💫 | Animations UI | | Validation | 🦺 | Code de validation | | Feature flags | 🚩 | Feature flags | | Analytics | 📈 | Tracking/analytics | | CI fix | 💚 | Correction CI | | Snapshot tests | 📸 | Tests snapshot | | Mock | 🤡 | Mocking | | Experiment | ⚗️ | Expérimentations | | Seed data | 🌱 | Données de seed | | .gitignore | 🙈 | Fichier .gitignore | | License | 📄 | Licence | | Contributors | 👥 | Contributeurs | | DX | 🧑💻 | Developer Experience | | Responsive | 📱 | Design responsive | | SEO | 🔍️ | SEO | | Offline | ✈️ | Support offline | | Concurrency | 🧵 | Multithreading | | Easter egg | 🥚 | Easter egg | | Comments | 💡 | Commentaires dans le code | | Text/literals | 💬 | Textes et littéraux | | External API | 👽️ | Changements API externe | | Error handling | 🥅 | Gestion d'erreurs | | Simple fix | 🩹 | Fix non-critique simple | | Package build | 📦️ | Fichiers compilés/packages | | Pin deps | 📌 | Épingler versions | | Release tag | 🔖 | Tags de release | | Init project | 🎉 | Début de projet | | Merge | 🔀 | Fusion de branches | --- ## Format du Message de Commit ``` <emoji> <type>(<scope>): <description impérative courte> [corps optionnel - explique le "pourquoi" pas le "quoi"] [footer optionnel - références issues, breaking changes] ``` ### Règles du Message 1. **Première ligne** : < 72 caractères 2. **Mode impératif** : "ajouter" pas "ajouté" 3. **Présent** : "corrige" pas "a corrigé" 4. **Pas de point final** sur la première ligne 5. **Ligne vide** entre titre et corps 6. **Corps** : explique le contexte et la raison --- ## Options de Commande | Option | Description | |--------|-------------| | `--verify` | Exécute `make qa` avant le commit | | `--no-push` | Ne push pas automatiquement après le commit | **Combinaison possible :** `/git:commit --verify --no-push` --- ## Directives de Division Divise les commits si tu détectes : 1. **feat + docs** → 2 commits séparés 2. **fix + refactor** → 2 commits séparés 3. **test + implementation** → peut être ensemble si cohérent 4. **chore (deps) + feat** → toujours séparés 5. **Plusieurs features distinctes** → 1 commit par feature
Related Skills
commit
Quick commit and push with minimal, clean messages
fix-grammar
Fix grammar and spelling errors in one or multiple files while preserving formatting
symfony-framework
Comprehensive Symfony 6.4 development skill for web applications, APIs, and microservices.
symfony:make
Cherche si il existe un maker Symfony pour faire la tache demandée et l'utilise si il existe. Si aucun maker n'existe alors utilise la slash command "/prepare"
phpstan-resolver
Résout automatiquement les erreurs PHPStan en analysant et corrigeant les problèmes de types. Boucle jusqu'à zéro erreur ou stagnation.
elegant-objects
Vérifie la conformité du code PHP aux principes Elegant Objects de Yegor Bugayenko. Analyse un fichier spécifique ou tous les fichiers modifiés dans la branche.
prompt:validate
Vérifie la checklist avant exécution et liste les oublis
prompt:transform
Transforme un prompt en prompt exécutable compatible avec le Task Management System (TaskCreate/TaskUpdate/TaskList)
prompt:team
Orchestre une équipe d'agents spécialisés pour les tâches complexes. Auto-détecte le type, compose l'équipe, coordonne les phases analyse → challenge → implémentation → QA.
prompt:start
Démarre un développement avec un starter léger puis active le mode plan
apex
Systematic implementation using APEX methodology (Analyze-Plan-Execute-eXamine) with parallel agents, self-validation, and optional adversarial review. Use when implementing features, fixing bugs, or making code changes that benefit from structured workflow.
fix-errors
Fix all ESLint and TypeScript errors with parallel processing using snipper agents