Automated summary
This skill walks through recovering from a failing DCO check by retroactively adding Signed-off-by trailers, from a single-commit amend to an interactive rebase for older commits.
Strengths
- Handles three distinct situations: the last commit, an older commit on the branch, and commits brought in via cherry-pick or merge.
- Gives the exact git log command to spot unsigned commits using Signed-off-by trailers.
- Prefers --force-with-lease over --force and explains the risk it avoids.
- Includes a final verification command that checks both GPG signature and DCO trailer before pushing.
Limitations
- Assumes the Probot DCO check is already set up on the repo and defers the canonical signing policy to .claude/rules/commit-workflow.md.
- The interactive rebase with 'edit' per commit stays manual and tedious across a long run of unsigned commits.
- Does not cover commits already pushed to a protected or shared branch where force-pushing is disallowed.
Use it when a PR is blocked by the DCO check or a commit needs a Signed-off-by trailer added after the fact.
Avoid it when the branch is shared and history rewriting is forbidden, or when the real issue is an author email that does not match the sign-off.
Security analysis
CautionThe 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.
Examples
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.
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/dco-sign-off-recovery-ms47vnw7/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
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. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
Tools declared by the author (check availability in your agent): Bash, Read, Edit
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
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 must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/dco-sign-off-recovery-ms47vnw7'openskills read 'dco-sign-off-recovery-ms47vnw7'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/dco-sign-off-recovery-ms47vnw7/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
React Hook Form Best Practices
Development
Master React Hook Form: avoid anti-patterns, manage subscriptions, and handle reset, dirty state, and controlled inputs correctly.
Emotion to Mantine Migration
Development
Migrate Emotion styled-components to Mantine components with style props and CSS modules. Use when converting .styled.tsx files or removing @emotion imports.
Scope Creep Detector
Development
Analyzes git diffs against a stated intent to detect scope creep, unrelated files, broad PRs, and oversized changes, then suggests keep, split, or justify actions.