<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: HereBuggedOut</title>
    <description>The latest articles on DEV Community by HereBuggedOut (@herebuggedout).</description>
    <link>https://dev.to/herebuggedout</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1716362%2Fb26ce188-8d65-4f15-b9c4-dccb3272ef1e.jpg</url>
      <title>DEV Community: HereBuggedOut</title>
      <link>https://dev.to/herebuggedout</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/herebuggedout"/>
    <language>en</language>
    <item>
      <title>Write a commit message for what you staged, not everything you edited</title>
      <dc:creator>HereBuggedOut</dc:creator>
      <pubDate>Thu, 15 Oct 2026 20:50:51 +0000</pubDate>
      <link>https://dev.to/herebuggedout/write-a-commit-message-for-what-you-staged-not-everything-you-edited-58if</link>
      <guid>https://dev.to/herebuggedout/write-a-commit-message-for-what-you-staged-not-everything-you-edited-58if</guid>
      <description>&lt;p&gt;Suppose you add a todo validation test and also tidy another test in the same file. You stage only the new test. A commit message describing both edits would promise a change that is not in the commit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/zmo2s/agent-toolbox" rel="noopener noreferrer"&gt;Agent Toolbox&lt;/a&gt; includes Good Commit, a reusable instruction file that asks an AI coding assistant to inspect the Git index before proposing a message. Here is a reproducible example using its small JavaScript demo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it in a fresh clone
&lt;/h2&gt;

&lt;p&gt;You need Git, Node.js to run the demo tests, and an assistant that can read files and run Git commands. No npm dependencies are required.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/zmo2s/agent-toolbox.git
&lt;span class="nb"&gt;cd &lt;/span&gt;agent-toolbox
git switch &lt;span class="nt"&gt;-c&lt;/span&gt; demo/partially-staged
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Append this test to &lt;code&gt;test/todo.test.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;rejects an omitted title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;throws&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;addTodo&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="sr"&gt;/Todo title is required/&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stage that addition:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;test&lt;/span&gt;/todo.test.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now rename the first test from &lt;code&gt;creates a todo&lt;/code&gt; to &lt;code&gt;creates an incomplete todo&lt;/code&gt;, but leave that rename unstaged. Both edits are in the same file, yet only the new test belongs to the next commit.&lt;/p&gt;

&lt;p&gt;Inspect the two patches and run the tests:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git status &lt;span class="nt"&gt;--short&lt;/span&gt;
git diff &lt;span class="nt"&gt;--cached&lt;/span&gt;
git diff
npm &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The file should appear as &lt;code&gt;MM test/todo.test.js&lt;/code&gt;: the first &lt;code&gt;M&lt;/code&gt; represents staged changes, and the second represents unstaged changes. The cached diff should contain only the appended test; the ordinary diff should contain only the rename. Test counts can change as the project grows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask for a message
&lt;/h2&gt;

&lt;p&gt;Send your assistant this prompt from the clone:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Read .codex/skills/good-commit/SKILL.md and propose a commit message for my current changes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An illustrative subject is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;test(core): ✅ cover omitted todo titles
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The assistant should explain that this proposal covers the staged test addition and mention the unstaged test-name edit separately. It should not include that rename in the commit description, restage the entire file, or create a commit merely because you requested a message. Exact wording may vary; the important check is whether the message matches &lt;code&gt;git diff --cached&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reuse it in your project
&lt;/h2&gt;

&lt;p&gt;Copy &lt;a href="https://github.com/zmo2s/agent-toolbox/blob/main/.codex/skills/good-commit/SKILL.md" rel="noopener noreferrer"&gt;the Good Commit skill&lt;/a&gt; into &lt;code&gt;.codex/skills/good-commit/SKILL.md&lt;/code&gt; in your repository and use the explicit prompt above. The &lt;code&gt;/skill-commit&lt;/code&gt; shortcut additionally needs the routing instructions from &lt;a href="https://github.com/zmo2s/agent-toolbox/blob/main/AGENTS.md" rel="noopener noreferrer"&gt;AGENTS.md&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The skill provides instructions, not a guarantee of model behavior. Review the patch and proposed message before committing. You can try this workflow without installing the separate Security Guardian policy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Help improve the examples
&lt;/h2&gt;

&lt;p&gt;First-time contributors are welcome. Try &lt;a href="https://github.com/zmo2s/agent-toolbox/issues/8" rel="noopener noreferrer"&gt;documenting a breaking-change commit with migration guidance&lt;/a&gt;, or &lt;a href="https://github.com/zmo2s/agent-toolbox/issues/7" rel="noopener noreferrer"&gt;showing separate messages for unrelated changes&lt;/a&gt;. Check the issue and open PRs before starting, and follow the &lt;a href="https://github.com/zmo2s/agent-toolbox/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;contribution guide&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>git</category>
      <category>opensource</category>
      <category>contributorswanted</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Boostez votre productivité avec les hooks Git ! 🚀</title>
      <dc:creator>HereBuggedOut</dc:creator>
      <pubDate>Sun, 09 Mar 2025 20:08:51 +0000</pubDate>
      <link>https://dev.to/herebuggedout/boostez-votre-productivite-avec-les-hooks-git--fka</link>
      <guid>https://dev.to/herebuggedout/boostez-votre-productivite-avec-les-hooks-git--fka</guid>
      <description>&lt;p&gt;Chaque bug en production coûte cher et chaque erreur évitable fait perdre un temps précieux. Pourtant, il existe une solution simple pour automatiser les bonnes pratiques et garantir un code de qualité : les hooks Git.&lt;/p&gt;

&lt;p&gt;Imaginez-les comme des arbitres de football ⚽, toujours attentifs à la moindre faute... ou plutôt, au moindre code douteux . &lt;/p&gt;

&lt;p&gt;Pourquoi les Git hooks sont-ils comme les arbitres de football ?&lt;br&gt;
 Parce qu'ils sifflent les fautes, avant même que le ballon ne dépasse la ligne! 🥳&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbenwdzw8bigxusshzqan.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbenwdzw8bigxusshzqan.png" alt="Image description" width="412" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Les hooks Git permettent d’exécuter des scripts à différents moments du workflow Git pour prévenir les erreurs, assurer la cohérence du code et renforcer la sécurité.&lt;/p&gt;

&lt;p&gt;🔹 Pre-commit : Vérifie et corrige le code avant qu’il ne soit validé.&lt;br&gt;
🔹 Commit-msg : Applique un formatage strict aux messages de commit.&lt;br&gt;
🔹 Pre-push : Exécute des tests et bloque le push si des erreurs sont détectées.&lt;/p&gt;

&lt;p&gt;Avec ces hooks, vous pouvez automatiser les vérifications essentielles et garantir un code propre avant même qu'il n'atteigne votre dépôt distant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💰 Bénéfices financiers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3lbz2lj9vqqzw2g3v175.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3lbz2lj9vqqzw2g3v175.png" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✅ Détection en amont des erreurs&lt;br&gt;
Un hook pre-commit peut empêcher de committer du code qui ne compile pas ou qui contient des erreurs évidentes.&lt;/p&gt;

&lt;p&gt;✅ Moins de corrections manuelles&lt;br&gt;
Formatage automatique avec Prettier ou ESLint, suppression des espaces inutiles... un hook pre-commit peut éviter du travail répétitif.&lt;/p&gt;

&lt;p&gt;✅ Cohérence du code&lt;br&gt;
Un hook commit-msg peut imposer un format standardisé pour les messages de commit, rendant l’historique Git plus lisible et exploitable.&lt;/p&gt;

&lt;p&gt;✅ Amélioration de la sécurité&lt;br&gt;
Les hooks peuvent empêcher les commits accidentels contenant des informations sensibles comme des mots de passe ou clés API.&lt;/p&gt;

&lt;p&gt;✅ Optimisation des pipelines CI/CD&lt;br&gt;
Un hook pre-push peut exécuter des tests en local et bloquer un push si le build échoue, réduisant ainsi les exécutions inutiles de pipelines et les coûts associés&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🛠️ Qualité du code et fiabilité&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jimthet0icakv9085ht.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jimthet0icakv9085ht.png" alt="Image description" width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✅ Empêcher les commits de code cassé&lt;br&gt;
Avec un hook pre-commit, vous évitez d’enregistrer du code non fonctionnel dans l’historique Git.&lt;/p&gt;

&lt;p&gt;✅ Éviter les erreurs courantes&lt;br&gt;
Un pre-commit peut supprimer automatiquement les console.log avant validation.&lt;/p&gt;

&lt;p&gt;✅ Appliquer un formatage standard&lt;br&gt;
Un hook commit-msg garantit que tous les messages de commit respectent une convention, comme Conventional Commits.&lt;/p&gt;

&lt;p&gt;✅ Faciliter la collaboration&lt;br&gt;
Les hooks assurent que tous les développeurs appliquent les mêmes règles automatiquement, évitant les oublis et les erreurs humaines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔥 Exemples pratiques&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffenb6y19362hzfe649il.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffenb6y19362hzfe649il.png" alt="Image description" width="800" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛑 Filtrage des console.log&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwke0sqo9u192ikezk5p5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwke0sqo9u192ikezk5p5.png" alt="Image description" width="741" height="156"&gt;&lt;/a&gt;&lt;br&gt;
Un hook pre-commit peut détecter et bloquer les commits contenant des console.log, garantissant ainsi un code plus propre en production.&lt;/p&gt;

&lt;p&gt;🎨 Application automatique du formatage du code&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdx4xwttj7obbt3aa3jwl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdx4xwttj7obbt3aa3jwl.png" alt="Image description" width="723" height="246"&gt;&lt;/a&gt;&lt;br&gt;
Un hook pre-commit peut s'exécuter un formateur comme Prettier ou ESLint pour corriger l’indentation et l’espacement avant chaque commit.&lt;/p&gt;

&lt;p&gt;🔐 Empêcher l’exposition accidentelle de secrets&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkfivxv94cqll6vg9kdnf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkfivxv94cqll6vg9kdnf.png" alt="Image description" width="800" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Un hook pre-commit ou pre-push peut scanner le code à la recherche de clés API ou de mots de passe en clair et empêcher leur commit.&lt;/p&gt;

&lt;p&gt;🚧 Bloquer un push si le build échoue&lt;br&gt;
Un hook pre-push peut être configuré pour exécuter des tests ou compiler le projet avant d’autoriser le push. Si le build échoue, le push est bloqué, empêchant ainsi du code cassé d’atteindre le dépôt distant.&lt;/p&gt;

&lt;p&gt;Exemple de script dans un hook pre-push :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/sh
echo "Exécution des vérifications pre-push..."

# Nettoyage et reconstruction du projet
dotnet clean
dotnet build

# Exécution des tests
dotnet test

if [ $? -ne 0 ]; then
    echo "Les tests ont échoué, push annulé."
    exit 1
fi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📺 Pour une explication détaillée, consultez cette vidéo :&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/c2IhlNTU_wA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Pour en savoir plus sur ESLint : &lt;br&gt;
&lt;a href="https://www.digitalocean.com/community/tutorials/linting-and-formatting-with-eslint-in-vs-code" rel="noopener noreferrer"&gt;https://www.digitalocean.com/community/tutorials/linting-and-formatting-with-eslint-in-vs-code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🚀 Adoptez les hooks Git dès aujourd’hui !&lt;br&gt;
Les hooks Git sont une solution simple mais puissante pour appliquer les bonnes pratiques, gagner du temps et réduire les coûts tout en améliorant la qualité et la sécurité du code.&lt;/p&gt;

&lt;p&gt;En exploitant les hooks de manière efficace, les équipes de développement peuvent maintenir un workflow fluide et optimisé.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
