Close an explicit repository task by shaping, landing, publishing, proving, and cleaning it up; also handles narrower commit, publish, and landing-verification requests without exceeding their authority.
Scanned 9/8/2026
Install to Claude Code
npx -y skills add edmundmiller/dotfiles --skill done --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Done?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/edmundmiller-done)More formats (shields.io, HTML) on the badges page.
---
name: done
description: Close an explicit repository task by shaping, landing, publishing, proving, and cleaning it up; also handles narrower commit, publish, and landing-verification requests without exceeding their authority.
---
# Done
Close the current repository task completely while preserving unrelated work.
Invoke for `/done`, bare `done` in an active task, or an explicit request to
land, publish, or verify task changes. Do not treat ordinary completion
language such as “I am done reviewing” as publication authority.
## Authority envelope
A bare `done` authorizes full closeout: shape, validate, integrate, publish,
prove, and clean up. A narrower request authorizes only its named stages. Honor
explicit PR, local-only, no-push, squash, merge, rebase, or fast-forward terms.
Never promote “commit and push,” “publish this branch,” or “verify landing” into
full cleanup.
Repository review rules and protected branches override the direct path.
Otherwise **Default to direct landing** on the actual default branch/bookmark.
Discover the destination and remote from live state; never assume `main` or
`origin` merely from convention.
## Completion invariant
Report `Done` only when:
1. Explicit task revisions are reviewable and repository-declared gates plus
focused behavioral checks pass.
2. Exact ancestry, per-revision patch equivalence, or aggregate task-range
patch equivalence proves the task landed on the actual default destination.
3. A writable authoritative remote equals the proved local default tip.
4. The recorded task workspace and owned branches are safely cleaned up.
`Done locally` is terminal only when no remote exists by design or the request
explicitly required local-only closeout. A clean feature workspace, successful
push, merged PR label, or passing build alone is never completion proof.
## Workflow
1. Record `active_directory=$(pwd -P)` before changing directories. Establish
the explicit task boundary from a receipt, recorded revisions, or a direct
user statement. Subjects and ancestry position are not task provenance.
2. Capture read-only evidence before mutations:
```bash
python3 "${HOME}/.agents/skills/done/scripts/closeout.py" snapshot \
--repo "$PWD" --active-directory "$active_directory" \
${receipt:+--receipt "$receipt"} >"$snapshot"
```
If no receipt exists, establish provenance and use `hey agent-adopt` before
the first closeout mutation.
3. Shape only task work. Leave unrelated dirt unstaged. Run repository gates
plus focused tests. Allow one unambiguous task-caused repair cycle; otherwise
record `Blocked`.
4. Run `jj root --ignore-working-copy`. Read [jj closeout](./references/jj.md)
when it succeeds; otherwise read [Git closeout](./references/git.md). Never
initialize jj during closeout.
5. If direct publication is forbidden or review is required, read the
[GitHub PR path](./references/github-pr.md). GitHub is the explicit hosted
provider; unsupported providers require authenticated discoverable tooling
or a precise blocker.
6. After landing proof, read [receipt, cleanup, and reporting](./references/cleanup.md).
## Finite outcomes
- `Done`: remote landing and cleanup proved; receipt terminal.
- `Done locally`: local-only-by-design landing and cleanup proved; receipt terminal.
- `Landed; cleanup deferred`: remote landing proved, but safe cleanup did not.
- `PR ready; merge pending`: required PR exists but gates remain after bounded waiting.
- `Local only`: publication was expected but unavailable or unauthorized.
- `Blocked`: scope, validation, conflict, identity, policy, or proof is unresolved.
Partial outcomes remain open. On the next invocation, re-read live local and
authoritative state, accept recorded evidence only when it still matches, and
resume at the first unmet stage. A false terminal claim records `false_done`.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!