codex-sync - Claude Code skill を Codex CLI へ同期
概要
~/.claude/skills/ 配下の各 skill ディレクトリを ~/.codex/skills/<name> にディレクトリ symlink で公開し、Codex CLI からも同じ skill body を呼び出せるようにする。
実装は ~/.claude/skills/codex-sync/codex-sync.sh に委譲する。skill 本体での Bash 呼び出しは最大 1 回に抑える。
ワークフロー
Step 1: 引数チェック
| 引数 | 動作 |
|---|---|
| なし | 通常実行(symlink を作成) |
| --dry-run | 作成予定のみ表示(実際の symlink は作らない) |
| その他 | usage を表示して終了 |
Step 2: 同期スクリプトの実行
Bash ツールで次を 1 回だけ実行する:
~/.claude/skills/codex-sync/codex-sync.sh [--dry-run]
スクリプトは各 skill ごとに以下のいずれかを 1 行で出力する:
| ステータス | 意味 |
|---|---|
| CREATED | 新規 symlink を作成した |
| OK | 既に正しい symlink が存在(冪等) |
| SKIP | broken symlink・自分自身(codex-sync)等で除外 |
| WARN | SKILL.md(大文字)が無く Codex で認識されない可能性 |
| CONFLICT | 既存ファイルが別の先を指す or 通常ファイル。手動対応必要 |
Step 3: 結果の要約
スクリプトの最終行 Summary: N created, M existed, K conflicts, W warns, S skipped をユーザーに伝える。
CONFLICT が 1 件以上ある場合、スクリプトは exit 2 で終了する。その場合は競合内容(existing symlink -> ... 行)をそのまま提示し、ユーザーに手動解消を促す。
注意事項
- Codex の
SKILL.md大文字要件: codex のスキャナはディレクトリ走査時の元ファイル名を case-sensitive 比較する。skill.md(小文字)の skill は macOS APFS の case-insensitivity に依存して見えるケースもあるが、Linux では認識されない。本 skill はSKILL.md不在時にWARNを出すだけで自動リネームはしない(破壊的変更を避けるため) - broken symlink の扱い:
~/.claude/skills/<name>が壊れた symlink の場合は SKIP。自動修復はしない - 自分自身の扱い:
codex-syncも同期対象に含める(Codex 側からも/codex-syncを呼べるように)。再帰の問題は無い(symlink の張替えは冪等) - 冪等性: 何度実行しても結果は同じ。差分のみが
CREATEDで表示される