provelisted
Install: claude install-skill dong-park/pharos
# prove — Pharos 변경 실측(입증) 레시피
`cargo check`·tsc·vitest 그린은 **컴파일/단위** 검증일 뿐이다. Tauri 앱의 실제
동작(특히 `src-tauri/` Rust, browser/webview, IPC command 등록)은 **앱을 새로
빌드해 실행**해야 확인된다. 이 스킬은 "재빌드 → 재시작 → 인앱 실측 → before/after
대비"를 한 흐름으로 묶는다.
> 핵심 함정: 지금 실행 중인 `/Applications/pharos.app`은 보통 **이전 빌드**다.
> 코드 변경은 재빌드+재시작 전엔 절대 반영되지 않는다. 항상 바이너리 mtime을
> 커밋 시각과 대조해 새/옛 코드를 먼저 판별하라.
## 1. 새/옛 코드 판별 (먼저)
```bash
ps aux | grep -i 'MacOS/pharos' | grep -v grep | awk '{print $11}' | head -1 # 실행 바이너리 경로
stat -f '%Sm %N' "<그 경로>" # mtime
git log -1 --format='%ci %h' # 최신 커밋 시각
```
바이너리 mtime이 변경 커밋보다 **이전**이면 옛 코드 → 재빌드 필요.
## 2. 재빌드 (.app만)
```bash
yarn tauri build --bundles app # dmg 생략 → hdiutil orphan 마운트 이슈 회피, 빠름
# 산출물: target/release/bundle/macos/pharos.app (release, ~1분)
```
frontend(tsc+vite)도 함께 빌드된다. dmg가 필요 없으면 `--bundles app`로 충분.
## 3. 재시작 (세션 보존)
`pharosd`(PTY 데몬)가 GUI와 분리돼 있어 **GUI만 재시작해도 워크스페이스/pane은
보존**된다. `/Applications`는 건드리지 말고 빌드 산출물을 직접 실행하면 되돌리기
쉽다(기존 앱 다시 열면 끝). 영구 반영을 원할 때만 `/Applications/pharos.app` 교체.
```bash
osascript -e 'tell application "pharos" to quit'
osascript -e 'delay 2' # foreground `sleep`은 막혀 있음 → osascript delay 사용
pgrep -x pharos >/dev/null && { pkill -x pharos; osascript -e 'delay 1'; }
open /Users/<you>/pharos/target/release/bundle/macos/pharos.app
osascript -e 'delay 5'
```
재시작 후 `mcp__pharos__i