Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
12 commits
Select commit Hold shift + click to select a range
4f56f08
폴더 CRUD 및 폴더-장소 관리 API 구현 필요 : feat : Folder 관련 ErrorCode 추가 https://…
Cassiiopeia Feb 23, 2026
b800003
폴더 CRUD 및 폴더-장소 관리 API 구현 필요 : feat : Folder 엔티티에 isDefault 필드 추가 htt…
Cassiiopeia Feb 23, 2026
fefca70
폴더 CRUD 및 폴더-장소 관리 API 구현 필요 : feat : MemberPlace에서 folder String 필드 …
Cassiiopeia Feb 23, 2026
a45d811
폴더 CRUD 및 폴더-장소 관리 API 구현 필요 : feat : FolderRepository 생성 https://git…
Cassiiopeia Feb 23, 2026
4223362
폴더 CRUD 및 폴더-장소 관리 API 구현 필요 : feat : FolderPlaceRepository 생성 https:…
Cassiiopeia Feb 23, 2026
6d05666
폴더 CRUD 및 폴더-장소 관리 API 구현 필요 : feat : Folder Request/Response DTO 생성 …
Cassiiopeia Feb 23, 2026
d8f6cf8
폴더 CRUD 및 폴더-장소 관리 API 구현 필요 : feat : FolderService 비즈니스 로직 구현 https:…
Cassiiopeia Feb 23, 2026
ff8606e
폴더 CRUD 및 폴더-장소 관리 API 구현 필요 : feat : FolderControllerDocs Swagger 문서…
Cassiiopeia Feb 23, 2026
7ef307c
폴더 CRUD 및 폴더-장소 관리 API 구현 필요 : feat : FolderController REST API 엔드포인트…
Cassiiopeia Feb 23, 2026
f229f1e
폴더 CRUD 및 폴더-장소 관리 API 구현 필요 : feat : 회원가입 시 기본 폴더 자동 생성 연동 https://g…
Cassiiopeia Feb 23, 2026
c0a2fd3
폴더 CRUD 및 폴더-장소 관리 API 구현 필요 : feat : 장소 저장 시 기본 폴더 자동 배치 연동 https://…
Cassiiopeia Feb 23, 2026
62011f5
폴더 CRUD 및 폴더-장소 관리 API 구현 필요 : feat : 최신 커스텀 커맨드 교체 https://github.co…
Cassiiopeia Feb 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
# init-workflow
# init-worktree

Git worktree를 자동으로 생성하는 커맨드입니다.

브랜치명을 입력받아 자동으로:
1. 브랜치명은 사용자 입력 그대로 사용 (예: `20260127_#16_...`)
2. 브랜치가 없으면 생성 (현재 브랜치에서 분기)
3. 폴더명만 특수문자(`#` 포함)를 `_`로 변환하여 생성 (예: `20260127_16_...`)
1. 브랜치명에서 `#` 문자 제거 (Git 브랜치명으로 사용)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Step 1 설명이 하단 "중요" 섹션과 모순됩니다.

Line 6에서 "브랜치명에서 # 문자 제거 (Git 브랜치명으로 사용)"라고 되어 있지만, Line 53의 중요 사항에서는 "브랜치명은 # 문자를 포함하여 원본 그대로 전달됩니다"라고 명시되어 있으며, Line 68-70의 예시에서도 Git 브랜치명에 #이 유지됩니다. 실제 동작에 맞게 Step 1 설명을 수정해야 합니다.

📝 수정 제안
-1. 브랜치명에서 `#` 문자 제거 (Git 브랜치명으로 사용)
+1. 브랜치명은 `#` 문자를 포함하여 원본 그대로 Git 브랜치명으로 사용
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
1. 브랜치명에서 `#` 문자 제거 (Git 브랜치명으로 사용)
1. 브랜치명은 `#` 문자를 포함하여 원본 그대로 Git 브랜치명으로 사용
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/commands/init-worktree.md at line 6, Step 1 currently says "브랜치명에서
`#` 문자 제거 (Git 브랜치명으로 사용)" which conflicts with the "중요" section and examples
that preserve `#`; update the Step 1 description to state that the branch name
is passed through unchanged (including `#`) and remove any mention of stripping
`#` so it matches the "중요" note and the example usage in the document (refer to
the Step 1 heading and the "중요" section/examples in the same file to ensure
wording consistency).

2. 브랜치가 없으면 리모트(origin) 확인 → 있으면 tracking 브랜치로 가져오기, 없으면 현재 브랜치에서 새로 생성
3. 브랜치명의 특수문자를 `_`로 변환하여 폴더명 생성
4. `{프로젝트명}-Worktree` 폴더에 worktree 생성 (예: `RomRom-FE-Worktree`)
5. 설정 파일 자동 복사 (Firebase, iOS, Android 키 등)
6. 이미 존재하면 경로만 출력

## 사용법

```
/init-workflow
/init-worktree

20260120_#163_Github_Projects_에_대한_템플릿_개발_필요_및_관련_Sync_워크플로우_개발_필요
```

## 실행 로직

1. 사용자 입력에서 두 번째 줄의 브랜치명 추출
2. 브랜치명은 그대로 사용 (임시 Python 스크립트에 포함)
2. 브랜치명에서 `#` 문자 제거
3. 임시 Python 스크립트 파일 생성 (인코딩 문제 해결)
4. Python 스크립트 실행 (worktree 생성 + 설정 파일 복사)
5. 임시 파일 자동 삭제
Expand All @@ -37,22 +37,20 @@ Git worktree를 자동으로 생성하는 커맨드입니다.
브랜치명이 제공된 경우:
1. 프로젝트 루트로 이동
2. Git 긴 경로 지원 활성화: `git config --global core.longpaths true` (최초 1회만 실행)
3. 브랜치명은 사용자 입력 그대로 사용 (예: `20260116_#432_...` 그대로 유지)
4. 임시 Python 스크립트 파일 생성:
- 파일명: `init_worktree_temp_{timestamp}.py`
- 브랜치명을 코드에 직접 포함 (인코딩 문제 해결)
- worktree 생성 로직 포함
5. **Python 스크립트 실행** (Windows에서는 `-X utf8` 플래그 필수):
3. 임시 Python 스크립트 파일 생성:
- 파일명: `init_worktree_temp_{timestamp}.py`
- 브랜치명을 코드에 직접 포함 (인코딩 문제 해결, `#` 문자 유지)
- worktree 생성 로직 포함
4. **Python 스크립트 실행** (Windows에서는 `-X utf8` 플래그 필수):
```bash
python -X utf8 init_worktree_temp_{timestamp}.py
```
6. 임시 파일 삭제
7. 결과 출력
8. 에이전트가 `.gitignore` 분석 후 민감 파일 복사
5. 임시 파일 삭제
6. 결과 출력
7. 에이전트가 `.gitignore` 분석 후 민감 파일 복사

**중요**:
- **브랜치명 처리**: 브랜치명은 사용자 입력 그대로 사용됩니다 (`#` 문자 포함)
- **폴더명 처리**: 폴더명만 `normalize_branch_name()` 함수로 특수문자(`#` 포함)를 `_`로 변환합니다
- **브랜치명 처리**: 브랜치명은 `#` 문자를 포함하여 **원본 그대로** 전달됩니다. `#`은 **폴더명 생성 시에만** `_`로 변환됩니다.
- **인코딩 문제 해결**: Python 스크립트 파일에 브랜치명을 직접 포함시켜 Windows PowerShell 인코딩 문제 회피
- **Windows UTF-8 모드**: Python 실행 시 `-X utf8` 플래그 사용 필수
- **설정 파일 자동 복사**: worktree 생성 후 에이전트가 동적으로 파일 복사
Expand All @@ -67,7 +65,7 @@ git config --global core.longpaths true
# Python UTF-8 모드로 실행 (Windows 한글 인코딩 문제 해결)
python -X utf8 init_worktree_temp.py

# 입력 브랜치명: 20260116_#432_UX_개선_및_페이지_디자인_수정
# 브랜치명: 20260116_#432_UX_개선_및_페이지_디자인_수정
# → Git 브랜치: 20260116_#432_UX_개선_및_페이지_디자인_수정 (# 유지)
# → 폴더명: 20260116_432_UX_개선_및_페이지_디자인_수정 (# → _ 변환)
```
Expand All @@ -83,7 +81,7 @@ import glob
# 프로젝트 루트로 이동
os.chdir('프로젝트_루트_경로')

# 브랜치명 (사용자 입력 그대로)
# 브랜치명 (원본 그대로, # 유지)
branch_name = '20260116_#432_UX_개선_및_페이지_디자인_수정'

# worktree_manager 실행
Expand All @@ -96,18 +94,18 @@ exit_code = worktree_manager.main()

# worktree 경로를 환경변수로 설정 (에이전트가 파일 복사에 사용)
if exit_code == 0:
import subprocess
result = subprocess.run(['git', 'worktree', 'list', '--porcelain'],
import subprocess
result = subprocess.run(['git', 'worktree', 'list', '--porcelain'],
capture_output=True, text=True, encoding='utf-8')
lines = result.stdout.split('\n')
worktree_path = None
for i, line in enumerate(lines):
if line.startswith(f'branch refs/heads/{branch_name}'):
worktree_path = lines[i-1].replace('worktree ', '')
break

if worktree_path:
print(f'📍 WORKTREE_PATH={worktree_path}')
lines = result.stdout.split('\n')
worktree_path = None
for i, line in enumerate(lines):
if line.startswith(f'branch refs/heads/{branch_name}'):
worktree_path = lines[i-1].replace('worktree ', '')
break

if worktree_path:
print(f'📍 WORKTREE_PATH={worktree_path}')

sys.exit(exit_code)
```
Expand Down
280 changes: 280 additions & 0 deletions .claude/commands/issue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,280 @@
# Issue Mode

당신은 GitHub 이슈 작성 전문가입니다. 사용자의 대략적인 설명을 받아 **GitHub 이슈 템플릿에 맞는 제목과 본문을 자동으로 작성**합니다.

## 절대 금지 사항

- ❌ 코드적인 내용 작성 금지 (구현 방법, 코드 예시 등 포함하지 않음)
- ❌ 긴급(🔥) 태그를 임의로 추가하지 않음 (사용자가 직접 "긴급"이라고 말한 경우에만)
- ❌ 담당자 내용을 임의로 채우지 않음 (템플릿 기본값 그대로 유지)

## 사용자 입력

$ARGUMENTS

---

## 동작 프로세스

### 1단계: 이슈 타입 자동 판단

사용자 입력을 분석하여 아래 4가지 타입 중 하나를 판단합니다:

| 타입 | 판단 키워드/상황 | 템플릿 |
|------|----------------|--------|
| **버그** | 안 됨, 에러, 깨짐, 오류, 크래시, 안 됨, 문제, 장애, 실패, 로그 | `bug_report` |
| **기능 (추가/개선/요청)** | 추가, 만들어야, 새로, 구현, 필요, 개선, 수정, 변경, 요청, 제안 | `feature_request` |
| **디자인** | 디자인, UI, UX, 폰트, 색상, 레이아웃, 화면, 아이콘 | `design_request` |
| **QA/시험** | 테스트, QA, 시험, 검증, 확인 | `qa_request` |

**기능 타입 세분류** (제목 이모지 결정):
- ⚙️`[기능추가]` : 완전히 새로운 기능
- 🚀`[기능개선]` : 기존 기능 개선/수정
- 🔧`[기능요청]` : 제안/요청 수준

### 2단계: 부족한 정보 질문

**반드시 질문하는 경우:**
- 타입 판단이 애매할 때 (버그인지 개선인지 등)
- 카테고리 태그를 특정할 수 없을 때

**질문하지 않는 경우 (알아서 판단):**
- 문맥상 명확한 것 (로그인 에러 → 버그)
- 환경 정보 등 선택 항목 (비워두면 됨)
- 담당자 (항상 기본값 유지)

**질문 스타일:** 짧고 직관적으로, 가능하면 선택지 제공

### 3단계: 이슈 파일 저장

판단된 타입에 맞는 템플릿을 사용하여 **제목 + 본문**을 `.issue/` 폴더에 마크다운 파일로 저장합니다.

### 이슈 파일 생성 로직

1. **.issue 폴더 확인**
- `.issue/` 폴더가 없으면 자동 생성

2. **파일명 생성**
- 형식: `#[YYYYMMDD]_[순번]_[이슈타입]_[간단한설명].md`
- `#` 접두사: 파일 정렬 및 이슈 파일 식별용
- 날짜: 현재 날짜 (YYYYMMDD 형식)
- 순번: 같은 날짜 내 `.issue/` 폴더의 기존 파일 수를 확인하여 3자리 자동 증가 (001, 002, ...)
- 이슈타입: `버그`, `기능추가`, `기능개선`, `기능요청`, `디자인`, `시험요청`
- 설명: 한글/영문, 언더스코어로 단어 구분
- 특수문자 제거 및 안전한 파일명으로 변환
- 예시: `#20260214_001_버그_채팅방_중복생성_오류.md`, `#20260214_002_기능추가_물품삭제_확인_다이얼로그.md`

3. **파일 내용**
- 첫 줄: 제목 그대로 (마크다운 `#` 없이, GitHub 이슈 제목에 바로 복사-붙여넣기 가능)
- 빈 줄
- 나머지: 본문 (GitHub 이슈 본문으로 복사용)

4. **파일 저장**
- `.issue/` 폴더에 직접 저장
- Git 추적 안 됨 (`.gitignore`에 `/.issue` 등록)

### 출력

1. 저장된 파일 경로 표시
2. 이슈 내용 요약 표시
3. "GitHub에 이슈를 생성하려면 위 제목과 본문을 복사해서 붙여넣으세요" 안내

---

## 제목 형식

기존 이슈 패턴을 준수합니다:

```
❗[버그][카테고리] 설명
⚙️[기능추가][카테고리] 설명
🚀[기능개선][카테고리] 설명
🔧[기능요청][카테고리] 설명
🎨[디자인][카테고리] 설명
🔍[시험요청][카테고리] 설명
```
Comment on lines +88 to +95
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

코드 블록에 언어 식별자를 추가하세요.

정적 분석(MD040)이 88번 줄의 펜스 코드 블록에 언어 지정자가 없다고 경고합니다. 제목 형식 예시이므로 text로 지정하면 됩니다.

🛠️ 수정 제안
-```
+```text
 ❗[버그][카테고리] 설명
 ⚙️[기능추가][카테고리] 설명
 🚀[기능개선][카테고리] 설명
 🔧[기능요청][카테고리] 설명
 🎨[디자인][카테고리] 설명
 🔍[시험요청][카테고리] 설명
</details>

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.21.0)</summary>

[warning] 88-88: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.claude/commands/issue.md around lines 88 - 95, The fenced code block that
currently begins with and contains the list lines (❗[버그]..., ⚙️[기능추가]..., etc.) needs a language identifier; change the opening fence from to ```text
so the markdown linter MD040 is satisfied and the block is treated as plain
text.


</details>

<!-- fingerprinting:phantom:triton:churro -->

<!-- This is an auto-generated comment by CodeRabbit -->


- `[카테고리]`는 관련 영역을 넣음 (예: `[로그인]`, `[Flutter]`, `[CICD]`, `[마법사]`, `[CustomCommand]` 등)
- 카테고리는 여러 개 가능 (예: `[버그][Flutter][빌드]`)
- 사용자가 "긴급"이라고 직접 말한 경우에만 `🔥[긴급]` 추가

---

## 템플릿별 출력 형식

### 버그 이슈 (bug_report)

```markdown
## 제목
❗[버그][카테고리] 설명

## 본문

🗒️ 설명
---

- {사용자 입력 기반으로 버그 현상 설명}

🔄 재현 방법
---

1. {재현 단계 1}
2. {재현 단계 2}
3. {결과 확인}

📸 참고 자료
---

{사용자가 로그나 스크린샷을 제공한 경우 여기에 정리, 없으면 비워둠}

✅ 예상 동작
---

- {정상적으로 동작해야 하는 모습}

⚙️ 환경 정보
---

- **OS**:
- **브라우저**:
- **기기**:

🙋‍♂️ 담당자
---

- **백엔드**: 이름
- **프론트엔드**: 이름
- **디자인**: 이름
```

### 기능 요청/추가/개선 이슈 (feature_request)

```markdown
## 제목
⚙️/🚀/🔧[기능추가/개선/요청][카테고리] 설명

## 본문

📝 현재 문제점
---

- {현재 어떤 부분이 부족하거나 필요한지}

🛠️ 해결 방안 / 제안 기능
---

- {제안하는 기능이나 해결 방안}

🙋‍♂️ 담당자
---

- 백엔드: 이름
- 프론트엔드: 이름
- 디자인: 이름
```

**참고**: 기능추가/기능개선인 경우 필요하다 판단되면 `⚙️ 작업 내용` 섹션을 추가할 수 있음 (코드 내용이 아닌 작업 항목 수준으로):

```markdown
⚙️ 작업 내용
---

- {작업 항목 1}
- {작업 항목 2}
```

### 디자인 요청 이슈 (design_request)

```markdown
## 제목
🎨[디자인][카테고리] 설명

## 본문

🖌️ 요청 내용
---

- {디자인 요청 내용}

🎯 기대 결과
---

- {디자인 적용 후 예상 결과}

📋 참고 자료
---

{참고 링크, 이미지 등}

💡 추가 요청 사항
---

- {추가 고려 사항}

🙋‍♂️ 담당자
---

- 백엔드: 이름
- 프론트엔드: 이름
- 디자인: 이름
```

### QA/시험 이슈 (qa_request)

```markdown
## 제목
🔍[시험요청][카테고리] 설명

## 본문

🔗 ISSUE 정보
---

- {관련 이슈 번호/링크}

🔗 PR 정보
---

- {관련 PR 번호/링크}

🧩 시험 대상
---

- {테스트할 기능/수정사항}

📋 테스트 시나리오
---

1. {테스트 케이스 1}
2. {테스트 케이스 2}
3. {테스트 케이스 3}

⚙️ 테스트 환경
---

- **프로젝트 Version**:
- **OS**:
- **브라우저**:
- **기기**:

🙋‍♂️ 담당자
---

- **시험담당**: 이름
```

---

## 작성 원칙

1. **간결하게**: 불필요한 설명 없이 핵심만 작성
2. **코드 없이**: 기능/현상 중심으로만 작성, 구현 방법이나 코드 언급 금지
3. **템플릿 준수**: 위 템플릿 구조를 정확히 따름
4. **적절한 추론**: 사용자가 대충 말해도 문맥에서 파악 가능한 건 알아서 채움
5. **필요하면 질문**: 정말 모르겠는 것만 짧게 질문
6. **담당자 기본값 유지**: 담당자는 항상 "이름"으로 유지
7. **보강 가능**: 필요하다 판단되면 내용을 적절히 추가해도 됨

---

**목표**: "사용자가 대충 설명해도, 깔끔한 GitHub 이슈를 바로 만들 수 있게"
Loading