decision-records
Creates, supersedes and validates decision records (ADRs) against the convention a collection already follows, instead of…
Merges GitHub Pull Requests after validating pre-merge checklist. Use when user wants to merge PR, close PR, finalize PR, complete merge, approve and merge, or execute merge. Runs pre-merge validation (tests, lint, CI, comments), confirms with user, merges with proper format,
Claude Code
$ npx -y skills add fvadicamo/dev-agent-skills --skill github-pr-merge --agent claude-code
Codex
$ npx skills add fvadicamo/dev-agent-skills --skill github-pr-merge -a codex -y
Cursor
$ npx skills add fvadicamo/dev-agent-skills --skill github-pr-merge -a cursor -y
Gemini CLI
$ npx skills add fvadicamo/dev-agent-skills --skill github-pr-merge -a gemini-cli -y
GitHub Copilot
$ npx skills add fvadicamo/dev-agent-skills --skill github-pr-merge -a github-copilot -y
OpenCode
$ npx skills add fvadicamo/dev-agent-skills --skill github-pr-merge -a opencode -y
Windsurf
$ npx skills add fvadicamo/dev-agent-skills --skill github-pr-merge -a windsurf -y
name: github-pr-merge description: Merges GitHub Pull Requests after validating pre-merge checklist. Use when user wants to merge PR, close PR, finalize PR, complete merge, approve and merge, or execute merge. Runs pre-merge validation (tests, lint, CI, comments), confirms with user, merges with proper format, handles post-merge cleanup.
Merges Pull Requests after validating pre-merge checklist and handling post-merge cleanup.
!`gh pr view --json number,title,state -q '"PR #\(.number): \(.title) (\(.state))"' 2>/dev/null`
Verify all review comments have at least one reply:
REPO=$(gh repo view --json nameWithOwner -q '.nameWithOwner') PR=$(gh pr view --json number -q '.number') # Find unreplied comment IDs gh api repos/$REPO/pulls/$PR/comments --jq ' [.[] | select(.in_reply_to_id) | .in_reply_to_id] as $replied | [.[] | select(.in_reply_to_id == null) | select(.id | IN($replied[]) | not) | .id] '
**If unreplied comments exist:**
gh pr view $PR --json milestone -q '.milestone.title // "none"'
gh api repos/$REPO/milestones --jq '[.[] | select(.state=="open")] | length'
If open milestones exist but the PR has none, surface a warning in the checklist: `- Milestone: ⚠ not assigned (open milestones exist)`
Do NOT block the merge for a missing milestone. It is a warning only.
Run tests, linting, and verify CI checks. All **MUST** pass before proceeding.
gh pr checks $PR
Skip if the repo has no `CHANGELOG.md`. Otherwise make sure every commit this merge will publish is reflected in the changelog, so a release-promotion merge (`develop` → `main`) never leaves commits unlogged.
List the commits this PR brings into the base, and the changelog lines it adds:
BASE=$(gh pr view $PR --json baseRefName -q .baseRefName) HEAD=$(gh pr view $PR --json headRefName -q .headRefName) git log --oneline origin/$BASE..origin/$HEAD git diff origin/$BASE...origin/$HEAD -- CHANGELOG.md
**ALWAYS show checklist summary and ask before merging:**
Pre-merge checklist: - Comments: all replied - Tests: passing - Lint: passing - CI: green - Milestone: v0.1.0 (or ⚠ not assigned) - Changelog: complete (or n/a) Ready to merge PR #X. Proceed?
First determine the merge direction. It decides whether the head branch may be deleted:
gh pr view $PR --json baseRefName,headRefName -q '"\(.headRefName) -> \(.baseRefName)"'
**Branch deletion rule:**
# Add --delete-branch ONLY for a topic branch merging into develop. gh pr merge $PR --merge --delete-branch --body "$(cat <<'EOF' - Key change 1 - Key change 2 - Key change 3 Reviews: N/N addressed Tests: X passed (Y% cov) Refs: Task N, Req M EOF )"
For a `develop` → `main` merge, run the same command **without** `--delete-branch`.
**Merge strategy**: always `--merge` (merge commit), never squash or rebase.
Sync the branch that received the merge (the PR base), not always `develop`:
BASE=$(gh pr view $PR --json baseRefName -q .baseRefName) git checkout "$BASE" && git pull origin "$BASE"
If the PR had a milestone, check whether all items are now closed:
MILESTONE=$(gh pr view $PR --json milestone -q '.milestone.number // empty')
if [ -n "$MILESTONE" ]; then
gh api repos/$REPO/milestones/$MILESTONE \
--jq '"Open: \(.open_issues) | Closed: \(.closed_issues) | \(.title)"'
figh api repos/$REPO/milestones/$MILESTONE --method PATCH --field state="closed"
Concise format for a clean git log:
- Key change 1 (what was added/fixed) - Key change 2 - Key change 3 Reviews: 7/7 addressed (Gemini 5, Codex 2) Tests: 628 passed (88% cov) Refs: Task 8, Req 14-15
Agent skills and hooks for development workflows - Git, GitHub, skill authoring, safety guardrails, public-repo privacy, and decision records. These skills are designed for Claude Code, the CLI tool by Anthropic.
Creates, supersedes and validates decision records (ADRs) against the convention a collection already follows, instead of…
Creates git commits following Conventional Commits format with type/scope/subject. Use when user wants to commit changes, create…
Creates GitHub Pull Requests with automated validation and task tracking. Use when user wants to create PR, open pull request,…
Handles PR review comments and feedback resolution. Use when user wants to resolve PR comments, handle review feedback, fix…
Prevents private infrastructure details (node hostnames, internal project names, local usernames and personal emails, absolute…
Guide for creating Claude Code skills following Anthropic's official best practices. Use when user wants to create a new skill,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.