Finishing a Development Branch
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
Close out a bead started with /work-on — verify it's safe, clean up the worktree, free the tab and the session name
$ npx skills add goern/forgejo-mcp --skill done-with -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install goern/forgejo-mcp done-with --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/goern/forgejo-mcp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/done-with .claude/skills/done-with && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "done-with" agent skill from https://github.com/goern/forgejo-mcp/tree/main/.agents/skills/done-with into .claude/skills/done-with/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "done-with", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/goern/forgejo-mcp/tree/main/.agents/skills/done-withType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add goern/forgejo-mcp --skill done-with -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install goern/forgejo-mcp done-with --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/goern/forgejo-mcp.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/done-with .agents/skills/done-with && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "done-with" agent skill from https://github.com/goern/forgejo-mcp/tree/main/.agents/skills/done-with into .agents/skills/done-with/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "done-with", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add goern/forgejo-mcp --skill done-with -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install goern/forgejo-mcp done-with --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/goern/forgejo-mcp.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/done-with .cursor/skills/done-with && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "done-with" agent skill from https://github.com/goern/forgejo-mcp/tree/main/.agents/skills/done-with into .cursor/skills/done-with/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "done-with", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/goern/forgejo-mcp.git --path .agents/skills/done-with--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add goern/forgejo-mcp --skill done-with -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install goern/forgejo-mcp done-with --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/goern/forgejo-mcp.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/done-with .gemini/skills/done-with && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "done-with" agent skill from https://github.com/goern/forgejo-mcp/tree/main/.agents/skills/done-with into .gemini/skills/done-with/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "done-with", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install goern/forgejo-mcp done-withInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add goern/forgejo-mcp --skill done-with -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/goern/forgejo-mcp.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/done-with .github/skills/done-with && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "done-with" agent skill from https://github.com/goern/forgejo-mcp/tree/main/.agents/skills/done-with into .github/skills/done-with/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "done-with", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add goern/forgejo-mcp --skill done-with -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install goern/forgejo-mcp done-with --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/goern/forgejo-mcp.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/done-with .opencode/skills/done-with && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "done-with" agent skill from https://github.com/goern/forgejo-mcp/tree/main/.agents/skills/done-with into .opencode/skills/done-with/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "done-with", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
done-withClose out a bead started with /work-on — verify it's safe, clean up the worktree, free the tab and the session name
Done With is an agent skill from goern/forgejo-mcp. Close out a bead started with /work-on — verify it's safe, clean up the worktree, free the tab and the session name
Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/herdr-rename-tab.sh` and `scripts/session-title.sh`). Compatibility notes: Requires the wt, jq and herdr CLIs; the session rename additionally needs the UserPromptSubmit hook from the README
It sits in Development, covering Git worktrees. The repository describes itself as: MIRROR ONLY!! This Model Context Protocol (MCP) server provides tools and resources for interacting with the Forgejo (specifically Codeberg.org) REST API. The licence is GPL-3.0-or-later.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1f51f83. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
gitjqFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires the `wt`, `jq` and `herdr` CLIs; the session rename additionally needs the `UserPromptSubmit` hook from the README
From compatibility in the SKILL.md frontmatter.
Done With loads about 1.1k tokens when it runs. Until then it costs about 31 tokens; SKILL.md has 585 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from goern/forgejo-mcp at commit 1f51f83, republished under its GPL-3.0-or-later licence (© goern). 585 words, ~1,090 tokens.
.claude/skills/done-with/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Counterpart to /work-on. Undoes every step it took: removes the worktree
(when safe) and frees the herdr tab and the Claude session name.
Run this skill's steps on Sonnet. Skills can't pin a model via frontmatter (that's a Command-only field) — this is a best-effort instruction to the invoking agent, not an enforced constraint.
$ARGUMENTS if given; otherwise the current branch:
git rev-parse --abbrev-ref HEADIf that resolves to the repo's default branch, there is nothing to clean up — stop and say so.
wt list --format=json --full | jq -e --arg b "$BRANCH" '.[] | select(.branch == $b)'Read the matched entry:
working_tree.staged / .modified /
.untracked / .renamed / .deleted is true → stop. Report the
uncommitted changes and do not touch the worktree or the tab. The user
commits or stashes first.main_state is "integrated" or "empty" → safe, proceed.ci.number is present (any ci.status, draft included —
"opened" is the bar here, not "approved") → safe, proceed.If the branch has no worktree entry at all in the JSON, say so and stop — nothing to clean up.
Try ExitWorktree({action: "remove"}) first — this is the common case: the
session that's closing out the bead is the same one /work-on created the
worktree in. It fires the WorktreeRemove hook wired into the agent's settings
(.claude/settings.json in Claude Code), which runs
wt remove --foreground <path> — that keeps the branch unless it's fully
merged (main_state integrated/empty), so a branch backing a still-open PR
survives even though its worktree is gone.
If ExitWorktree reports no active worktree session (this session didn't
create it, or it's a fresh session resuming cleanup) — fall back to:
wt remove "$BRANCH" --foregroundscripts/herdr-rename-tab.sh free(Run it from the skill's own directory, or by absolute path — it lives next to this file.)
Same script /work-on uses: it renames the tab hosting this session,
resolved from the HERDR_PANE_ID herdr exports into every pane. Never resolve
the tab from herdr api snapshot's focused_tab_id — that renames whichever
tab is focused when the command lands, not the one running the session.
Best effort — every failure is non-fatal, report it and carry on:
| exit | meaning |
|---|---|
| 0 | renamed |
| 3 | HERDR_PANE_ID unset — session is not inside a herdr pane, nothing to rename |
| 4 | pane unknown to the server (herdr not running, or the pane is gone) |
| 5 | herdr rejected the rename |
scripts/session-title.sh queue freeSame label as the tab, for the same reason /work-on sets both: a session
still called <bead-id> after cleanup is a lie. The rename is queued and
applied by the UserPromptSubmit hook on the user's next message — a session
cannot rename itself mid-turn. Exit 3 means CLAUDE_CODE_SESSION_ID is unset
(not a Claude Code session); non-fatal, report and carry on.
Both renames only ever run after Step 1 passed. A refused cleanup leaves the tab and the session name on the bead id, which is exactly the truthful signal.
One line: branch, why it was safe to remove (merged / PR #N), worktree removed
y/n, branch kept/deleted, tab renamed to "free" and the session rename queued
(it lands on the next message). Mention bd close <bead-id>
if the bead itself is still open — this command does not close beads.
© goern, GPL-3.0-or-later. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts) in .agents/skills/done-with of goern/forgejo-mcp.
Open the folder on GitHubat commit 1f51f83
Done With next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Done With this skillgoern/forgejo-mcp | 141 | — | ~1.1k | Automated safety check: Pass | GPL-3.0-or-later | |
| Finishing a Development Branchobra/superpowers | 296k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Migrate Core Code to Submodulestinyhumansai/openhuman | 42k | — | ~2.6k | Automated safety check: Pass | GPL-3.0 | |
| Finishing A Development Branchfarm-fe/farm | 5.6k | 34 repos | ~1.8k | Automated safety check: Pass | MIT | |
| Git Worktree Cleanuplobehub/lobehub | 83k | — | ~2.8k | Automated safety check: Pass | Custom licence | |
| Keep Codex Fastvibeforge1111/keep-codex-fast | 1.6k | — | ~3.1k | Automated safety check: Pass | MIT |
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
tinyhumansai/openhuman
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
farm-fe/farm
A skill your agent uses when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for…
lobehub/lobehub
Audits stale Git worktrees and branches with a bundled script, classifies each one, and deletes only after you approve the exact candidates.
vibeforge1111/keep-codex-fast
A skill your agent uses when Codex feels slow or bloated, when local sessions/logs/worktrees/config have grown over time, or when a user wants safe maintenance for Codex Desktop/CLI state.
jamiepine/voicebox
Sorts a backlog of open pull requests into must-merge, candidate, superseded and deferred, writes a triage doc and works the merge loop before a release.
goern/forgejo-mcp
A skill your agent uses when releasing OpenSpec: audit merged work and changeset coverage, decide whether a catch-up changeset PR is needed, prepare or resume the Changesets Version Packages PR, cut…
goern/forgejo-mcp
Fetch and display notifications from both GitHub and Codeberg in a unified markdown view with clickable links.
goern/forgejo-mcp
Compress a memory file such as CLAUDE.md or a todo list into caveman format to save input tokens, keeping a readable backup.
goern/forgejo-mcp
Collaborative page-drafting mode for the OpenSpec docs. An agent skill from goern/forgejo-mcp.
goern/forgejo-mcp
Fact-checks OpenSpec user documentation with a fresh-context subagent that re-runs commands and checks claims against source.
goern/forgejo-mcp
Create a new worktrunk worktree (optionally in another repo) and switch this session's working directory into it.
Categories
Close out a bead started with /work-on — verify it's safe, clean up the worktree, free the tab and the session name. Done With is an agent skill from goern/forgejo-mcp.
Done With fits situations like: tasks that involve Git worktrees.
Run `npx skills add goern/forgejo-mcp --skill done-with -a claude-code`. Or copy the skill folder (.agents/skills/done-with in goern/forgejo-mcp) into .claude/skills/done-with in your project. Claude Code loads it when a task matches its description.
Run `npx skills add goern/forgejo-mcp --skill done-with -a codex`. Or copy the skill folder (.agents/skills/done-with in goern/forgejo-mcp) into .agents/skills/done-with in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add goern/forgejo-mcp --skill done-with -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/done-with, .gemini/skills/done-with, .github/skills/done-with and .opencode/skills/done-with in your project.
Going by SKILL.md and its folder, Done With needs a shell for the scripts in its folder and the command-line tools its instructions call (git and jq). Our summary lists: A Bash shell. Compatibility (from SKILL.md): Requires the `wt`, `jq` and `herdr` CLIs; the session rename additionally needs the `UserPromptSubmit` hook from the README.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Done With is published under the GPL-3.0-or-later licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.1k tokens (SKILL.md is roughly 4.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Done With: Finishing a Development Branch (obra/superpowers, 296k stars), Migrate Core Code to Submodules (tinyhumansai/openhuman, 42k stars), Finishing A Development Branch (farm-fe/farm, 5.6k stars) and Git Worktree Cleanup (lobehub/lobehub, 83k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
goern (a GitHub user) maintains it in goern/forgejo-mcp, which has 141 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on October 8, 2026.
Source: goern/forgejo-mcp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.