principled-git-commitlisted
Install: claude install-skill rhino-ty/principled-git-commit
# Commit Conventions (Korean prose variant)
> Conventional Commits 1.0.0 + Tim Pope + `awesome-copilot/git-commit` + 200-commit 실측 분석을 통합한 보편 commit 컨벤션. 프로젝트 특화 dialect (���메인 고유명사, 커스텀 trailer, PDCA 같은 워크플로 통합)는 `<project>/docs/references/COMMIT.md`에 — §15 Dialect Loading 참조.
>
> **TL;DR**: `type(scope): summary` (≤100자, lowercase, imperative) + 1-2줄 컨텍스트 + `- ` bullet body (평균 16줄). `##` 헤더 X. body는 영문 default. atomic + leaves-repo-green + why-over-what.
---
## 0. Principles
Commit이 만족시켜야 할 4 reader — **사람 + AI 모두**:
1. **`git log --oneline` 스캐너** — summary 한 줄로 컨텍스트 잡으려는 사람 (가장 많음)
2. **`git blame <file>` 추적자** — "왜 이 줄이 여기 있나" 디버깅 중
3. **`git bisect` 사냥꾼** — production fire 중, 깨진 commit 찾는 사람
4. **AI agent** — `/clear` 후 컨텍스트 복원, PR 리뷰, changelog 생성, NL 질의 → 코드 위치 매핑. **`grep` + 임베딩 검색 + 일관된 구조에 의존**. atomic 단위 + 도메인 keyword + 영문 body + 명시 trailer가 결정적
5개 principle은 이 4 reader를 동시에 만족시키는 최소 룰. 의문 생기면 회귀.
### 0.1 Atomic — 한 commit = 한 의도
하나의 논리적 변경만 담는다. "fix + style + docs" 같이 묶지 말 것.
→ **Bisect / revert / cherry-pick 모두 atomic 전제**. AI도 mixed commit은 한쪽만 잡아 hallucinate.
> 판단: "이 commit을 revert해야 할 때 다른 변경까지 같이 revert하는가?" → YES면 split.
### 0.2 Leaves repo green — 모든 commit은 green build
각 commit 직후 `tsc --noEmit` + `lint` + `build` 통과해야 함. WIP / "next commit will fix this" 금지.
→ **Bisect signal 신뢰성**. broken-state commit이 끼면 "원인" 판정 부정확. AI 자동 분석도 같은 이유로 영향.
### 0.3 Why over what — diff가 못 알려주는 것만 본문에
diff는 WHAT을 보여줌. body는 **WHY** (motivation / trade-off