| name | merge-pr |
| description | Merge a pull request using gh pr merge --admin |
| targets | ["*"] |
Merge Pull Request
Merge a pull request using gh pr merge --admin.
Input
$ARGUMENTS
Step 1: Determine the Target PR
Parse $ARGUMENTS to identify the PR to merge:
Case A: PR number or URL is provided
- Extract the PR number from the argument
- Examples:
123, #123, https://github.com/owner/repo/pull/123
Case B: No argument provided
Case C: Unable to determine the PR
If the PR cannot be determined (e.g., no PR exists for the current branch, or the argument is ambiguous), ask the user to specify which PR to merge.
Step 2: Verify the PR
Before merging, confirm the PR details:
gh pr view <pr_number> --json number,title,state,mergeable,author,baseRefName,headRefName
Check:
- The PR state is
OPEN
- Display the PR title and number to the user for confirmation
If the PR is not open or not mergeable, inform the user and stop.
Step 3: Check GitHub Actions Workflow Status
Verify that all CI checks have passed before merging:
gh pr checks <pr_number>
Check:
- All workflow checks show
pass status
- No checks are
pending or fail
If any checks have failed or are still running, inform the user and ask whether to:
- Wait for pending checks to complete
- Investigate failed checks before merging
- Proceed with merge anyway (using
--admin will bypass required checks)
Step 4: Merge the PR
Execute the merge command:
gh pr merge <pr_number> --admin --merge
Important: Only merge ONE PR at a time. If multiple PRs are somehow specified, ask the user which single PR to merge.
Step 5: Comment on the PR
After the merge succeeds, leave a thank-you comment mentioning the PR author:
gh pr comment <pr_number> --body "@<author_login> Thank you!"
Use the author.login value obtained in Step 2 for the mention.
Step 6: Report Result
After merging:
- Confirm the PR was successfully merged
- Display the merged PR number and title
Step 7: Clean Up Local Branch
If the local branch exists, please clean up the local branch. Execute:
git checkout main && git pull --prune && git branch -d <branch-name>
Where <branch-name> is the head branch name from Step 2 (e.g., fix/import-targets).