Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
166 changes: 166 additions & 0 deletions .claude/commands/init-workflow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
# init-workflow

Git worktreeλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•˜λŠ” μ»€λ§¨λ“œμž…λ‹ˆλ‹€.

브랜치λͺ…을 μž…λ ₯λ°›μ•„ μžλ™μœΌλ‘œ:
1. 브랜치λͺ…μ—μ„œ `#` 문자 제거 (Git 브랜치λͺ…μœΌλ‘œ μ‚¬μš©)
2. λΈŒλžœμΉ˜κ°€ μ—†μœΌλ©΄ 생성 (ν˜„μž¬ λΈŒλžœμΉ˜μ—μ„œ λΆ„κΈ°)
3. 브랜치λͺ…μ˜ 특수문자λ₯Ό `_`둜 λ³€ν™˜ν•˜μ—¬ 폴더λͺ… 생성
4. `{ν”„λ‘œμ νŠΈλͺ…}-Worktree` 폴더에 worktree 생성 (예: `RomRom-FE-Worktree`)
5. μ„€μ • 파일 μžλ™ 볡사 (Firebase, iOS, Android ν‚€ λ“±)
6. 이미 μ‘΄μž¬ν•˜λ©΄ 경둜만 좜λ ₯

## μ‚¬μš©λ²•

```
/init-workflow

20260120_#163_Github_Projects_에_λŒ€ν•œ_ν…œν”Œλ¦Ώ_개발_ν•„μš”_및_κ΄€λ ¨_Sync_μ›Œν¬ν”Œλ‘œμš°_개발_ν•„μš”
```

## μ‹€ν–‰ 둜직

1. μ‚¬μš©μž μž…λ ₯μ—μ„œ 두 번째 μ€„μ˜ 브랜치λͺ… μΆ”μΆœ
2. 브랜치λͺ…μ—μ„œ `#` 문자 제거
3. μž„μ‹œ Python 슀크립트 파일 생성 (인코딩 문제 ν•΄κ²°)
4. Python 슀크립트 μ‹€ν–‰ (worktree 생성 + μ„€μ • 파일 볡사)
5. μž„μ‹œ 파일 μžλ™ μ‚­μ œ
6. κ²°κ³Ό 좜λ ₯

---

μ‚¬μš©μž μž…λ ₯μ—μ„œ 두 번째 쀄을 μΆ”μΆœν•˜μ—¬ 브랜치λͺ…μœΌλ‘œ μ‚¬μš©ν•˜μ„Έμš”.

브랜치λͺ…이 μ œκ³΅λ˜μ§€ μ•Šμ€ 경우:
- μ‚¬μš©λ²•μ„ μ•ˆλ‚΄ν•˜μ„Έμš”.

브랜치λͺ…이 제곡된 경우:
1. ν”„λ‘œμ νŠΈ 루트둜 이동
2. Git κΈ΄ 경둜 지원 ν™œμ„±ν™”: `git config --global core.longpaths true` (졜초 1회만 μ‹€ν–‰)
3. 브랜치λͺ…μ—μ„œ `#` 문자 제거 (예: `20260116_#432_...` β†’ `20260116_432_...`)
4. μž„μ‹œ Python 슀크립트 파일 생성:
- 파일λͺ…: `init_worktree_temp_{timestamp}.py`
- 브랜치λͺ…을 μ½”λ“œμ— 직접 포함 (인코딩 문제 ν•΄κ²°)
- worktree 생성 둜직 포함
5. **Python 슀크립트 μ‹€ν–‰** (Windowsμ—μ„œλŠ” `-X utf8` ν”Œλž˜κ·Έ ν•„μˆ˜):
```bash
python -X utf8 init_worktree_temp_{timestamp}.py
```
6. μž„μ‹œ 파일 μ‚­μ œ
7. κ²°κ³Ό 좜λ ₯
8. μ—μ΄μ „νŠΈκ°€ `.gitignore` 뢄석 ν›„ 민감 파일 볡사

**μ€‘μš”**:
- **브랜치λͺ… 처리**: `#` λ¬ΈμžλŠ” Git 브랜치λͺ…μ—μ„œ μ œκ±°λ©λ‹ˆλ‹€ (문제 λ°©μ§€)
- **인코딩 문제 ν•΄κ²°**: Python 슀크립트 νŒŒμΌμ— 브랜치λͺ…을 직접 ν¬ν•¨μ‹œμΌœ Windows PowerShell 인코딩 문제 νšŒν”Ό
- **Windows UTF-8 λͺ¨λ“œ**: Python μ‹€ν–‰ μ‹œ `-X utf8` ν”Œλž˜κ·Έ μ‚¬μš© ν•„μˆ˜
- **μ„€μ • 파일 μžλ™ 볡사**: worktree 생성 ν›„ μ—μ΄μ „νŠΈκ°€ λ™μ μœΌλ‘œ 파일 볡사
- **ν”Œλž«νΌ 독립성**: Windows/macOS/Linux λͺ¨λ‘ λ™μΌν•œ λ°©μ‹μœΌλ‘œ 처리

**μ‹€ν–‰ μ˜ˆμ‹œ**:
```powershell
# Windows PowerShell
cd d:\0-suh\project\RomRom-FE
git config --global core.longpaths true

# Python UTF-8 λͺ¨λ“œλ‘œ μ‹€ν–‰ (Windows ν•œκΈ€ 인코딩 문제 ν•΄κ²°)
python -X utf8 init_worktree_temp.py

# 브랜치λͺ…: 20260116_#432_UX_κ°œμ„ _및_νŽ˜μ΄μ§€_λ””μžμΈ_μˆ˜μ •
# β†’ Git 브랜치: 20260116_432_UX_κ°œμ„ _및_νŽ˜μ΄μ§€_λ””μžμΈ_μˆ˜μ •
# β†’ 폴더λͺ…: 20260116_432_UX_κ°œμ„ _및_νŽ˜μ΄μ§€_λ””μžμΈ_μˆ˜μ •
```

**Python 슀크립트 ꡬ쑰**:
```python
# -*- coding: utf-8 -*-
import sys
import os
import shutil
import glob

# ν”„λ‘œμ νŠΈ 루트둜 이동
os.chdir('ν”„λ‘œμ νŠΈ_루트_경둜')

# 브랜치λͺ… (# 제거됨)
branch_name = '20260116_432_UX_κ°œμ„ _및_νŽ˜μ΄μ§€_λ””μžμΈ_μˆ˜μ •'

# worktree_manager μ‹€ν–‰
sys.path.insert(0, '.cursor/scripts')
import worktree_manager
os.environ['GIT_BRANCH_NAME'] = branch_name
os.environ['PYTHONIOENCODING'] = 'utf-8'
sys.argv = ['worktree_manager.py']
exit_code = worktree_manager.main()

# worktree 경둜λ₯Ό ν™˜κ²½λ³€μˆ˜λ‘œ μ„€μ • (μ—μ΄μ „νŠΈκ°€ 파일 볡사에 μ‚¬μš©)
if exit_code == 0:
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}')

sys.exit(exit_code)
```

## μ„€μ • 파일 볡사 (μ—μ΄μ „νŠΈ 동적 νŒλ‹¨)

Worktree 생성 성곡 ν›„, **μ—μ΄μ „νŠΈκ°€ `.gitignore`λ₯Ό λΆ„μ„ν•˜μ—¬ 민감 νŒŒμΌμ„ λ™μ μœΌλ‘œ νŒλ‹¨**ν•˜κ³  λ³΅μ‚¬ν•©λ‹ˆλ‹€.

### Step 1: .gitignore 뢄석

ν”„λ‘œμ νŠΈ `.gitignore` νŒŒμΌμ„ 읽고 λ‹€μŒ μΉ΄ν…Œκ³ λ¦¬μ˜ 민감 파일 νŒ¨ν„΄μ„ μ‹λ³„ν•©λ‹ˆλ‹€:

| μΉ΄ν…Œκ³ λ¦¬ | 식별 νŒ¨ν„΄ | μ„€λͺ… |
|---------|----------|------|
| Firebase μ„€μ • | `google-services.json`, `GoogleService-Info.plist` | Firebase 연동 μ„€μ • |
| μ„œλͺ… ν‚€/μΈμ¦μ„œ | `key.properties`, `*.jks`, `*.p12`, `*.p8`, `*.mobileprovision` | μ•± μ„œλͺ… μΈμ¦μ„œ |
| λΉŒλ“œ μ„€μ • | `Secrets.xcconfig`, λ―Όκ°ν•œ `*.xcconfig` | iOS λΉŒλ“œ λΉ„λ°€ μ„€μ • |
| ν™˜κ²½ λ³€μˆ˜ | `*.env` | ν™˜κ²½λ³„ μ„€μ • 파일 |
| IDE 둜컬 μ„€μ • | `settings.local.json` | Claude/Cursor 둜컬 μ„€μ • |

### Step 2: μ‹€μ œ 파일 확인 및 볡사

1. `.gitignore`에 λͺ…μ‹œλœ νŒ¨ν„΄ 쀑 **μ‹€μ œ μ‘΄μž¬ν•˜λŠ” 파일** 확인
2. μ‘΄μž¬ν•˜λŠ” 파일만 worktree 경둜둜 볡사
3. 디렉토리 ꡬ쑰 μœ μ§€ (예: `android/app/google-services.json` β†’ `worktree/android/app/google-services.json`)

**볡사 λͺ…λ Ή μ˜ˆμ‹œ**:
```bash
# Python shutil μ‚¬μš©
import shutil
shutil.copy2('μ›λ³Έκ²½λ‘œ', 'worktree경둜/μ›λ³Έκ²½λ‘œ')
```

### Step 3: 볡사 μ œμ™Έ λŒ€μƒ (μ ˆλŒ€ 볡사 κΈˆμ§€)

λ‹€μŒμ€ 민감 νŒŒμΌμ΄λ”λΌλ„ **μ ˆλŒ€ λ³΅μ‚¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€**:

| 경둜/νŒ¨ν„΄ | 이유 |
|----------|------|
| `build/`, `target/`, `.gradle/` | λΉŒλ“œ μ‚°μΆœλ¬Ό (μƒˆλ‘œ λΉŒλ“œ ν•„μš”) |
| `node_modules/`, `Pods/`, `.dart_tool/` | μ˜μ‘΄μ„± (μƒˆλ‘œ μ„€μΉ˜ ν•„μš”) |
| `.report/`, `.run/` | λ³΄κ³ μ„œ (worktreeλ³„λ‘œ 별도 생성) |
| `.idea/` | IDE μΊμ‹œ 전체 |
| `*.log`, `*.class`, `*.pyc` | μž„μ‹œ/컴파일 파일 |

### Step 4: κ²°κ³Ό 좜λ ₯

λ³΅μ‚¬λœ 파일 λͺ©λ‘μ„ βœ… 이λͺ¨μ§€μ™€ ν•¨κ»˜ 좜λ ₯ν•©λ‹ˆλ‹€:
```
βœ… android/app/google-services.json 볡사 μ™„λ£Œ
βœ… ios/Runner/GoogleService-Info.plist 볡사 μ™„λ£Œ
βœ… android/key.properties 볡사 μ™„λ£Œ
```

**μ°Έκ³ **:
- 파일이 μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ ν•΄λ‹Ή λ³΅μ‚¬λŠ” μžλ™μœΌλ‘œ κ±΄λ„ˆλœλ‹ˆλ‹€.
- μ—μ΄μ „νŠΈκ°€ `.gitignore`λ₯Ό λΆ„μ„ν•˜μ—¬ 볡사 λŒ€μƒμ„ λ™μ μœΌλ‘œ κ²°μ •ν•©λ‹ˆλ‹€.
46 changes: 46 additions & 0 deletions .claude/commands/report.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,52 @@
- βœ… νŠΉμ΄ν•œ λΆ€λΆ„μ΄λ‚˜ μ£Όμ˜ν•  점은 κ°„λ‹¨νžˆ μ„€λͺ…
- βœ… 민감 정보 λ§ˆμŠ€ν‚Ή: API Key, Password, Token, Secret 등은 λ°˜λ“œμ‹œ λ§ˆμŠ€ν‚Ή 처리

## β›” κΈˆμ§€ 사항 (ν•„μˆ˜)

λ³΄κ³ μ„œ μž‘μ„± μ‹œ λ‹€μŒ λ‚΄μš©μ€ **μ ˆλŒ€ ν¬ν•¨ν•˜μ§€ μ•ŠμŒ**:

### μ ˆλŒ€ μ‚¬μš© κΈˆμ§€ ν•„λ“œ (메타 정보)
λ‹€μŒ ν•„λ“œλŠ” μ–΄λ–€ ν˜•νƒœλ‘œλ“  λ³΄κ³ μ„œμ— ν¬ν•¨ν•˜μ§€ μ•ŠμŒ:

- ❌ `**μž‘μ„±μž**:` / `**μž‘μ—…μž**:` / `**λ‹΄λ‹Ήμž**:` ν•„λ“œ
- ❌ `**μž‘μ„±μΌ**:` / `**μž‘μ—…μΌ**:` / `**λ‚ μ§œ**:` ν•„λ“œ (λ³΄κ³ μ„œ λ³Έλ¬Έμ—μ„œ)
- ❌ `## μž‘μ„± 정보` 같은 메타 정보 μ„Ήμ…˜
- ❌ λ³΄κ³ μ„œ 상단에 이슈 링크 + λ‚ μ§œ + μž‘μ„±μž μ‘°ν•©

### μ ˆλŒ€ μ‚¬μš© κΈˆμ§€ 단어/ν‘œν˜„
- ❌ `Claude`, `Claude Code`, `claude-opus`, `claude-sonnet` λ“± AI 이름
- ❌ `Cursor`, `Copilot`, `GPT`, `ChatGPT` λ“± AI 도ꡬλͺ…
- ❌ `AI`, `인곡지λŠ₯`, `μžλ™ 생성`, `μžλ™ μž‘μ„±` λ“±μ˜ ν‘œν˜„
- ❌ `Co-Authored-By: Claude` 같은 μ„œλͺ…
- ❌ λͺ¨λΈλͺ… (Sonnet, Opus, GPT-4 λ“±)

### 잘λͺ»λœ μ˜ˆμ‹œ (μ ˆλŒ€ μ‚¬μš© κΈˆμ§€)
```markdown
## μž‘μ„± 정보
- **μž‘μ„±μΌ**: 2026-01-20
- **μž‘μ„±μž**: Claude Code (claude-opus-4-5-20251101)

**이슈**: [#152](...)
**μž‘μ„±μΌ**: 2026-01-12
**μž‘μ„±μž**: Claude Code

**이슈**: [#145](...)
**μž‘μ—…μΌ**: 2026-01-12
**μž‘μ—…μž**: Claude Code
```

### μ˜¬λ°”λ₯Έ μ˜ˆμ‹œ
λ³΄κ³ μ„œλŠ” **μž‘μ—… λ‚΄μš©λ§Œ** ν¬ν•¨ν•˜κ³ , 메타 정보(μž‘μ„±μž/μž‘μ„±μΌ)λŠ” μ™„μ „νžˆ μ œμ™Έ:
```markdown
### πŸ“Œ μž‘μ—… κ°œμš”
[μž‘μ—… λ‚΄μš© μ„€λͺ…]

### βœ… κ΅¬ν˜„ λ‚΄μš©
[κ΅¬ν˜„ λ‚΄μš©...]
```

**핡심**: λ³΄κ³ μ„œμ—λŠ” **μž‘μ„±μž/μž‘μ„±μΌ κ΄€λ ¨ ν•„λ“œλ₯Ό μ ˆλŒ€ ν¬ν•¨ν•˜μ§€ μ•ŠμŒ**. 파일λͺ…에 λ‚ μ§œκ°€ ν¬ν•¨λ˜λ―€λ‘œ 별도 기둝 λΆˆν•„μš”.

## πŸ”’ 민감 정보 λ§ˆμŠ€ν‚Ή (ν•„μˆ˜)

λ³΄κ³ μ„œ μž‘μ„± μ‹œ λ‹€μŒ 민감 μ •λ³΄λŠ” λ°˜λ“œμ‹œ λ§ˆμŠ€ν‚Ή 처리:
Expand Down
54 changes: 54 additions & 0 deletions .claude/scripts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Claude Scripts

이 λ””λ ‰ν† λ¦¬λŠ” Claudeμ—μ„œ κ³΅ν†΅μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλŠ” Python μœ ν‹Έλ¦¬ν‹° 슀크립트λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.

## πŸ“¦ ν¬ν•¨λœ λͺ¨λ“ˆ

### `worktree_manager.py` (v1.0.0)

Git worktreeλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€.

#### κΈ°λŠ₯
- λΈŒλžœμΉ˜κ°€ μ—†μœΌλ©΄ μžλ™ 생성 (ν˜„μž¬ λΈŒλžœμΉ˜μ—μ„œ λΆ„κΈ°)
- 브랜치λͺ…μ˜ 특수문자(`#`, `/`, `\` λ“±)λ₯Ό μ•ˆμ „ν•˜κ²Œ 처리
- `RomRom-Worktree` 폴더에 worktree μžλ™ 생성
- 이미 μ‘΄μž¬ν•˜λŠ” worktreeλŠ” κ±΄λ„ˆλ›°κ³  경둜만 좜λ ₯

#### μ‚¬μš©λ²•

**직접 μ‹€ν–‰:**

```bash
python .claude/scripts/worktree_manager.py "20260120_#163_Github_Projects_에_λŒ€ν•œ_ν…œν”Œλ¦Ώ_개발_ν•„μš”"
```

#### 좜λ ₯ μ˜ˆμ‹œ

```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🌿 Git Worktree Manager v1.0.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

πŸ“‹ μž…λ ₯된 브랜치: 20260120_#163_Github_Projects_에_λŒ€ν•œ_ν…œν”Œλ¦Ώ_개발_ν•„μš”
πŸ“ 폴더λͺ…: 20260120_163_Github_Projects_에_λŒ€ν•œ_ν…œν”Œλ¦Ώ_개발_ν•„μš”

πŸ” 브랜치 확인 쀑...
⚠️ λΈŒλžœμΉ˜κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
πŸ”„ ν˜„μž¬ 브랜치(main)μ—μ„œ μƒˆ 브랜치 생성 쀑...
βœ… 브랜치 생성 μ™„λ£Œ!

πŸ“‚ Worktree 경둜: /Users/.../project/RomRom-Worktree/20260120_163_Github_Projects_에_λŒ€ν•œ_ν…œν”Œλ¦Ώ_개발_ν•„μš”

πŸ”„ Worktree 생성 쀑...
βœ… Worktree 생성 μ™„λ£Œ!

πŸ“ 경둜: /Users/.../project/RomRom-Worktree/20260120_163_Github_Projects_에_λŒ€ν•œ_ν…œν”Œλ¦Ώ_개발_ν•„μš”
```

## βœ… μž₯점

- 🌏 **ν•œκΈ€ 경둜 μ™„λ²½ 지원**: UTF-8 μΈμ½”λ”©μœΌλ‘œ μ €μž₯λ˜μ–΄ μ•ˆμ „
- πŸ”„ **μž¬μ‚¬μš© κ°€λŠ₯**: λͺ¨λ“  ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš© κ°€λŠ₯
- πŸ“ **영ꡬ 보관**: μ‚­μ œλ˜μ§€ μ•Šκ³  계속 μ‚¬μš© κ°€λŠ₯
- πŸ€– **μžλ™ν™”**: 브랜치 생성뢀터 worktree μƒμ„±κΉŒμ§€ μžλ™ν™”
- πŸ“š **λ¬Έμ„œν™”**: λͺ¨λ“  ν•¨μˆ˜μ— docstring 포함
Loading