
commit-quiz는 커밋 직전 변경 내용을 바탕으로 퀴즈를 내는 pre-commit 훅이다. AI가 만든 코드를 충분히 검토하지 않고 커밋하는 일을 줄이려는 도구로, 정답을 맞혀야 커밋이 진행된다.
설치하려면 Node 18 이상과 Claude Code, OpenAI Codex CLI, Gemini CLI 중 하나가 필요하다. 다음 명령으로 전역 설치한 뒤, 적용할 저장소에서 훅을 설치한다.
npm install -g commit-quiz # once published to npm
npm install -g github:Cristopheer96/commit-quiz # meanwhile, straight from GitHub
cd /path/to/repo
commit-quiz install
이 명령은 저장소가 husky를 사용하면 .husky/pre-commit에, 그렇지 않으면 .git/hooks/pre-commit에 훅을 추가한다. 제거할 때는 commit-quiz uninstall을 실행한다. 훅은 저장소마다 설치해야 하지만, husky를 사용하는 저장소에서는 훅 설정이 버전 관리되므로 팀원과 공유할 수 있다.
커밋할 때 도구는 스테이징된 변경 사항(git diff --cached)으로 참인 문장 2개와 그럴듯하지만 틀린 문장 2개를 만든다. 터미널에서는 대화형 화면으로 답하고, VS Code나 Cursor에서 터미널 없이 커밋할 때는 macOS의 기본 대화상자 또는 Linux의 zenity를 이용한다. 정답이면 커밋을 진행하고, 오답이면 커밋을 중단한 뒤 변경 내용의 실제 요약을 보여준다.
전송 범위와 한계
퀴즈는 기본적으로 변경된 줄이 20줄 이상인 커밋에서만 실행된다. 이 기준은 설정할 수 있다. 병합·리베이스·체리픽 중에는 실행하지 않으며, 기준보다 적은 변경 사항은 전송하지 않는다. 전송되는 것은 변경 파일 경로가 포함된 스테이징 diff와 고정된 지시문뿐이다. diff는 통합 문맥 1줄을 포함하고 30KB로 제한된다. 저장소 이름, Git 기록, 작성자 정보, 다른 파일은 전송하지 않는다.
diff는 사용자가 선택한 AI 제공업체의 CLI를 통해 해당 업체의 API로 전송된다. 지원 대상은 Anthropic의 claude, 오픈AI의 codex, 구글의 gemini이며, 기본적으로 PATH에서 먼저 발견한 CLI를 사용한다. git config commit-quiz.cli로 제공업체를 지정할 수 있다. commit-quiz 자체 서버나 중개자는 없다. 도구는 데이터를 보관하지 않고 텔레메트리도 수집하지 않는다. 기본값이 꺼진 디버그 로그에는 실행 시간, 선택한 인터페이스, 답변이 기록되지만 diff는 기록되지 않는다.
잠금 파일과 *.snap, *.svg는 기본 제외 대상이다. 민감한 경로는 저장소별 또는 전역 Git 설정으로 추가 제외할 수 있으며, 제외한 파일은 전송되지 않고 줄 수 기준에도 포함되지 않는다.
git config --add commit-quiz.exclude "config/credentials/**"
git config --add commit-quiz.exclude "*.pem"
git config --add commit-quiz.exclude "db/seeds/customers.rb"
한 번의 커밋에서 퀴즈를 건너뛰려면 COMMIT_QUIZ=0 git commit …을 사용한다. --no-verify도 가능하지만, 이 옵션은 모든 훅을 건너뛴다. 완전한 로컬 실행은 아직 지원하지 않는다. 조직 정책상 AI 제공업체에 diff를 보낼 수 없다면 도구를 설치하지 말아야 한다.
매 퀴즈마다 AI 호출이 한 번 발생하며, 제작자는 처리에 약 8~15초가 걸리고 비용이 든다고 설명한다. git commit --no-verify로 훅을 건너뛸 수 있어 보안 장치가 아니라 개발 문화 조성을 목표로 한다. 큰 diff는 약 30KB에서 잘리므로 퀴즈가 충분하지 않을 수 있다. Linux의 편집기 대화상자는 zenity가 필요하며, 설치되지 않았을 때는 커밋이 허용된다. Windows의 터미널 커밋은 동작할 것으로 예상되지만 시험되지는 않았고, 편집기 커밋은 실패 시 훅을 통과한다.
최근 커밋이나 diff 파일로 설치 없이 시험할 수도 있다.
cd /path/to/repo
commit-quiz --range HEAD~1..HEAD --dry-run # quiz over the last commit, answers visible
commit-quiz --range HEAD~1..HEAD # same but interactive
commit-quiz --diff-file changes.diff --dry-run
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요