decision-records
Creates, supersedes and validates decision records (ADRs) against the convention a collection already follows, instead of imposing a published one. Use when…
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,
$ npx -y skills add fvadicamo/dev-agent-skills --skill github-pr-merge --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/github-pr-mergeContext preview
The summary Claude sees to decide when to auto-load this skill.
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,
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 imposing a published one. Use when…
Creates git commits following Conventional Commits format with type/scope/subject. Use when user wants to commit changes, create commit, save work, or stage…
Creates GitHub Pull Requests with automated validation and task tracking. Use when user wants to create PR, open pull request, submit for review, or check if…
Handles PR review comments and feedback resolution. Use when user wants to resolve PR comments, handle review feedback, fix review comments, address PR review,…
Prevents private infrastructure details (node hostnames, internal project names, local usernames and personal emails, absolute home paths, private and VPN IP…
Guide for creating Claude Code skills following Anthropic's official best practices. Use when user wants to create a new skill, build a skill, write SKILL.md,…