Release a skill for automating changelog generation.

381980 80119 Updated: 2026-07-12 18:08:10

The OpenClaw Changelog Update is an automated utility designed to regenerate the OpenClaw release changelog from Git history. Prior to any beta or stable release (or re-release), it rewrites the relevant version section of `CHANGELOG.md` based on the complete history manifest, eliminating reliance on outdated draft notes. Used in conjunction with `release-openclaw-maintainer`, this utility manages changelog content, ordering, grouping, and attribution, serving as a mandatory step in the release process.

Install
npx skills add https://github.com/openclaw/openclaw --skill openclaw-changelog-update
Skill Details readonly

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 @author attribution line.
  • Every Issue reporter cited via Fixes #NNN must receive explicit gratitude unless credited within the identical log entry.
  • Every Co-authored-by contributor 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:
  1. All #NNN numerical references must resolve to valid existing GitHub items.
  2. Rolled-back work items cannot be presented as shipped release functionality.
  3. Source pull requests must appear within the full contribution manifest ledger.
  4. Raw direct commits cannot be dumped verbatim as public log entries.
  5. Non-editorial pull requests are excluded from the grouped core changelog sections.
  6. All qualifying PR authors and co-authors must receive explicit Thanks attributions.
  7. The ### Highlights section must contain exactly 5 to 8 top-tier impact bullet points.
  8. The --base tag must be a git ancestor of the --target release 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 record header are retained inline; the header is printed followed by a permanent hyperlink to the fixed-tagged CHANGELOG.md file.
  • 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-dispatch command 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

  1. 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.
  2. No Legacy Content Carryover: The manifest is fully parsed before editing; stale pre-existing grouped changelog text cannot be forwarded without full re-audit.
  3. No Beta-Exclusive Section Headers: Only a single standardized stable-style section ## YYYY.M.PATCH is generated; unique beta-specific headers are forbidden.
  4. Unreleased Section Handling: If the ## Unreleased block contains release-relevant notes, its content is merged into the target version section instead of being discarded.
  5. Internal Work Filtering: Pull requests categorized as docs, test, refactor, ci, build, chore, or style are excluded from the Highlights, Changes, and Fixes core sections.
  6. GHSA Reference Exclusion: Security advisory IDs and advisory slugs are never appended unless explicitly requested as a special parameter.
  7. Cross-Repository Reference Preservation: Cross-repo references such as openclaw/imsg#141 are 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.