1. Manifest Generation
The skill leverages the
verify-release-notes.mjs script to generate a full contributor manifest by accepting three arguments: --base (the last published tag), --target (the release reference to ship), and --main-ref (origin/main).The manifest enumerates every referenced pull request, qualifying contributor attributions, inline Issue context, all direct commits, and classification of edit eligibility for both pull requests and standalone direct commits.
The validator reuses cached GitHub GraphQL responses natively; iterative rewrites targeting the same reference eliminate redundant network discovery requests.
2. Grouped Changelog Rewriting
The skill reconstructs a single version section formatted as
## YYYY.M.PATCH following the rigid structural rules below:| Section Header | Content Specifications |
|---|---|
| Highlights | 5 to 8 bullet points prioritizing user-facing tangible improvements, each consisting of one sentence explaining end-user impact |
| Changes | New feature introductions and breaking behavioral modifications |
| Fixes | User-facing bug resolutions, sorted by scope of impact and surface-level visibility |
| Complete contribution record | A comprehensive PR-first audit ledger, intended as a detailed accounting log rather than a secondary condensed release summary |
Related changes and patches are grouped by surface functionality and user impact; individual minor commits are not listed as standalone entries.
Direct commits are treated as editorial input rather than public log lines. User-facing impact is inferred from commit messages, modified source files, test suites, and adjacent commit context.
3. Automatic Contributor Attribution Preservation
The skill enforces full retention of all human contributor credits with strict rules:
- Every user-facing pull request must include the PR reference paired with a
Thanks @authorattribution line. - Every Issue reporter cited via
Fixes #NNNmust receive explicit gratitude unless credited within the identical log entry. - Every
Co-authored-bycontributor must be individually acknowledged. - Multiple sequential
Thanks @...tags within one entry are permitted and must never be truncated or collapsed. - Automated bot accounts (
@claude,@openclaw,@clawsweeper,@steipete, etc.) are excluded from all gratitude attributions.
4. Automated Validation & Sanity Checks
The
verify-release-notes.mjs script executes a full suite of validation routines prior to commit:- All
#NNNnumerical references must resolve to valid existing GitHub items. - Rolled-back work items cannot be presented as shipped release functionality.
- Source pull requests must appear within the full contribution manifest ledger.
- Raw direct commits cannot be dumped verbatim as public log entries.
- Non-editorial pull requests are excluded from the grouped core changelog sections.
- All qualifying PR authors and co-authors must receive explicit
Thanksattributions. - The
### Highlightssection must contain exactly 5 to 8 top-tier impact bullet points. - The
--basetag must be a git ancestor of the--targetrelease reference.
5. GitHub Release Body Rendering & Validation
scripts/render-github-release-notes.mjs serves as the standardized renderer for GitHub release body content:- If the full structured version section falls under GitHub’s 125,000 character limit, the complete section is embedded verbatim within the release body.
- If the character limit is exceeded, all editorial notes up to the
### Complete contribution recordheader are retained inline; the header is printed followed by a permanent hyperlink to the fixed-taggedCHANGELOG.mdfile. - No individual log entry or subsection is truncated at any point; handwritten condensed alternative summaries are prohibited entirely.
III. Primary Use Cases
1. Pre-Release Changelog Generation
This skill is mandatory for regenerating changelog content ahead of every beta, stable, or reissued release. It guarantees release notes are built from complete git history rather than outdated manually drafted drafts.
2. Standardization of Backport Pull Requests
- Explicit cherry-pick source references take priority, followed by unique normalized subject matching (requiring identical authors and overlapping modified file paths).
- Backport release branch pull requests are suppressed when the corresponding main branch PR already exists on
origin/main. - Release branch pull requests are only preserved if the corresponding change first landed on the release branch and has not yet been forward-ported to the main branch.
3. Post-Release Sanity Verification
After publishing a GitHub release or prerelease, run the script with
--release-tag and --check-github to validate that the live release page content exactly matches the source generated changelog section.4. Degraded Workflow Execution During GitHub API Quota Exhaustion
When GitHub API rate limits are fully consumed, the workflow does not pause and wait for quota reset; all API-independent tasks continue uninterrupted:
- Local changelog reconstruction and release note extraction
- Local pre-tag sanity checks for package and build integrity
- Git push and tag validation checks
- NPM registry connectivity validation
- Preconfiguration of
workflow-dispatchcommand payloads
IV. Standard Execution Workflow
plaintext
1. git fetch --tags origin && git pull --ff-only
2. git log audit full commit history including all direct standalone commits
3. node verify-release-notes.mjs --base <tag> --target <ref> --version <ver> --manifest <json>
4. Rewrite the corresponding version section within CHANGELOG.md using the generated manifest
5. node verify-release-notes.mjs --write-ledger (secondary full validation pass)
6. git diff --check
7. scripts/committer "docs(changelog): refresh YYYY.M.PATCH notes" CHANGELOG.md
8. git push, then rebase the release branch against the latest main branch
9. Post-release validation: node verify-release-notes.mjs --release-tag v<ver> --check-github
V. Core Governing Rules & Critical Constraints
- Manifest Pre-Requisite: The full contribution manifest is generated prior to any changelog rewriting, capturing all pull requests, contributor credits, Issue context, and edit eligibility classifications; it is not a post-hoc audit artifact.
- No Legacy Content Carryover: The manifest is fully parsed before editing; stale pre-existing grouped changelog text cannot be forwarded without full re-audit.
- No Beta-Exclusive Section Headers: Only a single standardized stable-style section
## YYYY.M.PATCHis generated; unique beta-specific headers are forbidden. - Unreleased Section Handling: If the
## Unreleasedblock contains release-relevant notes, its content is merged into the target version section instead of being discarded. - Internal Work Filtering: Pull requests categorized as
docs,test,refactor,ci,build,chore, orstyleare excluded from the Highlights, Changes, and Fixes core sections. - GHSA Reference Exclusion: Security advisory IDs and advisory slugs are never appended unless explicitly requested as a special parameter.
- Cross-Repository Reference Preservation: Cross-repo references such as
openclaw/imsg#141are retained as literal plain text and never rewritten as local internal Issue links.
VI. Summary
OpenClaw Changelog Update is a mandatory automated changelog skill integrated into the release pipeline. It generates comprehensive contribution manifests from raw git history, reconstructs structured user-facing release notes programmatically, and rigidly preserves attribution for all human contributors. Designed for the OpenClaw project’s beta and stable release cadence, it enforces full completeness, factual accuracy, and consistent formatting across all changelog artifacts. Built-in automated validation routines eliminate common defects including broken cross-item references, missing contributor attributions, and malformed section formatting.