From github-workflows
Validate PR merge-readiness and squash merge into main. Errors if PR is not ready — use /finalize-pr first to fix issues. Use after /finalize-pr reports ready. Handles single PR from argument or current branch.
npx claudepluginhub jacobpevans/claude-code-plugins --plugin github-workflowsThis skill uses the workspace's default tool permissions.
Validates PR readiness and executes squash merge. If the PR is not ready,
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Validates PR readiness and executes squash merge. If the PR is not ready,
errors immediately and suggests /finalize-pr to fix issues. Never fixes
issues — only merges.
/finalize-pr/finalize-pr's jobRead @git-workflows/skills/rebase-pr/SKILL.md Step 1 — use its GraphQL query,
fields, and abort conditions as the single source of truth.
If any check fails, abort immediately with the field's failure message and
append: — run /finalize-pr to fix.
Analyze the full changeset to generate a release-note-friendly commit message:
git fetch origin main
git diff origin/main...HEAD
git log --oneline origin/main..HEAD
Generate:
<type>: <description>, under 70 chars)Types: feat, fix, refactor, docs, test, chore
Store the title in a shell variable and write the body to a temp file using the Write tool (avoids shell quoting issues with multi-line text):
SQUASH_TITLE="<generated title>"
SQUASH_BODY_FILE=$(mktemp)
Use the Write tool to write the generated body text to the path stored in $SQUASH_BODY_FILE.
Capture the branch name before merging (needed for cleanup):
BRANCH=$(gh pr view {pr} --json headRefName --jq '.headRefName')
Merge without --delete-branch (avoids git switch failure in bare+worktree repos):
gh pr merge {pr} --squash --subject "$SQUASH_TITLE" --body-file "$SQUASH_BODY_FILE"
rm -f "$SQUASH_BODY_FILE"
Delete the remote branch (GitHub may have auto-deleted it on merge — || true handles that):
git push origin --delete "$BRANCH" || true
Find and remove the local worktree by branch name (works in any repo layout):
WORKTREE_PATH=$(git worktree list --porcelain | awk -v b="refs/heads/$BRANCH" '/^worktree/{p=$2} $0=="branch "b{print p}')
[ -n "$WORKTREE_PATH" ] && git worktree remove "$WORKTREE_PATH" || true
Delete the local branch ref (safe no-op if absent):
git branch -d "$BRANCH" || true
git switch main
git pull origin main
git worktree prune
Invoke after /finalize-pr reports ready:
/squash-merge-pr # Current branch PR
/squash-merge-pr 42 # Specific PR number