Adds missing Signed-off-by trailers to git commits to satisfy DCO requirements.
Install
mkdir -p .claude/skills/dco && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/12192" && unzip -o skill.zip -d .claude/skills/dco && rm skill.zipInstalls to .claude/skills/dco
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
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.Key capabilities
- →Add DCO sign-off to the last commit
- →Add DCO sign-off to older commits using interactive rebase
- →Add DCO sign-off during cherry-picking
- →Verify DCO and GPG signatures across a branch
How it works
The skill recovers from missing DCO sign-off by amending commits using git commit --amend --signoff or interactive rebase, then force-pushes the changes.
Inputs & outputs
When to use dco
- →Recover from failed DCO check
- →Add sign-off to recent commit
- →Sign-off older commits in history
About this skill
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.
When not to use it
- →When the Probot DCO check is not blocking PRs
- →When sign-off was correctly added at commit time
Limitations
- →Requires force-pushing changes to the remote repository
- →Interactive rebase is needed for older commits on the same branch
- →Cherry-picking without sign-off requires subsequent amendment
How it compares
This skill provides specific commands and workflows for retroactively adding DCO sign-offs, which is more complex than simply using --signoff at commit time.
Compared to similar skills
dco side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| dco (this skill) | 0 | 2mo | Review | Intermediate |
| find-bugs | 5 | 7mo | No flags | Intermediate |
| pr-workflow | 1 | 6mo | Review | Beginner |
| prowler-ci | 1 | 6mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
find-bugs
davila7
Find bugs, security vulnerabilities, and code quality issues in local branch changes. Use when asked to review changes, find bugs, security review, or audit code on the current branch.
pr-workflow
tursodatabase
General guidelines for Commits, formatting, CI, dependencies, security
prowler-ci
prowler-cloud
Helps with Prowler repository CI and PR gates (GitHub Actions workflows). Trigger: When investigating CI checks failing on a PR, PR title validation, changelog gate/no-changelog label, conflict marker checks, secret scanning, CODEOWNERS/labeler automation, or anything under .github/workflows.
lint
i3ringit
Use this agent when you need to run linting and code quality checks on Ruby and ERB files. Run before pushing to origin.
oss-dist
epicsagas
Audits and guides OSS project release readiness across the full lifecycle: community standards, README quality, launch strategy, distribution pipeline, and governance/security posture. Activates when reviewing, planning, or shipping an open-source project — at any stage from initial setup to public
code-review
openzigs
Comprehensive code review workflow for pull requests. Validates against requirements (epic/issue), checks code quality, security (OWASP Top 10), performance, test coverage, and documentation. Leaves structured GitHub review with inline comments. Optionally hands off to Code Issue agent for fixes.