Trigger Conditions
Activate this skill when the user requests to generate a changelog, update log, version record, or release notes.
Workflow
Step 1: Get Git History
# 先获取最近的 tag,再用 revision range 查询
git describe --tags --abbrev=0
git log --oneline <last-tag>..HEAD
# 或指定范围
git log --oneline v1.0.0..HEAD
# 仓库没有 tag 时,明确选择起始提交或查看全部历史
git log --oneline
Step 2: Categorize Commits
Categorize by Conventional Commits:
| Category | Type Identifier | Icon |
|---|---|---|
| New Features | feat |
✨ |
| Bug Fixes | fix |
🐛 |
| Documentation | docs |
📝 |
| Refactoring | refactor |
♻️ |
| Performance Optimization | perf |
⚡ |
| Testing | test |
🧪 |
| Build/Tooling | chore |
🔧 |
| Breaking Changes | Contains BREAKING CHANGE: or ! |
⚠️ |
| Security Fixes | fix(security) or contains CVE |
🔒 |
| Dependency Updates | deps or chore(deps) |
📦 |
Step 3: Version Number Determination Strategy
Follow Semantic Versioning rules:
| Change Type | Version Change | Example |
|---|---|---|
| Breaking Changes | Major version +1 | 1.2.0 → 2.0.0 |
| New feature (feat) | Minor version +1 | 1.2.0 → 1.3.0 |
| Bug fix (fix) | Patch version +1 | 1.2.0 → 1.2.1 |
| Security fix (fix(security)) | Patch version +1 (emergency release) | 1.2.0 → 1.2.1 |
Basis for Determination:
- Commit message contains
BREAKING CHANGE:or type followed by!(e.g.,feat!:) → major version - Presence of
featcommits → minor version - Only
fix/docs/choreetc. → patch version
Step 4: Generate CHANGELOG
Output Format
# Changelog
## [1.3.0] - 2026-06-17
### ⚠️ Breaking Changes
- 移除废弃的 `/api/v1/users` 端点,统一使用 `/api/v2/users` (#130)
### ✨ 新功能
- 新增用户认证模块 (#123)
- 支持 OAuth2 登录 (#124)
- 新增批量导出功能 (#128)
### 🔒 安全修复
- 升级 lodash 修复原型污染漏洞 CVE-2025-XXXX (#129)
### 🐛 Bug 修复
- 修复分页查询偏移量错误 (#125)
- 修复并发写入导致的数据竞争 (#127)
### ⚡ 性能优化
- 优化大列表渲染性能,减少 50% 内存占用 (#126)
### 📝 文档
- 更新 API 文档 (#131)
### 📦 依赖更新
- 升级 axios 1.6.0 → 1.7.0 (#132)
Notes
- Breaking Changes must be placed at the very top, highlighted in bold
- Each entry should be linked to an Issue/PR number for traceability
- Security fixes must include the CVE number (if any)
- The version number should be consistent with the git tag
- If it is a pre-release version, use the
-beta.1、-rc.1suffix - You can maintain a
CHANGELOG.mdfile, appending to the top on each release