post-merge
SkillDev toolsRun after a PR is merged on GitHub. Verifies merge, merges origin into master, invokes /sync-all.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the post-merge skill
What this skill tells your AI
The instructions your AI receives, as published by the-agency-ai/the-agency in .claude/skills/post-merge/SKILL.md and read by ahel’s review.
Post-Merge
Run after a PR is merged on GitHub. Verifies the merge, merges origin into master, then invokes /sync-all. Never resets master to origin. See agency/REFERENCE/REFERENCE-GIT-MERGE-NOT-REBASE.md.
Arguments
- $ARGUMENTS: PR number (e.g., "48"). If empty, query most recently merged PR via
gh pr list --state merged --limit 1.
Trigger
When the user says "merged", "done" (after a PR), or indicates a PR has landed.
Steps
Step 1: Safety checks
- Must be on master.
- Must be in the main checkout (not a worktree).
- Must have a clean working tree.
Step 2: Verify PR merged
Run gh pr view {number} --json state,mergedAt,mergeCommit. Confirm state is "MERGED".
Step 3: Fetch origin
Run git fetch origin.
Step 4: Merge origin/master
Check divergence: git rev-list --left-right --count origin/master...HEAD
If diverged (both sides > 0 — expected after squash PR merge):
- Verify merge-base exists:
git merge-base origin/master HEAD. If fails, ABORT. - Tag for recovery:
git tag sync/pre-merge-$(date +%Y%m%d-%H%M%S) - Merge:
git merge origin/master -m "Merge origin/master (post-PR-merge sync)" - If conflicts:
git merge --abort, report, ask user.
If behind only: git merge origin/master
Never git reset --hard origin/master. See agency/REFERENCE/REFERENCE-GIT-MERGE-NOT-REBASE.md.
Step 5: Invoke sync-all
Invoke /sync-all via the Skill tool to sync all worktrees.
Step 6: Create GitHub release
Every PR is a release. This step is MANDATORY. Mechanically enforced by the release-tag-check GitHub Actions workflow (D41-R20, issue #113) — if a merge commit lands on main without a matching release tag, CI goes red on main immediately. Don't rely on that catching you; create the release here.
- Parse the PR title for the release name (e.g., "D39-R1: ...")
- Extract the day and release number from the branch name or title (e.g., D39-R1 → version 39.1)
- Verify
agency/config/manifest.jsonhas the correctagency_version. The version bump should have been done BEFORE the PR was created (in/pr-prepor/release). If it wasn't, stop and warn — do not push to main to fix it. Create a follow-up PR instead. - Create GitHub release:
gh release create v{version} --title "{PR title}" --notes "{release notes}" --target main- Release notes: summarize the PR description, list key changes
- Verify release exists (hard check, fail-loud — not optional):
If this returns non-zero, the release was NOT created. Fix and retry before exiting the skill. Do not move to Step 7 on a missing release. Until the release lands, thegh release view v{version} --repo {owner}/{repo}release-tag-checkworkflow keeps main red.
If the version format doesn't match D#-R# (e.g., a hotfix PR), use the PR number as the version suffix (e.g., v39.pr78).
Never push directly to main. If the version is wrong, create a follow-up PR.
Step 7: Clean up PR branch
If the PR's head branch still exists locally:
./agency/tools/git-captain branch-delete {branch} --force
--force is required for post-merge cleanup because the local PR branch typically contains commits not reachable from main's history (RGR receipts, dispatch artifacts). Safe -d would refuse. The --force flag is gated for exactly this case (added in D41-R21, issue #110). The same protections apply: cannot delete main, cannot delete the current branch.
If the branch doesn't exist locally (e.g. you pr-merge --delete-branch already removed the remote and you never had a local copy), this step is a no-op — move on.
Step 8: Report
Post-merge complete:
PR: #{number} ({title})
Version: {old} → {new}
Release: v{version} created on GitHub
Master: merged with origin/master ({commit})
Worktrees: synced via /sync-all
Branch cleanup: {branch} deleted/kept
Signals
- GitHub stars
- 55
- Forks
- 8
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
post-merge- Source
- github.com/the-agency-ai/the-agency