Post-merge verification checklist. Triggers ONLY when: a PR has just been merged via gh pr merge. Do NOT trigger when: discussing merge strategy or planning future merges.
After every PR merge, execute ALL FIVE steps. Every time. No exceptions. Skipping any step is a process failure, not a shortcut.
After merging to main and deployment is live, run dual-track testing:
Use Playwright MCP to test the deployed production site. This is where functional testing happens — NOT in staging-verify.
Report format:
## Production Test Report
| Feature | User Journey | Desktop | Mobile | Status |
|---------|-------------|---------|--------|--------|
After agent testing completes, invite the user to test:
After both rounds of testing:
issue-create skill- [ ] with - [x] for all completed criteriagh api repos/OWNER/REPO/issues/NUMBER -X PATCH -f body="..."
gh issue close NUMBERCloses #X in the PR body only auto-closes issues when merging to the default branch (main), not devdev first, you must close issues manuallyMilestone Completion Check: After closing the issue, check if the milestone is now complete:
gh issue view NUMBER --json milestone --jq '.milestone.title'gh issue list --milestone "MILESTONE_NAME" --state openretro — do not wait for the user to ask.--delete-branch flag when merging PR, or git push origin --delete <branch-name>git branch -d <branch-name>-d (safe delete). Deleting right after merge avoids this entirely.git branch -a should no longer show the branchThis step applies ONLY when the merged PR was dev → main (a release merge). Skip for feature → dev merges.
Determine version bump by analyzing commits since the last release tag:
git log $(git describe --tags --abbrev=0 2>/dev/null || echo HEAD~50)..HEAD --onelinefeat: or feat( → minor bump (new functionality)fix: or fix( → patch bump (bug fixes only)BREAKING CHANGE or !: → major bumpv0.1.0Create the release:
gh release create vX.Y.Z --title "vX.Y.Z" --generate-notes --latest
--generate-notes auto-generates release notes from merged PR titlesmain HEADVerify the release:
gh release view vX.Y.Z to confirm it was createdgit tag -l vX.Y.ZAll five steps. Every merge. No shortcuts. If you skip branch cleanup today, you will have 50 stale branches next month. If you skip verification, you will ship broken features. The process exists because it works.
Report to user: "Issue #[N] merged. [N/total] complete. AC: [all checked / gaps]. Branch: [deleted]" If release: "v[X.Y.Z] released. Production test: [N bugs found]. Please test [URL]."
Suggested next steps (user decides):