{{{bodyHtml}}}

                    <!-- Introduction -->
                    <section id="introduction">
                        <h2>Introduction</h2>

                        <div class="tldr">
                            <b><span data-lang="fr">En bref</span><span data-lang="en">In short</span></b>
                            <p data-lang="fr">SmartStack pilote GitFlow avec la commande <code>/gitflow</code> : chaque travail vit dans sa branche (feature, release ou hotfix), isolée dans son propre worktree. Chaque étape — création, commit, PR, merge, finalisation — passe par un CLI qui applique les règles de branches et les gardes EF Core. Seul le tag <code>vX.Y.Z</code> posé sur <code>main</code> par <code>/gitflow finish</code> part en production.</p>
                            <p data-lang="en">SmartStack drives GitFlow with the <code>/gitflow</code> command: each piece of work lives in its own branch (feature, release or hotfix), isolated in its own worktree. Every step — start, commit, PR, merge, finish — goes through a CLI that enforces the branch rules and the EF Core guards. Only the <code>vX.Y.Z</code> tag placed on <code>main</code> by <code>/gitflow finish</code> goes to production.</p>
                        </div>

                        <p data-lang="fr">GitFlow est un modèle de branchement Git adapté aux cycles de release planifiés et aux équipes de plusieurs développeurs. Les CLI gèrent le versioning, les migrations EF Core et les gates avant production ; la revue et le merge vers <code>main</code> restent des étapes humaines.</p>
                        <p data-lang="en">GitFlow is a Git branching model suited to planned release cycles and multi-developer teams. The CLIs handle versioning, EF Core migrations and the pre-production gates; review and the merge into <code>main</code> remain human steps.</p>
                    </section>

                    <!-- Quick Start -->
                    <section id="quick-start">
                        <h2>Quick Start</h2>

                        <p data-lang="fr">Les commandes du quotidien. Les flags <code>-f</code>, <code>-r</code> et <code>-h</code> créent toujours une branche du type correspondant.</p>
                        <p data-lang="en">Everyday commands. The <code>-f</code>, <code>-r</code> and <code>-h</code> flags always start a branch of the matching type.</p>

                        <div class="table-container">
                            <table>
                                <thead>
                                    <tr>
                                        <th><span data-lang="fr">Action</span><span data-lang="en">Action</span></th>
                                        <th><span data-lang="fr">Commande</span><span data-lang="en">Command</span></th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr>
                                        <td><span data-lang="fr">Démarrer une feature (depuis develop)</span><span data-lang="en">Start a feature (from develop)</span></td>
                                        <td><code>/gitflow -f <span data-lang="fr">&lt;nom&gt;</span><span data-lang="en">&lt;name&gt;</span></code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Démarrer une release (depuis develop)</span><span data-lang="en">Start a release (from develop)</span></td>
                                        <td><code>/gitflow -r &lt;version&gt;</code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Démarrer un hotfix (depuis main)</span><span data-lang="en">Start a hotfix (from main)</span></td>
                                        <td><code>/gitflow -h &lt;version&gt;</code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Commiter (gardes EF Core)</span><span data-lang="en">Commit (EF Core guards)</span></td>
                                        <td><code>/gitflow commit</code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Rattraper la branche de base</span><span data-lang="en">Catch up with the base branch</span></td>
                                        <td><code>/gitflow update</code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Ouvrir la Pull Request</span><span data-lang="en">Open the Pull Request</span></td>
                                        <td><code>/gitflow pr</code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Merger la PR après revue</span><span data-lang="en">Merge the PR after review</span></td>
                                        <td><code>/gitflow merge</code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Finaliser (tag, merge-back, nettoyage)</span><span data-lang="en">Finish (tag, merge-back, cleanup)</span></td>
                                        <td><code>/gitflow finish</code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Voir l'état du dépôt</span><span data-lang="en">Show the repository state</span></td>
                                        <td><code>/gitflow status</code> · <code>/gitflow -s</code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Mode auto : création → commit → PR, puis arrêt pour la revue</span><span data-lang="en">Auto mode: start → commit → PR, then stop for review</span></td>
                                        <td><code>/gitflow -f <span data-lang="fr">&lt;nom&gt;</span><span data-lang="en">&lt;name&gt;</span> -a</code></td>
                                    </tr>
                                </tbody>
                            </table>
                        </div>

                        <p data-lang="fr">Le nom d'une release ou d'un hotfix est sa version SemVer : <code>/gitflow -r 2.1.0</code> crée <code>release/2.1.0</code>, que <code>finish</code> taguera <code>v2.1.0</code>. Sans version, <code>-r</code> la demande — elle n'est jamais inventée. <code>-a</code> ne lance jamais <code>merge</code> ni <code>finish</code>.</p>
                        <p data-lang="en">A release or hotfix is named after its SemVer version: <code>/gitflow -r 2.1.0</code> creates <code>release/2.1.0</code>, which <code>finish</code> will tag <code>v2.1.0</code>. Without a version, <code>-r</code> asks for it — it is never invented. <code>-a</code> never runs <code>merge</code> or <code>finish</code>.</p>

                        <div class="code-block">
                            <button class="copy-btn">Copy</button>
                            <pre><code><span class="code-cmd">/gitflow -f</span> <span class="code-arg">user-auth</span>   <span class="code-comment"># feature/user-auth ← develop</span>
<span class="code-cmd">/gitflow commit</span>          <span class="code-comment"># 1..n</span>
<span class="code-cmd">/gitflow pr</span>              <span class="code-comment"># PR → develop</span>
                         <span class="code-comment"># ‖ review ‖</span>
<span class="code-cmd">/gitflow merge</span>           <span class="code-comment"># squash → develop</span>
<span class="code-cmd">/gitflow finish</span>          <span class="code-comment"># branch + worktree removed</span></code></pre>
                        </div>
                    </section>

                    <!-- Key Concepts -->
                    <section id="concepts">
                        <h2>
                            <span data-lang="fr">Concepts clés</span>
                            <span data-lang="en">Key Concepts</span>
                        </h2>

                        <details class="more">
                            <summary><span data-lang="fr">Voir SemVer et la stratégie de merge</span><span data-lang="en">Show SemVer and the merge strategy</span></summary>

                            <h3>SemVer (Semantic Versioning)</h3>
                            <p data-lang="fr">Le versioning sémantique utilise le format <code>MAJOR.MINOR.PATCH</code>. Une release porte une version MINOR ou MAJOR, un hotfix une version PATCH ; après <code>finish</code>, develop passe à la version de développement suivante.</p>
                            <p data-lang="en">Semantic versioning uses the <code>MAJOR.MINOR.PATCH</code> format. A release carries a MINOR or MAJOR version, a hotfix a PATCH version; after <code>finish</code>, develop moves to the next development version.</p>

                            <div class="table-container">
                                <table>
                                    <thead>
                                        <tr>
                                            <th>Type</th>
                                            <th><span data-lang="fr">Quand incrémenter</span><span data-lang="en">When to increment</span></th>
                                            <th><span data-lang="fr">Exemple</span><span data-lang="en">Example</span></th>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                            <td><strong>MAJOR</strong></td>
                                            <td><span data-lang="fr">Changements cassants, API incompatible</span><span data-lang="en">Breaking changes, incompatible API</span></td>
                                            <td>1.0.0 &#8594; 2.0.0</td>
                                        </tr>
                                        <tr>
                                            <td><strong>MINOR</strong></td>
                                            <td><span data-lang="fr">Nouvelles fonctionnalités rétrocompatibles</span><span data-lang="en">New backwards-compatible features</span></td>
                                            <td>1.0.0 &#8594; 1.1.0</td>
                                        </tr>
                                        <tr>
                                            <td><strong>PATCH</strong></td>
                                            <td><span data-lang="fr">Corrections de bugs rétrocompatibles</span><span data-lang="en">Backwards-compatible bug fixes</span></td>
                                            <td>1.0.0 &#8594; 1.0.1</td>
                                        </tr>
                                    </tbody>
                                </table>
                            </div>

                            <h3 data-lang="fr">Stratégie de merge</h3>
                            <h3 data-lang="en">Merge Strategy</h3>
                            <p data-lang="fr">Une feature entre dans develop en <strong>squash</strong> (un commit par feature). Une release ou un hotfix entre dans main par un <strong>merge commit</strong> (<code>--no-ff</code>), comme le merge-back main &#8594; develop, pour préserver l'historique :</p>
                            <p data-lang="en">A feature enters develop as a <strong>squash</strong> (one commit per feature). A release or hotfix enters main through a <strong>merge commit</strong> (<code>--no-ff</code>), like the main &#8594; develop merge-back, to preserve history:</p>

                            <div class="code-block">
                                <pre><code><span class="code-comment"># --no-ff : merge commit</span>
*   Merge branch 'release/2.1.0' into main
|\
| * fix: correct invoice rounding
| * chore: set version to 2.1.0
|/
*   Previous commit

<span class="code-comment"># fast-forward : linear history (branch context lost)</span>
* fix: correct invoice rounding
* chore: set version to 2.1.0
* Previous commit</code></pre>
                            </div>
                        </details>
                    </section>

                    <!-- Branch Types -->
                    <section id="branches">
                        <h2>
                            <span data-lang="fr">Types de branches</span>
                            <span data-lang="en">Branch Types</span>
                        </h2>

                        <div class="card-grid">
                            <div class="card">
                                <div class="card-header">
                                    <div class="card-icon">M</div>
                                    <div>
                                        <div class="card-title">main / master</div>
                                        <div class="card-subtitle">Production</div>
                                    </div>
                                </div>
                                <div class="card-body">
                                    <p data-lang="fr">Branche de production. Chaque tag représente une version déployée. Protégée contre les push directs.</p>
                                    <p data-lang="en">Production branch. Each tag represents a deployed version. Protected from direct pushes.</p>
                                    <span class="tag tag-workflow">Protected</span>
                                </div>
                            </div>

                            <div class="card">
                                <div class="card-header">
                                    <div class="card-icon">D</div>
                                    <div>
                                        <div class="card-title">develop</div>
                                        <div class="card-subtitle" data-lang="fr">Intégration</div>
                                        <div class="card-subtitle" data-lang="en">Integration</div>
                                    </div>
                                </div>
                                <div class="card-body">
                                    <p data-lang="fr">Branche d'intégration. Reçoit les features terminées. Base des nouvelles features et des releases.</p>
                                    <p data-lang="en">Integration branch. Receives completed features. Base for new features and releases.</p>
                                    <span class="tag tag-workflow">Protected</span>
                                </div>
                            </div>

                            <div class="card">
                                <div class="card-header">
                                    <div class="card-icon">F</div>
                                    <div>
                                        <div class="card-title">feature/*</div>
                                        <div class="card-subtitle" data-lang="fr">Nouvelles fonctionnalités</div>
                                        <div class="card-subtitle" data-lang="en">New features</div>
                                    </div>
                                </div>
                                <div class="card-body">
                                    <p data-lang="fr">Branches de développement. Créées depuis develop, intégrées dans develop en squash. Ne changent pas la version.</p>
                                    <p data-lang="en">Development branches. Created from develop, squashed into develop. They do not change the version.</p>
                                    <span class="tag tag-command">squash</span>
                                </div>
                            </div>

                            <div class="card">
                                <div class="card-header">
                                    <div class="card-icon">R</div>
                                    <div>
                                        <div class="card-title">release/*</div>
                                        <div class="card-subtitle" data-lang="fr">Préparation de release</div>
                                        <div class="card-subtitle" data-lang="en">Release preparation</div>
                                    </div>
                                </div>
                                <div class="card-body">
                                    <p data-lang="fr">Préparation d'une nouvelle version. Créée depuis develop, mergée dans main puis ramenée dans develop (merge-back). Tag posé par <code>finish</code>.</p>
                                    <p data-lang="en">Preparation of a new version. Created from develop, merged into main then brought back into develop (merge-back). Tag placed by <code>finish</code>.</p>
                                    <span class="tag tag-workflow">+tag</span>
                                </div>
                            </div>

                            <div class="card">
                                <div class="card-header">
                                    <div class="card-icon">H</div>
                                    <div>
                                        <div class="card-title">hotfix/*</div>
                                        <div class="card-subtitle" data-lang="fr">Corrections urgentes</div>
                                        <div class="card-subtitle" data-lang="en">Urgent fixes</div>
                                    </div>
                                </div>
                                <div class="card-body">
                                    <p data-lang="fr">Corrections critiques en production. Créée depuis main, mergée dans main puis ramenée dans develop (merge-back). Version PATCH.</p>
                                    <p data-lang="en">Critical production fixes. Created from main, merged into main then brought back into develop (merge-back). PATCH version.</p>
                                    <span class="tag tag-command">+patch</span>
                                </div>
                            </div>
                        </div>

                        {{> deploy-flow hideEnvs=true}}
                        <p data-lang="fr">Le rôle de chaque environnement et les validations sont décrits sur la page <a href="deploiement.html">Gestion du code et déploiement</a>.</p>
                        <p data-lang="en">The role of each environment and the approvals are described on the <a href="deploiement.html">Code management and deployment</a> page.</p>

                        <!-- When to use which command -->
                        <h3 id="when-to-use">
                            <span data-lang="fr">Quand utiliser quelle commande ?</span>
                            <span data-lang="en">When to use which command?</span>
                        </h3>

                        <div class="alert alert-warning">
                            <span class="alert-icon">&#128161;</span>
                            <div class="alert-content">
                                <h5 data-lang="fr">Intégration par Pull Request</h5>
                                <h5 data-lang="en">Integration through a Pull Request</h5>
                                <p data-lang="fr">Séquence complète : <code>/gitflow pr</code> &#8594; revue &#8594; <code>/gitflow merge</code> &#8594; <code>/gitflow finish</code>. <code>merge</code> applique la stratégie du type de branche (squash pour une feature, merge commit pour release et hotfix) ; <code>finish</code> pose le tag (release, hotfix), fait le merge-back main &#8594; develop et supprime la branche et son worktree.</p>
                                <p data-lang="en">Full sequence: <code>/gitflow pr</code> &#8594; review &#8594; <code>/gitflow merge</code> &#8594; <code>/gitflow finish</code>. <code>merge</code> applies the branch-type strategy (squash for a feature, merge commit for release and hotfix); <code>finish</code> tags (release, hotfix), merges back main &#8594; develop and removes the branch and its worktree.</p>
                            </div>
                        </div>

                        <div class="alert alert-info">
                            <span class="alert-icon">&#128465;</span>
                            <div class="alert-content">
                                <h5 data-lang="fr">Suppression des branches remote</h5>
                                <h5 data-lang="en">Remote Branch Deletion</h5>
                                <p data-lang="fr"><code>/gitflow finish</code> supprime la branche en local et sur le remote. Pour les worktrees orphelins, utilisez <code>/gitflow cleanup</code>.</p>
                                <p data-lang="en"><code>/gitflow finish</code> deletes the branch locally and on the remote. For orphan worktrees, use <code>/gitflow cleanup</code>.</p>
                            </div>
                        </div>

                        <div class="table-container">
                            <table>
                                <thead>
                                    <tr>
                                        <th><span data-lang="fr">Besoin</span><span data-lang="en">Need</span></th>
                                        <th><span data-lang="fr">Commande</span><span data-lang="en">Command</span></th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr>
                                        <td><span data-lang="fr">Nouvelle fonctionnalité</span><span data-lang="en">New feature</span></td>
                                        <td><code>/gitflow -f <span data-lang="fr">&lt;nom&gt;</span><span data-lang="en">&lt;name&gt;</span></code> &#8594; <code>commit</code> &#8594; <code>pr</code> &#8594; <code>merge</code> &#8594; <code>finish</code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Livrer en production (release)</span><span data-lang="en">Ship to production (release)</span></td>
                                        <td><code>/gitflow -r &lt;version&gt;</code> &#8594; <code>commit</code> &#8594; <code>pr</code> &#8594; <code>merge</code> &#8594; <code>finish</code> <span data-lang="fr">(tag + merge-back)</span><span data-lang="en">(tag + merge-back)</span></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Bug urgent en production (hotfix)</span><span data-lang="en">Urgent production bug (hotfix)</span></td>
                                        <td><code>/gitflow -h &lt;version&gt;</code> &#8594; <code>commit</code> &#8594; <code>pr</code> &#8594; <code>merge</code> &#8594; <code>finish</code> <span data-lang="fr">(tag + merge-back)</span><span data-lang="en">(tag + merge-back)</span></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Utilitaires</span><span data-lang="en">Utilities</span></td>
                                        <td><code>/gitflow status</code> · <code>/gitflow update</code> · <code>/gitflow abort</code> · <code>/gitflow cleanup</code></td>
                                    </tr>
                                </tbody>
                            </table>
                        </div>
                    </section>

                    <!-- Environments -->
                    <section id="environments">
                        <h2>
                            <span data-lang="fr">Environnements et déploiement</span>
                            <span data-lang="en">Environments and deployment</span>
                        </h2>

                        <p data-lang="fr">Chaque branche alimente un environnement précis : <code>feature/*</code> tourne sur le poste de dev ; <code>develop</code> alimente TEST (intégration continue) ; <code>release/*</code> passe en QUAL (recette métier) puis en PREPROD (répétition de la mise en production) ; <code>main</code> + tag <code>vX.Y.Z</code> part en PROD, après approbation de l'IT ; <code>hotfix/*</code> est vérifié en PREPROD puis livré en PROD via son merge dans <code>main</code> + tag, suivi du merge-back automatique vers <code>develop</code>. La promotion d'un environnement au suivant est toujours un merge, jamais un déploiement croisé.</p>
                        <p data-lang="en">Each branch feeds one specific environment: <code>feature/*</code> runs on the developer machine; <code>develop</code> feeds TEST (continuous integration); <code>release/*</code> goes to QUAL (business acceptance) then PREPROD (production rehearsal); <code>main</code> + a <code>vX.Y.Z</code> tag goes to PROD, after IT approval; <code>hotfix/*</code> is verified in PREPROD then delivered to PROD through its merge into <code>main</code> + tag, followed by the automatic merge-back into <code>develop</code>. Promotion from one environment to the next is always a merge, never a cross deployment.</p>

                        <div class="alert alert-warning">
                            <span class="alert-icon">&#9888;&#65039;</span>
                            <div class="alert-content">
                                <h5 data-lang="fr">Les gates avant PROD</h5>
                                <h5 data-lang="en">The gates before PROD</h5>
                                <p data-lang="fr">Toute PR vers <code>main</code> passe deux gates automatiques : la <strong>parité des migrations</strong> (aucune migration déjà en production ne peut disparaître de la branche — remède : <code>/gitflow update</code>) et le <strong>delta de seed Core</strong> (un changement de nav/RBAC seedé exige son script SQL de delta). S'y ajoute l'<strong>approbation manuelle</strong> du déploiement PROD dans le pipeline.</p>
                                <p data-lang="en">Every PR to <code>main</code> goes through two automatic gates: <strong>migration parity</strong> (no migration already in production may vanish from the branch — remedy: <code>/gitflow update</code>) and the <strong>Core seed delta</strong> (a seeded nav/RBAC change requires its SQL delta script). On top of that, the PROD deployment requires <strong>manual approval</strong> in the pipeline.</p>
                            </div>
                        </div>

                        <p data-lang="fr">Le détail des environnements, des validations et des approbations se trouve sur la page <a href="deploiement.html">Gestion du code et déploiement</a>.</p>
                        <p data-lang="en">Environments, validations and approvals are detailed on the <a href="deploiement.html">Code management and deployment</a> page.</p>
                    </section>

                    <!-- Architecture & Structure -->
                    <section id="architecture">
                        <h2>
                            <span data-lang="fr">Architecture &amp; structure</span>
                            <span data-lang="en">Architecture &amp; Structure</span>
                        </h2>

                        <details class="more">
                            <summary><span data-lang="fr">Voir les worktrees et la configuration</span><span data-lang="en">Show worktrees and configuration</span></summary>

                            <h3 data-lang="fr">Structure des worktrees</h3>
                            <h3 data-lang="en">Worktrees Structure</h3>
                            <p data-lang="fr">GitFlow isole chaque branche dans son propre dossier grâce aux <strong>git worktrees</strong> : on travaille sur plusieurs branches en parallèle, sans checkout. La racine porte le dépôt bare (<code>.git/</code>) et la configuration partagée ; <code>01-Main</code> et <code>02-Develop</code> sont permanents (<code>main</code> / <code>develop</code> si les dossiers ne sont pas numérotés).</p>
                            <p data-lang="en">GitFlow isolates each branch in its own directory with <strong>git worktrees</strong>: you work on several branches in parallel, without checkout. The root holds the bare repository (<code>.git/</code>) and the shared configuration; <code>01-Main</code> and <code>02-Develop</code> are permanent (<code>main</code> / <code>develop</code> when folders are not numbered).</p>

                            <div class="code-block">
                                <pre><code>my-project/
├── .git/                  <span class="code-comment"># bare</span>
├── .gitflow/
│   └── config.json
├── 01-Main/               <span class="code-comment"># main</span>
├── 02-Develop/            <span class="code-comment"># develop</span>
├── features/
│   ├── user-auth/         <span class="code-comment"># feature/user-auth</span>
│   └── payment-gateway/   <span class="code-comment"># feature/payment-gateway</span>
├── releases/
│   └── 1.2.0/             <span class="code-comment"># release/1.2.0</span>
└── hotfixes/
    └── 1.1.1/             <span class="code-comment"># hotfix/1.1.1</span></code></pre>
                            </div>

                            <h3 data-lang="fr">Fichiers de configuration</h3>
                            <h3 data-lang="en">Configuration Files</h3>

                            <div class="table-container">
                                <table>
                                    <thead>
                                        <tr>
                                            <th><span data-lang="fr">Fichier</span><span data-lang="en">File</span></th>
                                            <th><span data-lang="fr">Description</span><span data-lang="en">Description</span></th>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                            <td><a href=".gitflow/config.json" class="file-link"><code>.gitflow/config.json</code></a></td>
                                            <td><span data-lang="fr">Configuration principale : versioning, branches, EF Core, worktrees. À la RACINE du dépôt, partagée par tous les worktrees (l'ancien emplacement .claude/gitflow/ est migré automatiquement).</span><span data-lang="en">Main configuration: versioning, branches, EF Core, worktrees. At the repository ROOT, shared across worktrees (the legacy .claude/gitflow/ location is migrated automatically).</span></td>
                                        </tr>
                                    </tbody>
                                </table>
                            </div>

                            <h3 data-lang="fr">Création automatique</h3>
                            <h3 data-lang="en">Automatic Creation</h3>
                            <p data-lang="fr"><code>/gitflow init &lt;url&gt;</code> crée toute la structure en un appel, après confirmation du nom du projet et du nommage des dossiers ; il n'installe rien d'autre. Chaque <code>-f</code>, <code>-r</code> ou <code>-h</code> crée ensuite le worktree de sa branche, que <code>/gitflow finish</code> supprime. Pour travailler sans worktree, passez <code>worktrees.enabled</code> à <code>false</code> dans <code>.gitflow/config.json</code> : la branche est alors créée dans le dossier courant.</p>
                            <p data-lang="en"><code>/gitflow init &lt;url&gt;</code> creates the whole structure in one call, after the project name and folder naming are confirmed; it installs nothing else. Each <code>-f</code>, <code>-r</code> or <code>-h</code> then creates its branch's worktree, which <code>/gitflow finish</code> removes. To work without worktrees, set <code>worktrees.enabled</code> to <code>false</code> in <code>.gitflow/config.json</code>: the branch is then created in the current directory.</p>

                            <div class="code-block">
                                <button class="copy-btn">Copy</button>
                                <pre><code><span class="code-cmd">/gitflow init</span> <span class="code-arg">https://github.com/org/my-project.git</span>
<span class="code-cmd">/gitflow -f</span> <span class="code-string">user-auth</span>
<span class="code-output"># → my-project/features/user-auth/</span></code></pre>
                            </div>
                        </details>
                    </section>

                    <!-- Best Practices -->
                    <section id="best-practices">
                        <h2>
                            <span data-lang="fr">Bonnes pratiques</span>
                            <span data-lang="en">Best Practices</span>
                        </h2>

                        <details class="more">
                            <summary><span data-lang="fr">Voir les 6 bonnes pratiques</span><span data-lang="en">Show the 6 best practices</span></summary>

                            <div class="best-practice">
                                <h4>
                                    <span class="bp-icon">&#9989;</span>
                                    <span data-lang="fr">Nommage des branches</span>
                                    <span data-lang="en">Branch Naming</span>
                                </h4>
                                <p data-lang="fr">Feature : un nom descriptif en kebab-case. Release et hotfix : la version SemVer, qui devient le tag.</p>
                                <p data-lang="en">Feature: a descriptive kebab-case name. Release and hotfix: the SemVer version, which becomes the tag.</p>
                                <div class="code-block">
                                    <pre><code><span class="code-comment"># OK</span>
feature/user-authentication
feature/add-payment-gateway
release/2.1.0
hotfix/2.0.1

<span class="code-comment"># KO</span>
feature/auth
feature/MyNewFeature
release/new
hotfix/fix</code></pre>
                                </div>
                            </div>

                            <div class="best-practice">
                                <h4>
                                    <span class="bp-icon">&#9989;</span>
                                    <span data-lang="fr">Commits atomiques</span>
                                    <span data-lang="en">Atomic Commits</span>
                                </h4>
                                <p data-lang="fr">Chaque commit représente un changement logique unique. Utilisez <code>/gitflow commit</code> pour des commits structurés.</p>
                                <p data-lang="en">Each commit represents a single logical change. Use <code>/gitflow commit</code> for structured commits.</p>
                                <div class="code-block">
                                    <pre><code><span class="code-comment"># OK</span>
feat(auth): add login form component
feat(auth): implement JWT token validation
fix(auth): handle expired token refresh

<span class="code-comment"># KO</span>
WIP: auth stuff</code></pre>
                                </div>
                            </div>

                            <div class="best-practice">
                                <h4>
                                    <span class="bp-icon">&#9989;</span>
                                    <span data-lang="fr">Se mettre à jour avant la PR</span>
                                    <span data-lang="en">Catch Up Before the PR</span>
                                </h4>
                                <p data-lang="fr"><code>/gitflow pr</code> signale une feature en retard sur develop. Lancez <code>/gitflow update</code> : il merge la base dans votre branche et, en cas de conflit, abandonne proprement en laissant la branche intacte.</p>
                                <p data-lang="en"><code>/gitflow pr</code> flags a feature that lags behind develop. Run <code>/gitflow update</code>: it merges the base into your branch and, on conflict, aborts cleanly and leaves the branch intact.</p>
                            </div>

                            <div class="best-practice">
                                <h4>
                                    <span class="bp-icon">&#9989;</span>
                                    <span data-lang="fr">Ne jamais pousser sur main directement</span>
                                    <span data-lang="en">Never Push to Main Directly</span>
                                </h4>
                                <p data-lang="fr">Toute modification passe par une branche feature, release ou hotfix et sa PR. Les CLI refusent une PR ou un merge dont la cible contredit le type de branche (une feature ne cible jamais main).</p>
                                <p data-lang="en">Every change goes through a feature, release or hotfix branch and its PR. The CLIs refuse a PR or merge whose target contradicts the branch type (a feature never targets main).</p>
                            </div>

                            <div class="best-practice">
                                <h4>
                                    <span class="bp-icon">&#128465;</span>
                                    <span data-lang="fr">Nettoyer régulièrement les worktrees</span>
                                    <span data-lang="en">Regularly Clean Up Worktrees</span>
                                </h4>
                                <p data-lang="fr"><code>/gitflow finish</code> supprime le worktree de la branche finalisée. Pour un audit complet, lancez <code>/gitflow cleanup</code> depuis main ou develop.</p>
                                <p data-lang="en"><code>/gitflow finish</code> removes the finished branch's worktree. For a full audit, run <code>/gitflow cleanup</code> from main or develop.</p>
                            </div>

                            <div class="best-practice">
                                <h4>
                                    <span class="bp-icon">&#9989;</span>
                                    <span data-lang="fr">Tester avant de merger</span>
                                    <span data-lang="en">Test Before Merging</span>
                                </h4>
                                <p data-lang="fr">Build et tests doivent être verts avant <code>/gitflow pr</code>. La revue reste une étape humaine : le mode <code>-a</code> s'arrête toujours à la PR.</p>
                                <p data-lang="en">Build and tests must be green before <code>/gitflow pr</code>. Review remains a human step: <code>-a</code> mode always stops at the PR.</p>
                            </div>

                            <div class="alert alert-warning">
                                <span class="alert-icon">&#9888;</span>
                                <div class="alert-content">
                                    <h5 data-lang="fr">Éviter les anti-patterns</h5>
                                    <h5 data-lang="en">Avoid Anti-patterns</h5>
                                    <div class="feature-grid">
                                        <div class="feature-item">
                                            <span class="feature-icon">&#10060;</span>
                                            <span class="feature-text" data-lang="fr">Ne jamais forcer un push sur main ou develop</span>
                                            <span class="feature-text" data-lang="en">Never force push to main or develop</span>
                                        </div>
                                        <div class="feature-item">
                                            <span class="feature-icon">&#10060;</span>
                                            <span class="feature-text" data-lang="fr">Ne pas merger une feature non testée</span>
                                            <span class="feature-text" data-lang="en">Don't merge an untested feature</span>
                                        </div>
                                        <div class="feature-item">
                                            <span class="feature-icon">&#10060;</span>
                                            <span class="feature-text" data-lang="fr">Ne pas laisser des branches ouvertes trop longtemps</span>
                                            <span class="feature-text" data-lang="en">Don't leave branches open too long</span>
                                        </div>
                                        <div class="feature-item">
                                            <span class="feature-icon">&#10060;</span>
                                            <span class="feature-text" data-lang="fr">Ne pas ignorer les conflits de ModelSnapshot (EF Core)</span>
                                            <span class="feature-text" data-lang="en">Don't ignore ModelSnapshot conflicts (EF Core)</span>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </details>
                    </section>

                    <!-- Commands -->
                    <section id="commands">
                        <h2>
                            <span data-lang="fr">Commandes GitFlow</span>
                            <span data-lang="en">GitFlow Commands</span>
                        </h2>

                        <p data-lang="fr">SmartStack CLI fournit 12 commandes GitFlow (la 12e, <code>generate-msg</code>, est un CLI interne qui formate le message de commit). Les raccourcis <code>-f</code>, <code>-r</code>, <code>-h</code>, <code>-s</code> et <code>-a</code> sont décrits dans le <a href="#quick-start">Quick Start</a>.</p>
                        <p data-lang="en">SmartStack CLI provides 12 GitFlow commands (the 12th, <code>generate-msg</code>, is an internal CLI that formats the commit message). The <code>-f</code>, <code>-r</code>, <code>-h</code>, <code>-s</code> and <code>-a</code> shorthands are described in the <a href="#quick-start">Quick Start</a>.</p>

                        <!-- Command: /gitflow init -->
                        <div class="command-card">
                            <div class="command-header">
                                <code class="command-name">/gitflow init</code>
                                <span class="tag tag-command">Setup</span>
                            </div>
                            <div class="command-body">
                                <p data-lang="fr">Construit l'infrastructure Git en un appel : clone bare dans <code>&lt;racine&gt;/.git</code>, worktrees <code>01-Main</code> et <code>02-Develop</code>, dossiers <code>features/</code>, <code>releases/</code>, <code>hotfixes/</code> et <code>.gitflow/config.json</code>. Le nom, l'emplacement et le nommage des dossiers (numérotés ou non) sont confirmés avant création. Ne scaffolde jamais l'application.</p>
                                <p data-lang="en">Builds the Git infrastructure in one call: bare clone into <code>&lt;root&gt;/.git</code>, <code>01-Main</code> and <code>02-Develop</code> worktrees, <code>features/</code>, <code>releases/</code>, <code>hotfixes/</code> folders and <code>.gitflow/config.json</code>. Name, location and folder naming (numbered or not) are confirmed before creation. It never scaffolds the application.</p>
                                <div class="code-block">
                                    <button class="copy-btn">Copy</button>
                                    <pre><code>/gitflow init &lt;url&gt;</code></pre>
                                </div>
                            </div>
                        </div>

                        <!-- Command: /gitflow -f | -r | -h -->
                        <div class="command-card">
                            <div class="command-header">
                                <code class="command-name">/gitflow -f | -r | -h</code>
                                <span class="tag tag-workflow">Branch</span>
                            </div>
                            <div class="command-body">
                                <p data-lang="fr">Crée la branche depuis sa base, dans son worktree, et la pousse. Pour une release ou un hotfix, le premier commit fixe la version dans les sources (<code>chore: set version to X.Y.Z</code>) ; des noms de migrations EF Core non conformes déclenchent un avertissement qui propose <code>/efcore squash</code>.</p>
                                <p data-lang="en">Creates the branch from its base, in its worktree, and pushes it. For a release or hotfix, the first commit sets the version in the sources (<code>chore: set version to X.Y.Z</code>); non-compliant EF Core migration names raise a warning suggesting <code>/efcore squash</code>.</p>
                                <div class="code-block">
                                    <button class="copy-btn">Copy</button>
                                    <pre><code>/gitflow -f authentication
/gitflow -r 2.1.0
/gitflow -h 2.0.1</code></pre>
                                </div>
                            </div>
                        </div>

                        <!-- Command: /gitflow commit -->
                        <div class="command-card">
                            <div class="command-header">
                                <code class="command-name">/gitflow commit</code>
                                <span class="tag tag-command">Git</span>
                            </div>
                            <div class="command-body">
                                <p data-lang="fr">Commit contrôlé : vérifie que chaque migration EF Core est complète (migration, Designer, ModelSnapshot) — sinon les fichiers <code>Migrations/</code> sont exclus du commit —, demande confirmation pour une opération destructive (DropTable, DropColumn, DeleteData) et génère un message si aucun n'est fourni. Ne pousse pas par défaut.</p>
                                <p data-lang="en">Guarded commit: checks that every EF Core migration is complete (migration, Designer, ModelSnapshot) — otherwise the <code>Migrations/</code> files are excluded from the commit —, asks for confirmation on a destructive operation (DropTable, DropColumn, DeleteData) and generates a message when none is given. Does not push by default.</p>
                                <div class="code-block">
                                    <button class="copy-btn">Copy</button>
                                    <pre><code>/gitflow commit</code></pre>
                                </div>
                            </div>
                        </div>

                        <!-- Command: /gitflow sync -->
                        <div class="command-card">
                            <div class="command-header">
                                <code class="command-name">/gitflow sync</code>
                                <span class="tag tag-command">Git</span>
                            </div>
                            <div class="command-body">
                                <p data-lang="fr">Synchronise la branche courante avec son homologue sur origin : fetch, pull si le remote est en avance, push si le local est en avance, en mettant de côté les modifications non commitées. Ne touche jamais à la branche de base — pour rattraper develop ou main, utilisez <code>/gitflow update</code>.</p>
                                <p data-lang="en">Synchronizes the current branch with its origin counterpart: fetch, pull when the remote is ahead, push when local is ahead, setting uncommitted changes aside. It never touches the base branch — to catch up with develop or main, use <code>/gitflow update</code>.</p>
                                <div class="code-block">
                                    <button class="copy-btn">Copy</button>
                                    <pre><code>/gitflow sync</code></pre>
                                </div>
                            </div>
                        </div>

                        <!-- Command: /gitflow update -->
                        <div class="command-card">
                            <div class="command-header">
                                <code class="command-name">/gitflow update</code>
                                <span class="tag tag-command">Git</span>
                            </div>
                            <div class="command-body">
                                <p data-lang="fr">Met à jour la branche courante depuis sa base : <code>origin/develop</code> pour une feature ou une release, <code>origin/main</code> pour un hotfix. Merge par défaut ; en cas de conflit, abandonne et laisse la branche intacte (conflits EF Core : <code>/efcore rebase-snapshot</code>). C'est le remède quand le gate de parité des migrations bloque une PR vers main.</p>
                                <p data-lang="en">Updates the current branch from its base: <code>origin/develop</code> for a feature or release, <code>origin/main</code> for a hotfix. Merge by default; on conflict it aborts and leaves the branch intact (EF Core conflicts: <code>/efcore rebase-snapshot</code>). It is the remedy when the migration-parity gate blocks a PR to main.</p>
                                <div class="code-block">
                                    <button class="copy-btn">Copy</button>
                                    <pre><code>/gitflow update</code></pre>
                                </div>
                            </div>
                        </div>

                        <!-- Command: /gitflow pr -->
                        <div class="command-card">
                            <div class="command-header">
                                <code class="command-name">/gitflow pr</code>
                                <span class="tag tag-info">PR</span>
                            </div>
                            <div class="command-body">
                                <p data-lang="fr">Ouvre la Pull Request vers la cible imposée par le type de branche : develop pour une feature, main pour une release ou un hotfix. Pousse les commits en attente, refuse une feature qui porte plus d'une migration (&#8594; <code>/efcore squash</code>) et, vers main, applique les gates de parité des migrations et de delta de seed Core. Une PR brouillon est possible sur demande.</p>
                                <p data-lang="en">Opens the Pull Request to the target imposed by the branch type: develop for a feature, main for a release or hotfix. Pushes pending commits, refuses a feature carrying more than one migration (&#8594; <code>/efcore squash</code>) and, towards main, enforces the migration-parity and Core seed delta gates. A draft PR is available on request.</p>
                                <div class="code-block">
                                    <button class="copy-btn">Copy</button>
                                    <pre><code>/gitflow pr</code></pre>
                                </div>
                            </div>
                        </div>

                        <!-- Command: /gitflow merge -->
                        <div class="command-card">
                            <div class="command-header">
                                <code class="command-name">/gitflow merge</code>
                                <span class="tag tag-primary">Merge</span>
                            </div>
                            <div class="command-body">
                                <p data-lang="fr">Merge la PR de la branche courante chez le provider (GitHub ou Azure DevOps) : squash pour une feature, merge commit pour une release ou un hotfix. Refuse une PR dont la cible contredit le type de branche et réaligne develop local avant et après le merge. Une étape humaine, après la revue.</p>
                                <p data-lang="en">Merges the current branch's PR at the provider (GitHub or Azure DevOps): squash for a feature, merge commit for a release or hotfix. Refuses a PR whose target contradicts the branch type and realigns local develop before and after the merge. A human step, after review.</p>
                                <div class="code-block">
                                    <button class="copy-btn">Copy</button>
                                    <pre><code>/gitflow merge</code></pre>
                                </div>
                            </div>
                        </div>

                        <!-- Command: /gitflow finish -->
                        <div class="command-card">
                            <div class="command-header">
                                <code class="command-name">/gitflow finish</code>
                                <span class="tag tag-workflow">Branch</span>
                            </div>
                            <div class="command-body">
                                <p data-lang="fr">Finalise une branche après le merge de sa PR. Feature : supprime le worktree et la branche (locale et remote). Release ou hotfix : pose en plus le tag <code>vX.Y.Z</code> sur <code>origin/main</code>, fait le merge-back main &#8594; develop et passe develop à la version de développement suivante. Si le merge n'est pas confirmé, rien de destructif n'est fait.</p>
                                <p data-lang="en">Finishes a branch after its PR is merged. Feature: removes the worktree and the branch (local and remote). Release or hotfix: additionally places the <code>vX.Y.Z</code> tag on <code>origin/main</code>, merges back main &#8594; develop and moves develop to the next development version. If the merge cannot be confirmed, nothing destructive is done.</p>
                                <div class="code-block">
                                    <button class="copy-btn">Copy</button>
                                    <pre><code>/gitflow finish</code></pre>
                                </div>
                            </div>
                        </div>

                        <!-- Command: /gitflow status -->
                        <div class="command-card">
                            <div class="command-header">
                                <code class="command-name">/gitflow status</code>
                                <span class="tag tag-command">Info</span>
                            </div>
                            <div class="command-body">
                                <p data-lang="fr">Tableau de bord avant toute action : branche courante et son type, avance et retard par rapport à develop et main, état du working tree (merge ou rebase en cours), tags, et actions suggérées par priorité.</p>
                                <p data-lang="en">Dashboard before any action: current branch and its type, ahead/behind counts against develop and main, working tree state (merge or rebase in progress), tags, and suggested actions by priority.</p>
                                <div class="code-block">
                                    <button class="copy-btn">Copy</button>
                                    <pre><code>/gitflow status</code></pre>
                                </div>
                            </div>
                        </div>

                        <!-- Command: /gitflow abort -->
                        <div class="command-card">
                            <div class="command-header">
                                <code class="command-name">/gitflow abort</code>
                                <span class="tag tag-danger">Rollback</span>
                            </div>
                            <div class="command-body">
                                <p data-lang="fr">Filet de sécurité : détecte l'opération Git en cours (rebase, merge ou cherry-pick) et l'annule pour revenir à un état stable. Ne s'exécute que sur demande explicite.</p>
                                <p data-lang="en">Safety net: detects the Git operation in progress (rebase, merge or cherry-pick) and aborts it to return to a stable state. Runs only when explicitly requested.</p>
                                <div class="code-block">
                                    <button class="copy-btn">Copy</button>
                                    <pre><code>/gitflow abort</code></pre>
                                </div>
                            </div>
                        </div>

                        <!-- Command: /gitflow cleanup -->
                        <div class="command-card">
                            <div class="command-header">
                                <code class="command-name">/gitflow cleanup</code>
                                <span class="tag tag-workflow">Maintenance</span>
                            </div>
                            <div class="command-body">
                                <p data-lang="fr">Audite les worktrees accumulés : main et develop sont permanents, ceux dont la branche est déjà mergée dans main sont signalés et ne sont supprimés qu'en mode forcé, puis <code>git worktree prune</code> est lancé. À exécuter depuis main ou develop.</p>
                                <p data-lang="en">Audits accumulated worktrees: main and develop are permanent, those whose branch is already merged into main are reported and only deleted in forced mode, then <code>git worktree prune</code> runs. Run it from main or develop.</p>
                                <div class="code-block">
                                    <button class="copy-btn">Copy</button>
                                    <pre><code>/gitflow cleanup</code></pre>
                                </div>
                            </div>
                        </div>
                    </section>

                    <!-- Use cases -->
                    <section id="use-cases">
                        <h2>
                            <span data-lang="fr">Dans quel cas ?</span>
                            <span data-lang="en">Which situation, which command?</span>
                        </h2>

                        <p data-lang="fr">Le réflexe &#171; je suis dans tel cas &#8594; je fais cela &#187; :</p>
                        <p data-lang="en">The "I am in this situation &#8594; I do this" reflex:</p>

                        <div class="table-container">
                            <table>
                                <thead>
                                    <tr>
                                        <th><span data-lang="fr">Je suis dans ce cas…</span><span data-lang="en">I am in this situation…</span></th>
                                        <th><span data-lang="fr">…alors je fais</span><span data-lang="en">…then I do</span></th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr>
                                        <td><span data-lang="fr">Je commence un nouveau développement</span><span data-lang="en">I start a new development</span></td>
                                        <td><code>/gitflow -f mon-sujet</code> <span data-lang="fr">(feature depuis develop, worktree isolé)</span><span data-lang="en">(feature from develop, isolated worktree)</span></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Je veux voir ma feature tourner</span><span data-lang="en">I want to see my feature running</span></td>
                                        <td><span data-lang="fr">je la lance sur mon <strong>poste de dev</strong> — le seul environnement d'une feature ; TEST viendra après le merge dans develop</span><span data-lang="en">I run it on my <strong>developer machine</strong> — a feature's only environment; TEST comes after the merge into develop</span></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Ma feature est terminée</span><span data-lang="en">My feature is done</span></td>
                                        <td><code>/gitflow pr</code> &#8594; <span data-lang="fr">revue</span><span data-lang="en">review</span> &#8594; <code>/gitflow merge</code> &#8594; <code>/gitflow finish</code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Ma branche est en retard sur develop</span><span data-lang="en">My branch lags behind develop</span></td>
                                        <td><code>/gitflow update</code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Ma PR vers main est bloquée par le gate des migrations</span><span data-lang="en">My PR to main is blocked by the migration gate</span></td>
                                        <td><code>/gitflow update</code> <span data-lang="fr">(en gardant les DEUX côtés) puis nouvelle tentative de</span><span data-lang="en">(keeping BOTH sides) then retry</span> <code>/gitflow pr</code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Je veux livrer la version x.y en clientèle</span><span data-lang="en">I want to ship version x.y to customers</span></td>
                                        <td><code>/gitflow -r x.y.0</code> <span data-lang="fr">&#8594; recette en QUAL puis répétition en PREPROD &#8594;</span><span data-lang="en">&#8594; acceptance in QUAL then rehearsal in PREPROD &#8594;</span> <code>/gitflow pr</code> &#8594; <code>merge</code> &#8594; <code>finish</code> <span data-lang="fr">(tag = PROD, après approbation de l'IT)</span><span data-lang="en">(tag = PROD, after IT approval)</span></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Bug critique en PROD</span><span data-lang="en">Critical bug in PROD</span></td>
                                        <td><code>/gitflow -h x.y.z</code> <span data-lang="fr">(depuis main) &#8594; vérification en PREPROD &#8594; merge + tag &#8594; le merge-back ramène le fix dans develop</span><span data-lang="en">(from main) &#8594; verify in PREPROD &#8594; merge + tag &#8594; the merge-back brings the fix into develop</span></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Un merge ou un rebase a mal tourné</span><span data-lang="en">A merge or rebase went wrong</span></td>
                                        <td><code>/gitflow abort</code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">De vieilles branches ou worktrees traînent</span><span data-lang="en">Old branches or worktrees are lying around</span></td>
                                        <td><code>/gitflow cleanup</code></td>
                                    </tr>
                                    <tr>
                                        <td><span data-lang="fr">Je ne sais plus où j'en suis</span><span data-lang="en">I no longer know where I stand</span></td>
                                        <td><code>/gitflow status</code></td>
                                    </tr>
                                </tbody>
                            </table>
                        </div>
                    </section>

                    <!-- Complete Example -->
                    <section id="workflow-example">
                        <h2>
                            <span data-lang="fr">Exemple complet</span>
                            <span data-lang="en">Complete Example</span>
                        </h2>

                        <details class="more">
                            <summary><span data-lang="fr">Voir l'exemple complet, de l'init à la release</span><span data-lang="en">Show the complete example, from init to release</span></summary>

                            <p data-lang="fr">Un cycle complet avec SmartStack CLI : une feature, puis la release qui la livre.</p>
                            <p data-lang="en">A full cycle with SmartStack CLI: one feature, then the release that ships it.</p>

                            <div class="code-block">
                                <button class="copy-btn">Copy</button>
                                <pre><code><span class="code-comment"># 1. init (once)</span>
/gitflow init &lt;url&gt;

<span class="code-comment"># 2. state</span>
/gitflow status

<span class="code-comment"># 3. feature: feature/user-dashboard ← develop</span>
/gitflow -f user-dashboard
/gitflow commit
/gitflow pr
<span class="code-comment"># ‖ review + approval ‖</span>
/gitflow merge
/gitflow finish

<span class="code-comment"># 4. release: release/1.3.0 ← develop (QUAL, then PREPROD)</span>
/gitflow -r 1.3.0
/gitflow commit
<span class="code-comment"># PR → main: migration parity + Core seed delta gates</span>
/gitflow pr
<span class="code-comment"># ‖ review + approval ‖</span>
/gitflow merge
<span class="code-comment"># tag v1.3.0 + merge-back → develop + cleanup</span>
/gitflow finish

<span class="code-comment"># 5. maintenance (from main or develop)</span>
/gitflow cleanup</code></pre>
                            </div>

                            <div class="alert alert-info">
                                <span class="alert-icon">&#128161;</span>
                                <div class="alert-content">
                                    <h5 data-lang="fr">Astuce</h5>
                                    <h5 data-lang="en">Tip</h5>
                                    <p data-lang="fr"><code>/gitflow status</code> liste les actions suggérées, par priorité, selon l'état actuel du dépôt.</p>
                                    <p data-lang="en"><code>/gitflow status</code> lists suggested actions, by priority, based on the current repository state.</p>
                                </div>
                            </div>
                        </details>
                    </section>
