Merge
Merge GitHub PR into main w/ release-ready commit message. Triggers when user mentions merging PR, landing branch, shipping GitHub PR. Phrasings: "merge this", "land the PR", "merge PR #N".From its SKILL.md
npx -y skills add kborovik/pilot-skills --skill mergeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.3 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
Merge current branch's PR → main w/ release-note-ready commit message.
Process
-
Identify PR:
- $ARGUMENTS provided → use as PR number
- Else current branch's PR:
gh pr view --json number,title,body,url - not PR → inform user and exit
-
Verify ready to merge:
- Remote status:
gh pr checks— CI statusgh pr view --json mergeable— merge conflictsgh pr view --json reviewDecision— review approvalgh pr view --json isDraft— draft status
- not ready (failing checks, conflicts, missing reviews) → inform user of blockers and exit
- Remote status:
2.5. Push gate (decision-gate per decision-gate invariant — worked example: mid-flow consequence-bearing prompt before squash-merge so unpushed local commits not merged):
- Compute unpushed commit count:
git rev-list --count "origin/<branch>..HEAD"(<branch>is current branch). N == 0→ skip gate, proceed to §3.N > 0→ emit AskUserQuestion call:- question:
Push N unpushed commits before merge? - options (3 — mutually exclusive, label is action description):
Push and continue→git push origin <branch>then §3Force-push and continue→git push --force-with-lease origin <branch>then §3Cancel→ exit w/ no merge
- header:
Push gate
- question:
- prose
reply ok/cancelform not allowed — selection drives remote-branch state change per decision-gate invariant.
-
Analyze changes:
- All commits:
gh pr view --json commits - Files changed:
gh pr diff --name-onlyorgit diff main..HEAD --stat - Actual diff:
gh pr diff - Identify scope: bug fix, feature, enhancement, refactor, etc.
- All commits:
-
Sync PR description → reflect completed work:
- Diff current body (§1) vs actual diff and commit history
- PR description often outdated → reflects original plan, differs impl
- Sync → accurately reflect final state:
gh pr edit <number> --body "$(cat <<'EOF' <updated description> EOF )" - Keep general structure but ensure:
- Completed items accurate (differs aspirational)
- Removed / abandoned changes not listed
- Additional work beyond original scope included
- Skip if description already matches actual changes
-
Render release-note-ready commit message:
- Title: Conventional Commits from PR title w/ PR number →
type(area): concise imperative description (#42)- type:
fix,feat,refactor,chore,docs,test - area: affected module (e.g.
<area>) - Derive from PR title; reuse if already in format
- type:
- Body sections:
- Summary: 2-3 sentence description of what changed
- Changes: bulleted list of key changes
- Breaking Changes: if applicable
- Format for squash merge
- Title: Conventional Commits from PR title w/ PR number →
-
Post insights as PR comment:
- Before merge → comment w/ notable insights
gh pr comment <number> --body "$(cat <<'EOF'...EOF)"- Include any of:
- Code quality / pattern observations in diff
- Tech debt or risks noticed
- Follow-up suggestions
- Edge cases or release considerations
- Concise and actionable. Skip if not meaningful insights.
-
Merge:
- Squash +
--delete-branch:gh pr merge <number> --squash --delete-branch --subject "<title>" --body "$(cat <<'EOF' <body> EOF )" - Alternatives:
- Merge commit:
gh pr merge <number> --merge --delete-branch - Rebase:
gh pr merge <number> --rebase --delete-branch
- Merge commit:
- Repos w/ merge queues →
--autoqueues when checks pass:gh pr merge <number> --squash --auto --delete-branch - Always pass
--delete-branchexplicitly. not short form-d. not omit.
- Squash +
-
Clean up branches:
--delete-branchdeletes local and remote branches for merged PR- Switch to main:
git checkout main - Pull latest:
git pull origin main - Prune stale refs:
git fetch --prune
-
Confirm completion:
- Show merge commit:
git log -1 - Output merged PR URL
- Display commit message for release notes
- Show merge commit:
Commit message format
feat(server): add user authentication system (#42)
## Summary
Implements JWT-based authentication replacing the session-based system.
Users can now log in and receive tokens that expire after 24 hours.
## Changes
- Add JWT token generation and validation
- Create login and registration endpoints
- Add middleware for protected routes
- Add token refresh endpoint
## Breaking Changes
- Session cookies are no longer supported
- API clients must include Authorization header
Write-time glyph gate
Pre-publish: rg --pcre2 '[∀∃∴⊥∈∉∧∨≤≥≠≡¬]' <body> on synced PR description (§4) before gh pr edit, squash commit body (§5) before §7 gh pr merge --body, insights comment (§6) before gh pr comment; match → bail and rewrite per core:steno register before mutation.
Style
Apply core:steno to PR description (§4), squash commit body (§5), insights comment (§6). Conventional Commits prefix (type(area):) and (#number) suffix and identifiers / paths / #refs / SHAs preserved verbatim.
Requirements
- Squash merge for clean history (unless repo prefers merge commits)
- Conventional Commits w/ PR number:
type(area): description (#number) - Commit message ! release-note suitable
- Steno style for body sections (→
core:stenoskill) --delete-branchfor branch cleanup- Audit all checks pass before merge
- not force merge if checks failing
- Draft PRs → confirm w/ user before marking ready
OUTPUT — "Next" block
Heading ## Next; 1–5 atomic items (one sentence each, no Reply prefix); positional dispatch (run <int> or run /<plugin>:<cmd> [args]). Merge landed → follow-up usually /gh:release (cut SemVer tag) or resume work on next branch or verify auto-deploy.
Canonical example after merge lands:
## Next
1. /gh:release — cut a SemVer tag for the new main
2. /sdd:build — start the next §T row
3. gh pr list --state open — review remaining open PRs
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.