---
name: create-commit
description: 변경사항을 자동으로 분석하고 커밋 룰에 따라 커밋 생성
---

# 자동 커밋 생성

현재 변경사항을 분석하여 커밋 룰에 따라 자동으로 커밋을 생성합니다.

## 사용법

```bash
/create-commit              # 기본 자동 커밋
/create-commit "추가 요구사항"  # 추가 컨텍스트와 함께 커밋
```

## 처리 단계

1. **변경사항 분석**

   - `git status`로 현재 변경 파일 확인
   - `git diff`로 실제 변경 내용 검토
   - 파일 타입별 그룹화 (문서/테스트/컴포넌트/설정 등)

2. **노션 ID 추출**

   - 현재 브랜치명에서 GBIZ-XXXXX 패턴 추출
   - 노션 ID 발견 시 사용자에게 확인 요청
   - 확인된 ID를 모든 커밋 메시지에 포함

3. **커밋 전략 결정**

   - 변경 파일 수와 타입 분석
   - [Git 커밋 룰](../../../.docs/conventions/commit-convention.md)에 따라:
     - 단일 작업: 하나의 커밋으로 처리
     - 복합 작업: 작업 유형별로 커밋 분리
   - **커밋 계획 승인은 반드시 `AskUserQuestion` Form으로 요청한다**:
     - 커밋 계획을 텍스트(테이블)로 출력한 후, 아래 템플릿으로 승인 요청
     - 채팅으로 "승인해주세요" 등 텍스트 질문 금지

   ```jsonc
   // AskUserQuestion 호출 템플릿
   {
     "questions": [{
       "question": "위 커밋 계획을 승인하시겠습니까?",
       "header": "커밋 승인",
       "options": [
         { "label": "승인", "description": "위 계획대로 N개 커밋을 생성합니다" },
         { "label": "커밋 메시지 수정", "description": "커밋 메시지를 변경합니다" },
         { "label": "커밋 분리 변경", "description": "커밋 분리 전략을 변경합니다" }
       ],
       "multiSelect": false
     }]
   }
   ```

   - **"커밋 메시지 수정"** 선택 시: 어떤 커밋의 메시지를 어떻게 변경할지 추가 질문
   - **"커밋 분리 변경"** 선택 시: 분리 전략을 재구성하여 다시 승인 요청

4. **커밋 메시지 작성**

   - 커밋 타입은 **아래 목록에서만** 선택 (목록 외 타입 사용 금지):

     - `feat`: 새로운 기능 추가
     - `fix`: 버그 수정
     - `docs`: 문서 수정
     - `style`: 스타일 코드 수정
     - `refactor`: 코드 리팩토링
     - `test`: 테스트 코드 추가 또는 수정
     - `chore`: 빌드 작업, 패키지 매니저 설정 등 기타 변경사항

     > **주의**: `perf`, `ci`, `build` 등 일반 Conventional Commits 타입이라도 위 목록에 없으면 사용하지 않는다. 성능 개선은 `refactor`, CI/빌드 설정은 `chore`를 사용한다.

   - 형식:
     ```
     type(GBIZ-XXXXX): 구체적인 작업 내용
     ```

   **핵심 규칙**:

   - **본문(body)은 절대 작성하지 않습니다**
   - **꼬리말(footer)도 작성하지 않습니다**
   - **제목 한 줄만으로 모든 변경사항을 설명합니다**
   - 제목은 한글로 작성, 현재형 동사로 시작, 마침표(.) 없음, 50자 이내

5. **커밋 실행**

   - 파일별 또는 그룹별로 `git add` 실행
   - 준비된 메시지로 `git commit` 실행
   - 각 커밋 후 상태 확인

6. **결과 보고**
   - 생성된 커밋 목록 표시 (`git log --oneline -n`)
   - 최종 상태 확인 (`git status`)

## 추가 컨텍스트 처리

사용자가 추가 요구사항을 제공한 경우:

- 커밋 제목에 추가 정보를 간결하게 반영 (본문 추가하지 않음)
- 특정 파일 우선순위 조정
- 커밋 분리 전략 커스터마이징

추가 컨텍스트가 있어도 본문(body)은 작성하지 않습니다. 제목만으로 모든 내용을 표현하거나, 커밋을 더 작게 분리합니다.

## 주의사항

- 항상 사용자에게 커밋 계획 확인 요청
- 빌드가 깨지지 않도록 의존성 있는 파일은 함께 커밋
- 너무 세밀한 분리 지양 (가독성 우선)
- PR 리뷰어 관점에서 논리적 그룹화
- **본문(body)은 절대 작성하지 않음** - 제목 한 줄만 사용
- **꼬리말(footer)도 작성하지 않음** - `Co-Authored-By` 등 포함 금지
