| name | merge-pr |
| description | Merges a PR with automatic cleanup of worktree and branch. Handles all edge cases. Use when merging approved PRs. |
Merge PR #$ARGUMENTS
PR #$ARGUMENTS のマージ処理を行います。
PR Status
!gh pr view $ARGUMENTS --json headRefName,state,mergeable,reviewDecision --jq '"Branch: \(.headRefName)\nState: \(.state)\nMergeable: \(.mergeable)\nReview: \(.reviewDecision)"' 2>/dev/null
CI Status
!gh pr checks $ARGUMENTS 2>/dev/null
Worktree Status
!git worktree list
One-Command Merge
Recommended: Use the merge script that handles all edge cases:
./scripts/merge-pr.sh $ARGUMENTS
This script automatically:
- Waits for CI if still running
- Merges the PR (squash by default)
- Switches to main if currently in worktree
- Kills any agents running in the worktree
- Removes the worktree (force if locked)
- Deletes local and remote branches
- Moves task file to completed (if found)
Options
./scripts/merge-pr.sh $ARGUMENTS --squash
./scripts/merge-pr.sh $ARGUMENTS --merge
./scripts/merge-pr.sh $ARGUMENTS --rebase
./scripts/merge-pr.sh $ARGUMENTS --no-task
./scripts/merge-pr.sh $ARGUMENTS --dry-run
Batch Merge
For multiple PRs, run sequentially:
./scripts/merge-pr.sh 123
./scripts/merge-pr.sh 124
./scripts/merge-pr.sh 125
Or parallel (if no conflicts expected):
./scripts/merge-pr.sh 123 &
./scripts/merge-pr.sh 124 &
./scripts/merge-pr.sh 125 &
wait
Post-Merge Tasks
After merge, update ROADMAP if needed:
- Open
spec/tasks/ROADMAP.md
- Change task status to "Done"
- Commit:
git add spec/tasks/ROADMAP.md && git commit -m "chore(tasks): complete task X"
- Push:
git push
Troubleshooting
"Worktree locked"
The script handles this with --force, but if it still fails:
PARENT_DIR="$(cd "$(git rev-parse --show-toplevel)/.." && pwd)"
rm -rf "${PARENT_DIR}/reference-manager--worktrees/<branch-dir>"
git worktree prune
"Branch not fully merged"
Use -D (force delete):
git branch -D <branch-name>
"Cannot delete current branch"
You're still in the worktree. Switch first:
cd "$(git rev-parse --show-toplevel)"
git checkout main
Agent still running in worktree
Kill it first:
./scripts/kill-agent.sh <pane-id>