diff --git a/.claude/commands/commit.md b/.claude/commands/commit.md new file mode 100644 index 00000000..bf5c7fe3 --- /dev/null +++ b/.claude/commands/commit.md @@ -0,0 +1,45 @@ +# Git Commit 커맨드 + +## 동작 순서 + +1. `git status`와 `git diff` (staged + unstaged)를 실행해 변경사항 전체를 파악한다. +2. 변경된 파일과 내용을 분석해 커밋 타입과 한글 메시지를 결정한다. +3. 스테이징되지 않은 파일이 있으면 어떤 파일을 포함할지 사용자에게 먼저 확인한다. +4. 아래 형식으로 커밋 메시지를 제안하고 승인을 받은 뒤 커밋한다. + +## 커밋 메시지 형식 + +``` +: <한글 메시지> +``` + +### 타입 선택 기준 + +| 타입 | 사용 시점 | +|------|----------| +| `feat` | 새로운 기능 추가 | +| `fix` | 버그 수정 | +| `refactor` | 기능 변경 없는 코드 개선 | +| `docs` | 문서, 주석 변경 | +| `test` | 테스트 코드 추가/수정 | +| `chore` | 빌드, 설정, 의존성 등 기타 변경 | + +### 한글 메시지 작성 규칙 + +- 무엇을 했는지가 아니라 **왜 했는지, 어떤 문제를 해결했는지** 중심으로 작성 +- 명사형 종결 (예: `~추가`, `~수정`, `~제거`, `~개선`) +- 50자 이내로 간결하게 + +### 예시 + +``` +feat: 산 좋아요 기능 추가 +fix: 토큰 만료 시 재발급 로직 누락 수정 +refactor: TrackingService 버퍼 flush 조건 분리 +chore: Flyway 마이그레이션 스크립트 추가 +``` + +## 주의사항 + +- `.env`, 시크릿, 비밀번호가 포함된 파일은 절대 커밋하지 않는다. +- 관련 없는 변경사항이 섞여 있으면 분리 커밋을 제안한다. diff --git a/.claude/commands/issue.md b/.claude/commands/issue.md new file mode 100644 index 00000000..fa90d07f --- /dev/null +++ b/.claude/commands/issue.md @@ -0,0 +1,75 @@ +# GitHub Issue 생성 커맨드 + +## 사용법 + +``` +/issue <작업 내용을 간단히 설명> +``` + +## 동작 순서 + +1. `$ARGUMENTS`로 전달된 설명을 바탕으로 작업 내용을 파악한다. +2. 아래 이슈 템플릿을 채워 초안을 제안한다. +3. 사용자 확인 후 `gh issue create` 명령으로 GitHub에 이슈를 생성한다. + +## 이슈 템플릿 + +```markdown +## 📖 작업 개요 + +- + + +## 🧩 작업 내용 + +- [ ] +- [ ] +- [ ] + +--- + +## 📱 관련 화면 / 기능 + +- [ ] 지도 +- [ ] 등산 기록 +- [ ] 코스 추천 +- [ ] 커뮤니티 +- [ ] 기타: + +--- + +## 💬 기타 사항 + +- +``` + +## 각 항목 작성 규칙 + +### 📖 작업 개요 +- "무엇을 왜 하는지" 한 줄로 작성 +- 예: `산 좋아요 API 추가 — 사용자가 관심 산을 저장할 수 있도록` + +### 🧩 작업 내용 +- 실제 구현 단위로 체크박스 항목을 3~5개 작성 +- 너무 크면 세분화, 너무 작으면 합치기 +- 예: + - `[ ] MountainLike 엔티티 및 Repository 추가` + - `[ ] 좋아요 토글 API (POST /mountains/{id}/like) 구현` + - `[ ] 좋아요 여부 조회 응답 필드 추가` + +### 📱 관련 화면 / 기능 +- 해당하는 항목의 `[ ]`를 `[x]`로 변경 +- 해당 없으면 `기타:` 뒤에 직접 작성 + +### 💬 기타 사항 +- 논의가 필요하거나 고민되는 부분을 작성 +- 없으면 `없음`으로 작성 + +## 이슈 생성 명령 예시 + +```bash +gh issue create \ + --title "<이슈 제목>" \ + --body "<채워진 템플릿 내용>" \ + --label "feat" +``` diff --git a/.claude/commands/pr.md b/.claude/commands/pr.md new file mode 100644 index 00000000..0d9532d0 --- /dev/null +++ b/.claude/commands/pr.md @@ -0,0 +1,62 @@ +# GitHub PR 생성 커맨드 + +## 동작 순서 + +1. `git log`와 `git diff ...HEAD`로 현재 브랜치의 전체 변경사항을 파악한다. +2. 브랜치명에서 이슈 번호를 추출한다. (예: `feat/#151-claude-command` → `#151`) +3. 아래 PR 템플릿을 채워 초안을 제안한다. +4. 사용자 확인 후 `gh pr create` 명령으로 GitHub에 PR을 생성한다. + +## PR 템플릿 + +```markdown +## 🧾 요약 +- + +## 🔗 이슈 +- close # + +## ✨ 변경 내용 +- +- + +## ✅ 확인 +- [ ] 빌드 OK +- [ ] 테스트 OK +``` + +## 각 항목 작성 규칙 + +### 🧾 요약 +- 이 PR이 무엇을 왜 하는지 한 줄로 작성 +- 예: `산 좋아요 토글 API 구현 — 사용자가 관심 산을 저장할 수 있도록` + +### 🔗 이슈 +- 브랜치명에서 추출한 이슈 번호로 자동 연결 +- 예: `close #151` +- 이슈 번호를 알 수 없으면 사용자에게 확인 + +### ✨ 변경 내용 +- 실제 변경된 내용을 구체적으로 나열 (커밋 단위가 아닌 기능 단위) +- 예: + - `MountainLike 엔티티 및 Repository 추가` + - `좋아요 토글 API (POST /mountains/{id}/like) 구현` + - `좋아요 여부 조회 응답 필드 추가` + +### ✅ 확인 +- `빌드 OK` / `테스트 OK` 항목은 사용자가 직접 체크하도록 체크박스로 남겨둔다. + +## PR 생성 명령 예시 + +```bash +gh pr create \ + --title "<타입>: <한글 제목>" \ + --body "<채워진 템플릿 내용>" \ + --base develop +``` + +## 주의사항 + +- base 브랜치는 기본적으로 `develop`으로 설정한다. `main`으로 보내는 경우 사용자에게 확인한다. +- 리뷰어 2명 승인 필요 — PR 생성 후 리뷰어 지정을 안내한다. +- 셀프 머지 금지 규칙을 사용자에게 상기시킨다. diff --git a/.gitignore b/.gitignore index 916813b1..9d777b58 100644 --- a/.gitignore +++ b/.gitignore @@ -51,7 +51,7 @@ k8s/minio/secret.yaml .omc # Claude Code -.claude/ +.claude/settings.local.json # Firebase src/main/resources/firebase/