Review-sized PRs that stay ordered
Turn big changes into pull requests reviewers can follow.
Shortcake helps you build a feature as a stack of small branches, see the order at a glance, and submit matching GitHub PRs from the terminal. The stack travels with your Git history, so there is no service or background process to babysit.
$ sc create -m "Add login form" Created branch '2026-06-16-add-login-form' from 'main' $ sc create -m "Add password reset" Created branch '2026-06-16-add-password-reset' from '2026-06-16-add-login-form' $ sc ls
◉ 2026-06-16-add-password-reset (current) │ Add password reset │ ◯ 2026-06-16-add-login-form │ Add login form │ ◯ main Initial commit
Why shortcake
Keep the review small without losing the story.
Stacked branches let you send a big change in the order it should be read: foundation first, follow-ups after. Shortcake keeps that order visible while you keep working in normal Git.
Split the change before review
Start the next branch from your current work and keep each pull request focused on one idea, not the whole feature.
Show reviewers the path
See the stack as a tree, then submit PRs with bases that match the order your reviewers should read them.
Stay close to plain Git
Rebase, push, checkout, and branch with the tools you already use. Shortcake keeps just enough context to rebuild the stack.
Adopt what you already have
Already started work? Bring an existing branch into a stack instead of recreating it.
The core loop
A short path from branch to PR.
Create a focused branch, check the order, and submit the stack. The rest of the CLI is there when you need to move, split, restack, or repair branches.
-
sc create -m …Start the next focused PR from wherever you are in the stack.
-
sc lsSee every tracked branch in order, including where you are.
-
sc submit -dPush the stack and create or update GitHub draft PRs with the right bases.
Add password reset Shortcake-Parent: add-login-form
Each branch remembers the branch it builds on. That small marker is why Shortcake can recover the order after rebases, checkouts, and pushes without a separate state file to keep in sync.
sc ui
Review the whole stack in your browser.
Run sc ui
to open a local, GitHub-style view of every branch diff — file tree, inline comments, and
AI review, reading straight from your repo. Nothing leaves your machine.
def login(request): form = LoginForm(request.POST) user = authenticate(form) user = authenticate(form.cleaned_data) if user is None: raise InvalidCredentials()Failed logins aren't rate-limited here — consider throttling by IP to slow down credential stuffing.
return userStart with one branch on top of another.
Install Shortcake, create a focused branch, and use sc ls
to see the stack before you open PRs.
$ uv tool install shortcake
Requires Python 3.14+. The install exposes both shortcake and sc.