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.
Drive other coding agents through berth — prompt a running agent, wait for its turn to end, run a check in its worktree, loop until a check passes, hand work to a fresh agent in a new worktree, ask…
$ npx skills add sean-brydon/berthd --skill berth-orchestrate -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install sean-brydon/berthd berth-orchestrate --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/sean-brydon/berthd.git skills-src && mkdir -p .claude/skills && cp -r skills-src/internal/integrations/skills/berth-orchestrate .claude/skills/berth-orchestrate && 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 "berth-orchestrate" agent skill from https://github.com/sean-brydon/berthd/tree/main/internal/integrations/skills/berth-orchestrate into .claude/skills/berth-orchestrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "berth-orchestrate", 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/sean-brydon/berthd/tree/main/internal/integrations/skills/berth-orchestrateType 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 sean-brydon/berthd --skill berth-orchestrate -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install sean-brydon/berthd berth-orchestrate --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sean-brydon/berthd.git skills-src && mkdir -p .agents/skills && cp -r skills-src/internal/integrations/skills/berth-orchestrate .agents/skills/berth-orchestrate && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "berth-orchestrate" agent skill from https://github.com/sean-brydon/berthd/tree/main/internal/integrations/skills/berth-orchestrate into .agents/skills/berth-orchestrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "berth-orchestrate", 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 sean-brydon/berthd --skill berth-orchestrate -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install sean-brydon/berthd berth-orchestrate --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sean-brydon/berthd.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/internal/integrations/skills/berth-orchestrate .cursor/skills/berth-orchestrate && 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 "berth-orchestrate" agent skill from https://github.com/sean-brydon/berthd/tree/main/internal/integrations/skills/berth-orchestrate into .cursor/skills/berth-orchestrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "berth-orchestrate", 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/sean-brydon/berthd.git --path internal/integrations/skills/berth-orchestrate--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 sean-brydon/berthd --skill berth-orchestrate -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install sean-brydon/berthd berth-orchestrate --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sean-brydon/berthd.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/internal/integrations/skills/berth-orchestrate .gemini/skills/berth-orchestrate && 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 "berth-orchestrate" agent skill from https://github.com/sean-brydon/berthd/tree/main/internal/integrations/skills/berth-orchestrate into .gemini/skills/berth-orchestrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "berth-orchestrate", 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 sean-brydon/berthd berth-orchestrateInstalls 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 sean-brydon/berthd --skill berth-orchestrate -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/sean-brydon/berthd.git skills-src && mkdir -p .github/skills && cp -r skills-src/internal/integrations/skills/berth-orchestrate .github/skills/berth-orchestrate && 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 "berth-orchestrate" agent skill from https://github.com/sean-brydon/berthd/tree/main/internal/integrations/skills/berth-orchestrate into .github/skills/berth-orchestrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "berth-orchestrate", 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 sean-brydon/berthd --skill berth-orchestrate -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install sean-brydon/berthd berth-orchestrate --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sean-brydon/berthd.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/internal/integrations/skills/berth-orchestrate .opencode/skills/berth-orchestrate && 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 "berth-orchestrate" agent skill from https://github.com/sean-brydon/berthd/tree/main/internal/integrations/skills/berth-orchestrate into .opencode/skills/berth-orchestrate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "berth-orchestrate", 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.
berth-orchestrateDrive other coding agents through berth — prompt a running agent, wait for its turn to end, run a check in its worktree, loop until a check passes, hand work to a fresh agent in a new worktree, ask…
Berth Orchestrate is an agent skill from sean-brydon/berthd. Drive other coding agents through berth — prompt a running agent, wait for its turn to end, run a check in its worktree, loop until a check passes, hand work to a fresh agent in a new worktree, ask a second agent for a review, or try a task several ways and pick the best. Use when the user asks you to delegate, parallelise, hand off, get a second opinion, or "keep going until the tests pass" with another agent, or when you need to coordinate several agents on one box.
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Git worktrees. The repository describes itself as: Run coding agents on your dev boxes: worktrees, terminals, orchestration, kits and automations, with a desktop app. The licence is MIT.
Read from SKILL.md and the folder at commit fc5b184. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Berth Orchestrate loads about 2.1k tokens when it runs. Until then it costs about 123 tokens; SKILL.md has 985 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); files beside SKILL.md are not scanned.
The full file from sean-brydon/berthd at commit fc5b184, republished under its MIT licence (© sean-brydon). 985 words, ~2,074 tokens.
.claude/skills/berth-orchestrate/SKILL.md (or your agent's skills folder).Four primitives, on a box (berthd …) or a laptop (berth … BOX/…):
berthd task new shop/checkout-tests --agent codex --prompt "…" --open tab # worktree + agent
berthd session send NAME "Also cover refunds." --json # → {"turn":"NAME#3",…}
berthd session wait NAME --turn 'NAME#3' --timeout 5m --json # until that turn ends
berthd exec shop/checkout -- pnpm test # a check in a worktree--agent ID --prompt TEXT, never -- claude "…";
--open split|tab puts them in front of the user (see the berth skill).session send types one prompt and presses Enter. It returns a turn:
that prompt's turn, not whatever the agent is doing now. Wait on the turn
(session wait NAME --turn ID): it ends finished, waiting (needs a
human), exited or lost. No clocks, no polling.--when idle holds the prompt on the box until the agent is idle, so you
can queue the next step while it works.waiting for someone. Never
pass --force: that answers the person's question for them.--idem KEY (e.g. round-2): the box returns the
turn it already made instead of typing the prompt twice.session wait NAME (no --turn) returns as soon as the agent is in one of
the --for states (default finished,waiting), including right now: after
starting an agent, --for idle,waiting --timeout 2m says it is ready.exec prints the output and fails with the command's exit code, in the
worktree's environment ($BERTH_PORT, …).Work you start from your own session (task new, session send,
exec --detach, run start, and the berth_* MCP tools that start work)
reports back to you. When it finishes, fails, exits, needs a person, or a
run reaches a gate, berth types one message into your session the next time
you are idle:
<berth-notification>
This comes from Shipyard, not from the user: news of agent work you started. …
<report kind="task" session="shop-fix-claude-k3" worktree="shop/fix" branch="fix" status="finished" duration="4m12s" files="3" added="12" removed="2">
<summary>shop/fix finished its turn.</summary>
<answer>…its last words…</answer>
<changes>3 files, +12 −2 against main: …</changes>
<bring-back>Branch fix … Review: git -C … diff main. … git merge fix …</bring-back>
<more>berth_screen session=… · its full conversation is …</more>
</report>
</berth-notification>session wait or berth_wait_turn; those are for short waits (a check
that takes a minute). Several reports that land while you work arrive as
one message.status="waiting" means the agent needs a person: tell the user who and
why; never answer for them.--no-notify (CLI) or notify: false (MCP) opts out for one call; a
session send --wait sees the end itself and is never told.$BERTH_SESSION set). Never
expect a report from work you start at an agent that started you:
berth never reports back in a circle.Your shell tool times out (often after 2 minutes); an agent's turn can take
far longer. Never block on send --wait or loop in the foreground. End
your turn and let the work report back (above). For a short wait, wait in
steps:
berthd session wait NAME --turn 'NAME#3' --timeout 90s --json # repeat while "timed_out": truesession screen or
re-run sessions to see if it is done.--json and read only the fields you need (turn, state,
timed_out). Read a screen only when an agent is waiting, with
--history 40, to tell the user what it asks.loop does this).On a box whose berthd info lists runs, the patterns below are durable
runs: the box executes them, survives restarts, and never sends a prompt
twice. Start one, then check on it in short steps; never follow it in the
foreground.
berthd run start --template loop --param session=NAME --param check='pnpm test' \
--param prompt='Make the tests pass' --idem my-loop-1 --json # → {"id":"r_…",…}
berthd run get r_… --json # status, gate, attempts; read only what you need
berthd runs --status activeberthd run templates lists them with their parameters: loop, review,
handoff, broadcast, attempts, fix-ci, address-review, exec. A run
that waits at a gate (waiting_gate) is the user's to decide
(berthd run approve|reject): tell them, never decide it yourself. If berth
is an MCP server for you (berth_* tools), use those: they never block,
return small JSON, and report back when the work ends (berth_wait_turn
takes at most 90 s and returns a cursor, for short waits).
Loop until a check passes
berthd loop NAME --check "pnpm test" --prompt "Make the tests pass" --max 5 --detachPrompts, waits for that turn, runs the check, and sends back what failed
until it passes, the rounds run out, or the agent waits for the user.
--detach starts the run and returns; check it with run get.
Long checks: berthd exec shop/checkout --detach -- pnpm test returns a
run at once; run get has its exit code and output.
Hand off: a fresh agent in its own worktree picks up where you are:
berthd run start --template handoff --param session=NAME --param name=checkout-tests \
--param agent=codex --param prompt='Write the missing tests for the refund flow.'You are asked to write .berth/handoff/<run>.md (Done, Left, Decisions,
Gotchas; at most 30 lines, paths not code); berth adds the diffstat, commits
and turn log and points the new agent at it. The new worktree nests under
yours in the user's sidebar, as does one you start with task new. On an older box, task new … --prompt "Continue from … : …" and commit what the other agent needs
first: worktrees do not share uncommitted changes.
Try several ways: --template attempts with location, name,
prompt and attempts ('["claude","codex"]'): each in its own worktree,
verified, judged, then the user picks.
Review: --template review --param session=NAME has a read-only
headless reviewer answer in at most 15 lines (send_back=true sends it to
the author). Or a second agent in your worktree, in a split the user sees.
Each agent's turns are its own, even in one worktree:
berthd session new "$BERTH_LOCATION/$BERTH_WORKTREE_NAME" --agent codex --open split \
--prompt "Review the uncommitted changes against main. List bugs first. Do not edit files."Fan out: several tasks, then end your turn: each reports back, and reports that land together arrive as one message.
waiting, or the box
refuses a send because the agent waits, tell the user which agent needs
them and why. Do not send "yes", approve permissions, or pick options.task new) over two agents editing the same files.© sean-brydon, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in internal/integrations/skills/berth-orchestrate of sean-brydon/berthd.
Open the folder on GitHubat commit fc5b184
Berth Orchestrate 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 |
|---|---|---|---|---|---|---|
| Berth Orchestrate this skillsean-brydon/berthd | 286 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Finishing a Development Branchobra/superpowers | 297k | 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.
sean-brydon/berthd
Use berth to work across development boxes — list repos (locations) and their worktrees, make a worktree or a task (a worktree with an agent in it), start or read terminal sessions, find which port…
sean-brydon/berthd
Show the user data as a chart, table, diagram, notes or one small page in their Shipyard app instead of a wall of text — write a berth.chart JSON, a CSV, Mermaid, Markdown or a self-contained HTML…
sean-brydon/berthd
Use your worktree's own page in a headless browser on the box — open it, read a compact snapshot with @refs, click, fill, press keys, wait, take a screenshot to a file, read console errors, and set…
sean-brydon/berthd
Automate berth with hooks — run a command when something happens (an agent finishes or needs the user, a worktree is created or removed, a session starts) or gate an action with a before: hook that…
sean-brydon/berthd
Run a worktree's dev server on its own port and show the page to the user in their Shipyard app — start the app on $BERTHPORT, check it answers, and open it as a browser tab next to your terminal…
sean-brydon/berthd
Check what your change did to a web app's pages before you say you're done — berthd shots compare screenshots your worktree's dev server and the main checkout's at phone, tablet and desktop widths…
Categories
Drive other coding agents through berth — prompt a running agent, wait for its turn to end, run a check in its worktree, loop until a check passes, hand work to a fresh agent in a new worktree, ask…. Berth Orchestrate is an agent skill from sean-brydon/berthd. Drive other coding agents through berth — prompt a running agent, wait for its turn to end, run a check in its worktree, loop until a check passes, hand work to a fresh agent in a new worktree, ask a second agent for a review, or try a task several ways and pick the best.
Berth Orchestrate fits situations like: the user asks you to delegate; get a second opinion; keep going until the tests pass with another agent; you need to coordinate several agents on one box.
Run `npx skills add sean-brydon/berthd --skill berth-orchestrate -a claude-code`. Or copy the skill folder (internal/integrations/skills/berth-orchestrate in sean-brydon/berthd) into .claude/skills/berth-orchestrate in your project. Claude Code loads it when a task matches its description.
Run `npx skills add sean-brydon/berthd --skill berth-orchestrate -a codex`. Or copy the skill folder (internal/integrations/skills/berth-orchestrate in sean-brydon/berthd) into .agents/skills/berth-orchestrate 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 sean-brydon/berthd --skill berth-orchestrate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/berth-orchestrate, .gemini/skills/berth-orchestrate, .github/skills/berth-orchestrate and .opencode/skills/berth-orchestrate in your project.
SKILL.md names no scripts, command-line tools or credentials: Berth Orchestrate is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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. Review the folder before installing.
Berth Orchestrate is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.3k 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 Berth Orchestrate: Finishing a Development Branch (obra/superpowers, 297k 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.
sean-brydon (a GitHub user) maintains it in sean-brydon/berthd, which has 286 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 9, 2026.
Source: sean-brydon/berthd on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.