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.zip

Installs 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.
375 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

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

You give it
Git repository with commits missing DCO sign-off
You get back
Git commits amended with DCO sign-off and force-pushed to the remote

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.

SkillInstallsUpdatedSafetyDifficulty
dco (this skill)02moReviewIntermediate
find-bugs57moNo flagsIntermediate
pr-workflow16moReviewBeginner
prowler-ci17moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry