Merge
Claude Code plugin marketplace — sdd (spec-driven dev) and gh (GitHub workflow) plugins
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.
What its author says it does
Copied from the file, not written here
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".
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