Synthèse automatique
Génère automatiquement des messages de commit conventionnels en analysant les différences Git et les changements indexés.
Points forts
- Produit des messages structurés avec type, scope et sujet clair
- Analyse le diff pour comprendre la nature et le contexte des changements
- Crée directement le commit avec la commande appropriée
- Respecte les règles de conventional commits (longueur, impératif, etc.)
Limites
- Peut mal interpréter des changements complexes ou non conventionnels
- Nécessite que Git soit disponible et que les changements soient indexés
- Ajoute automatiquement une ligne 'Co-Authored-By' qui peut ne pas être souhaitée
Utilisez cette compétence lorsque vous devez créer un message de commit professionnel et structuré à partir de modifications déjà indexées.
Ne l'utilisez pas pour des commits très simples (une ligne) ou si vous préférez rédiger vous-même le message.
Analyse de sécurité
SûrThe skill only uses git status, diff, log, and commit commands. No destructive or exfiltration actions. The Co-Authored-By email is harmless.
Aucun point d'attention détecté
Comment cette analyse est faiteExemples
Generate a commit message for my staged changesHelp me commit my changes with a good messageWrite a commit message for this feature I just finishedname: commit-message description: Generates clear commit messages from git diffs. Use when writing commit messages, reviewing staged changes, or when the user asks to create a commit. allowed-tools: Bash, Read user-invocable: true
Commit Message Generator
Generate clear, conventional commit messages by analyzing git diffs and staged changes.
Instructions
When asked to generate or create a commit message:
-
Analyze Current State
- Run
git statusto see what files are staged and unstaged - Run
git diff --cachedto review staged changes - Run
git log --oneline -10to understand the project's commit message style
- Run
-
Understand the Changes
- Read the diff carefully to understand what changed
- Identify the type of change (feature, fix, refactor, etc.)
- Determine the scope/area affected (component, file, feature)
- Understand the "why" behind the changes, not just the "what"
-
Generate the Commit Message
Use this format:
<type>(<scope>): <subject>
<body>
Co-Authored-By: ai <caizongding@gmail.com>
Commit Types
- feat: New feature or functionality
- fix: Bug fix
- refactor: Code refactoring (no behavior change)
- perf: Performance improvement
- style: Styling or formatting changes
- docs: Documentation updates
- test: Adding or updating tests
- chore: Maintenance, dependencies, configuration
- build: Build system or dependency changes
- ci: CI/CD configuration changes
Writing Rules
- Subject line: Use imperative mood ("add" not "added" or "adds")
- Length: Subject ≤ 50 characters, body lines ≤ 72 characters
- Clarity: Be specific and descriptive
- Scope: Use relevant scope like
todos,auth,ui,api, etc. - Body: Explain WHY, not WHAT (the diff shows what)
-
Present the Message
- Show the generated commit message clearly
- Explain your reasoning if the change is complex
-
Create the Commit Automatically
- Use heredoc format for proper multiline message:
git commit -m "$(cat <<'EOF' <type>(<scope>): <subject> <body> Co-Authored-By: ai <caizongding@gamil.com> EOF )"
Examples
Example 1: New Feature
Scenario: User added a dark mode toggle to settings
feat(settings): add dark mode toggle
Implement dark mode toggle with localStorage persistence. The toggle
respects system preferences on first load and provides smooth transitions
between themes using CSS variables.
Co-Authored-By: ai <caizongding@gamil.com>
Example 2: Bug Fix
Scenario: Fixed hydration mismatch in todo list
fix(hydration): prevent SSR/client mismatch in todo list
Use two-phase hydration pattern to avoid mismatch errors. Now loading
from localStorage in useEffect after component mounts rather than
during initial render.
Co-Authored-By: ai <caizongding@gamil.com>
Example 3: Refactoring
Scenario: Extracted logic into custom hook
refactor(hooks): extract todo storage logic into useTodoStorage
Move localStorage sync logic into reusable hook for better testability
and separation of concerns. No functional changes to user-facing behavior.
Co-Authored-By: ai <caizongding@gamil.com>
Example 4: Performance Optimization
Scenario: Added memoization to expensive calculation
perf(todos): memoize completed count calculation
Wrap todo completion calculation in useMemo to prevent unnecessary
recalculation on every render. Improves performance with large todo lists.
Co-Authored-By: ai <caizongding@gamil.com>
Example 5: Style Changes
Scenario: Improved responsive layout
style(layout): improve mobile responsive design
Adjust grid layout to stack vertically on small screens with better
padding and spacing. Enhance glassmorphism effects for improved contrast.
Co-Authored-By: ai <caizongding@gamil.com>
Best Practices
Do ✅
- Analyze the full diff before writing the message
- Match the project's existing commit style
- Use specific, actionable language
- Explain the reasoning in the body
- Keep each commit focused on one logical change
- Use conventional commit format consistently
Don't ❌
- Use vague messages like "fix bug" or "update code"
- Mix multiple unrelated changes in one commit
- Write overly long subject lines
- Forget to add Co-Authored-By attribution
- Skip the body for non-trivial changes
- Use past tense or gerunds
Special Cases
Breaking Changes
Add an exclamation mark (!) after the type and include BREAKING CHANGE in body:
feat(api)!: change todo response format
BREAKING CHANGE: Todo API now returns different structure.
Before: { id, title, done }
After: { id, text, completed, createdAt }
Update all API consumers to use new format.
Co-Authored-By: ai <caizongding@gamil.com>
Multiple Related Changes
Use bullet points in the body:
feat(todos): add filtering and sorting
- Add filter buttons for all/active/completed states
- Implement sort by date or alphabetically
- Persist filter/sort preferences in localStorage
Co-Authored-By: ai <caizongding@gamil.com>
Fixing Issues
Reference issue numbers:
fix(auth): resolve login redirect loop
Fixes #123
Detect token expiration properly and redirect to login without
creating an infinite loop.
Co-Authored-By: ai <caizongding@gamil.com>
Verification Checklist
Before committing, verify:
- [ ] Type is correct (feat, fix, refactor, etc.)
- [ ] Scope accurately describes affected area
- [ ] Subject line uses imperative mood
- [ ] Subject line is ≤ 50 characters
- [ ] Body explains WHY, not just WHAT
- [ ] Body lines are ≤ 72 characters
- [ ] Co-Authored-By is included
- [ ] Message follows project conventions
- [ ] Commit is atomic (one logical change)
Integration with Workflow
This skill works seamlessly with Claude Code's commit workflow:
- User makes changes and stages them with
git add - User asks "Create a commit" or "Generate commit message"
- This skill activates automatically
- Analyzes diff and generates conventional commit message
- Creates commit with proper attribution
The skill respects the project's existing conventions by analyzing recent commit history.
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 annexesCe 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.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/commit-message-generator-mryiqhmh/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/commit-message-generator-mryiqhmh' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/commit-message-generator-mryiqhmh/download' --output '.skill-downloads/commit-message-generator-mryiqhmh/SKILL.md.part' && mv '.skill-downloads/commit-message-generator-mryiqhmh/SKILL.md.part' '.skill-downloads/commit-message-generator-mryiqhmh/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.
Outils déclarés par l’auteur (à vérifier dans votre agent) : Bash, Read
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/commit-message-generator-mryiqhmh/SKILL.md' && test -s '.skill-downloads/commit-message-generator-mryiqhmh/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/commit-message' && cp -R '.skill-downloads/commit-message-generator-mryiqhmh' '.claude/skills/commit-message'Cursor
test -f '.skill-downloads/commit-message-generator-mryiqhmh/SKILL.md' && test -s '.skill-downloads/commit-message-generator-mryiqhmh/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/commit-message' && cp -R '.skill-downloads/commit-message-generator-mryiqhmh' '.cursor/skills/commit-message'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’OpenSkillsopenskills install './.skill-downloads/commit-message-generator-mryiqhmh'openskills read 'commit-message-generator-mryiqhmh'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 syncMode 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/commit-message-generator-mryiqhmh/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.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.