Agent skill

Rebase Stacked PR

by Altinn in Altinn/altinn-studio

Rebase a stacked PR onto main after its parent was squash-merged, using git rebase --onto to skip already-merged commits.

MITAuto-check passedDevelopment

Install Rebase Stacked PR

skills CLI
$ npx skills add Altinn/altinn-studio --skill rebase-stacked-pr -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Altinn/altinn-studio rebase-stacked-pr --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Altinn/altinn-studio.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/rebase-stacked-pr .claude/skills/rebase-stacked-pr && rm -rf skills-src

Use ~/.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/

Facts

Skill name
rebase-stacked-pr
GitHub stars
169
Token cost
~1.6k tokens
SKILL.md length
654 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

Rebase a stacked PR onto main after its parent was squash-merged, using git rebase --onto to skip already-merged commits.

  • Works in 3 steps: Parent PR number — see Finding the… → Child branch name — usually the current… → Parent is actually merged — check with…
  • Rebasing a stacked
  • SKILL.md covers Do not use this skill if, Inputs required, Finding the parent PR number and Procedure, plus 5 more sections
  • Calls git and gh

What it does

Rebase Stacked PR is an agent skill from Altinn/altinn-studio. Rebase a stacked PR onto main after its parent was squash-merged, using git rebase --onto to skip already-merged commits. Use when rebasing a stacked or dependent PR, handling a squash-merged parent PR, or recovering from empty commits or spurious conflicts after git rebase main.

Its SKILL.md is about 1.6k 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 workflow. It works with Git. The repository describes itself as: Next generation open source Altinn platform and applications. The licence is MIT.

When your agent uses it

  • Rebasing a stacked
  • Handling a squash-merged parent PR
  • Recovering from empty commits
  • Spurious conflicts after git rebase main

Example prompts

  • “/rebase-stacked-pr”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Parent PR number — see Finding the parent PR number.
  2. Child branch name — usually the current branch; verify with git branch --show-current.
  3. Parent is actually merged — check with gh pr view --json state,mergedAt. Abort if state is not MERGED.

What it can do on your machine

Read from SKILL.md and the folder at commit dd14325. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Rebase Stacked PR loads about 1.6k tokens when it runs. Until then it costs about 76 tokens; SKILL.md has 654 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~76
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from Altinn/altinn-studio at commit dd14325, republished under its MIT licence (© Altinn). 654 words, ~1,595 tokens.

Download SKILL.mdSave it as .claude/skills/rebase-stacked-pr/SKILL.md (or your agent's skills folder).
name
rebase-stacked-pr
description
Rebase a stacked PR onto main after its parent was squash-merged, using `git rebase --onto` to skip already-merged commits. Use when rebasing a stacked or dependent PR, handling a squash-merged parent PR, or recovering from empty commits or spurious conflicts after `git rebase main`.

Rebase a stacked PR after squash-merge

This skill handles the mechanical rebase when a child PR's parent PR has been squash-merged to main. A naive git rebase main fails or produces conflicts because the child branch still contains the parent's pre-squash commits, which are logically identical to — but SHA-different from — the new squashed commit on main.

The fix is git rebase --onto main <pre-squash-parent-tip> <child-branch>, which replays only the child's own commits and skips the already-merged ones.

Do not use this skill if

  • The parent PR has not yet been merged — just rebase onto the parent branch normally (git rebase origin/parent-branch).
  • The parent PR was merge-committed (not squash-merged) — a plain git rebase main works fine in that case.

Inputs required

Before running commands, confirm:

  1. Parent PR number — see Finding the parent PR number.
  2. Child branch name — usually the current branch; verify with git branch --show-current.
  3. Parent is actually merged — check with gh pr view <PARENT_PR> --json state,mergedAt. Abort if state is not MERGED.

If the child PR description contains a "Rebase instructions" block with explicit variables, prefer those values.

Finding the parent PR number

Check the child PR description for explicit declarations first:

  • Depends on #, Stacked on #, Parent: #
  • A Related or Related issues section — common in this codebase. Filter to PRs only; issue numbers referenced there are not valid parents.

Any #NNNN reference may be either a PR or an issue. Confirm it is a PR:

bash
gh pr view <N> --json headRefName,state   # errors if N is an issue, not a PR

Strongest signal — matching branch names. The parent PR's head branch should equal the child PR's base branch. Cross-check every candidate:

bash
CHILD_BASE=$(gh pr view --json baseRefName -q .baseRefName)   # child PR on current branch
gh pr view <CANDIDATE> --json headRefName -q .headRefName

If those match, the candidate is almost certainly the parent.

Alternatively, search for PRs whose head branch matches the child's base:

bash
gh pr list --state merged --head "$CHILD_BASE" --json number,title,url

Ask the user if any of the following hold — do not guess:

  • No explicit marker is present and no candidate branch matches.
  • Multiple PRs plausibly match.
  • You are not completely certain the candidate is the intended parent.

Procedure

bash
# 1. Resolve the pre-squash tip of the parent PR.
# This is the last commit on the parent branch before it was squashed and merged.
OLD_PARENT_TIP=$(gh pr view "$PARENT_PR" --json commits -q '.commits[-1].oid')

# 2. Make sure local main is up to date.
git fetch origin main

# 3. Make sure the child branch is checked out and clean.
git status --porcelain    # must be empty
git checkout "$CHILD_BRANCH"

# 4. Replay only the child's commits onto main.
git rebase --onto origin/main "$OLD_PARENT_TIP"

Verification

After the rebase, the log should show only the child PR's commits between main and HEAD:

bash
git log --oneline origin/main..HEAD

If that list contains commits that belong to the parent PR (check their messages against gh pr view $PARENT_PR --json commits), the rebase replayed already-merged work — undo it and investigate.

The rebase has already completed at this point, so git rebase --abort is a no-op. Reset back to the pre-rebase tip, which Git records in ORIG_HEAD:

bash
git reset --hard ORIG_HEAD

If ORIG_HEAD has been overwritten by a later operation, recover the pre-rebase commit from the reflog:

bash
git reflog              # find the entry just before "rebase (start)"
git reset --hard <sha>  # or: git reset --hard HEAD@{N}

Note: git rebase --abort is only valid during an in-progress rebase (mid-conflict). For that case, see Handling conflicts below.

Show full SKILL.md (228 more words)Show less

Pushing

Once verification passes:

bash
git push --force-with-lease

Always --force-with-lease, never plain --force — lease protects against overwriting a teammate's push to the same branch.

Handling conflicts

--onto skips already-merged commits but does not prevent real conflicts when main has moved and touched the same lines as the child branch.

  • If git rebase --onto stops with a conflict, do not resolve blindly.
  • Surface the conflicting files to the user and ask for guidance before editing.
  • The user may prefer git rebase --abort and a different strategy (e.g., merge rather than rebase, or resolving on a throwaway branch first).

Edge cases

  • Parent branch was force-pushed during review: gh pr view --json commits returns the final commit list of the PR at merge time, which is what you want. Don't use the local origin/parent-branch ref — it may point at an obsolete tip.
  • Deep stack (3+ levels): rebase bottom-up, one level at a time. After the bottom child is rebased and pushed, treat the next level up as a new child whose parent is now the rebased branch.
  • gh not authenticated: fall back to asking the user for the pre-squash tip SHA, which is visible on the closed PR page as the last commit before the merge event.

PR description template (for authors)

Authors of stacked PRs should include this block in the PR description so future agents (and humans) can run the rebase without context:

markdown
## Stack

- Depends on: #<PARENT_PR> (must merge first)
- Parent branch: `<parent-branch-name>`

## Rebase instructions (for agents)

When #<PARENT_PR> is squash-merged to main, rebase this branch with:

    PARENT_PR=<PARENT_PR>
    CHILD_BRANCH=<this-branch-name>
    OLD_PARENT_TIP=$(gh pr view $PARENT_PR --json commits -q '.commits[-1].oid')
    git fetch origin main
    git checkout $CHILD_BRANCH
    git rebase --onto origin/main $OLD_PARENT_TIP

Verify: `git log --oneline origin/main..HEAD` should show only this PR's commits.
Then: `git push --force-with-lease`.

© Altinn, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/rebase-stacked-pr of Altinn/altinn-studio.

Open the folder on GitHubat commit dd14325

Compare with similar skills

Rebase Stacked PR 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.

Rebase Stacked PR compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Rebase Stacked PR this skillAltinn/altinn-studio169—~1.6kAutomated safety check: PassMIT
Finishing a Development Branchobra/superpowers297k5 repos~1.9kAutomated safety check: PassMIT
Code Design Rationale Investigatorcursor/plugins10k9 repos~2.6kAutomated safety check: PassNone
Contributor-First PR MergeHKUDS/OpenHarness16k1 repos~847Automated safety check: PassMIT
Migrate Internal Package into GhostTryGhost/Ghost56k—~3.8kAutomated safety check: PassMIT
Create Pull Requestcline/cline70k1 repos~1.6kAutomated safety check: PassApache-2.0

Similar skills

  • 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.

    297k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Official

    Digs into why code is shaped the way it is by checking git history, pull requests and connected tools in parallel, then reporting a cited read on the tradeoffs.

    10k GitHub starsUsed in 9 repos~2.6k tokens
    DevelopmentAuto-check passed
  • Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.

    16k GitHub starsUsed in 1 repo~847 tokens
    DevelopmentAuto-check passed
  • Moves a package from another TryGhost repository into Ghost as an internal workspace package while keeping its Git history, with checkpoints for the steps that need an administrator.

    56k GitHub stars~3.8k tokensUpdated today
    DevelopmentAuto-check passed
  • Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.

    70k GitHub starsUsed in 1 repo~1.6k tokens
    DevelopmentAuto-check passed
  • Git Merge Conflict Resolver

    tailcallhq/forgecode

    Resolves Git merge conflicts with a plan-first workflow that keeps both sides' intent, regenerates lock files and backs up deleted-but-modified files.

    7.6k GitHub starsUsed in 1 repo~4.5k tokens
    DevelopmentAuto-check passed

More from Altinn/altinn-studio

  • Altinn Studio App Development

    Altinn/altinn-studio

    Build, change, run, and test Altinn Studio apps. An agent skill from Altinn/altinn-studio.

    169 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Changelog

    Altinn/altinn-studio

    Write and edit CHANGELOG.md entries in this repository as release notes for the people who use the product.

    169 GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Computer Use

    Altinn/altinn-studio

    Drive the Agent's graphical desktop with the desktop helper — look at the screen, point, type, and control native applications.

    169 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • PR Evidence

    Altinn/altinn-studio

    Help pull request reviewers understand what changed and the resulting user or developer experience through screenshots or recordings.

    169 GitHub stars~515 tokensUpdated today
    Auto-check passed
  • Forfatter

    Altinn/altinn-studio

    Norsk tekstforfatter og redaktør for Digdir: klarspråk, AI-markører, anglisismer, fagtermer, mikrotekst.

    169 GitHub stars~4.3k tokensUpdated today
    Auto-check passed
  • Text Content Review

    Altinn/altinn-studio

    Skill for reviewing text content - error messages, labels, help texts and tone of voice.

    169 GitHub stars~564 tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Rebase Stacked PR

What does Rebase Stacked PR do?

Rebase a stacked PR onto main after its parent was squash-merged, using git rebase --onto to skip already-merged commits. Rebase Stacked PR is an agent skill from Altinn/altinn-studio. Rebase a stacked PR onto main after its parent was squash-merged, using git rebase --onto to skip already-merged commits.

When should I use Rebase Stacked PR?

Rebase Stacked PR fits situations like: rebasing a stacked; handling a squash-merged parent PR; recovering from empty commits; spurious conflicts after git rebase main.

How do I install Rebase Stacked PR in Claude Code?

Run `npx skills add Altinn/altinn-studio --skill rebase-stacked-pr -a claude-code`. Or copy the skill folder (.claude/skills/rebase-stacked-pr in Altinn/altinn-studio) into .claude/skills/rebase-stacked-pr in your project. Claude Code loads it when a task matches its description.

How do I install Rebase Stacked PR in Codex?

Run `npx skills add Altinn/altinn-studio --skill rebase-stacked-pr -a codex`. Or copy the skill folder (.claude/skills/rebase-stacked-pr in Altinn/altinn-studio) into .agents/skills/rebase-stacked-pr in your project. Codex loads it when a task matches its description.

Can I use Rebase Stacked PR in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Altinn/altinn-studio --skill rebase-stacked-pr -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/rebase-stacked-pr, .gemini/skills/rebase-stacked-pr, .github/skills/rebase-stacked-pr and .opencode/skills/rebase-stacked-pr in your project.

What does Rebase Stacked PR need to run?

Going by SKILL.md and its folder, Rebase Stacked PR needs the command-line tools its instructions call (git and gh).

Does Rebase Stacked PR access the network?

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.

Is Rebase Stacked PR safe to install?

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.

What licence does Rebase Stacked PR use?

Rebase Stacked PR is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Rebase Stacked PR use?

About 1.6k tokens (SKILL.md is roughly 6.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Rebase Stacked PR?

Skills that share tags, products or a category with Rebase Stacked PR: Finishing a Development Branch (obra/superpowers, 297k stars), Code Design Rationale Investigator (cursor/plugins, 10k stars), Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars) and Migrate Internal Package into Ghost (TryGhost/Ghost, 56k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Rebase Stacked PR?

Altinn (a GitHub organization) maintains it in Altinn/altinn-studio, which has 169 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 9, 2026.

Source: Altinn/altinn-studio on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.