| name | cotato-commit |
| description | COTATO 프로젝트 커밋 워크플로우. "커밋해줘", "commit", /commit 입력 시 사용. atomic 단위 커밋 분리, secret guard, 계획 승인 후 실행. |
| license | MIT |
| metadata | {"author":"cotato","version":"1.0.0"} |
commit 스킬
트리거
다음 요청이 오면 이 스킬을 사용한다:
- "커밋해줘", "커밋 만들어줘",
commit
staged 변경 정리해줘, 변경사항 나눠줘
/commit
핵심 원칙
- secret guard 먼저:
.env, 비밀번호, API 키, 토큰이 스테이징되어 있으면 즉시 멈추고 알린다.
- atomic 단위 분리: 논리적으로 무관한 변경은 별도 커밋으로 나눈다.
- 2단계 진행: Phase 1(계획표 출력 → 승인) → Phase 2(실행). 승인 없이 커밋하지 않는다.
- push는 명시적 요청 시에만: 커밋까지만 하고, push는 사용자가 동의하면 수행한다.
Phase 1 — 분석 및 계획 수립
git status와 git diff --cached로 스테이징된 변경 확인
- secret guard:
.env, password, api_key, secret, token 패턴 검색 — 발견 시 즉시 중단
- 변경된 파일들을 도메인/기능/계층 단위로 커밋 그룹 분류
- 아래 형식의 계획표를 출력하고 사용자 승인 대기
계획표 출력 형식
## 커밋 계획
### 커밋 1: feat(recruit): 사용자 프로필 컴포넌트 추가 (#12)
- apps/recruit/src/components/UserProfile/index.tsx
- 리쿠르트 전용 사용자 프로필 카드를 추가했습니다
### 커밋 2: chore(root): react-query 의존성 업그레이드 (#12)
- package.json, pnpm-lock.yaml
- TanStack Query v5 마이그레이션을 위해 의존성을 업그레이드했습니다
계속 진행할까요?
Phase 2 — 커밋 실행
승인 후 각 그룹별 git add <파일> → git commit -m 순으로 실행한다.
완료 후 git log --oneline -n <커밋 수>로 결과 요약 출력.
스코프(scope) 판정 기준
| 스코프 | 기준 |
|---|
recruit | apps/recruit/** 변경 |
homepage | apps/homepage/** 변경 |
root | 루트 설정 (turbo.json, pnpm-workspace.yaml, 루트 package.json 등) |
ui | packages/ui/** 변경 |
계층별 분리 원칙
같은 기능이라도 계층이 다르면 별도 커밋으로 분리한다:
- 의존성 변경:
package.json, pnpm-lock.yaml → chore
- 핵심 구현: 컴포넌트, 훅, 유틸리티 →
feat / fix / refactor
- 테스트/스토리:
*.test.*, *.spec.*, *.stories.* → test / feat
- 설정/라우팅: 라우트 등록, 설정 파일, barrel export →
chore / feat
커밋 메시지 형식
<타입>(<스코프>): <한국어 제목> (#이슈번호)
- <서술형 변경사항 1>했습니다
- <서술형 변경사항 2>했습니다
타입 목록
| 타입 | 쓰는 경우 |
|---|
feat | 새로운 기능 추가 |
fix | 버그 수정 |
docs | 문서 추가·수정·삭제 |
style | 포맷·세미콜론 등 동작 무관 스타일 |
refactor | 동작 변경 없는 코드 정리 |
test | 테스트 코드 추가·수정 |
revert | 이전 커밋 되돌리기 |
chore | 빌드, 설정, 의존성 |
security | 보안 취약점 수정 |
ui | UI/CSS 수정 |
comment | 주석 추가·수정 |
name | 변수·파일·함수 이름 변경 |
file | 파일 이동·삭제·구조 변경 |
메시지 규칙
- 제목은
<타입>(<스코프>): <한국어 제목> (#이슈번호) 형식을 엄격히 준수
- 좋은 예:
feat(homepage): 메인 배너 컴포넌트 추가 (#12)
- 나쁜 예:
feat: [homepage] 메인 배너 추가 (#12) — 대괄호 금지
- 나쁜 예:
feat(homepage): 메인 배너 추가 (Banner) (#12) — 제목 뒤 추가 괄호 금지
- 본문 항목은 반드시
~했습니다 체로 종결
- 좋은 예:
- 프로필 카드 컴포넌트를 추가했습니다
- 나쁜 예:
- 프로필 카드 컴포넌트 추가 — 명사형 금지
금지
--no-verify 플래그 사용 금지 (사용자가 요청해도 이유를 먼저 묻는다)
- 스테이징되지 않은 파일을 임의로
git add 하지 않는다
.env, 인증서, 토큰 파일을 커밋에 포함하지 않는다
- 승인 없이 커밋을 실행하지 않는다