| name | team-commit |
| description | 팀 컨벤션에 맞는 한국어 커밋 생성. 전체 빌드+테스트 검증, 시크릿 검출, 파일별 스테이징 강제. |
/team-commit
팀 컨벤션에 맞게 커밋을 생성합니다. 한국어 커밋 메시지, 전체 빌드+테스트 검증 포함.
사용법
/team-commit # 변경사항 분석 후 자동 커밋 메시지 생성
/team-commit 로그인 API 엔드포인트 추가 # 설명 기반으로 커밋 메시지 생성
실행 순서 (반드시 이 순서를 따를 것)
Step 1: 변경사항 확인
git status
git diff --cached
git diff
- 변경사항이 없으면 → "커밋할 변경사항이 없습니다" 출력 후 중단
Step 2: 가드레일 체크
2-1. 시크릿 파일 검출
변경/staged 파일 목록에서 아래 패턴이 있으면 해당 파일을 스테이징에서 제외하고 경고:
| 패턴 | 설명 |
|---|
.env, .env.* | 환경 변수 파일 |
application-*.yml, application-*.yaml, application-*.properties | Spring 프로파일 설정 (application.yml은 허용) |
*secret*, *credential* | 시크릿 관련 (git submodule 디렉토리 제외) |
*.pem, *.key, *.p12, *.jks | 인증서/키 파일 |
2-2. 시크릿 내용 검출
git diff와 git diff --cached 내용에서 아래 패턴이 있으면 경고 (사용자 확인 후 진행):
password=, secret=, api[_-]key=, token= 뒤에 실제 값이 있는 경우
AKIA (AWS Access Key 패턴)
ghp_, gho_, github_pat_ (GitHub 토큰 패턴)
2-3. 브랜치 확인
develop 브랜치에서 커밋하려 하면 → 경고: "develop 브랜치에 직접 커밋하고 있습니다. 계속하시겠습니까?"
- 브랜치명이
feature/, fix/, chore/, refactor/, docs/, test/ 중 하나로 시작하지 않으면 → 경고
Step 3: 가드레일 — ktlint + 테스트 100%
이 스킬은 아래 두 게이트를 모두 통과해야만 커밋 단계로 진행한다. 하나라도 실패하면 즉시 중단.
3-1. ktlint 검증 (필수, 100% 통과)
./gradlew ktlintCheck
3-2. 빌드 + 테스트 검증 (100% 성공 필수)
./gradlew build
- 컴파일 + 전체 테스트 수행
- 테스트 결과가 100% 성공이 아니면 중단 (실패/스킵/무시 0건이어야 함)
- 빌드 실패 시 → "빌드/테스트가 실패했습니다. 에러를 수정한 후 다시 시도하세요." 출력
- 에러 로그에서 핵심 실패 원인을 요약하여 제시
- 테스트 리포트(
build/reports/tests/test/index.html) 경로 안내
@Disabled, @Ignore로 스킵된 테스트가 신규로 추가되었으면 경고 (의도적인 경우만 사용자 확인 후 진행)
3-3. 가드레일 우회 금지
- ktlint·테스트 실패를 무시하고 커밋 진행 금지
-x test, -x ktlintCheck 같은 태스크 제외 옵션 사용 금지
--no-verify 플래그 사용 금지
Step 4: 커밋 메시지 생성
git log --oneline -5로 최근 커밋 스타일 참조
- 변경 내용 분석 후 타입 결정:
| 타입 | 기준 |
|---|
feat | 새로운 기능, 엔드포인트, 엔티티, DTO 추가 |
fix | 버그 수정, 예외 처리 개선, 오류 해결 |
refactor | 동작 변경 없는 코드 구조 개선 |
chore | 설정, 의존성, CI/CD, 빌드, .gitignore 등 |
docs | 문서, 주석, README 변경 |
test | 테스트 코드 추가/수정 |
perf | 성능 개선, 쿼리 최적화 |
ci | GitHub Actions, CI 파이프라인 변경 |
- 커밋 메시지 포맷:
<type>: <한국어 설명>
- 한국어 필수 (영문 금지)
- scope 사용하지 않음
- 명사형 종결: "~추가", "~수정", "~설정", "~개선", "~구현"
- 50자 이내
- 마침표 없음
좋은 예:
feat: OAuth2 소셜 로그인 구현
fix: 로그인 시 NPE 발생하는 버그 수정
chore: Spring Boot 3.2로 버전 업그레이드
refactor: UserService 인증 로직 분리
test: UserController 단위 테스트 추가
나쁜 예:
feat: add OAuth2 login ← 영문 금지
feat(auth): 로그인 구현 ← scope 사용 금지
feat: 로그인 구현. ← 마침표 금지
update ← 타입 없음, 설명 불충분
Step 5: 파일 스테이징 및 커밋
-
git add -A 또는 git add . 사용 금지 → 관련 파일만 개별 지정
-
기능 단위로 관련 파일만 스테이징:
- 하나의 기능에 관련된 파일들을 묶어서 커밋
- 관련 없는 파일 변경이 섞이지 않도록 주의
-
사용자에게 아래를 보여주고 확인받은 후 커밋:
-
커밋 실행:
git add <file1> <file2> ...
git commit -m "<type>: <한국어 설명>"
- 결과 표시:
git log --oneline -1
금지 사항
--no-verify 플래그 절대 사용 금지
--amend 사용 금지 (항상 새 커밋 생성)
git add -A, git add . 사용 금지
- 시크릿 파일 스테이징 금지
- 영문 커밋 메시지 금지
- scope 사용 금지 (예:
feat(auth): ← 이렇게 하지 않음)
- ktlintCheck 실패 상태에서 커밋 진행 금지
- 테스트 실패/스킵이 있는 상태에서 커밋 진행 금지
-x test, -x ktlintCheck 등 가드레일 우회 옵션 사용 금지