[STK8-01] commit-msg 훅 신규 생성 (Codex)

작업 내용 (설계 의도)

변경 사항

.githooks/commit-msg 훅을 신규 생성한다. staged diff를 Codex에 전달해 프로젝트 컨벤션([no-jira] 또는 [STK-XX] - type : 제목)에 맞는 커밋 메시지를 자동 생성한다.

사용자가 메시지를 직접 작성한 경우(-m 플래그 또는 에디터 입력)에는 덮어쓰지 않는다. Codex 실패 시 커밋을 차단하지 않는다.

다이어그램

처리 흐름

sequenceDiagram
    participant G as Git
    participant H as commit-msg hook
    participant CO as Codex CLI

    G->>H: $1 (커밋 메시지 파일 경로)
    H->>H: 파일 내용 확인
    alt 이미 내용 있음
        H-->>G: exit 0 (그대로 사용)
    else 비어있음
        H->>H: git diff --cached
        alt diff 없음
            H-->>G: exit 0
        else diff 있음
            H->>CO: diff 전달 + 메시지 생성 요청
            alt Codex 성공
                CO-->>H: 커밋 메시지
                H->>G: $1 파일에 기록
            else Codex 실패
                H-->>G: exit 0 (경고만 출력)
            end
        end
    end

테스트 케이스

  • staged diff가 있고 메시지 파일이 비어있으면 Codex가 메시지를 생성해 파일에 기록한다
  • git commit -m "수동 메시지" 시 파일에 내용이 있으므로 Codex가 덮어쓰지 않는다
  • staged diff가 없으면(빈 커밋) Codex를 호출하지 않는다
  • Codex가 실패(exit non-zero)해도 커밋이 차단되지 않는다