Community코딩 & 개발github.com

Batch 커밋 스킬

작업 중인 변경 사항을 논리적인 여러 커밋으로 나누고, 각 커밋을 검토 가능한 단위로 만든 후 원격 저장소에 푸시합니다. 사용자가 /commit-batches를 요청하거나, 배치 커밋, 분할 커밋을 요청할 때 사용합니다.

Batch 커밋 스킬란 무엇인가요?

이 스킬은 Git 작업 트리에서 스테이징되지 않은 변경 사항을 여러 개의 논리적 커밋으로 분할하여 푸시합니다. 사용자가 '/commit-batches' 명령을 주거나, '배치로 커밋', '커밋 분할', '주제별로 커밋' 같은 표현을 할 때 자동으로 실행됩니다. 주요 특징: - `git status`, `git diff` 등으로 현재 변경 사항을 검사한 후, 사용자에게 배치(커밋) 계획을 제시하고 승인을 받습니다. - 각 배치는 목적별로 파일을 그룹화하여 하나의 기능, 버그 수정, 리팩토링 등을 완전히 담습니다. - Conventional Commit 형식으로 커밋 메시지를 작성하며, 브랜치 이름에 이슈 ID가 있으면 자동으로 추가합니다. - 모든 배치 커밋 후에 원격 저장소로 푸시하고, 각 커밋 해시와 주제를 요약하여 보고합니다. 안전한 Git 사용을 위해 강제 푸시, 커밋 수정, 시크릿 노출 등을 방지하는 안전장치를 포함합니다. Claude Code, Cursor, Codex 등에서 동작합니다.

지원 대상~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Marcussyl/cursor-skills/tree/HEAD/commit-batches

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

배치 커밋

스테이지되지 않은 작업을 논리적 커밋으로 분할합니다. 각 커밋은 단독으로 검토 가능해야 하며, 해당 조각을 이해하는 데 필요한 모든 파일을 포함해야 합니다.

안전 (항상)

  • git config를 절대 업데이트하지 않습니다.
  • 사용자가 명시적으로 요청하지 않는 한 강제 푸시, 하드 리셋 또는 기타 파괴적인 Git 명령을 사용하지 않습니다.
  • 사용자가 명시적으로 요청하지 않는 한 훅을 건너뛰지 않습니다(--no-verify 등).
  • 시크릿(.env, 자격 증명, 키)을 절대 스테이징하지 않습니다. 경고하고 제외합니다.
  • 사용자가 수정 규칙을 완전히 충족하지 않는 한 git commit --amend를 사용하지 않습니다.
  • 커밋 훅이 실패하면 문제를 해결하고 새 커밋을 생성합니다. 실패한 커밋을 수정하지 않습니다.
  • 커밋 메시지에 Co-authored-by: Cursor를 추가하지 않습니다.

1. 검사

가능한 경우 병렬로 실행:

  • git status
  • git diff 및 git diff --staged
  • git log -5 --oneline (메시지 스타일 확인용)
  • git remote -v 및 브랜치 추적 (git status -sb)

커밋할 내용이 없으면 중단하고 그렇게 알립니다.

2. 배치 계획

변경 사항을 목적별로 그룹화합니다. 파일 유형만으로 그룹화하지 마십시오. 예시:

  • 하나의 기능 또는 사용자 대상 동작 + 해당 테스트 및 문서
  • 하나의 버그 수정 + 해당 버그를 수정하는 파일만
  • 독립적으로 서는 리팩토링 (관련 없는 기능과 혼합 금지)
  • 한 영역에 범위가 지정된 작업 또는 도구 (종속성, CI, 구성)

규칙:

  • 관련 없는 기능을 하나의 커밋에 혼합하지 않습니다.
  • 동일 배치에 동반 파일을 포함합니다(예: 하나의 변경에 대한 스키마 + 엔티티 + 마이그레이션 + 호출 지점).
  • 파일이 두 가지 관심사에 관련된 경우 주요 배치를 선택하거나 커밋 전에 트레이드오프를 언급합니다.
  • 배치를 순서대로 나열합니다: 기초(공유 유형, 구성) 먼저, 그 다음 기능, 마지막으로 이전 커밋에 의존하는 문서 전용.

사용자에게 간단한 계획을 보여줍니다: 배치 번호, 파일 또는 경로, 제안된 Conventional Commit 주제. 그런 다음 사용자가 반대하지 않으면 진행합니다.

3. 각 배치 커밋

각 배치에 대해 순차적으로:

  1. 해당 배치만 스테이징합니다(git add 특정 경로 사용; 전체 트리가 하나의 배치가 아닌 한 git add -A는 피합니다).
  2. git diff --staged로 관련 없는 내용이 포함되지 않았는지 다시 확인합니다.
  3. 왜 에 초점을 맞춘 Conventional Commit 주제(feat, fix, chore, docs, refactor, test 등)를 작성합니다.
  4. 브랜치 이름에 이슈 ID가 포함된 경우 주제 끝에 #<issue>를 추가합니다(GitLab 스타일).
  5. 커밋합니다. Windows PowerShell에서는 git commit -m 'subject'(또는 짧은 본문을 위해 여러 -m)를 사용합니다. bash에서는 HEREDOC를 사용해도 좋습니다.
  6. 의도된 변경 사항에 대해 작업 트리가 깨끗해질 때까지 반복합니다.

4. GitHub(또는 원격)로 푸시

모든 배치 이후:

  • origin(또는 사용자가 지정한 원격)이 존재하고 브랜치를 게시해야 하는 경우, 업스트림이 없으면 git push -u origin HEAD를, 그렇지 않으면 git push를 실행합니다.
  • main 또는 master에 강제 푸시하지 않습니다.
  • 푸시가 거부되면 오류를 보고하고 풀/리베이스를 제안합니다. 사용자가 명시적으로 요청하지 않는 한 강제 푸시하지 않습니다.
  • 원격이 없으면 커밋이 로컬에만 있다고 말하고 원격을 추가할지 묻습니다.

5. 보고

요약:

  • 각 커밋 해시와 주제 (최신 순서 또는 번호 목록).
  • 푸시 결과 (가능한 경우 URL 또는 브랜치).
  • 의도적으로 스테이징되지 않은 항목 (시크릿, 로컬 전용 파일).

commit-msg와의 관계

commit-msg는 이미 스테이징된 파일에서 한 줄을 제안하고 커밋하지는 않습니다. 이 스킬은 계획, 스테이징, 여러 단계의 커밋, 푸시를 수행합니다.

관련 스킬