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.
Integrate a worker agent's diff onto fresh trunk — apply, verify repros by hand, cross-check interacting mechanisms, full suite, ship + queue.
$ npx skills add rue-language/rue --skill integrate-worker -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install rue-language/rue integrate-worker --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/rue-language/rue.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/integrate-worker .claude/skills/integrate-worker && 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 "integrate-worker" agent skill from https://github.com/rue-language/rue/tree/trunk/.claude/skills/integrate-worker into .claude/skills/integrate-worker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "integrate-worker", 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/rue-language/rue/tree/trunk/.claude/skills/integrate-workerType 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 rue-language/rue --skill integrate-worker -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install rue-language/rue integrate-worker --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rue-language/rue.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/integrate-worker .agents/skills/integrate-worker && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "integrate-worker" agent skill from https://github.com/rue-language/rue/tree/trunk/.claude/skills/integrate-worker into .agents/skills/integrate-worker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "integrate-worker", 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 rue-language/rue --skill integrate-worker -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install rue-language/rue integrate-worker --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rue-language/rue.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/integrate-worker .cursor/skills/integrate-worker && 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 "integrate-worker" agent skill from https://github.com/rue-language/rue/tree/trunk/.claude/skills/integrate-worker into .cursor/skills/integrate-worker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "integrate-worker", 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/rue-language/rue.git --path .claude/skills/integrate-worker--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 rue-language/rue --skill integrate-worker -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install rue-language/rue integrate-worker --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rue-language/rue.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/integrate-worker .gemini/skills/integrate-worker && 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 "integrate-worker" agent skill from https://github.com/rue-language/rue/tree/trunk/.claude/skills/integrate-worker into .gemini/skills/integrate-worker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "integrate-worker", 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 rue-language/rue integrate-workerInstalls 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 rue-language/rue --skill integrate-worker -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/rue-language/rue.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/integrate-worker .github/skills/integrate-worker && 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 "integrate-worker" agent skill from https://github.com/rue-language/rue/tree/trunk/.claude/skills/integrate-worker into .github/skills/integrate-worker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "integrate-worker", 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 rue-language/rue --skill integrate-worker -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install rue-language/rue integrate-worker --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rue-language/rue.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/integrate-worker .opencode/skills/integrate-worker && 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 "integrate-worker" agent skill from https://github.com/rue-language/rue/tree/trunk/.claude/skills/integrate-worker into .opencode/skills/integrate-worker/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "integrate-worker", 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.
integrate-workerIntegrate a worker agent's diff onto fresh trunk — apply, verify repros by hand, cross-check interacting mechanisms, full suite, ship + queue.
Integrate Worker is an agent skill from rue-language/rue. Integrate a worker agent's diff onto fresh trunk — apply, verify repros by hand, cross-check interacting mechanisms, full suite, ship + queue. Use after any worktree worker (fix cycle, hunt follow-up) returns a diff file.
Its SKILL.md is about 1.9k 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. It works with Git. The repository describes itself as: A programming language that is higher level than Rust but lower level than Go. Someday, anyways. The licence is Apache-2.0.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 5200b11. 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.
Shell commands in SKILL.md call:
gitbashghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and gh, 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.
Integrate Worker loads about 1.9k tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 1,091 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 rue-language/rue at commit 5200b11, republished under its Apache-2.0 licence (© rue-language). 1,091 words, ~1,898 tokens.
.claude/skills/integrate-worker/SKILL.md (or your agent's skills folder).Battle-tested protocol from the 2026-06 autonomous runs (~30 PRs integrated). Each step exists because skipping it once caused a real failure.
Fresh trunk, always. jj git fetch && jj new 'trunk()' then
git reset --quiet — the colocated git index goes stale after jj
working-copy switches and makes git apply --3way fail with
"does not match index".
Apply with 3-way fallback. git apply --3way /tmp/<worker>.diff.
Conflicts mean the worker's base predates trunk changes — resolve by
intent, not by side: a worker editing code that trunk deleted usually
means the worker's edit is subsumed (keep the deletion); append-append
conflicts in test TOML files keep both case sets.
Re-verify the repros yourself. Build (bash scripts/rue build) and run
every repro the worker claims to fix, on this checkout, by execution. A
worker's "full suite green" was true in its worktree against its base —
not here. Workers have shipped fixes verified against stale drafts of
trunk; only integration-time re-verification catches that.
Write the cross-mechanism test. If this worker and another (landed or in-flight) built interacting mechanisms — e.g. one added per-field drop flags while another added drop-on-overwrite — write a test that exercises the combination NOW. The workers' own suites cannot see the seam; twice in one night, individually-green workers were jointly wrong (double-drops).
A tightening change compiles the example corpus BEFORE the suite.
./buck2 build //examples:cli-staged-programs builds all ten multi-file example
programs. Any change that makes the compiler reject, trap, or error where it
previously accepted needs this, and canaries are not enough: a RUE-1786
over-rejection passed examples/harbor and its own mutation check, and was
caught only by examples/gazette — an outer borrow self receiver holding a
loan while an inner call takes the same root inout, which is sound because
a receiver is address-passed. Minutes against ~20 for the full suite, and it
is exactly where over-rejection surfaces. A mutation check proves the fix
DOES something; it says nothing about what the fix breaks.
Commit, then full suite + format. ./test.sh must exit 0; bash scripts/rue fmt. Commit before starting the suite and do not touch the
checkout while it runs — switching branches mid-run once produced a
fabricated E0583: file not found for module comptime citing a line that
existed only on trunk, and cost an hour of chasing a bug that was not there.
Read the banner: === TEST SUITE: PASSED === is now asserted rather than
inferred, and a killed run says INTERRUPTED (SIG..) instead (RUE-1782).
Do NOT judge by the tally alone — Buck can return cached results, so a run
stopped partway can print a complete-looking Tests finished: ... Fail 0
and still not have finished. The banner is what distinguishes them.
Ship + queue. jj describe (subject + why + what was verified),
jj git push -c @, gh pr create --repo rue-language/rue --base trunk --head steveklabnik:<bookmark> with one Fixes RUE-NN per line (a
comma list only closes the first), gh pr merge <n> --auto. Use
Part of RUE-NN when items remain — and remember "Part of" strands the
issue In Progress (sweep afterwards per CLAUDE.md).
Queue bounces (DIRTY after a sibling merges): jj rebase -s <change> -d 'trunk()', resolve keeping BOTH PRs' semantics, re-run step 3's repros
plus the sibling's, full suite, push the bookmark, re-arm --auto.
Never force-push a branch that is actively queued without re-arming.
On MERGE_CONFLICT, check trunk for the issue ID first:
git log origin/trunk --format='%h %s' | grep -E '^[0-9a-f]+ [^:]*RUE-NN'.
Anchor on the SUBJECT — plain --grep=RUE-NN searches the whole message and
happily matches commits that merely cite the issue in their body, which is
a false "it already landed" on exactly the question you are asking.
A dequeue is not always a real conflict — RUE-1766 landed on trunk
independently while a PR carrying it sat in the queue, and every conflicting
file was that now-redundant half.
There the resolution is to DROP the redundant half and keep only what is
still unique to your branch, not to reconcile two spellings of one fix; then
confirm the remaining half is still unlanded before assuming the PR has
anything left to say. The same collision shows up in other disguises —
mergeable_state: dirty on a PR you have not queued yet, or 3-way conflicts
at apply time — so make the trunk check reflexive whenever a diff fights you
in a file it should own.
Check open PRs for each target issue ID before dispatching, not just Linear
status. Linear tells you what is Done; it does not tell you what is in
flight. In one night four issues were fixed in parallel by other agents while
workers were already on them — RUE-1711 (across four separate PRs), RUE-1745,
RUE-1646 and RUE-1766 — costing two branch rebuilds, one merge-queue dequeue,
one duplicate issue filed, and most of a worker's output twice over. A
search_pull_requests for the issue ID, or
a scan of list_pull_requests --state open, costs one call per cluster and
catches all of it. Re-check at integration time too: a fix can land while your
worker is running.
Parallelize across disjoint crates, never across the same hot file. The
conflict magnets — rue-air/src/sema/analysis.rs, the rue-error E-code/preview
registry, and both codegen/*/cfg_lower.rs — should be serialized (land one,
then dispatch the next in that lane). Most integration pain this project has hit
(stale-base 3-way conflicts, the stabilization --preview miss) was two workers
in the same hot file. A worker's cluster should name its crate-set; two clusters
in the same hot lane go in consecutive cycles, not the same one.
Fixes RUE-NN over Part of whenever the PR actually closes the issue —
Part of strands it In Progress and you must sweep it later.scripts/jj-tidy — it deletes orphaned
worktree-wf_*/cycle* branches, merged push-* bookmarks, and abandons
dangling changes (safe: git protects checked-out branches; only unbookmarked
non-@ heads are abandoned). Without it, jj log fills with dozens of dead
heads within a session.git worktree remove <path>) or run scripts/rue storage clean (Buck's own stale
cleanup in every registered worktree; it never deletes worktrees or source
files) — never blanket rm -rf .claude/worktrees, which races running
workers. The ./buck2 wrapper refuses to start a build below 4 GiB free and
cleans nothing itself.Workers were told: reproduce first, refutations are as valuable as fixes,
file ownership is by region, output is git diff <base> HEAD to an OUTFILE
plus a .meta summary. If integrating a diff produced under weaker rules,
treat every claim as unverified.
© rue-language, Apache-2.0. 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 .claude/skills/integrate-worker of rue-language/rue.
Open the folder on GitHubat commit 5200b11
Integrate Worker 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 |
|---|---|---|---|---|---|---|
| Integrate Worker this skillrue-language/rue | 1.2k | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Finishing a Development Branchobra/superpowers | 296k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| 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 | |
| Pre-Release PR Triagejamiepine/voicebox | 57k | — | ~3.1k | Automated safety check: Pass | MIT | |
| Ccmanager Configkbwo/ccmanager | 1.3k | — | ~1.5k | 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.
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.
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.
kbwo/ccmanager
Set up, review, or repair a CCManager config — .ccmanager.json at a git repository root, or the global ~/.config/ccmanager/config.json.
CapSoftware/Cap
Builds a Cap feature in an isolated Git worktree with disposable dev resources, verification, a recorded demo and a neutral pull request, started with /building.
Works with
Categories
Integrate a worker agent's diff onto fresh trunk — apply, verify repros by hand, cross-check interacting mechanisms, full suite, ship + queue. Integrate Worker is an agent skill from rue-language/rue. Integrate a worker agent's diff onto fresh trunk — apply, verify repros by hand, cross-check interacting mechanisms, full suite, ship + queue.
Integrate Worker fits situations like: tasks that involve Git worktrees.
Run `npx skills add rue-language/rue --skill integrate-worker -a claude-code`. Or copy the skill folder (.claude/skills/integrate-worker in rue-language/rue) into .claude/skills/integrate-worker in your project. Claude Code loads it when a task matches its description.
Run `npx skills add rue-language/rue --skill integrate-worker -a codex`. Or copy the skill folder (.claude/skills/integrate-worker in rue-language/rue) into .agents/skills/integrate-worker 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 rue-language/rue --skill integrate-worker -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/integrate-worker, .gemini/skills/integrate-worker, .github/skills/integrate-worker and .opencode/skills/integrate-worker in your project.
Going by SKILL.md and its folder, Integrate Worker needs the command-line tools its instructions call (git, bash and gh).
SKILL.md contains no URLs. Its commands use git and gh, 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. Review the folder before installing.
Integrate Worker is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.6k 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 Integrate Worker: Finishing a Development Branch (obra/superpowers, 296k stars), Finishing A Development Branch (farm-fe/farm, 5.6k stars), Git Worktree Cleanup (lobehub/lobehub, 83k stars) and Pre-Release PR Triage (jamiepine/voicebox, 57k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
rue-language (a GitHub organization) maintains it in rue-language/rue, which has 1,209 GitHub stars. The repository was last updated on October 8, 2026.
Source: rue-language/rue on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.