---
description: "Crée un commit conventionnel avec scope adapté au projet Easebook"
disable-model-invocation: true
---

# /commit — Commit conventionnel

Crée un commit en suivant la convention Conventional Commits avec les scopes du projet Easebook.

## Types

- `feat` — Nouvelle fonctionnalité
- `fix` — Correction de bug
- `refactor` — Refactoring sans changement fonctionnel
- `style` — Changement de style (CSS, formatage)
- `chore` — Maintenance (mises à jour, config)
- `docs` — Documentation
- `perf` — Amélioration de performance

## Scopes Easebook

| Scope | Fichiers concernés |
|---|---|
| `theme` | Thème `ebook-viewer` en général (Sage 11) |
| `viewer` | Cœur métier ebook viewer (Real3D Flipbook, Page Editor, `page-ebook.blade.php`) |
| `forms` | Formulaire contact (`app/ajax.php`, validation, reCAPTCHA) |
| `mailing` | Envoi emails Symfony Mailer (`app/mailing.php`, templates `resources/emails/`) |
| `cpt` | Custom Post Types et taxonomies (`app/cpt.php`) |
| `acf` | Champs ACF, options pages, exports ACFE |
| `admin` | Administration WordPress (`app/admin.php`, colonnes, filtres) |
| `deps` | Dépendances Composer racine — non-premium (modifs `composer-full.json` ET `composer-prod.json`) |
| `premium` | Plugins premium synchronisés (modifs `packages/` + composer files après `/update-premium`) |
| `deploy` | Déploiement (`deploy.php`, `.gitlab-ci.yml`) |
| `config` | Configuration projet (.env.example, ddev, pint, etc.) |
| `claude` | Configuration Claude Code (`.claude/`) |

## Procédure

1. Analyser les fichiers modifiés avec `git status` et `git diff --staged`
2. Déterminer le type et le scope appropriés
3. **Vérification critique** : si `composer.json` est dans la sélection, vérifier qu'il est identique à `composer-prod.json` (`diff composer.json composer-prod.json` doit être vide). Sinon, AVERTIR et ne pas commiter (la CI planterait).
4. Rédiger un message concis en anglais (impératif, pas de point final)
5. Créer le commit :

```bash
git add <fichiers pertinents>
git commit -m "<type>(<scope>): <description>"
```

## Format

```
<type>(<scope>): <description courte en anglais>
```

Exemples :
- `feat(viewer): add page-turn animation toggle`
- `fix(forms): validate email before sending notification`
- `fix(acf): prevent empty repeater rows on save`
- `feat(mailing): switch contact notification to mjml template`
- `chore(premium): update acf pro and real3d flipbook`
- `chore(deps): update wordpress, plugins and translations`
- `chore(claude): tweak update-premium phase ordering`

## Règles

- Message en **anglais**
- Première lettre en **minuscule**
- Pas de point final
- Impératif présent (add, fix, update, remove)
- Le scope est optionnel pour `chore` global
- Ne pas inclure les fichiers `.env`, `auth.json`, credentials ou secrets
- Vérifier avec `git check-ignore` en cas de doute
- **Si modification de `composer.json` : impérativement vérifier qu'il est en mode prod avant commit**
