Claude Code / Codex CLI / Gemini CLI のスキル同期を1か所で管理。/skill-sync の仕組み、使い方、権限設定、Docker注意点を実務目線で整理。
公開時点: 記事本文に明記なし
検証日: 記事本文に明記なし
対象: Claude Code / Codex CLI / Gemini CLI / /skill-sync
~/.claude/skills/ を正本にして同期する運用はかなり現実的です。/skill-sync を自作する
一番の効果は、スキルの保管場所を1か所に戻せることです。
たとえば、こんな運用をしているとします。
~/.claude/skills/.claude/skills/ 的な配置この状態だと、新しいスキルを1つ追加するたびに、複数箇所へコピーして、内容が一致しているか確認して、どれが最新版か迷うことになります。
/skill-sync はここを割り切ります。
~/.claude/skills/ に置くつまり、「作る場所」と「配る場所」を分ける発想です。
この分離は単純ですが、実務ではかなり強いです。更新のたびに脳のメモリを削られないので、スキル整備を続けやすくなります。
見た目は「ファイルをまとめるだけ」に見えます。ですが、実際はもっと重要です。
人間は、同じ内容を複数箇所へコピペすると、どこかで忘れます。これは根性の問題ではなく、作業の性質です。
Single Source of Truth にすると、更新対象が1つになるので、**「直したつもり問題」**が起きにくくなります。
Claude Code 用、Codex 用、Gemini 用で別々に編集していると、何が違うのかを追うだけで疲れます。
正本が1つなら、差分管理は同期ロジック側に寄せられます。人間は中身の改善だけに集中できます。
AI ツールを増やすのは簡単です。維持するのが面倒です。
/skill-sync の価値は、ツールを増やしてもスキル管理の運用コストを増やしにくいことにあります。
実際のところ、/skill-sync がやっていることはシンプルです。魔法のように各ツールを理解してくれるわけではなく、かなり地に足がついた仕組みです。
~/.claude/skills/ を Single Source of Truth として、Claude Code・Codex CLI・Gemini CLI へ自動展開する。
~/.claude/skills/ を正本として読む要するに、同期の責務を人間から外す仕組みです。
ツールごとに、期待するディレクトリ構成や読み方が少しずつ違います。ここを毎回手で合わせるのがつらい。
/skill-sync は、その差を吸収して「正本 → 各ツール向け出力」に変換する役割を持ちます。
これは、ビルド成果物を直接編集しないのと同じ発想です。編集対象と配布対象を分けたほうが、壊れにくい。
ここは大事です。
つまり、同期ツールは整流器であって、差異を完全に消す装置ではないです。
細かな導入手順は環境差が出るので断定しませんが、考え方はシンプルです。
~/.claude/skills/ に集めるこのディレクトリに、自作スキルを寄せます。
~/.claude/skills/
code-review/
commit-message/
incident-note/
ここを唯一の編集対象にします。
プロジェクトで共有したいスキルがあるなら、その同期先を決めます。
ポイントは、**「置く場所を増やす」のではなく、「同期先を定義する」**ことです。
/skill-sync を走らせるここで正本から各所へ展開します。
実際のコマンド名やオプションは環境により変わる可能性があるので、ここでは断定しませんが、運用としては次の感覚です。
skill-sync
これを定期実行または更新時に走らせることで、各ツールのスキルを揃えます。
これが最重要です。
Claude Code 側のコピーを直さない。Codex 側のコピーも直さない。Gemini 側も同じ。
直すのは ~/.claude/skills/ だけです。
この運用が徹底できると、スキル管理のだるさがかなり減ります。
ここは地味にハマります。
Claude Code は、環境によって権限やアクセス許可の扱いが絡みます。同期そのものはできても、読み書き先の権限が足りずに失敗することがあります。
実務上は、少なくとも次を先に見ます。
~/.claude/skills/ に書き込めるか~/.claude とホスト側が別物ここで「同期ツールが壊れている」と思いがちですが、実際は権限と実行環境の問題であることが多いです。
Docker で開発している人は、ここを甘く見ないほうがいいです。
~/.claude はホストと別管理Docker で /skill-sync を使うなら、まずどちらを正本にするか決めるべきです。
~/.claude/skills/ はホストに置くこれは分かりやすいです。個人開発ならこちらのほうが事故が少ないです。
チームで統一するならありですが、個人用途では少し重いです。
Docker を使うなら、同期前に次を確認します。
whoami
pwd
ls -la ~/.claude/skills/
この3つだけでも、見え方がかなり変わります。
/skill-sync は、何でもかんでも便利にするタイプではありません。ハマる場面はかなり明確です。
ここははっきり分けていいです。CLI に慣れている人には効く。慣れていない人には、そもそも不要なツールです。
大きな変化に見えにくいところですが、毎日触るものほどじわじわ効いてきます。
一番良かったのは、スキル更新の心理的コストが下がったことです。
「複数箇所を直すのが面倒だな」が消えるだけで、スキルを追加・改善する頻度が上がります。すると、結果として AI ツールの使い勝手も上がります。ここは地味ですが、かなり実務的です。
一方で、微妙な点もあります。
つまり、入れた瞬間に全部解決する道具ではないです。ですが、運用ルールまで含めて整えると、かなり現実的に効きます。
/skill-sync を自作する「そのまま使いたい」という人のために、Claude Code に一発で依頼できるプロンプトテンプレートを置いておきます。
自分の環境に合わせて [YOUR_HOME] などを書き換えて使ってください。初めて試すなら、まず dry-run で確認してから本番実行するのが安全です。
以下の要件でスキルファイルを ~/.claude/skills/skill-sync/SKILL.md として作成してください。
## 目的
~/.claude/skills/ を Single Source of Truth として、
Claude Code / Codex CLI / Gemini CLI の3ツールにスキルを自動同期するスキル。
## 同期先
- Codex CLI : ~/.codex/skills/{name}/ にシンボリックリンク(ln -sfn)
- Gemini CLI : ~/.gemini/commands/{name}.toml に TOML ファイルを自動生成
## Gemini TOML の生成ルール
- SKILL.md の YAML frontmatter から description フィールドを読む
- テンプレート:
description = "{description}"
prompt = """
以下のスキル手順を実行してください:
!{cat ~/.claude/skills/{name}/SKILL.md}
"""
- frontmatter がなければスキップしてログに出力する
## 動作要件
1. dry-run フラグ対応(変更内容を表示するが実行しない)
2. 冪等性(再実行で変更が0になること)
3. 同期前に ~/.codex/skills/ と ~/.gemini/commands/ の存在確認
4. 除外リスト(スキップするスキル名を配列で指定できること)
## 注意点(必ずコメントとして SKILL.md に含めること)
- ~/.codex/ や ~/.gemini/ への書き込みは Claude Code の
settings.json > allowedDirectories に追加が必要
- Codex は YAML frontmatter 必須(なければスキップ)
- Gemini の trustedFolders.json でリンク先が信頼外だと
ブロックされる場合がある
- Docker 環境ではホスト側で実行し、コンテナへは別途マウントすること
このプロンプトをそのまま Claude Code に渡すと、SKILL.md が生成されます。あとは /skill-sync --dry-run で確認 → /skill-sync で本番実行の流れです。
| 変えたい点 | プロンプトに追記する内容 |
|---|---|
| プロジェクトスコープも対象にする | 「.claude/skills/ 配下も同期先に加えてください」 |
| Codex を使っていない | 「Codex CLI の同期は不要です」 |
| グローバルのみ / プロジェクトのみ | 「グローバルスコープ(~/.claude/skills/)のみ対象にしてください」 |
| 除外したいスキルがある | 「除外リスト: skill-sync, nanobanana」 |
いきなり大規模に入れ替える必要はありません。まずは小さく始めるのがいいです。
~/.claude/skills/ にあるスキルを棚卸しする/skill-sync を生成するdry-run で同期先を確認するsettings.json の allowedDirectories に ~/.codex と ~/.gemini を追加する~/.claude/skills/)だけ編集するこの順番なら、導入の失敗コストは低いです。
/skill-sync の価値は、派手な機能ではなく、スキル管理の分散を止められることにあります。
Claude Code、Codex CLI、Gemini CLI を横断している人ほど、手動コピーのだるさは見逃せません。
~/.claude/skills/ に置く/skill-sync を自作するdry-run で確認してから本番実行CLI に慣れている人なら、今日中に整えられる作業量です。
ハードウェア系エンジニア20年超。業務では単独でソリューション2,000件超を回してきた。Claude Code・Codex・Gemini CLI を同時に使い始めてから、スキル管理の破綻に一度ハマり、/skill-sync を作った。このサイト(META-MARK)も全部自作。
META-MARK × AI
ローカルAIを動かすGPU、ちゃんと選べていますか?
VRAM・性能・コスパをMetaScoreで数値化。AIアプリ別の推奨ハードウェア要件も確認できます。