Done
SkillProductivityClose 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.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Done skill
What this skill tells your AI
The instructions your AI receives, as published by edmundmiller/dotfiles in skills/catalog/done/SKILL.md and read by ahel’s review.
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:
- Explicit task revisions are reviewable and repository-declared gates plus focused behavioral checks pass.
- Exact ancestry, per-revision patch equivalence, or aggregate task-range patch equivalence proves the task landed on the actual default destination.
- A writable authoritative remote equals the proved local default tip.
- 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
-
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. -
Capture read-only evidence before mutations:
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-adoptbefore the first closeout mutation. -
Shape only task work. Leave unrelated dirt unstaged. Run repository gates plus focused tests. Allow one unambiguous task-caused repair cycle; otherwise record
Blocked. -
Run
jj root --ignore-working-copy. Read jj closeout when it succeeds; otherwise read Git closeout. Never initialize jj during closeout. -
If direct publication is forbidden or review is required, read the GitHub PR path. GitHub is the explicit hosted provider; unsupported providers require authenticated discoverable tooling or a precise blocker.
-
After landing proof, read receipt, cleanup, and reporting.
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.
Signals
- GitHub stars
- 80
- Forks
- 6
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
done-edmundmiller- Source
- github.com/edmundmiller/dotfiles