一键导入
prepare-release
Prepare a Userli release by generating changelog entries from merged PRs, updating CHANGELOG.md and UPGRADE.md, and creating a draft release PR
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Prepare a Userli release by generating changelog entries from merged PRs, updating CHANGELOG.md and UPGRADE.md, and creating a draft release PR
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | prepare-release |
| description | Prepare a Userli release by generating changelog entries from merged PRs, updating CHANGELOG.md and UPGRADE.md, and creating a draft release PR |
You are preparing a new Userli release. Follow these steps precisely.
Extract the target version from the user's prompt (e.g. "Prepare Userli Release 6.2.0" -> 6.2.0).
If no version is provided, ask the user for the target version.
Run:
gh release list --repo systemli/userli --limit 1 --json tagName,publishedAt
This gives you the last release tag and its date.
Run:
gh pr list --repo systemli/userli --state merged --base main --search "merged:>YYYY-MM-DD" --limit 100 --json number,title,mergedAt
Replace YYYY-MM-DD with the publishedAt date of the last release (date only, no time).
Remove any PRs whose title starts with Prepare Userli Release — these are previous release preparation PRs and should not appear in the changelog.
Categorize each PR based on the leading emoji in its title into one of three sections.
Emojis: ✨ (new feature), 🚸 (improve UX), ⚡ (performance), 💄 (UI/style), ♿️ (accessibility), 🔥 (remove code/feature)
Emojis: ♻️ (refactor), ⬆️ (upgrade dependency), ✅ (tests), 👷 (CI/build), 🗃️ (database), 🌐 (i18n), 📝 (docs)
Emojis: 🐛 (bug fix), 🚑 (critical hotfix)
If a PR title does not start with a recognized emoji, place it under Features and Improvements.
Within each section, sort PRs by PR number in descending order (newest first).
Read the current CHANGELOG.md. Insert a new version block directly after the # Changelog heading (before any existing version entries).
Use this exact format:
## <VERSION> (<YYYY.MM.DD>)
### Features and Improvements
- <emoji> <PR title without emoji prefix> (#<number>)
- ...
### Technical Changes
- <emoji> <PR title without emoji prefix> (#<number>)
- ...
### Bug Fixes
- <emoji> <PR title without emoji prefix> (#<number>)
- ...
Important rules:
YYYY.MM.DD format (dots, not hyphens) (#<number>)Read the current UPGRADE.md. Check if there is an existing section header matching ## Upgrade to <VERSION> or ## Upgrade from <PREVIOUS_VERSION> or lower.
## Upgrade to UNRELEASED or ## Unreleased), rename it to ## Upgrade to <VERSION>## Upgrade to 6.2.0), leave it as-is — it was already prepared in advance6.1.1), no UPGRADE.md changes are typically neededShow the user the current UPGRADE.md content at the top and ask if it looks correct before proceeding.
Create a new branch from the current HEAD:
Prepare-Userli-Release-<VERSION>
Example: Prepare-Userli-Release-6.2.0
Stage the changed files (CHANGELOG.md and optionally UPGRADE.md)
Commit with the message:
Prepare Userli Release <VERSION>
Push the branch to the remote
Create a draft PR targeting main:
Prepare Userli Release <VERSION>Show the user:
For version 6.1.0 released on 2026.02.10, the changelog block looks like:
## 6.1.0 (2026.02.10)
### Features and Improvements
- 🚸 Improve Error Handling in Dovecot Lua Adapter (#1034)
- ✨ Add configurable Redis cache support via REDIS_URL (#1033)
- ⚡ Add caching for Dovecot userdb lookup API (#1027)
### Technical Changes
- ✅ Add unit tests for 16 previously uncovered classes (#1029)
- 👷 Add Rector CI workflow that comments on PRs with diffs (#1025)
- ♻️ Modernize codebase for PHP 8.4 (#1024)
### Bug Fixes
- 🐛 Fix Xdebug blocking all HTTP requests in dev environment (#1032)