AgentSkillsCN

release-workflow

为 lunar-claude 配置发布规范与变更日志。当用户要求“准备发布”“升级版本”“更新变更日志”“创建发布标签”“这个版本应该定为多少”,或需要了解变更日志/发布流程时,可使用此技能。

SKILL.md
--- frontmatter
name: release-workflow
description: >
  Release conventions and changelog configuration for lunar-claude.
  Use when the user asks to "prepare a release", "bump the version",
  "update the changelog", "create a release tag", "what version should
  this be", or needs to understand the changelog/release process.

Release Workflow

Project-specific release conventions for lunar-claude. For the interactive release workflow, use the /generate-changelog command from the git-workflow plugin.

Current Release State

  • Latest tag: !git describe --tags --abbrev=0 2>/dev/null || echo "No tags yet"
  • Marketplace version: !jq -r '.metadata.version' .claude-plugin/marketplace.json
  • Unreleased commits: !git log --oneline $(git describe --tags --abbrev=0 2>/dev/null)..HEAD 2>/dev/null | wc -l | tr -d ' '

Version Scheme

  • Semantic versioning: MAJOR.MINOR.PATCH
  • Tag format: v0.x.y (prefixed with v)
  • Marketplace and plugin manifests track versions independently

Version Bump Decision

Commit types presentBump level
BREAKING CHANGE: in footer or ! after typeMajor
feat: (new features)Minor
fix:, docs:, refactor:, perf:, test:, chore: onlyPatch

Commit → Changelog Group Mapping

git-cliff (cliff.toml) maps conventional commits to changelog groups:

Commit prefixChangelog group
feat🚀 Features
fix🐛 Bug Fixes
refactor🚜 Refactor
doc📚 Documentation
perf⚡ Performance
style🎨 Styling
test🧪 Testing
chore, ci⚙️ Miscellaneous Tasks
body contains "security"🛡️ Security
revert◀️ Revert

Auto-Skipped Commits

These are filtered out of the changelog automatically:

  • chore(release): prepare for — release prep commits
  • chore(deps*) — dependency updates (Renovate/Dependabot)
  • chore(pr) / chore(pull) — PR merge housekeeping

Files to Update on Release

  1. CHANGELOG.md — Generated by git-cliff --tag vX.Y.Z -o CHANGELOG.md
  2. .claude-plugin/marketplace.json — Update metadata.version
  3. Plugin manifests — Update version in each changed plugin's plugins/<cat>/<name>/.claude-plugin/plugin.json (only if that plugin changed)

Release Commit & Tag

bash
$ git add CHANGELOG.md .claude-plugin/marketplace.json
$ git commit -m "docs: update changelog for vX.Y.Z"
$ git tag -a vX.Y.Z -m "Release vX.Y.Z"
$ git push && git push --tags

GitHub Actions (release.yml) automatically creates the GitHub release from the tag, generating release notes via git-cliff.

Gotchas

  • Push tags separately: git push does not push tags — always follow with git push --tags
  • Marketplace version: Easy to forget updating .claude-plugin/marketplace.json alongside CHANGELOG.md
  • Plugin versions are independent: Only bump a plugin's version if that plugin had changes — not every release bumps every plugin
  • Pre-release tags: Tags containing rc, beta, or alpha are marked as pre-release in GitHub automatically
  • Dependency commits vanish: Renovate/Dependabot commits are auto-skipped in the changelog — this is intentional, not a bug