Optimization check-commit-message

Git 커밋 메시지 검증 스킬. Conventional Commits 형식, 커밋 타입, 스코프, 제목 규칙 준수 여부를 검사한다. convention-commit 스킬의 규칙을 기반으로 검증을 수행한다.

install
source · Clone the upstream repo
git clone https://github.com/sunLeee/optimization
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sunLeee/optimization "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/quality/check/check-commit-message" ~/.claude/skills/sunleee-optimization-check-commit-message && rm -rf "$T"
manifest: .claude/skills/quality/check/check-commit-message/SKILL.md
source content

커밋 메시지 검증

Git 커밋 메시지의 형식과 품질을 검증한다.

목적

  • Conventional Commits 형식 준수 검증
  • 커밋 타입 유효성 검사
  • 제목(subject) 규칙 검증
  • 본문(body) 및 푸터(footer) 형식 검증

사용법

/check-commit-message "feat(api): Add user endpoint"
/check-commit-message --recent 5
/check-commit-message --staged
옵션설명
"메시지"
특정 커밋 메시지 검증
--recent N
최근 N개 커밋 검증
--staged
스테이지된 변경에 대한 메시지 제안

검증 프로세스

1단계: 형식 파싱

커밋 메시지를 파싱하여 구성 요소 추출:

flowchart TD
    Input["<type>(<scope>): <subject>"]

    Parse[파싱 결과]

    Input --> Parse

    Parse --> Type["type: feat"]
    Parse --> Scope["scope: api"]
    Parse --> Subject["subject: Add user endpoint"]
    Parse --> Body["body: (없음)"]
    Parse --> Footer["footer: (없음)"]

    style Input fill:#e1f5ff
    style Parse fill:#fff4e1
    style Type fill:#e1ffe1
    style Scope fill:#e1ffe1
    style Subject fill:#e1ffe1
    style Body fill:#e1ffe1
    style Footer fill:#e1ffe1

2단계: 규칙 검증

항목규칙
type유효한 타입 (feat, fix, docs 등)
scope선택적, 괄호로 감싸기
subject50자 이내, 명령형, 마침표 없음
body72자 줄바꿈, 빈 줄로 구분
footerBREAKING CHANGE, Fixes # 형식

3단계: 결과 보고

## 커밋 메시지 검증 결과

### 메시지
feat(api): Add user endpoint

### 검증 결과: ✓ 통과

| 항목 | 값 | 상태 |
|------|-----|------|
| type | feat | ✓ |
| scope | api | ✓ |
| subject | Add user endpoint | ✓ |
| 길이 | 28자 | ✓ (≤50) |
| 형식 | 명령형 | ✓ |
| 마침표 | 없음 | ✓ |

검증 규칙

이 스킬은 검증(validation)만 수행합니다. 규칙 정의는 [@skills/convention-commit/SKILL.md] 스킬을 참조하세요.

@skills/convention-commit/SKILL.md

검증 항목 요약

항목검증 내용심각도
형식Conventional Commits 형식 준수Critical
타입유효한 타입 (상세: convention-commit 참조)Critical
제목50자 이내, 명령형, 한국어Critical
본문한국어, 기술 용어는 영어, 72자 줄바꿈Warning
푸터Co-Authored-By 사용 금지Critical

상세 규칙 (타입 목록, 스코프, 본문 작성법 등):

/convention-commit
실행

심각도 기준

심각도의미동작
Critical필수 규칙 위반실패 처리
Warning권장 규칙 위반경고 표시
Info개선 권장정보 표시

예시

예시 1: 단일 메시지 검증

/check-commit-message "feat(auth): Add OAuth2 support"

출력:

## 커밋 메시지 검증 결과

### 검증 결과: ✓ 통과

| 항목 | 값 | 상태 |
|------|-----|------|
| type | feat | ✓ |
| scope | auth | ✓ |
| subject | Add OAuth2 support | ✓ |
| 길이 | 30자 | ✓ |

예시 2: 위반 사례

/check-commit-message "Added new feature."

출력:

## 커밋 메시지 검증 결과

### 검증 결과: ✗ 실패

### 위반 목록

| 항목 | 문제 | 권장 수정 |
|------|------|----------|
| type | 누락 | `feat:` 접두사 추가 |
| 형식 | 과거형 사용 | "Added" → "Add" |
| 마침표 | 끝에 마침표 | 마침표 제거 |

### 권장 메시지
feat: Add new feature

예시 3: 최근 커밋 검증

/check-commit-message --recent 3

출력:

## 최근 3개 커밋 검증 결과

### 요약
- 검사: 3개
- 통과: 2개
- 실패: 1개

### 상세

| 커밋 | 메시지 | 상태 |
|------|--------|------|
| a1b2c3d | feat(api): Add user endpoint | ✓ |
| e4f5g6h | fix: Handle null values | ✓ |
| i7j8k9l | updated readme | ✗ |

### 위반 상세: i7j8k9l
- type 누락: `docs:` 접두사 필요
- 대문자 시작: "Updated" → "Update"

### 권장 수정
git commit --amend -m "docs: Update README"

예시 4: 스테이지 기반 제안

/check-commit-message --staged

출력:

## 스테이지된 변경 분석

### 변경 파일
- src/api/users.py (수정)
- tests/test_users.py (추가)

### 권장 커밋 메시지

**옵션 1** (권장):
feat(api): Add user management endpoints

Add CRUD operations for user resource:
- GET /users
- POST /users
- PUT /users/{id}
- DELETE /users/{id}

**옵션 2**:
feat(users): Implement user API with tests

Git Hook 통합

pre-commit hook으로 자동 검증 설정:

# .git/hooks/commit-msg
#!/bin/bash
/path/to/check-commit-message "$1"

또는 commitlint 사용:

npm install --save-dev @commitlint/cli @commitlint/config-conventional
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js

관련 스킬

스킬역할
[@skills/convention-commit/SKILL.md]커밋 컨벤션 참조
[@skills/git-commit-push/SKILL.md]커밋 및 푸시 자동화

Changelog

날짜버전변경 내용
2026-01-221.2.0convention-commit 참조 방식으로 리팩토링, 한국어 본문 규칙 추가
2026-01-221.1.0Co-Authored-By 푸터 금지 규칙 추가
2026-01-211.0.0초기 생성 - Conventional Commits 검증

Gotchas (실패 포인트)

  • scope 없는 commit
    feat: add
    feat(scope): add
    로 수정 필요
  • 제목 50자 초과 탐지 — GitHub UI에서 잘림
  • Co-Authored-By 푸터 탐지 (팀 규칙: 사용 금지)
  • 한국어 제목은 문자 수 계산이 달라질 수 있음 — 바이트 vs 문자 구분