git:commit

Créer des commits bien formatés avec format conventional et emoji

8 stars

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

$curl -o ~/.claude/skills/commit/SKILL.md --create-dirs "https://raw.githubusercontent.com/atournayre/claude-marketplace/main/git/skills/commit/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/commit/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How git:commit Compares

Feature / Agentgit:commitStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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

8
from atournayre/claude-marketplace

Quick commit and push with minimal, clean messages

fix-grammar

8
from atournayre/claude-marketplace

Fix grammar and spelling errors in one or multiple files while preserving formatting

symfony-framework

8
from atournayre/claude-marketplace

Comprehensive Symfony 6.4 development skill for web applications, APIs, and microservices.

symfony:make

8
from atournayre/claude-marketplace

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

8
from atournayre/claude-marketplace

Résout automatiquement les erreurs PHPStan en analysant et corrigeant les problèmes de types. Boucle jusqu'à zéro erreur ou stagnation.

elegant-objects

8
from atournayre/claude-marketplace

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

8
from atournayre/claude-marketplace

Vérifie la checklist avant exécution et liste les oublis

prompt:transform

8
from atournayre/claude-marketplace

Transforme un prompt en prompt exécutable compatible avec le Task Management System (TaskCreate/TaskUpdate/TaskList)

prompt:team

8
from atournayre/claude-marketplace

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

8
from atournayre/claude-marketplace

Démarre un développement avec un starter léger puis active le mode plan

apex

8
from atournayre/claude-marketplace

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

8
from atournayre/claude-marketplace

Fix all ESLint and TypeScript errors with parallel processing using snipper agents