| name | commit |
| description | WSS-iOS-V2 프로젝트에서, 이번 Claude Code 세션에 Edit/Write로 만지거나 새로 만든 파일만 골라 커밋할 때 사용한다. commit-all(전부 스테이징)·commit-staged(이미 스테이징된 것만)와 달리 세션이 건드린 파일만 선택적으로 스테이징한다. "방금 바꾼 거 커밋", "세션 변경분 커밋", 또는 "/commit" 같은 요청에 트리거. 커밋 양식은 `[Type] |
| metadata | {"short-description":"이번 세션에 Claude가 수정한 파일만 WSS 양식으로 커밋"} |
Commit Session Changes (WSS-iOS-V2)
이번 세션에 Claude가 Edit/Write 도구로 수정·생성한 파일만 골라 스테이징하고 커밋한다.
무관한 파일은 건드리지 않는다.
커밋 양식 (고정)
[Type] #<이슈번호> - <한글 내용>
예: [Fix] #132 - 작품 평가 뒤로가기 경합 수정
[Type]: 아래 Type 표에서 변경 성격에 맞는 하나. 브랜치의 Type과 무관 — 이번 변경 내용 기준으로 고른다(예: Feat/#132 브랜치라도 문서만 고쳤으면 [Docs]).
#<이슈번호>: 현재 브랜치명에서 자동 추출한다 (→ 이슈 번호 추출).
<한글 내용>: 변경을 한 줄로 요약한 한글 설명. 간결하게, 무엇을 했는지.
- 이 양식에서 벗어나지 않는다. 헷갈리면
git log --oneline -8의 실제 커밋들이 진실.
이슈 번호 추출
git branch --show-current로 현재 브랜치명을 얻는다 (정규형 <Type>/#<번호>, 예: Feat/#132).
- 브랜치명에서
# 뒤 숫자, 없으면 마지막 / 뒤 숫자를 이슈 번호로 쓴다.
- 추출 실패(분리 HEAD, 비표준 브랜치 등) 시 →
git log --oneline -8에서 최근 커밋의 #번호를 재사용하거나, 그래도 모호하면 사용자에게 묻는다. 임의로 지어내지 않는다.
절차
-
세션 수정 파일 회상:
- 이번 대화에서 Edit/Write로 수정·생성한 모든 파일 경로를 나열한다.
- 세션 중 수정한 파일이 없으면 중단하고 커밋할 게 없다고 알린다.
-
git과 교차 검증:
git status --short 실행.
- 세션 파일 중 git에 modified/added/deleted로 잡힌 것만 남긴다.
- git 변경이 없는 세션 파일은 제외하고 이유를 메모(이미 커밋됨/되돌려짐/변화 없음).
-
이슈 번호 확보: 위 이슈 번호 추출 절차 수행.
-
스테이징 & 커밋 (묻지 않고 바로 진행):
/commit 호출 자체가 커밋 승인이다. "커밋할까요?"로 멈춰 묻지 않는다.
git add <명시적 파일 경로> — git add -A나 git add .는 쓰지 않는다.
git diff --cached --stat, git diff --cached --name-only로 스테이징 내용 확인.
git commit -m "[Type] #번호 - 내용"으로 커밋.
- 샌드박스가
.git 쓰기를 막으면 좁은 사유를 달아 권한 상승 후 재시도.
-
검증·보고:
git status --short, git log --oneline -1 실행.
- 커밋된 메시지·해시·포함 파일, 남은 unstaged/untracked 파일을 보고한다.
- 메시지·파일이 마음에 안 들면 사용자가 amend를 요청할 수 있게 결과를 명확히 드러낸다(로컬 커밋이라 되돌리기 쉽다).
- push는 하지 않는다 — 외부로 나가는 동작이므로 사용자가 명시적으로 요청할 때만.
Type 표
[Type]은 반드시 ../commit-types.md를 읽어 그 표에서 변경 성격에 맞는 하나를 고른다.
표를 여기 복제하지 않는다 — 그 파일이 단일 진실 소스다. 커밋 헤더에서는 대괄호로 감싼다([Feat] 등).
- 커밋 메시지에 "session"·"Claude"를 언급하지 않는다.
안전 규칙
- 이번 세션에 Claude가 수정하지 않은 파일은 절대 스테이징하지 않는다.
git add -A·git add .·글롭 패턴 금지 — 항상 명시적 파일 경로.
- 사용자가 명시적으로 요청하지 않는 한
git reset·git checkout 등 파괴적 명령 금지.
- 세션 파일 목록이 비었거나 git 변경과 하나도 안 맞으면 커밋하지 말고 상황을 설명한다.
- 세션 변경이 명백히 무관한 주제들로 갈리면 여러 커밋으로 분할을 제안하고 사용자에게 묻는다.