Update per-package CHANGELOG.md files for a Ratel release. Drafts entries with git-cliff (scoped per package), lets you curate, then writes the CHANGELOGs. Handles both RC entries and GA-graduation collapse (merging X.Y.Z-rc.* sections into a single X.Y.Z section). Invoke before tagging a release.
npx skills add https://github.com/ratel-ai/ratel --skill changelog
Updates a release unit's CHANGELOG.md in preparation for tagging it. Ratel releases
per unit (ADR-0008): each unit ships on its own tag (<prefix>-v*) at its own version.
For workflow-wired units, .github/workflows/release.yml rejects a tag whose unit CHANGELOG
doesn't contain the version being released. vercel-ai-sdk is temporarily published
manually via scripts/publish-rc.sh; still run this skill before its tag even though the
workflow gate does not cover it yet.
Run it once per unit you're releasing.
The units and their manifests/CHANGELOGs live in one registry —
scripts/release-units.mjs — which every release tool reads. Run node scripts/release-units.mjs --list
for the authoritative set; the current eight units are:
| Unit | Registry | CHANGELOG path |
|---|---|---|
| core | ratel-ai-core (crates.io) | src/core/CHANGELOG.md |
| sdk-ts | @ratel-ai/sdk (npm) | src/sdk/ts/CHANGELOG.md |
| sdk-py | ratel-ai (PyPI) | src/sdk/python/CHANGELOG.md |
| telemetry-core | ratel-ai-telemetry (crates.io) | src/telemetry/core/CHANGELOG.md |
| telemetry-ts | @ratel-ai/telemetry (npm) | src/telemetry/ts/CHANGELOG.md |
| telemetry-py | ratel-ai-telemetry (PyPI) | src/telemetry/python/CHANGELOG.md |
| vercel-ai-sdk | @ratel-ai/vercel-ai-sdk (npm) | src/adapters/ts-vercel-ai-sdk/CHANGELOG.md |
| mastra | @ratel-ai/mastra (npm) | src/adapters/ts-mastra/CHANGELOG.md |
@ratel-ai/mcp-server lives in ratel-ai/ratel-mcp and maintains its own CHANGELOG there.
If the user hasn't named the unit, run node scripts/releasable.mjs — it lists which
units have commits since their last release tag. Pick the unit $UNIT being released.
Read its canonical version:
node scripts/release-units.mjs --version "$UNIT" # -> $TARGET
If the user supplies a different version explicitly, prefer that and warn them the working
tree disagrees.
The range is from the unit's own last release tag to HEAD:
prefix=$(node scripts/release-units.mjs --tag-prefix "$UNIT")
FROM=$(git describe --tags --match "${prefix}*" --abbrev=0 2>/dev/null || true)
If $FROM is empty the unit has never shipped; the whole history is in range.
bash .claude/skills/changelog/draft.sh --unit "$UNIT"
It emits a single ### <package-name> block for the unit, containing either
Keep-a-Changelog sections (### Added, ### Fixed, ### Changed) or the sentinel
_No user-facing changes._. (Omit --unit to draft every unit at once.) With no
<from-ref> argument the script ranges each unit from its own last tag automatically.
If draft.sh exits 127, git-cliff is missing. Tell the user how to install it (the
script's stderr already does), and stop.
Inspect $TARGET, and edit only this unit's CHANGELOG:
X.Y.Z-rc.N): prepend a new section above the most recent versioned section: ## [X.Y.Z-rc.N] - YYYY-MM-DD
<draft content for the unit, or the sentinel>
Use today's date in YYYY-MM-DD (UTC).
-rc suffix): enter GA-collapse mode:## [X.Y.Z-rc.*] section already present that matches the sameMAJOR.MINOR.PATCH as $TARGET.
### Added, ### Changed, ### Fixed)with the new draft entries from step 3 (commits since the last RC tag).
_No user-facing changes._ sentinel if any real entries exist; keep it onlyif the unioned set is empty.
## [X.Y.Z] - YYYY-MM-DD sectioncontaining the merged content.
## [0.1.4]) untouched.Show the unit's CHANGELOG pending changes in the conversation. Ask the user to confirm or
edit. Common curation moves:
cliff.toml's skip rules).
Once approved, write only this unit's CHANGELOG using the Edit tool. Do not commit.
The release commit is the user's responsibility — they typically include the CHANGELOG
alongside the version bump in a single release: <unit>-vX.Y.Z commit.
If releasing more than one unit, repeat from step 1 for each.
Tell the user:
<unit>-v<version> tag + push.release.yml tag-version-check job verifies the unit'sCHANGELOG contains the tag version; if it doesn't, the release is blocked.
vercel-ai-sdk, publish manually with scripts/publish-rc.sh after the tag push; itsCHANGELOG is not workflow-gated yet.
YYYY-MM-DD in UTC.### Added, ### Changed, ### Fixed, ### Removed, ### Deprecated, ### Security. Omit empty subsections._No user-facing changes._ for a unit with no in-scope commits.## [Unreleased] at the top — it stays empty between releases.ADR 0008 (docs/adr/0008-release-engineering.md) records the per-unit tag/version split, the
CHANGELOG mechanism, and the rationale. Read it if you're unsure why something is structured
the way it is.
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
Next.js best practices - file conventions, RSC boundaries, data patterns, async APIs, metadata, error handling, route handlers, image/font optimization, bundling
Use when starting feature work that needs isolation from current workspace or before executing implementation plans - creates isolated git worktrees with smart directory selection and safety verification
Take ratel-ai/changelog from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.