Synthèse automatique
Ce skill guide la récupération d'un contrôle DCO échoué en ajoutant rétroactivement la mention Signed-off-by aux commits, du simple amend jusqu'au rebase interactif pour les commits plus anciens.
Points forts
- Couvre trois situations distinctes : dernier commit, commit ancien dans la branche, et commits importés par cherry-pick ou merge.
- Fournit la commande exacte pour repérer les commits non signés via git log et les trailers Signed-off-by.
- Recommande --force-with-lease plutôt que --force, avec l'explication du risque évité.
- Inclut une commande de vérification finale combinant signature GPG et trailer DCO avant le push.
Limites
- Suppose un dépôt où le check Probot DCO est déjà configuré, et renvoie à .claude/rules/commit-workflow.md pour la politique de signature canonique.
- Le rebase interactif avec 'edit' sur chaque commit reste manuel et fastidieux sur une longue série de commits non signés.
- Ne traite pas les cas de commits déjà poussés sur une branche protégée ou partagée où un force-push est interdit.
À utiliser lorsqu'une PR est bloquée par le check DCO ou qu'un commit doit recevoir un trailer Signed-off-by a posteriori.
À éviter si la branche est partagée et que la réécriture d'historique est proscrite, ou si le problème vient d'un email d'auteur ne correspondant pas au sign-off.
Analyse de sécurité
PrudenceThe skill uses Bash to run git commands that modify commit history and force-push, which are powerful operations. They are legitimate for DCO recovery and do not exfiltrate data or execute arbitrary remote code, but they carry risk of history rewrite and require care.
- •Uses `git push --force-with-lease` which rewrites remote branch history and can overwrite collaborators' work if misapplied.
- •Interactive rebase with `edit` can inadvertently drop or squash commits if the user mishandles the editor or conflicts.
Exemples
My PR is failing the DCO check and it's just my most recent commit missing the sign-off. Can you add the Signed-off-by trailer and push it safely?Three commits back on my feature branch are missing DCO sign-off. Find them and walk me through rebasing so each one gets signed.Before I push, check that every commit ahead of origin/main has both a good GPG signature and a valid Signed-off-by trailer.name: dco description: > Recover from missing DCO sign-off on commits. Handles the single-commit amend, older-commit recovery via interactive rebase or cherry-pick, and explains the Probot DCO check that blocks PRs without sign-off. Use when a PR fails the DCO check, when a commit needs a Signed-off-by trailer added retroactively, or when sign-off was forgotten during rebase / cherry-pick / amend. allowed-tools: Bash, Read, Edit
DCO Sign-off Recovery
All commits in this repo must carry a Signed-off-by: trailer (Developer Certificate of Origin). The Probot DCO check on PRs blocks merge until every commit is signed.
The standard way to add it is with --signoff at commit time. This skill handles the cases where that was missed.
Case 1: Last commit only
git commit --amend --signoff -S --no-edit
git push --force-with-lease
--force-with-lease is preferred over plain --force — it refuses if someone else has pushed to the branch since you last fetched.
Case 2: Older commit on the same branch
Find the commit hash of the oldest unsigned commit:
git log --pretty='%h %s %(trailers:key=Signed-off-by,valueonly)' origin/main..HEAD
# Any line with an empty trailing field is unsigned
Then interactively rebase from one commit before that:
git rebase -i <parent-of-unsigned-commit>
# In the editor, change `pick` to `edit` for each unsigned commit
# Save and exit; the rebase stops at each `edit` line so you can amend
For each commit in the rebase, replace it with a signed version:
git commit --amend --signoff -S --no-edit
git rebase --continue
When done, force-push:
git push --force-with-lease
Case 3: Cherry-pick / merge brought in unsigned commits
Cherry-pick with sign-off baked in:
git cherry-pick --signoff <sha>
If you already cherry-picked without it, fall back to Case 1 or Case 2 above.
Verifying the whole branch
Before pushing, verify every commit ahead of origin/main has both DCO and GPG:
git log --format='%G? %(trailers:key=Signed-off-by,valueonly,separator=%x20) %h %s' origin/main..HEAD
Each line must start with G or U (good GPG signature) AND carry a non-empty Signed-off-by value before the SHA. Codes N / B / E need investigation. See .claude/rules/commit-workflow.md for the canonical signing policy.
What the Probot DCO check looks for
The check passes when every commit message includes a Signed-off-by: Name <email> trailer matching the commit author's email. The --signoff (or -s) flag adds this trailer automatically using your user.name and user.email git config.
A failing DCO check on a PR will show a "Details" link explaining which commits are missing sign-off.
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/dco-sign-off-recovery-ms47vnw7/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/dco-sign-off-recovery-ms47vnw7' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/dco-sign-off-recovery-ms47vnw7/download' --output '.skill-downloads/dco-sign-off-recovery-ms47vnw7/SKILL.md.part' && mv '.skill-downloads/dco-sign-off-recovery-ms47vnw7/SKILL.md.part' '.skill-downloads/dco-sign-off-recovery-ms47vnw7/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, Edit
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/dco-sign-off-recovery-ms47vnw7/SKILL.md' && test -s '.skill-downloads/dco-sign-off-recovery-ms47vnw7/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/dco' && cp -R '.skill-downloads/dco-sign-off-recovery-ms47vnw7' '.claude/skills/dco'Cursor
test -f '.skill-downloads/dco-sign-off-recovery-ms47vnw7/SKILL.md' && test -s '.skill-downloads/dco-sign-off-recovery-ms47vnw7/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/dco' && cp -R '.skill-downloads/dco-sign-off-recovery-ms47vnw7' '.cursor/skills/dco'Codex
test -f '.skill-downloads/dco-sign-off-recovery-ms47vnw7/SKILL.md' && test -s '.skill-downloads/dco-sign-off-recovery-ms47vnw7/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/dco' && cp -R '.skill-downloads/dco-sign-off-recovery-ms47vnw7' '.agents/skills/dco'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/dco-sign-off-recovery-ms47vnw7'openskills read 'dco-sign-off-recovery-ms47vnw7'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/dco-sign-off-recovery-ms47vnw7/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.