원클릭으로
bitcoin-minor-release-skill
Automatically generate minor release notes based on the PRs merged into this branch since the last version.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Automatically generate minor release notes based on the PRs merged into this branch since the last version.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | bitcoin-minor-release-skill |
| description | Automatically generate minor release notes based on the PRs merged into this branch since the last version. |
Extract GitHub Pull Request numbers from backport commits and format them for release notes.
Check CMakeLists.txt to determine what release is being prepared and what BASE_VERSION tag to use.
grep -E "CLIENT_VERSION_(MAJOR|MINOR|BUILD|RC)" CMakeLists.txt | head -4
Example output:
set(CLIENT_VERSION_MAJOR 29)
set(CLIENT_VERSION_MINOR 3)
set(CLIENT_VERSION_BUILD 0)
set(CLIENT_VERSION_RC 1)
This means we're preparing v29.3rc1. The previous release tag to diff from is v29.2.
Find the most recent non-release-candidate tag on the X.x branch:
git tag --list 'vX.*' --sort=-v:refname | grep -v "rc" | head -1
Example for v29.3:
git tag --list 'v29.*' --sort=-v:refname | grep -v "rc" | head -1
This handles cases like:
The Github-Pull field in commit messages can use inconsistent formats, so handle all three:
Github-Pull: #XXXXXGithub-Pull: XXXXX (no #)Github-Pull: bitcoin/bitcoin#XXXXXgit log <tag>..HEAD --pretty=format:"%b" | grep -i "github-pull" | sed 's/.*#//' | sed 's/Github-Pull: //' | sort -n | uniq
Example:
git log v29.2..HEAD --pretty=format:"%b" | grep -i "github-pull" | sed 's/.*#//' | sed 's/Github-Pull: //' | sort -n | uniq
git log <tag>..HEAD --pretty=format:"%b" | grep -i "github-pull" | sort | uniq
In rare cases, a PR may be merged directly into the X.x branch rather than being backported from master. These appear as merge commits in the subject line and usually don't mention "backport".
git log <tag>..HEAD --oneline | grep "Merge bitcoin/bitcoin#" | grep -iv "backport"
Example:
git log v29.2..HEAD --oneline | grep "Merge bitcoin/bitcoin#" | grep -iv "backport"
This is much faster than looking them up through github.
Merge commits in master use the format: Merge bitcoin/bitcoin#XXXXX: <title>
git log master --oneline | grep -E "bitcoin/bitcoin#(PR1|PR2|PR3|...)"
Example:
git log master --oneline | grep -E "bitcoin/bitcoin#(31423|32473|33050|33105)"
Combine the above commands to get a formatted list:
# First, get the PR numbers
prs=$(git log <tag>..HEAD --pretty=format:"%b" | grep -i "github-pull" | sed 's/.*#//' | sed 's/Github-Pull: //' | sort -n | uniq | tr '\n' '|' | sed 's/|$//')
# Then look up titles
git log master --oneline | grep -E "bitcoin/bitcoin#($prs)"
The output from the merge commit search can be transformed into a markdown table:
| PR Number | Title | Backport? |
|---|---|---|
| #XXXXX | Description of the change | Yes/No |
Group PRs by type based on their title prefixes. Default to Misc:
validation, consensusnet, p2pmempool, tx relay policy, policy, fee estwallet, wallettoolminer, miningbuild, guix, dependstest, qadoc, docsci, contribgit log --format='- %aN' <tag>..HEAD | grep -v 'merge-script' | sort -fiu
Find the supported systems string from the BASE_VERSION's historical release notes:
grep -A2 "is supported and" doc/release-notes/release-notes-<BASE_VERSION>.md | tail -2 | tr '\n' ' '
Example for v29.3rc1 (BASE_VERSION is v29.2):
grep -A2 "is supported and" doc/release-notes/release-notes-29.2.md | tail -2 | tr '\n' ' '
This extracts the line like Linux Kernel 3.17+, macOS 13+, and Windows 10+.
See release-notes-template.md for the full template structure. Copy it to doc/release-notes.md and fill in:
<VERSION> with the version number (e.g., 30.1 or 29.3rc1)<DIRNAME> with the download directory path:
bitcoin-core-X.Y/
bitcoin-core-28.3/bitcoin-core-X.Y/test.rcN/
bitcoin-core-29.1/test.rc2/<SUPPORTED_SYSTEMS> with the appropriate string