changelog-generator
npx skills add https://github.com/peterfei/ai-agent-team --skill changelog-generator
Agent 安装分布
Skill 文档
changelog-generator – æºè½åæ´æ¥å¿çæå¨
æ¦è¿°
å½ç¨æ·éè¦çæææ´æ° CHANGELOG æ¶ï¼æ¤ skill ä¼èªå¨å®æä»¥ä¸æµç¨ï¼
- åæ Git æäº¤åå²
- æ ¹æ® Conventional Commits è§èè§£ææäº¤
- æºè½åç±»åç»ç»åæ´
- çæç¬¦å Keep a Changelog æ åç CHANGELOG.md
- æ¯æçæ¬åå¸åå¢éæ´æ°
æ¯æç触åæä»¤
ç¨æ·å¯ä»¥éè¿ä»¥ä¸æ¹å¼è§¦åæ¤ skillï¼
- “changelog” – ç®æè§¦åè¯
- “åæ´æ¥å¿” – ç®æè§¦åè¯
- “帮æçæ CHANGELOG” – çæå®æ´ç CHANGELOG
- “æ´æ° CHANGELOG” – å¢éæ´æ° CHANGELOG
- “å叿°ç欔 – å叿£å¼çæ¬
- “åå§å changelog é ç½®” – å建é ç½®æä»¶
工使µç¨
æ¥éª¤ 1: åå§åé ç½®ï¼é¦æ¬¡ä½¿ç¨ï¼
å½ä»¤:
cd ~/.claude/skills/changelog-generator
npm install
# å¨é¡¹ç®ç®å½ä¸åå§åé
ç½®
cd /path/to/your/project
changelog-generate init
é
ç½®æä»¶: .changelogrc.json
交äºå¼é ç½®ä¼è¯¢é®ï¼
- å½åçæ¬å·
- è¯è¨éæ©ï¼ä¸æ/è±æï¼
- æ¯å¦ä½¿ç¨ emoji
- æ¯å¦æ¾ç¤ºä½è ä¿¡æ¯
æ¥éª¤ 2: çæ CHANGELOG
åºæ¯ A: 馿¬¡çæå®æ´ CHANGELOG
# çæææåå²æäº¤ç CHANGELOG
changelog-generate generate --all
# çææå®èå´ç CHANGELOG
changelog-generate generate --from v1.0.0 --to v2.0.0
åºæ¯ B: å¢éæ´æ° CHANGELOG
# æ´æ° [Unreleased] åºå
changelog-generate update
# 仿宿 ç¾å¼å§æ´æ°
changelog-generate update --from v2.0.0
åºæ¯ C: å叿°çæ¬
# èªå¨ç¡®å®çæ¬å·ï¼äº¤äºå¼ï¼
changelog-generate release
# æå¨æå®çæ¬å·
changelog-generate release --version 2.1.0
# æå®æ¥æ
changelog-generate release --version 2.1.0 --date 2023-11-10
æ¥éª¤ 3: è¾åºæä»¶
é»è®¤è¾åºè·¯å¾: ./CHANGELOG.md
çæç CHANGELOG 示ä¾:
# Changelog
All notable changes to this project will be documented in this file.
## [Unreleased]
## [2.0.0] - 2023-11-10
### ð¥ BREAKING CHANGES
- **api:** Remove deprecated v1 endpoints (#123)
### ⨠Features
- **auth:** Add JWT authentication (#120)
- **api:** Add user profile endpoint (#121)
### ð Bug Fixes
- **ui:** Fix button alignment issue (#122)
### ð Documentation
- Update API documentation
## [1.0.0] - 2023-10-01
...
æ ¸å¿åè½
1. æºè½æäº¤è§£æ
æ¯æ Conventional Commits è§èï¼
feat(auth): add login functionality
^ ^ ^
type scope subject
BREAKING CHANGE: Remove old auth API
æ¯æçæäº¤ç±»å:
feat: ⨠Featuresfix: ð Bug Fixesdocs: ð Documentationstyle: ð Styles (å¯éè)refactor: â»ï¸ Code Refactoringperf: â¡ Performancetest: â Testsbuild: ð¦ Build Systemci: ð· CI/CDchore: ð§ Chores (å¯éè)
2. èªå¨çæ¬ç®¡ç
æ ¹æ®æäº¤ç±»åèªå¨ç¡®å®çæ¬å·ï¼
| æäº¤ç±»å | çæ¬å½±å | ç¤ºä¾ |
|---|---|---|
| BREAKING CHANGE | Major | 1.0.0 â 2.0.0 |
| feat | Minor | 1.0.0 â 1.1.0 |
| fix | Patch | 1.0.0 â 1.0.1 |
3. PR å Issue å¼ç¨
èªå¨è¯å«å龿¥ï¼
feat: add new feature (#123)
fix: resolve bug (fixes #456)
çæé¾æ¥ï¼
- **feat:** add new feature ([#123](https://github.com/user/repo/pull/123))
4. ç ´åæ§åæ´æ£æµ
ä¸¤ç§æ£æµæ¹å¼ï¼
æ¹å¼ 1: ä½¿ç¨ BREAKING CHANGE footer
feat: add new API
BREAKING CHANGE: Old API is removed
æ¹å¼ 2: ä½¿ç¨ “!” (æå¹å·) æ è®°
feat!: remove deprecated method
é ç½®é项
宿´é 置示ä¾
{
"version": "1.0.0",
"format": "keepachangelog",
"language": "zh-CN",
"display": {
"emoji": true,
"groupByType": true,
"showAuthor": true,
"showPR": true,
"showIssue": true
},
"types": [
{ "type": "feat", "section": "Features", "emoji": "â¨" },
{ "type": "fix", "section": "Bug Fixes", "emoji": "ð" },
{ "type": "chore", "hidden": true }
],
"exclude": {
"types": ["style", "chore"],
"scopes": ["deps"]
}
}
使ç¨åºæ¯
åºæ¯ 1: æ°é¡¹ç®é¦æ¬¡çæ
# 1. åå§åé
ç½®
changelog-generate init
# 2. çæ CHANGELOG
changelog-generate generate --all
# è¾åº: CHANGELOG.md å
嫿æåå²æäº¤
åºæ¯ 2: æ¥å¸¸å¼åå¢éæ´æ°
# 卿¯æ¬¡ PR åå¹¶åæå®ææ´æ°
git pull
changelog-generate update
# æ¥ç [Unreleased] çå
容
changelog-generate preview
åºæ¯ 3: å叿°çæ¬
# 1. æ´æ° CHANGELOG
changelog-generate update
# 2. é¢è§å°è¦åå¸çå
容
changelog-generate preview
# 3. åå¸çæ¬
changelog-generate release
# 4. æäº¤åæ¨é
git add CHANGELOG.md
git commit -m "chore(release): 2.0.0"
git tag v2.0.0
git push && git push --tags
åºæ¯ 4: CI/CD èªå¨å
GitHub Actions:
name: Update Changelog
on:
push:
branches: [main]
jobs:
changelog:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Update Changelog
run: |
npm install -g changelog-generate
changelog-generate update
- name: Commit
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add CHANGELOG.md
git commit -m "docs: update changelog" || true
git push
CLI å½ä»¤åè
init – åå§åé
ç½®
changelog-generate init
交äºå¼å建 .changelogrc.json é
ç½®æä»¶ã
generate – çæ CHANGELOG
changelog-generate generate [options]
Options:
-f, --from <tag> èµ·å§æ ç¾
-t, --to <tag> ç»ææ ç¾ (é»è®¤: HEAD)
-o, --output <file> è¾åºæä»¶ (é»è®¤: CHANGELOG.md)
--all å
嫿æåå²æäº¤
update – å¢éæ´æ°
changelog-generate update [options]
Options:
-f, --from <tag> èµ·å§æ ç¾ï¼é»è®¤ä¸ºææ°æ ç¾ï¼
-o, --output <file> CHANGELOG æä»¶ (é»è®¤: CHANGELOG.md)
release – åå¸çæ¬
changelog-generate release [options]
Options:
-v, --version <version> çæ¬å·
-d, --date <date> å叿¥æ
-o, --output <file> CHANGELOG æä»¶
preview – é¢è§ Unreleased
changelog-generate preview
æ¾ç¤º [Unreleased] åºåçå 容ã
æä½³å®è·µ
1. è§èç Commit Message
ä½¿ç¨ Conventional Commits è§èï¼
# 好ç示ä¾
git commit -m "feat(auth): add OAuth2 support"
git commit -m "fix(ui): resolve button alignment issue"
git commit -m "docs: update installation guide"
# é¿å
ç示ä¾
git commit -m "update code"
git commit -m "fix bug"
git commit -m "wip"
2. ä½¿ç¨ Commitlint
å®è£ commitlint æ£æ¥æäº¤æ¶æ¯ï¼
npm install --save-dev @commitlint/cli @commitlint/config-conventional
é
ç½® .commitlintrc.json:
{
"extends": ["@commitlint/config-conventional"]
}
3. Git Hooks èªå¨å
ä½¿ç¨ husky å¨æäº¤æ¶æ£æ¥ï¼
npm install --save-dev husky
# .husky/commit-msg
npx commitlint --edit $1
4. å®ææ´æ°
建议å¨ä»¥ä¸æ¶æºæ´æ° CHANGELOGï¼
- æ¯æ¬¡ PR åå¹¶å
- æ¯å¨å®ææ´æ°
- åå¸åå¿ é¡»æ´æ°
5. çæ¬å叿µç¨
# 1. ç¡®ä¿ææåæ´å·²æäº¤
git status
# 2. æ´æ° CHANGELOG
changelog-generate update
# 3. é¢è§å
容
changelog-generate preview
# 4. åå¸çæ¬
changelog-generate release
# 5. å®¡æ¥ CHANGELOG.md
git diff CHANGELOG.md
# 6. æäº¤åæ ç¾
git add CHANGELOG.md
git commit -m "chore(release): 2.0.0"
git tag v2.0.0
# 7. æ¨é
git push && git push --tags
ä¾èµå®è£
# ä½¿ç¨ nvm 管ç Node.js çæ¬
nvm use 18
# å®è£
ä¾èµ
cd ~/.claude/skills/changelog-generator
npm install
ææ¯æ
- simple-git: Git æä½
- conventional-commits-parser: æäº¤è§£æ
- semver: çæ¬ç®¡ç
- handlebars: 模æ¿å¼æ
- commander: CLI æ¡æ¶
- inquirer: 交äºå¼å½ä»¤è¡
- chalk: ç»ç«¯é¢è²
- ora: å è½½å¨ç»
æ éæé¤
é®é¢ 1: æ¾ä¸å° Git ä»åº
é误: Not a git repository
è§£å³:
# ç¡®ä¿å¨ Git ä»åºç®å½ä¸
git status
# æåå§å Git ä»åº
git init
é®é¢ 2: æ æ³è§£ææäº¤
åå : æäº¤æ¶æ¯ä¸ç¬¦å Conventional Commits è§è
è§£å³: ä¿®æ¹é ç½®ï¼å°ä¸ç¬¦åè§èçæäº¤å½ç±»å° “Other” ç±»åã
é®é¢ 3: çæç CHANGELOG 为空
æ£æ¥:
# æ¥çæäº¤åå²
git log --oneline
# æ£æ¥é
ç½®ä¸çæé¤è§å
cat .changelogrc.json | grep exclude
æ©å±åèªå®ä¹
èªå®ä¹æ¨¡æ¿
å建èªå®ä¹æ¨¡æ¿ custom-template.hbs:
# åæ´æ¥å¿
## çæ¬ ()
****
-
é 置使ç¨ï¼
{
"template": {
"path": "./custom-template.hbs"
}
}
æ·»å æ°çæäº¤ç±»å
å¨ .changelogrc.json 䏿·»å ï¼
{
"types": [
{
"type": "security",
"section": "Security",
"emoji": "ð",
"priority": 2
}
]
}
ä¸å ¶ä»å·¥å ·éæ
ä¸ semantic-release éæ
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/changelog",
"@semantic-release/npm",
"@semantic-release/git"
]
}
ä¸ Renovate éæ
.renovate.json:
{
"automerge": true,
"prCreation": "immediate",
"commitMessagePrefix": "chore(deps):"
}
çæ¬: 1.0.0 ä½è : Peter Fei 许å¯: MIT