一键导入
release-pr
Prepare or update a release PR from dev to master with auto-generated release notes
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Prepare or update a release PR from dev to master with auto-generated release notes
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when there are open Dependabot "bump" PRs (maven and/or github_actions, authored by app/dependabot) to assess, test locally, and consolidate into one commit on dev, or when reviewing/resolving Dependabot security alerts. Triggers include "consolidate the bump PRs", "handle the dependabot PRs", "bump dependencies", "close the version-bump PRs". Leaves feature/fix PRs and frozen research artifacts untouched.
Audit Kryo persistence backward compatibility before releasing a SNAPSHOT. Finds every class serialized through SerialVersionBasedSerializer whose on-disk format changed since the previous released version, and verifies each has its serialVersionUID bumped exactly once with a matching backward-compatible (BWC) reader registered in every Kryo configurer that registers it. Invoke when preparing a release, after adding/removing a persisted field, or when asked to check that stored catalogs / WAL data will still load.
Replay upstream RoaringBitmap changes onto the vendored evita_roaring_bitmap module. Walks upstream/master since the recorded base, triages each commit against the vendored subset, incorporates relevant fixes, and updates the sync ledger. Invoke when checking for or applying upstream RoaringBitmap updates.
Analyze GraphQL breaking changes between the public evitaDB demo server schema and the current local branch's schema. Builds the project, boots the local server, runs graphql-inspector via `tools/diff-graphql-schemas.sh`, and writes a prose summary of breaking changes and their client-facing implications. If the user provides a path to a downstream project that generates a GraphQL client from evitaDB's schema, the summary is tailored to that project specifically (TypeScript-heavy by default). Read-only: never modifies project code.
Analyze OpenAPI (REST) breaking changes between the public evitaDB demo server schema and the current local branch's schema. Builds the project, boots the local server, runs openapi-diff via `tools/diff-openapi-schemas.sh`, and writes a prose summary of breaking changes and their client-facing implications. If the user provides a path to a downstream project that generates a REST client from evitaDB's OpenAPI schema, the summary is tailored to that project specifically (TypeScript-heavy by default). Read-only: never modifies project code.
Generate enriched release notes for a major or patch release of evitaDB. Runs the deterministic skeleton generator and adds short user-facing prose to all breaking changes and to the features deemed "interesting", then writes the result to release-notes.md. Invokable locally as /release-notes and headlessly from the CI release workflow.
| name | release-pr |
| description | Prepare or update a release PR from dev to master with auto-generated release notes |
| allowed-tools | Read, Edit, Grep, WebFetch, AskUserQuestion, Bash(git *), Bash(grep *), Bash(./tools/verify-pgp-keys.sh *), Bash(./tools/list-issues.sh *), Bash(./tools/list-commits.sh *), Bash(gh pr list --repo FgForrest/evitaDB *), Bash(gh pr create --repo FgForrest/evitaDB *), Bash(gh pr edit *), Bash(gh api --method POST /repos/FgForrest/evitaDB/pulls/*) |
Creates or updates a GitHub pull request from dev (main branch) to master (release branch) with auto-generated release notes. The release notes are assembled from GitHub milestone issues and git commit history, following the established evitaDB release notes format.
dev to master/release-prExecute the following steps in order. Stop and report to the user if any step fails.
Verify that all dependency signatures are valid before proceeding with the release. This catches PGP key rotations that would break the CI/CD PGP Keys Check step.
./tools/verify-pgp-keys.sh --check
If it exits 0 (all signatures valid), skip to Step 1.
If it exits non-zero, the script outputs a structured report for each failing group with:
For each group in the script output, present a summary table:
| Check | Result |
|---|---|
| New key fingerprint | 0x... (from script output) |
| Cross-ref: same key signs other group artifacts | Yes/No |
| Key found on public keyserver | Yes/No (which server) |
| Key UID | From script output |
| Old key expired | Yes (date) / No |
For [PASS] entries (cross-reference succeeded AND/OR key exists on a keyserver):
./tools/verify-pgp-keys.sh --fix
This updates pgp-keys-map.list with the validated fingerprints.git add pgp-keys-map.list && git commit -m "chore: update PGP keys for <groupIds> after key rotation"For [FAIL] entries (cross-reference failed AND key not on any keyserver):
If the report contains a mix of PASS and FAIL entries, apply the PASS fixes first, then stop and report the FAIL entries. Do not proceed to Step 1 until all entries are resolved.
After applying fixes, re-run the check:
./tools/verify-pgp-keys.sh --check
If it passes, proceed to Step 1. If it still fails, repeat from P2 for the remaining failures.
Note: Any PGP key update commits from the Preliminary Phase will be part of the working tree when Step 2 checks for a clean state. The user must push those commits before proceeding.
Run git branch --show-current and verify the result is dev. If not, stop and tell the user they must be on the dev branch.
git status --porcelain — if output is non-empty, stop and tell the user to commit or stash changes.git fetch origin dev then compare git rev-parse dev vs git rev-parse origin/dev — if they differ, stop and tell the user to push their commits first.pom.xml and extract the version from the first <version> tag.-SNAPSHOT suffix if present (e.g. 2026.1-SNAPSHOT becomes 2026.1).Release {version} (e.g. Release 2026.1).Run the following to find the latest release tag on master:
git fetch origin master
git describe --tags --abbrev=0 origin/master
This returns a tag like v2025.8.15. Strip the leading v to get the base version (e.g. 2025.8.15). This is passed to list-issues.sh as the second argument for dependency comparison.
Run both scripts and capture their output:
./tools/list-issues.sh "{version}" "{base_version}"
./tools/list-commits.sh "{base_version}"
Where {version} is the milestone title from Step 3 (e.g. 2026.1) and {base_version} is from Step 4 (e.g. 2025.8.15).
Then aggregate the two outputs into a single release notes body following these rules:
list-issues.sh are authoritative — they have proper issue numbers and milestone categorization. Always include all of them.list-commits.sh supplement — include commit entries that represent meaningful user-facing features or bug fixes not already covered by an issue entry. Match by description similarity to avoid duplicates.### ☢️ Breaking changes### 🚀 Features### 🐛 Bug Fixes### ⛓ Dependencies upgrades📝) and test (🧪) sections from the final release notes — they are internal-facing.## What's Changed.dev to master already exists:
gh pr list --repo FgForrest/evitaDB --head dev --base master --state open --json number,title --jq '.[0]'
gh pr create --repo FgForrest/evitaDB --head dev --base master \
--title "Release {version}" \
--body "<release notes body>"
Then request Copilot review:
gh api --method POST /repos/FgForrest/evitaDB/pulls/{PR_NUMBER}/requested_reviewers \
-f 'reviewers[]=copilot-pull-request-reviewer[bot]'
gh pr edit {PR_NUMBER} --repo FgForrest/evitaDB \
--title "Release {version}" \
--body "<release notes body>"
Print the PR URL and a summary of what was done (created vs updated).
gh pr create or gh pr edit to preserve markdown formatting.list-issues.sh script requires the gh CLI to be authenticated.list-issues.sh reports no milestone found, tell the user to verify the milestone title exists on GitHub.