Conventions Git

VérifiéSûr

Conventions de commit Git avec scopes obligatoires, commits conventionnels et messages de commit significatifs. À utiliser lors de la création de commits, la rédaction de messages, le staging ou tout workflow Git.

Spar Skills Guide Bot
DeveloppementDébutant
25/07/2026
Claude CodeCursorWindsurfCopilotCodex
#git#conventional-commits#commit-messages#version-control#workflow

Recommandé pour

Synthèse automatique

Cette skill impose un format de commits Git de type Conventional Commits, avec scope obligatoire, types limités et règles précises pour le sujet, le corps et le pied de message.

Points forts

  • Liste de types fermée avec une règle de choix explicite (feat/fix selon le changement de comportement, refactor/perf à comportement constant)
  • Scopes applicatifs et d'infrastructure prédéfinis, avec consigne pour les changements multi-zones
  • Contraintes concrètes sur la ligne de sujet : 72 caractères max, minuscules, impératif, pas de point final
  • Rappelle que le corps explique le pourquoi et que le pied documente les breaking changes et références

Limites

  • La table de scopes est propre à un projet donné (panneaux SQLite, db, schema, editor, results) et doit être réécrite pour un autre dépôt
  • Ne couvre que la rédaction des commits : ni stratégie de branches, ni pull requests, ni résolution de conflits
  • Aucun mécanisme d'application automatique (hook, commitlint) n'est fourni — tout repose sur la discipline de l'agent
Quand l'utiliser

À utiliser dès qu'il faut préparer un commit ou rédiger un message de commit dans un projet qui suit ces conventions.

Quand l'éviter

À éviter sur un dépôt qui utilise un autre format de message ou dont les scopes ne correspondent pas à la liste fournie ici.

Analyse de sécurité

Sûr
Score qualité85/100

Pure documentation/instruction content about git commit message conventions. No commands are executed, no tools are declared, and there is no network access, file deletion, secret handling, or obfuscated payload. The skill only describes formatting rules an agent should follow when writing commit messages, so execution risk is negligible.

Aucun point d'attention détecté

Comment cette analyse est faite

Exemples

Commit panel changes
Write a commit message for the changes I just made to the results panel horizontal scrolling, then stage and commit them.
Pick the right scope
I refactored code that touches both the schema panel and the database layer — what type and scope should this commit use?
Review a commit message
Check my draft commit message against the project's git conventions and fix anything that breaks the format.

name: git-conventions description: "Git commit conventions with enforced scopes, conventional commits, and meaningful commit messages. Use when creating git commits, writing commit messages, staging changes, or any git workflow in this project. Always follow these conventions for every commit."

Git Commit Conventions

Format: Conventional Commits | Scopes: Required | Breaking changes: ! suffix + footer


Commit Message Format

Every commit message follows this structure:

<type>(<scope>): <subject>

<body>

<footer>

All three parts matter. The subject line gets people's attention, the body tells the story, the footer records breaking changes and references.


Subject Line

feat(editor): add multi-cursor support for batch edits
  • Max 72 characters — truncated in git log --oneline and GitHub UI otherwise
  • Lowercase — no capital first letter after the colon
  • Imperative mood — "add" not "added" or "adds". Read it as: "this commit will add multi-cursor support"
  • No trailing period
  • Be specific — describe what changed, not what you did. "fix query timeout" not "fix bug" or "update code"

Types

Use exactly these types — no others:

| Type | When to use | |------|------------| | feat | New feature or capability for the user | | fix | Bug fix — something was broken, now it works | | refactor | Code restructuring with no behavior change | | perf | Performance improvement with no behavior change | | docs | Documentation only — README, doc comments, specs, plans | | test | Adding or updating tests with no production code change | | build | Build system, dependencies, Cargo.toml changes | | ci | CI/CD pipeline configuration | | chore | Maintenance that doesn't fit above — formatting, linting, tooling config |

Choosing the right type:

  • Changed behavior? → feat or fix
  • Same behavior, different structure? → refactor
  • Same behavior, faster? → perf
  • Only tests changed? → test
  • Only docs changed? → docs

Scopes (Required)

Every commit must include a scope that identifies the area of the codebase affected. Scopes should be short, lowercase, and consistent.

Application scopes:

| Scope | Area | |-------|------| | app | Application state, event loop, top-level orchestration | | db | Database connection, query execution, channels | | schema | Schema tree panel, table/column/index loading | | editor | SQL editor panel, syntax highlighting, buffer management | | results | Results panel, table rendering, column sizing | | detail | Record detail panel, row inspection | | explain | Query explain/analysis panel | | er | ER diagram panel | | pragmas | Pragma viewer/editor panel | | dbinfo | Database info panel | | data-editor | Inline data editing, DML generation, staged changes | | history | Query history storage and search | | theme | Theming, colors, styling | | config | Configuration loading, defaults, file I/O | | cli | CLI argument parsing, entry point | | nav | Navigation, focus management, keybindings | | clipboard | Clipboard integration | | ui | Shared UI components, layout, widgets |

Infrastructure scopes:

| Scope | Area | |-------|------| | deps | Dependency additions, removals, or upgrades | | ci | CI/CD pipeline | | release | Version bumps, changelogs, release prep | | tooling | Dev tooling, linting config, formatters |

When a change spans multiple areas, use the scope of the primary change. If genuinely cross-cutting, use app.

Scopes will evolve as the project grows — add new ones when a new module or area emerges that doesn't fit existing scopes. Keep them short and descriptive.


Body

The body explains why this change exists, not what it does (the diff shows that).

feat(results): add horizontal scrolling for wide result sets

Tables with many columns were clipped at the terminal edge, making it
impossible to inspect columns beyond the visible width. Users had to
resize their terminal or reduce font size as a workaround.

Track a horizontal scroll offset per result set and shift the visible
column window with left/right arrow keys. Column headers scroll in
sync with data rows.

Body guidelines:

  • Wrap at 72 characters — respects git log formatting in terminals
  • Blank line between subject and body
  • First paragraph: the problem or motivation. What was wrong, missing, or needed? Why does this change exist?
  • Second paragraph (optional): the approach. How does this change solve the problem? Only include when the approach isn't obvious from the diff — architectural decisions, tradeoffs made, alternatives considered and rejected.
  • Skip the body only for truly trivial changes: typo fixes, import cleanup, formatting. If you're tempted to skip it, the commit might be too small or you might be underestimating the future reader's need for context.

Breaking Changes

For changes that break the public API or change user-facing behavior in incompatible ways:

  1. Add ! after the scope in the subject line
  2. Add a BREAKING CHANGE: footer explaining what broke and how to migrate
feat(config)!: change config file format from JSON to TOML

The configuration file format has changed to TOML for better readability
and comment support.

BREAKING CHANGE: config.json is no longer read. Rename to config.toml
and convert the syntax. See docs/migration.md for a conversion guide.

Both the ! marker and the footer are required — the ! for quick scanning in git log, the footer for migration details.


What Makes a Good Commit

Atomic commits

Each commit should be a single logical change that compiles and passes tests on its own. If you're writing "and" in your subject line, consider splitting.

Good — one concern per commit:

refactor(db): extract connection pool into dedicated module
feat(db): add connection retry with exponential backoff
test(db): add connection pool timeout tests

Bad — multiple concerns bundled:

feat(db): refactor connection pool and add retry logic and tests

Commit the why, not the what

The diff shows exactly what changed. The commit message should answer: "Six months from now, when someone reads git blame on this line, what context will they need?"


Things to Avoid

  • Vague messages: "fix bug", "update code", "changes", "WIP", "misc"
  • Referencing conversations: "as discussed", "per review feedback", "Claude suggested"
  • Temporal language: "now we do X", "previously this was Y"
  • Implementation narration: "first I changed X, then I updated Y"
  • Emoji in commit messages
  • Ticket/issue numbers in the subject — put them in the footer if needed: Refs: #42

Footer

Footers go after the body, separated by a blank line. Use them for:

BREAKING CHANGE: description of what broke and migration path
Refs: #123, #456
Closes: #789

Only include footers when they carry information. Don't add empty footers.


Commit Workflow

When creating a commit:

  1. Review staged changes — make sure the diff matches a single logical change
  2. Choose the right type — use the type table above
  3. Pick the scope — which area of the codebase is primarily affected?
  4. Write a specific subject — what does this commit do, in imperative mood?
  5. Write the body — why does this change exist? What problem does it solve?
  6. Check for breaking changes — does this change user-facing behavior incompatibly?
  7. Verify the commit compiles — never commit code that doesn't build

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/git-conventions-mrzxurhc/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/git-conventions-mrzxurhc' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/git-conventions-mrzxurhc/download' --output '.skill-downloads/git-conventions-mrzxurhc/SKILL.md.part' && mv '.skill-downloads/git-conventions-mrzxurhc/SKILL.md.part' '.skill-downloads/git-conventions-mrzxurhc/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/git-conventions-mrzxurhc/SKILL.md' && test -s '.skill-downloads/git-conventions-mrzxurhc/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/git-conventions' && cp -R '.skill-downloads/git-conventions-mrzxurhc' '.claude/skills/git-conventions'

Cursor
test -f '.skill-downloads/git-conventions-mrzxurhc/SKILL.md' && test -s '.skill-downloads/git-conventions-mrzxurhc/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/git-conventions' && cp -R '.skill-downloads/git-conventions-mrzxurhc' '.cursor/skills/git-conventions'

Codex
test -f '.skill-downloads/git-conventions-mrzxurhc/SKILL.md' && test -s '.skill-downloads/git-conventions-mrzxurhc/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/git-conventions' && cp -R '.skill-downloads/git-conventions-mrzxurhc' '.agents/skills/git-conventions'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/git-conventions-mrzxurhc'

openskills read 'git-conventions-mrzxurhc'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/git-conventions-mrzxurhc/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires