전체 문서
07 크로스 도구 동기화

Cross-Tool Sync

Claude Code ↔ Codex 양방향 동기화, 멀티OS 배포, $HOME 경로 확장

동기화 전체 흐름

flowchart TD
  K["keystone-hub (Git)"]
  M["apply.sh --profile personal-macos"]
  W["apply.sh --profile personal-windows"]
  L["layers merge<br/>skills, hooks, rules, scripts, agents"]
  S["settings deep merge<br/>$HOME 경로 확장"]
  C["Claude commands<br/>~/.claude/commands"]
  X["Codex skills<br/>~/.codex/skills 자동 변환"]
  U["cc-sync upstream"]
  P["/upstream-sync"]
  R["flat to layered 매핑<br/>keystone-hub 흡수"]

  K --> M --> L --> S --> C --> X
  K --> W --> L
  U --> P --> R --> K

apply.sh가 하는 일

단계동작
1. Layer merge00-universal → 10-os-* → 20-company-* → 30-machine-local 순서로 덮어쓰기
2. Settings mergehooks 배열은 합산, 스칼라는 상위 레이어 우선 (Python deep merge)
3. Path expansionsettings.json 내 $HOME → 실제 home 디렉토리로 치환
4. Stale cleanup폐기된 hook 자동 제거
5. Commands syncai-rules/.claude/commands/ → ~/.claude/commands/ 복사
6. Codex syncClaude skills + commands → ~/.codex/skills/ SKILL.md 변환
7. Tools checkbun, node, clawd-on-desk 설치 여부 확인

경로 포터블화

settings.json 소스에서 절대 경로 대신 $HOME/을 사용:

// 레이어 소스 (keystone-hub)
"command": "$HOME/.claude/hooks/qa-gate-before-push.sh"

// apply.sh 적용 후 (macOS)
"command": "/Users/choa712-mac/.claude/hooks/qa-gate-before-push.sh"

// apply.sh 적용 후 (Windows Git Bash)
"command": "/c/Users/username/.claude/hooks/qa-gate-before-push.sh"

새 사용자가 clone + apply.sh 실행만 하면 자동으로 올바른 경로가 설정됩니다.

Claude ↔ Codex 스킬 동기화

Claude CodeCodex CLI
~/.claude/skills/*/SKILL.md~/.codex/skills/*/SKILL.md
~/.claude/commands/*.md~/.codex/skills/*/SKILL.md (디렉토리 변환)
/skill-name으로 호출$skill-name으로 호출

apply.sh가 자동으로:

  1. Claude skills 디렉토리를 Codex에 복사 (SKILL.md 있는 것만)
  2. Claude commands (.md 단일 파일)를 Codex skills (디렉토리/SKILL.md) 구조로 변환

신규 셋업 (한 줄)

git clone <keystone-hub> ~/lucy/keystone-hub
git clone <ai-rules> ~/lucy/ai-rules
cd ~/lucy/keystone-hub && ./apply.sh --profile personal-macos

이후 업데이트:

cd ~/lucy/keystone-hub && git pull && ./apply.sh --profile personal-macos