Imported from yes24-AX/ax-poc-web (
.claude/skills/commit/SKILL.md). Install upstream withnpx skills add yes24-AX/ax-poc-web --skill commit. Copyright stays with the author.
팀 표준 커밋
팀에서 정한 Conventional Commits 규칙으로 커밋 메시지를 만들고 커밋까지 수행한다.
규칙 전문은 references/format.md, 판단이 애매하면 references/examples.md를 읽는다.
절차
1. 상태 수집 (한 번에 병렬 실행)
git status --porcelaingit diff --staged(스테이징된 게 없으면git diff)git log -8 --pretty=format:%s— 팀의 실제 작성 관행을 여기서 확인한다git rev-parse --abbrev-ref HEAD— 브랜치명에서 이슈 키를 추출한다
2. 스테이징 판단
- 스테이징된 변경이 있으면 그것만 커밋한다.
- 스테이징된 게 없으면 변경 파일 목록을 보여주고 무엇을 커밋할지 확인한다. 임의로
git add -A하지 않는다. - 사용자가 파일을 지정했으면 그 파일만
git add한다.
3. 메시지 조립
references/format.md의 규칙에 따라 조립한다. 요약:
<type>(<scope>): <제목>형식, 제목은 한국어 개조식, 마침표 없음, 50자 이내 권장- 변경 이유나 맥락이 필요하면 빈 줄 뒤에 본문을 쓴다. 무엇을 했는지가 아니라 왜 했는지를 쓴다
- 변경 단위가 2개 이상이면 본문을 번호 계층으로 묶는다. 번호 줄 = 변경 단위 하나,
그 아래 3칸 들여쓴
- 대상: 내용·- 사유: …. 변경 단위가 1개면 번호 없이-목록만 - 본문은 끊어 쓴다. 설명문 금지 — 한 줄 한 사실, 명사형 종결(없음·조정·개선·제거…),
접속사 대신 라벨(
기존:사유:대체:주의:). 라벨은 대상·맥락 이름이고, 동작어(추가·제거·수정)는 줄 끝에 둔다 - 이슈 키가 있으면 푸터에
Refs: KEY-1234
4. 자체 검증
커밋 전에 다음을 확인한다. 하나라도 어긋나면 메시지를 고친다.
- type이 허용 목록에 있는가
- 제목이 명령형 영어 번역투가 아닌 자연스러운 한국어인가
- 변경 단위가 2개 이상인데
기존:변경:사유:를 평평하게 나열하지 않았는가 - 각
사유:가 그것이 설명하는 번호 항목 아래에 있는가 - 제목에
·로 나열한 순서와 번호 항목 순서가 같은가 - 번호 줄에 라벨이 없고, 깊이가 2단계를 넘지 않는가
- 동작어 라벨(
추가:제거:수정:)을 쓰지 않았는가,변경:이 한 항목에 두 줄 이상 없는가 - 본문 각 줄이 명사형으로 끊겼는가 (
~했다~한다~때문이다로 끝나는 줄이 없는가) - 한 줄에 사실이 하나만 담겼는가 (쉼표로 두 사실을 잇지 않았는가)
- 제목에 마침표가 없고 50자를 넘지 않는가
- diff에 실제로 없는 내용을 지어내지 않았는가
5. 커밋
메시지 전문을 펜스 코드블록(```text)에 담아 사용자에게 먼저 보여준 뒤 heredoc(<<'EOF')으로 커밋한다.
코드블록이어야 번호·들여쓰기가 마크다운 목록으로 재배치되지 않는다.
--no-verify를 붙이지 않는다. 훅이 실패하면 원인을 보고하고 고친 뒤 1회만 재시도한다.
6. 커밋 이후
푸시는 사용자가 명시적으로 요청할 때만 한다. 커밋 결과 해시와 제목만 짧게 보고한다.
안전 규칙
.env,*.pem, 자격증명·토큰으로 보이는 문자열이 스테이징에 포함되면 커밋 전에 경고하고 확인을 받는다- 서로 무관한 관심사가 2개 이상 섞여 있으면 커밋 분할을 제안한다. 강제하지 않고 사용자 판단에 맡긴다
- 이미 만들어진 커밋을
--amend로 고치는 것은 사용자가 요청할 때만 한다