with one click
merge-pull-request
Use when asked to merge a pull request ("merge PR
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Use when asked to merge a pull request ("merge PR
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Use when the user asks to commit, says "/commit", or you are about to create a git commit and want a quality gate before it lands.
Use when setting up these dotfiles on a fresh machine (macOS or Linux), bootstrapping a new dev box, validating a dotfiles install, or debugging a degraded shell after cloning (missing p10k prompt, "command not found: pyenv", "unknown option: --zsh", fd/bat not found, lazygit ignoring config).
| name | merge-pull-request |
| description | Use when asked to merge a pull request ("merge PR |
Land a PR with a merge commit, then leave zero residue: remote branch, local branch, worktree, docker stack, iOS sim, and tmux window all gone. CI gating is YOUR job — gh pr merge happily merges over red checks when branch protection doesn't block.
gh pr view <n> --json state,headRefName,mergeable,mergeStateStatus. No number given → gh pr list and match by topic. Must be OPEN and MERGEABLE; conflicts → stop, report.gh pr checks <n> --watch --fail-fast. Waits out pending checks; any failure → STOP and report. Never merge over failing checks, never rationalize "that check is flaky".<repo>/.worktrees/<branch with / → +>, if it exists):
git -C <wt> status --porcelain non-empty → stop, ask user (uncommitted work would be destroyed).git -C <wt> rev-list --count origin/<branch>..<branch> > 0 → stop, ask (the PR is missing local commits).git fetch origin master && git rev-list --count origin/master..master. If > 0 → git push origin master before merging, so the merge commit lands on top and master never diverges.gh pr merge <n> --merge. Always a merge commit — never --squash/--rebase. Never --delete-branch (the branch is checked out in the worktree; local delete would error).git pull --ff-only origin master in the canonical checkout (also lets git branch -d later see the branch as merged).git push origin --delete <branch> then git fetch --prune. GitHub won't do it (check gh repo view --json deleteBranchOnMerge if unsure).make -C <wt> cleanup (Bash git worktree remove does NOT fire Claude hooks; wtc's docker compose down -v alone misses the iOS sim and --remove-orphans). Then cd <wt> && printf '\n' | wtc (wtc is on PATH, shipped in the komandant repo's worktree-tools plugin, plugins/worktree-tools/bin/wtc; the piped newline answers its confirm prompt) — removes worktree, deletes local branch, kills the tmux window.tmux kill-window -t ":<branch>" (window name = raw branch name, slashes intact).git branch -d <branch>.If YOU are running inside the PR's worktree (git rev-parse --git-common-dir ≠ git rev-parse --git-dir): do steps 1–7, then STOP — running wtc would delete your cwd and kill your own tmux window mid-turn. Tell the user to run wtc from the helper pane (or exit the session — native worktree removal fires the cleanup hook — then kill the window).
| Mistake | Reality |
|---|---|
| Squash or rebase merge | User preference is merge commits. Always --merge. |
gh pr merge --delete-branch | Errors: local branch is checked out in the worktree. Delete remote/local separately. |
Bare git worktree remove | Skips docker + iOS sim teardown — the WorktreeRemove hook only fires on Claude-native removal. make cleanup first, then wtc. |
| Skipping step 4 | Unpushed master commits → non-fast-forward rejection after merge, messy divergence. |
| "Checks are pending, merge anyway" | --watch exists precisely for this. Wait or stop. |
| Killing the tmux window you're in | See Self-Kill Guard. |