Python 20줄로 'AI 커밋 메시지' 문제 해결하기
요약
Claude Code와 Python을 활용하여 20줄의 코드로 고품질의 AI 커밋 메시지를 생성하는 방법을 소개합니다. 시스템 프롬프트와 git diff를 결합하여 Conventional Commits 규격을 준수하는 자동화 도구 구현법을 다룹니다.
핵심 포인트
- Claude Code의 OAuth 세션을 활용해 별도 API 키 없이 작동 가능
- 시스템 프롬프트에 Conventional Commits 규격과 글자 수 제한 설정
- 단순 요청 대신 git diff를 맥락으로 제공하여 정확도 향상
- MCP 도구로 래핑하여 Claude Code 대화 중 직접 호출 가능
혹시 트렌드에 맞는 게시물을 본 적이 있을 겁니다 — "AI에게 내 커밋 메시지를 작성해 달라고 요청했는데 정말 민망했다."
저도 그랬습니다. 하지만 그저 그런 결과물을 받아들이는 대신, 저는 그것을 고쳤습니다.
핵심은 이겁니다: 문제는 AI가 커밋 메시지를 작성하는 것이 아닙니다. 문제는 어떻게 요청하느냐입니다. 명확한 시스템 프롬프트 하나와 실제 diff만 결합하면 놀라울 정도로 좋은 결과가 나옵니다.
설정 방법
새로운 패키지나 API 키는 필요 없습니다. 만약 Claude Code를 가지고 있다면, 이미 준비된 것입니다.
#!/usr/bin/env python3
import subprocess
...
그게 전부입니다. 20줄 분량입니다. 내부적으로 claude CLI를 사용하며 — API 키나 설정 파일 없이, 기존 Claude Code OAuth 세션만으로 작동합니다.
작동 원리
시스템 프롬프트가 핵심적인 역할을 합니다. 세 가지 제약 조건이 있습니다:
커밋 메시지만 출력하세요— 서문이나 설명 금지Conventional Commits를 따르세요—feat,fix,chore등최대 72자— git log에서 가독성을 유지
diff가 맥락을 제공합니다. 단순히 "커밋 메시지를 작성해 줘"라고 요청하는 것이 아닙니다. "이 정확한 변경 사항들을 고려했을 때, 무슨 일이 일어났는가?"라고 질문하는 것입니다. 이것이 훨씬 더 답변하기 쉬운 질문입니다.
사용 방법
# Claude Code를 가지고 있다면 설정이 필요 없습니다. 다음만 실행하세요:
git add .
python /path/to/git_commit.py
...
또는 git 별칭(alias)으로 연결할 수 있습니다:
git config --global alias.ai '!python /path/to/git_commit.py'
# git ai
결과물 비교
이전:
update stuff
fix bug
WIP
...
이후:
feat(api): add generate_commit_message tool to MCP server
fix(auth): handle expired token on refresh
refactor(db): extract query builder into separate module
MCP 도구로도 활용하기
저는 또한 Claude Code가 모든 대화에서 직접 호출할 수 있도록 이를 MCP 도구로 래핑했습니다:
@mcp.tool()
def generate_commit_message(diff: str) -> str:
"""git diff 문자열로부터 Conventional Commits 메시지를 생성합니다."""
...
전체 프로젝트는 github.com/enjoy-kumawat/my-git-manager에서 확인하세요.
20줄 분량입니다. 새로운 의존성도, API 키도 필요 없습니다. 항상 Conventional Commits를 따릅니다.
부끄러운 점은 이것을 만드는 데 이렇게 오래 걸렸다는 사실입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기