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.
Propagate a branch's changes down its stacked children by merging the updated parent into each stacked branch, in order from base to tip.
$ npx skills add imbue-ai/sculptor --skill restack -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install imbue-ai/sculptor restack --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/imbue-ai/sculptor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/sculptor/sculptor-experimental/skills/restack .claude/skills/restack && 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 "restack" agent skill from https://github.com/imbue-ai/sculptor/tree/main/sculptor/sculptor-experimental/skills/restack into .claude/skills/restack/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "restack", 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/imbue-ai/sculptor/tree/main/sculptor/sculptor-experimental/skills/restackType 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 imbue-ai/sculptor --skill restack -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install imbue-ai/sculptor restack --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .agents/skills && cp -r skills-src/sculptor/sculptor-experimental/skills/restack .agents/skills/restack && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "restack" agent skill from https://github.com/imbue-ai/sculptor/tree/main/sculptor/sculptor-experimental/skills/restack into .agents/skills/restack/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "restack", 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 imbue-ai/sculptor --skill restack -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install imbue-ai/sculptor restack --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/sculptor/sculptor-experimental/skills/restack .cursor/skills/restack && 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 "restack" agent skill from https://github.com/imbue-ai/sculptor/tree/main/sculptor/sculptor-experimental/skills/restack into .cursor/skills/restack/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "restack", 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/imbue-ai/sculptor.git --path sculptor/sculptor-experimental/skills/restack--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 imbue-ai/sculptor --skill restack -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install imbue-ai/sculptor restack --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/sculptor/sculptor-experimental/skills/restack .gemini/skills/restack && 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 "restack" agent skill from https://github.com/imbue-ai/sculptor/tree/main/sculptor/sculptor-experimental/skills/restack into .gemini/skills/restack/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "restack", 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 imbue-ai/sculptor restackInstalls 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 imbue-ai/sculptor --skill restack -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .github/skills && cp -r skills-src/sculptor/sculptor-experimental/skills/restack .github/skills/restack && 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 "restack" agent skill from https://github.com/imbue-ai/sculptor/tree/main/sculptor/sculptor-experimental/skills/restack into .github/skills/restack/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "restack", 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 imbue-ai/sculptor --skill restack -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install imbue-ai/sculptor restack --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/sculptor/sculptor-experimental/skills/restack .opencode/skills/restack && 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 "restack" agent skill from https://github.com/imbue-ai/sculptor/tree/main/sculptor/sculptor-experimental/skills/restack into .opencode/skills/restack/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "restack", 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.
restackPropagate a branch's changes down its stacked children by merging the updated parent into each stacked branch, in order from base to tip.
Restack is an agent skill from imbue-ai/sculptor. Propagate a branch's changes down its stacked children by merging the updated parent into each stacked branch, in order from base to tip.
Its SKILL.md is about 1.8k 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: Build product with grounded, parallel coding agents. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f847102. 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:
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.
Restack loads about 1.8k tokens when it runs. Until then it costs about 36 tokens; SKILL.md has 930 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 imbue-ai/sculptor at commit f847102, republished under its MIT licence (© imbue-ai). 930 words, ~1,825 tokens.
.claude/skills/restack/SKILL.md (or your agent's skills folder).ARGUMENTS: $ARGUMENTS
Propagate the current branch's changes into the branches stacked on top of it.
Each stacked branch was created off — and targets — its parent (that's what
/sculptor-experimental:stack sets up), so "propagating" means merging each
parent's updated tip into its child, in order from base to tip.
This is a merge-based restack: it brings the parent's new commits into each
child with a merge commit. It does not rewrite history, so no force-push is
needed and open MRs/PRs keep their commits and review threads. The merge also
keeps each child's scoped diff correct — after merging parent P into child C,
the diff of C against P is exactly C's own changes.
This skill uses the sculpt CLI and operates directly on the shared on-disk git
repo. The agent shell already has SCULPT_WORKSPACE_ID (current workspace) and
SCULPT_PROJECT_ID set.
$ARGUMENTS is optional. It may name a different root branch to propagate from;
if empty, propagate from the current branch.
Restacking only works in worktree workspaces. Every branch in the stack lives
in its own git worktree sharing one on-disk .git, which is what lets this
skill resolve and merge them locally. From a clone or in-place workspace the
stacked branches aren't locally resolvable.
sculpt workspace show "$SCULPT_WORKSPACE_ID" --json | jq -r .strategyIf the result is not WORKTREE, stop and tell the user (using their strategy
name):
Restacking isn't supported from a
<strategy>workspace — the stacked branches aren't locally resolvable. Restack from a worktree workspace instead.
Only proceed if the strategy is WORKTREE.
Resolve the root branch — the branch whose changes you're propagating
down. Use $ARGUMENTS if it names a branch; otherwise the current branch:
git rev-parse --abbrev-ref HEADList the project's workspaces (stdout is clean JSON; the human-readable preamble goes to stderr):
sculpt workspace list --jsonEach item has id, strategy, source_branch, target_branch,
requested_branch_name, and is_deleted.
Build the stack graph. A workspace C is a stacked child of branch P
when all of:
C.is_deleted is false and C.strategy == "WORKTREE",C.requested_branch_name is set (this is C's own branch), andC.target_branch, with any leading remote prefix stripped, equals P.The target may be stored either bare (my-branch) or remote-qualified
(origin/my-branch) — strip a leading origin/ (or other remote) before
comparing. Starting from the root branch, collect its children, then their
children, and so on, recording edges (parent_branch, child_branch) in
base→tip order (parents before children). Guard against cycles and against
a branch listing itself as its own parent.
Map each branch in the stack to its on-disk worktree path:
git worktree list --porcelainMatch on branch name (strip the refs/heads/ prefix). Skip — with a warning —
any stacked branch that has no live worktree (e.g. its workspace was deleted);
also skip its descendants, since their parent can't be resolved.
If the root has no stacked children, report that nothing is stacked on it and stop.
Show the user the discovered stack as a tree (root at the bottom of the stack, descendants above) before changing anything.
Root branch must be committed. Only committed work propagates. In the current worktree:
git status --porcelainIf non-empty, list the affected paths and ask via the AskUserQuestion tool
(mcp__sculptor__ask_user_question) whether to commit them first (infer a concise
message and run git add -A && git commit -m "<msg>", surfacing the message), or
proceed propagating only the already-committed work, or abort.
Dirty stacked branches. A merge won't run cleanly on a dirty tree. Check each child's worktree:
git -C "<child-worktree>" status --porcelainIf any stacked branch is dirty, do not pick a policy yourself — list the dirty
branches and ask the user how to resolve via the AskUserQuestion tool
(mcp__sculptor__ask_user_question), offering at least:
git -C <wt> stash push -u before that branch's merge,
git -C <wt> stash pop after (warn that the pop can itself conflict).Note any stacked workspace with an actively-running agent: merging under a busy agent can disrupt its working tree. The dirty check guards uncommitted work, but flag busy agents so the user can pause them if needed.
Process edges in base→tip order, so each parent is finalized before its children.
For each edge (P, C) (where <C-worktree> is C's worktree path), merge the
parent's current tip into the child:
git -C "<C-worktree>" merge --no-edit "<P>"Because edges are processed top-down, by the time you merge P into C the
parent P has already received everything below it, so C transitively gets the
whole chain's changes. git merge brings in only what C doesn't already have
(it merges from the current merge-base), so there's no duplication.
Already up to date — git reports "Already up to date."; record C as unchanged (nothing new below it).
Merged — record C's new merge-commit SHA.
Conflict — abort and don't leave a half-finished merge:
git -C "<C-worktree>" merge --abortMark C as conflicted, skip all of C's descendants (their parent didn't update), and continue with branches not under C.
If "Stash & re-apply" was chosen for a dirty branch, stash before its merge and pop after (report if the pop conflicts).
Summarize the result as a tree, with per-branch status:
git -C <wt> merge <P>) so the user can resolve it.Merging does not rewrite history, so the updated branches need no force-push —
a normal git push from each branch's workspace adds the new merge commit to its
MR/PR when the user is ready. Leave pushing to them.
© imbue-ai, 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 sculptor/sculptor-experimental/skills/restack of imbue-ai/sculptor.
Open the folder on GitHubat commit f847102
Restack 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 |
|---|---|---|---|---|---|---|
| Restack this skillimbue-ai/sculptor | 238 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Finishing a Development Branchobra/superpowers | 297k | 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.
imbue-ai/sculptor
QA the Sculptor mobile web UI on a real iOS Simulator, driven headlessly from a Mac.
imbue-ai/sculptor
Compare React component render counts between origin/main and the current branch during a user-defined UI scenario (e.g.
imbue-ai/sculptor
Post a one-line PR announcement to a Slack channel, and mark it :merged: when the PR merges.
imbue-ai/sculptor
Run Claude programmatically against collections of files in the codebase.
imbue-ai/sculptor
Build or modify a Sculptor extension — a runtime ESM module loaded into the Sculptor UI.
imbue-ai/sculptor
Review a set of code changes against Sculptor's review categories and produce a markdown findings table.
Works with
Categories
Propagate a branch's changes down its stacked children by merging the updated parent into each stacked branch, in order from base to tip. Restack is an agent skill from imbue-ai/sculptor. Propagate a branch's changes down its stacked children by merging the updated parent into each stacked branch, in order from base to tip.
Restack fits situations like: tasks that involve Git worktrees.
Run `npx skills add imbue-ai/sculptor --skill restack -a claude-code`. Or copy the skill folder (sculptor/sculptor-experimental/skills/restack in imbue-ai/sculptor) into .claude/skills/restack in your project. Claude Code loads it when a task matches its description.
Run `npx skills add imbue-ai/sculptor --skill restack -a codex`. Or copy the skill folder (sculptor/sculptor-experimental/skills/restack in imbue-ai/sculptor) into .agents/skills/restack 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 imbue-ai/sculptor --skill restack -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/restack, .gemini/skills/restack, .github/skills/restack and .opencode/skills/restack in your project.
Going by SKILL.md and its folder, Restack needs the command-line tools its instructions call (git and jq).
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. Review the folder before installing.
Restack is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.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 Restack: Finishing a Development Branch (obra/superpowers, 297k 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.
imbue-ai (a GitHub organization) maintains it in imbue-ai/sculptor, which has 238 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 9, 2026.
Source: imbue-ai/sculptor on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.