stakk
stakk bridges Jujutsu bookmarks to GitHub stacked pull requests.
It is not a jj wrapper. It complements jj by reading your local bookmark state and turning it into a coherent set of GitHub PRs that merge into each other in the correct order — with stack-awareness comments, correct base branches, and idempotent updates.
Features
- Automatic stack detection — analyzes the jj change graph to find bookmark
chains and their topological order.
- No bookmarks required — stakk discovers unbookmarked heads and lets you
create bookmarks on-the-fly via the interactive TUI. Auto-generated stakk-<changeid names keep things simple.
- Auto bookmark naming — the [~]auto toggle in the TUI generates
descriptive bookmark names from commit descriptions and file paths using TF-IDF (term frequency–inverse document frequency) scoring. Press r to cycle through alternative names. An optional --auto-prefix lets you brand the names (e.g. gb-caching-database).
- Stacked PR submission — creates or updates GitHub PRs with correct base
branches so each PR shows only its own diff.
- Stack-awareness comments — adds a comment to every PR listing the full
stack with links, updated in place on re-runs. Optionally, the stack info can be placed in the PR body instead (--stack-placement body). Comments are rendered with minijinja templates and can be customized with --template or the STAKKTEMPLATE environment variable.
- Idempotent — re-running stakk submit is always safe. Existing PRs are
updated, never duplicated.
- Dry-run mode — --dry-run shows exactly what would happen without
touching GitHub.