| name | commit-helper |
| description | git 변경사항을 분석하고 Conventional Commits 패턴에 따라 한국어로 커밋 메시지를 작성하여 커밋을 생성합니다. 사용자가 커밋을 만들어달라고 요청하거나, 변경사항을 커밋해야 할 때 사용합니다. |
| model | claude-haiku-4-5 |
Commit Helper
Overview
이 스킬은 git 저장소의 변경사항을 분석하여 Conventional Commits 패턴에 따라 한국어로 커밋 메시지를 작성하고 커밋을 생성합니다. 변경사항이 여러 유형에 걸쳐 있는 경우 논리적으로 분류하여 여러 개의 커밋으로 나눕니다.
Instructions
Step 1: 사용자 의도 파악
변경사항을 종합적으로 분석하여 사용자의 의도를 명확히 파악하세요:
- git diff, 변경된 파일, 코드 내용을 종합 분석
- 변경의 주요 목적이 무엇인지 추론
- 적절한 커밋 타입 (feat/fix/refactor 등) 판단
- 프로젝트의 기존 커밋 메시지 스타일 참고
의도가 모호한 경우 AskUserQuestion 도구를 사용하여 질문하세요:
다음과 같은 상황에서 질문이 필요합니다:
- 여러 가지 해석이 가능한 변경사항
- 변경 이유가 불명확한 경우
- 기능 추가인지 버그 수정인지 애매한 경우
- 리팩토링인지 기능 개선인지 구분이 어려운 경우
질문 예시:
AskUserQuestion({
questions: [{
question: "이번 변경의 주요 목적은 무엇인가요?",
header: "변경 목적",
multiSelect: false,
options: [
{
label: "새로운 기능 추가",
description: "사용자에게 새로운 기능을 제공"
},
{
label: "버그 수정",
description: "기존 버그나 오류를 수정"
},
{
label: "리팩토링",
description: "동작은 유지하면서 코드 개선"
},
{
label: "문서/설정 변경",
description: "문서 업데이트, 빌드 설정 등"
}
]
}]
})
중요: 사용자 답변을 받은 후 그 의도에 맞춰 커밋 타입과 메시지를 작성하세요.
Step 2: 변경사항 분류
변경사항을 다음 기준으로 논리적 그룹으로 분류:
- 변경 타입별 분류 (Conventional Commits 타입 기준)
- 기능/모듈별 분류 (연관된 변경사항끼리 그룹화)
- 파일 종류별 분류 (문서, 소스코드, 설정 파일 등)
각 그룹은 하나의 독립적인 커밋이 될 수 있어야 합니다.
Step 3: Conventional Commits 타입 결정
각 그룹에 적합한 타입 선택:
- feat: 새로운 기능 추가
- fix: 버그 수정
- docs: 문서만 변경 (코드 변경 없음)
- style: 코드 의미에 영향 없는 변경 (공백, 포맷팅, 세미콜론 등)
- refactor: 버그 수정이나 기능 추가 없는 코드 개선
- test: 테스트 추가, 테스트 리팩토링
- chore: 빌드 업무, 패키지 매니저 설정 등
- perf: 성능 개선
Step 4: 한국어 커밋 메시지 작성
각 그룹에 대해 다음 형식으로 메시지 작성:
<type>: <제목>
<본문>
제목 작성 규칙:
- 50자 이내로 간결하게
- 명령형 현재 시제 사용 (예: "추가", "수정", "제거")
- 마침표 없이 작성
- 무엇을 변경했는지 명확히 표현
본문 작성 규칙 (선택사항, 복잡한 변경사항인 경우):
- 제목과 본문 사이 빈 줄 추가
- 각 줄은 72자 이내
- 변경 이유와 변경 전/후 동작 차이 설명
- 여러 변경사항이 있으면 불릿 포인트 사용
중요: 다음 규칙을 반드시 준수:
- 순수 한국어로만 작성
- Claude Code, Claude, AI 등 도구 관련 언급 절대 금지
- Co-Authored-By 라인 추가 금지
- emoji 사용 금지
- 개발자가 직접 작성한 것처럼 자연스럽게 작성
Step 5: 커밋 실행
각 그룹에 대해 순차적으로:
Bash tool로 해당 파일들 스테이징
git add <file1> <file2> ...Bash tool로 커밋 실행
git commit -m "$(cat <<'EOF' <type>: <제목> <본문> EOF )"Bash tool로 커밋 결과 확인
git log -1 --stat다음 그룹으로 이동하여 반복
Step 6: 완료 보고
모든 커밋 완료 후:
- 생성된 커밋 목록 요약
- 각 커밋의 타입과 제목 표시
- 추가 작업 필요 여부 확인
Examples
Example 1: 플러그인 하이라이트 추가
변경사항:
lua/bityoungjae/groups/plugins/telescope.lua추가lua/bityoungjae/groups/init.lua에 telescope 그룹 등록
커밋 메시지:
feat: telescope.nvim 하이라이트 그룹 추가
- TelescopeNormal, TelescopeBorder 등 기본 하이라이트 정의
- 프롬프트, 결과, 프리뷰 영역별 색상 설정
- 선택 항목 강조 스타일 적용
Example 2: 여러 타입의 변경사항
변경사항:
README.md업데이트 (문서)lua/bityoungjae/palette.lua색상값 수정 (버그)lua/bityoungjae/groups/plugins/neo-tree.lua추가 (기능)
커밋 1:
docs: README에 지원 플러그인 목록 추가
커밋 2:
fix: Muted Rose 색상 대비 부족 문제 수정
에러 메시지 가독성 향상을 위해 명도 조정
커밋 3:
feat: neo-tree.nvim 하이라이트 그룹 추가
- NeoTreeNormal, NeoTreeFloatBorder 정의
- 디렉토리, 파일, git 상태별 색상 설정
- 선택 및 포커스 상태 스타일 적용
Example 3: 리팩토링
변경사항:
lua/bityoungjae/groups/editor.lua의 중복 색상 참조 제거lua/bityoungjae/groups/syntax.lua의 중복 색상 참조 제거lua/bityoungjae/util.lua에 공통 함수 추출
커밋 메시지:
refactor: 하이라이트 그룹 공통 유틸 함수 추출
- blend_colors 헬퍼 함수 추가
- 중복된 색상 계산 로직 통합
- editor, syntax 그룹에서 재사용
Best Practices
- 원자적 커밋: 각 커밋은 하나의 논리적 변경사항만 포함
- 의미 있는 제목: 커밋 로그만 봐도 변경 내용 파악 가능하게
- 일관된 형식: Conventional Commits 패턴 엄격히 준수
- 적절한 분류: 변경사항이 많으면 여러 커밋으로 분할
- 자연스러운 메시지: 개발자가 직접 작성한 것처럼 자연스럽게
Common Pitfalls
❌ 피해야 할 것:
- "Claude Code로 생성", "AI 작성" 등의 언급
- Co-Authored-By: Claude 라인 추가
- 너무 많은 변경사항을 하나의 커밋에 포함
✅ 올바른 예:
- 순수 한국어 커밋 메시지
- 명확한 타입 분류
- 적절한 커밋 단위 분할
- 개발자의 자연스러운 어투