agentleFS
Fu-JieFu-Jie/openwebui-extensions/.github/skills/release-finalizer/SKILL.md

release-finalizer

Skill326 starsChanged 8 months agoMITView on GitHub

Merges a release PR, associates it with resolved issues, replies to issue reporters, and closes issues. Use after PR review is complete and ready for merge. Closes the release cycle.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

14 rules. About 0 are common, 10 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈10

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Distinctive:

    All status checks have passed (CI green)

    line 15
  2. Distinctive:

    All review feedback has been addressed

    line 16
  3. Distinctive:

    Verify that the PR is ready:

    line 25
  4. Distinctive:

    If any check fails, do NOT merge.

    line 36
  5. Distinctive:

    Look for patterns like:

    line 46
  6. Distinctive:

    Manual input: If issue links are not in the PR, ask the user which issue(s) this PR resolves.

    line 50
  7. Very specific:

    Recommendation for release PRs: Use --squash to create a single clean commit.

    line 64
  8. Very specific:

    If user doesn't specify, default to --squash.

    line 66
  9. Very specific:

    If using --squash, craft a single comprehensive commit message:

    line 70
  10. Distinctive:

    If the merge revealed any final tweaks to release notes:

    line 144
  11. Distinctive:

    If needed, create a follow-up PR with doc polish (do NOT force-push the merged commit).

    line 151
  12. Very specific:

    Verify the Closes #XX keyword is in the final commit message (use git log to check)

    line 198
  13. Distinctive:

    Ensure the commit is on the main branch

    line 199
  14. Distinctive:

    Only recommended if the PR was manually reverted or deemed invalid

    line 208

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Release Finalizer

Overview

This skill completes the final step of the release cycle: merging the release PR to main, replying to all related issues with solutions, and automatically closing them using GitHub's issue linking mechanism.

Prerequisites

  • The PR is in OPEN state and ready to merge
  • All status checks have passed (CI green)
  • All review feedback has been addressed
  • The PR relates to one or more GitHub issues (either in PR description or through commits)

Workflow

Step 1 — Pre-Merge Verification

Verify that the PR is ready:

PAGER=cat GH_PAGER=cat gh pr view <PR-NUMBER> --json state,statusCheckRollup,reviewDecision

Checklist:

  • ✅ state is OPEN
  • ✅ statusCheckRollup all have conclusion: SUCCESS
  • ✅ reviewDecision is APPROVED or empty (no blocking reviews)

If any check fails, do NOT merge. Report the issue to the user.

Step 2 — Identify Related Issues

Issues can be linked to a PR in multiple ways. Check the PR description and commit messages for keywords:

PAGER=cat GH_PAGER=cat gh pr view <PR-NUMBER> --json body,commits

Look for patterns like:

  • Closes #XX, Fixes #XX, Resolves #XX (in description or commit bodies)
  • #XX mentioned as "related to" or "addresses"

Manual input: If issue links are not in the PR, ask the user which issue(s) this PR resolves.

Extract all issue numbers into a list: [#48, #52, ...]

Step 3 — Select Merge Strategy

Offer the user three options:

StrategyGit BehaviorUse Case
SquashAll commits squashed into one commit on mainClean history, recommended for release PRs
RebaseLinear history, no merge commitPreserve commit granularity
MergeMerge commit createdPreserve full PR context

Recommendation for release PRs: Use --squash to create a single clean commit.

If user doesn't specify, default to --squash.

Step 4 — Prepare Merge Commit Message

If using --squash, craft a single comprehensive commit message:

Format (Conventional Commits + Github linking):

type(scope): description

- Bullet point 1
- Bullet point 2

Closes #48
Closes #52

The Closes #XX keyword tells GitHub to automatically close those issues when the commit lands on main.

Example:

feat(pipes,filters): release Copilot SDK Pipe v0.8.0 and Files Filter v0.1.3

- Implement P1~P4 conditional tool filtering system
- Fix file publishing reliability across all storage backends
- Add strict file URL validation
- Update bilingual documentation

Closes #48

Step 5 — Execute Merge

gh pr merge <PR-NUMBER> \
  --squash \
  --delete-branch \
  -m "type(scope): description" \
  -b "- Bullet 1\n- Bullet 2\n\nCloses #48"

Key flags:

  • --squash: Squash commits (recommended for releases)
  • --delete-branch: Delete the feature branch after merge
  • -m: Commit subject
  • -b: Commit body (supports \n for newlines)

Confirm the merge is successful; GitHub will automatically close related issues with Closes #XX keyword.

Step 6 — Verify Auto-Close

GitHub automatically closes issues when a commit with Closes #XX lands on the default branch (main).

To verify:

PAGER=cat GH_PAGER=cat gh issue view <ISSUE-NUMBER> --json state

Should show state: CLOSED.

Step 7 — Post Closing Message (Optional but Recommended)

For better UX, manually post a summary comment to each issue before it auto-closes (since auto-close happens silently):

gh issue comment <ISSUE-NUMBER> --body "
This has been fixed in PR #<PR-NUMBER>, which is now merged to main.

**Solution Summary:**
- <Key fix 1>
- <Key fix 2>

The fix will be available in the next plugin release. Thank you for reporting! ⭐
"

Step 8 — (Optional) Regenerate Release Notes

If the merge revealed any final tweaks to release notes:

# Re-export release notes from merged commit
git log --oneline -1 <merged-commit-sha>

If needed, create a follow-up PR with doc polish (do NOT force-push the merged commit).


Merge Strategy Decision Tree

Is this a patch/hotfix release?
├─ YES → Use --squash
└─ NO → Multi-feature release?
     ├─ YES → Use --squash (cleaner history)
     └─ NO → Preserve detail? 
          ├─ YES → Use --rebase
          └─ NO → Use --merge (preserve PR context)

Issue Auto-Close Keywords

These keywords in commit/PR messages will auto-close issues when merged to main:

  • Closes #XX
  • Fixes #XX
  • Resolves #XX
  • close #XX (case-insensitive)
  • fix #XX
  • resolve #XX

Important: The keyword must be on the final commit that lands on main. For squash merges, it must be in the squash commit message body.


Anti-Patterns to Avoid

  • ❌ Do NOT merge if any status checks are PENDING or FAILED
  • ❌ Do NOT merge if there are blocking reviews (reviewDecision: CHANGES_REQUESTED)
  • ❌ Do NOT merge without verifying the Conventional Commits format in the merge message
  • ❌ Do NOT merge without including Closes #XX keywords for all related issues
  • ❌ Do NOT assume issues will auto-close silently — post a courtesy comment first
  • ❌ Do NOT delete the branch if it might be needed for cherry-pick or hotfixes later

Troubleshooting

Issue did not auto-close after merge

  • Verify the Closes #XX keyword is in the final commit message (use git log to check)
  • Ensure the commit is on the main branch
  • GitHub sometimes takes a few seconds to process; refresh the issue page

Multiple issues to close

  • List all in separate Closes #XX lines in the commit body
  • Each one will be independently auto-closed

Want to close issue without merge?

  • Use gh issue close <ISSUE-NUMBER> manually
  • Only recommended if the PR was manually reverted or deemed invalid

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.