changelog
sakuro/dotfiles
마지막 릴리스 이후의 커밋 내역을 바탕으로 변경 내역 항목을 생성합니다. 사용자가 CHANGELOG.md를 업데이트하거나, 변경 내역 항목을 추가하거나, 변경 사항을 문서화하고자 할 때 사용합니다.
...모든 것을 확장하십시오소개 changelog
changelog 스킬은 지난 릴리스 이후의 Git 커밋 내역을 바탕으로 changelog 항목을 자동으로 생성합니다. 이 스킬은 개발 팀이 프로젝트의 변경 내역을 일관성 있게, 사용자 중심으로 기록할 수 있도록 돕기 위해 설계되었습니다. 이 스킬은 커밋 메시지를 분석하고 사용자에게 직접적인 영향을 미치는 변경 사항과 내부 변경 사항을 구분함으로써, CHANGELOG.md 파일에 최종 사용자와 관련된 의미 있는 업데이트 내용이 반영되도록 보장합니다. 이를 통해 수작업 부담을 줄이고, 변경 사항이 간과되는 것을 방지하며, 릴리스 문서가 정확하고 최신 상태로 유지되도록 합니다.
이 스킬은 커밋 정보를 추출하고, 변경 사항을 분류하며, 항목을 표준화된 형식으로 정리하는 체계적인 워크플로를 제공합니다. 주요 기능으로는 새로운 기능, 버그 수정, 성능 개선, 사용 중단, 보안 업데이트와 같은 사용자 대상 변경 사항을 식별하는 한편, 리팩토링, 테스트 또는 CI/CD 수정과 같은 순수한 내부 변경 사항은 제외하는 것이 포함됩니다. 이 스킬은 커밋 메시지에서 이슈 참조를 자동으로 추출하고, 항목을 미리 정의된 범주(추가, 변경, 수정, 제거, 사용 중단, 보안)로 분류합니다. 또한, 현재 브랜치를 기반으로 changelog 의 적절한 섹션을 결정하며, 버전별 릴리스와 ‘미출시(Unreleased)’ 섹션을 모두 지원합니다. 이 스킬은 Bash 명령어와 Edit 도구를 활용하여 changelog 를 원활하게 읽고 업데이트합니다.
이 스킬은 changelog 의 유지 관리를 간소화하고자 하는 개발자, 릴리스 관리자, 오픈소스 또는 내부 소프트웨어 프로젝트를 관리하는 팀에게 이상적입니다. 특히 잦은 커밋이 발생하거나 여러 기여자가 참여하는 프로젝트에서 유용하며, 사용자에게 영향을 미치는 모든 변경 사항이 일관되게 문서화되도록 보장합니다. 사용자는 시간을 절약하고 오류를 줄일 수 있을 뿐만 아니라, 최종 사용자, 이해관계자 및 기여자에게 업데이트 내용을 명확하게 전달하는 전문적이고 체계적인 ‘ changelog ’의 혜택을 누릴 수 있습니다.
자주 묻는 질문
changelog 스킬은 어떻게 사용하나요?
먼저 프로젝트 저장소에서 이 스킬을 실행하세요. 스킬은 마지막 릴리스 이후의 커밋을 자동으로 감지하고, 사용자에게 영향을 미치는 변경 사항을 분류하며, 이슈 참조를 추출한 후, CHANGELOG.md 파일의 해당 섹션(미출시 또는 버전 관리된 릴리스)을 업데이트합니다.
changelog 에는 어떤 유형의 변경 사항이 포함되나요?
이 스킬은 새로운 기능, 버그 수정, 성능 개선, 호환성 변경, 사용 중단 예정 기능, 보안 수정 등 사용자에게 영향을 미치는 변경 사항을 포함합니다. 리팩토링, 테스트, CI/CD 또는 코드 스타일 업데이트와 같은 내부 변경 사항은 사용자에게 영향을 미치지 않는 한 제외됩니다.
이전 릴리스 태그가 없는 저장소도 처리할 수 있나요?
예, 이전 릴리스 태그가 없는 경우, 이 스킬은 가장 최근의 커밋(최대 50개)을 분석하여 changelog 항목을 생성하고 이를 '미출시' 섹션에 배치합니다.
새로운 항목을 기존 changelog 콘텐츠와 자동으로 병합하나요?
예. 이 스킬은 현재 CHANGELOG.md 파일을 읽고, 해당 섹션이 없으면 새로 생성한 다음, 중복을 피하면서 새 항목을 병합합니다.
커밋 메시지에 이슈 참조를 반드시 포함해야 하나요?
아니요, 이슈 참조는 선택 사항입니다. 참조가 있는 경우 '(#123)' 형식으로 항목에 포함됩니다. 여러 참조가 있는 경우 '(#123, #124)' 형식으로 병합됩니다.
Changelog Generation Skill
Analyzes commits since the last release and adds user-facing changes to CHANGELOG.md.
Instructions
IMPORTANT: When using this skill, announce to the user: "Using changelog skill to generate changelog entries."
1. Get Last Release Tag
# Get the most recent release tagLAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")if [ -z "$LAST_TAG" ]; then echo "No previous release tag found. Will analyze all commits."fi
2. Get Commits Since Last Release
# If tag existsgit log --format="%H %s" "$LAST_TAG"..HEAD# If no tag, get recent commitsgit log --format="%H %s" -50
3. Analyze Each Commit
For each commit, determine if it has user-facing impact:
Include (user-facing):
- New features (
:sparkles:) - Bug fixes (
:bug:) - Performance improvements (
:zap:) - Breaking changes (
:boom:) - Deprecations
- Security fixes (
:lock:)
Exclude (internal):
- Refactoring (
:recycle:) - unless it changes behavior - Tests (
:white_check_mark:) - CI/CD changes (
:construction_worker:) - Documentation (
:memo:) - unless user-facing docs - Code style (
:art:) - Merge commits
4. Extract Issue References
Look for issue references in commit messages:
#123Fixes #123Closes #123Related to #123
5. Categorize Changes
Group entries by category:
### Added- New features### Changed- Changes to existing functionality### Fixed- Bug fixes### Removed- Removed features### Deprecated- Soon-to-be removed features### Security- Security fixes
6. Format Entries
Each entry should:
- Start with imperative verb (Add, Fix, Change, Remove)
- Be concise (one line)
- Include issue reference at end if available
Examples:
- Add list formatting support (#42)- Fix memory leak in data provider (#88)- Change default locale to en-US
7. Determine Target Section
# Get current branchBRANCH=$(git branch --show-current)# Determine target sectionif [[ "$BRANCH" =~ ^release-v([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then # On release branch → target is that version TARGET_SECTION="[${BASH_REMATCH[1]}]"else # Not on release branch → target is Unreleased TARGET_SECTION="[Unreleased]"fi
8. Update CHANGELOG.md
- If target section doesn't exist, create it
- Add/merge entries under the target section
Creating new section if needed:
- For
[Unreleased]: Add after the header, before first version section - For version
[X.Y.Z]: Add after[Unreleased], before previous versions
Example structure:
## [Unreleased]## [0.7.0] - 2024-01-15### Added- New feature description (#123)## [0.6.0] - 2024-01-01...
Use the Edit tool to update CHANGELOG.md.
Workflow
- Get last release tag
- List commits since that tag
- For each commit:
- Read commit message
- Determine if user-facing
- Extract issue references
- Categorize (Added/Changed/Fixed/etc.)
- Determine target section:
- On
release-vX.Y.Zbranch →[X.Y.Z] - Otherwise →
[Unreleased]
- On
- Read current CHANGELOG.md
- Create target section if it doesn't exist
- Merge new entries with existing content in target section
- Update CHANGELOG.md using Edit tool
Guidelines
Entry Writing
- Use imperative mood: "Add" not "Added" or "Adds"
- Be specific but concise
- Focus on user impact, not implementation details
- One logical change per entry
Issue References
- Always include if available
- Format:
(#123)at end of line - Multiple issues:
(#123, #124)
Avoiding Duplicates
- Check existing [Unreleased] entries before adding
- Merge or update if similar entry exists
Example Output
## [Unreleased]### Added- Implement DecimalFormatter for number formatting (#42)- Add locale fallback support### Changed- Update default collation strength to tertiary### Fixed- Fix crash when parsing invalid locale string (#55)- Resolve memory leak in DataProvider (#58)
Arguments
This skill takes no arguments. It always analyzes commits from the last release tag to HEAD.
changelog 설치
스킬 파일을 다운로드하여 .claude/skills/ 디렉터리에 압축을 풀어주세요.
ZIP 다운로드저장소를 클론하고 스킬 파일을 프로젝트에 복사하세요.
git clone https://github.com/sakuro/dotfiles/blob/main/.config/claude/skills/changelog/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
복사





집
