← Blogの記事一覧へ
SaaSClaude CodeCodexAgent Skills

SKILL.mdをClaude CodeとCodexで共有:配置と起動時コスト

11 分で読める

このトピックを深掘りする

SaaSの導入・連携

AIに仕事の続きを渡すために、会議の原文、未完了の宿題、確認できない項目をどう残すか。導入判断と連携実装を掘り下げる。

全15本中 9 本目。

このトピックの記事一覧

シリーズ全体の流れを見ながら、次に読む記事へ進めます。 初めての方はホームへ →

同じSKILL.mdは、.agents/skills/を正本にして.claude/skills/からディレクトリsymlinkで指すと、Claude CodeとCodexの両方の一覧に出た。既定では本文を読む前に、名前と説明文の一覧がcontextへ載る(Codexはパスも含む)。今回の実測では、説明文が長いと起動時の推定tokenも増えた。

確認日は2026-11-01(JST)。対象はClaude Code 2.1.312、codex-cli 0.163.0、macOS(Darwin 25.6.0)。一時HOMEと一時repoで試した。Windows・WSL・リモートからのcloneは試していない。

要点

  • Claude Codeは.claude/skills/を読み、Codexは.agents/skills/を読む。1か所を正本にし、もう一方をsymlinkにすると両方で使える。
  • 起動時の一覧にはnameとdescriptionが入る(Codexはパスも含む)。Claudeでは未ログインの明示呼出し(終了コード1)の会話記録に本文が展開された。補助資料は今回の範囲では展開されなかった。
  • descriptionは共通仕様の1,024文字以内に収める。Codexは実測した1,025・1,500・5,000文字を1,024文字に短縮した。
  • skillが多いと、両ツールとも名前を残して説明を削った。どのskillから削るかの順序は実測していない。
  • 数値は/contextの推定tokenで、課金量ではない。起動時の一覧を測ったもので、全ターンの測定でもない。

同じSKILL.mdは両方で使えるか

使える。SKILL.mdの形式はAgent Skillsの共通仕様に沿っている。今回は4つの共有方法を試した。Claudeでの本文展開は未ログインで終了コード1の会話記録を調べたもので、モデルの実行成功を意味しない。

方法 両CLIの一覧 Claudeの明示呼出しで本文が展開
A: .agents/skillsが正本、.claude/skillsにディレクトリsymlink 出た された
B: Aの逆向き 出た された
C: SKILL.mdだけをファイルsymlink 出た された
D: 同じ内容のコピー 出た された

AはGitにsymlink(mode 120000)として記録された。ローカルにcloneした後も、両CLIの一覧に出た。コピーは内容がずれやすいため、Aを勧める。Codexが実際のターンで本文を読むかは、ログインしたターンを使っていないため未検証である。

どこに置けば読まれるか

repoのルートから起動した場合と、その下のpkg/から起動した場合を比べた。✓は起動直後にClaudeのinit.skills、またはCodexの初期入力に出たことを示す。

置き場所 Claude(root起動) Claude(pkg起動) Codex(root起動) Codex(pkg起動)
<repo>/.claude/skills/ ✓ ✓ – –
<repo>/.agents/skills/ – – ✓ ✓
<repo>/pkg/.claude/skills/ – ✓ – –
<repo>/pkg/.agents/skills/ – – – ✓
~/.claude/skills/ ✓ ✓ – –
~/.agents/skills/ – – ✓ ✓
$CODEX_HOME/skills/ – – ✓ ✓

root起動の直後は、pkg/の下のskillはどちらの一覧にも出ない。Claude Codeの公式資料では、下の階層のskillは、Claudeがそこのファイルを扱った時点で追加される。この遅延読み込みは今回測っていない。

frontmatterはどう書くか

Agent Skills仕様の必須項目は2つある。

項目 必須 条件
name はい 1〜64文字。小文字・数字・ハイフンのみ。先頭・末尾や連続したハイフンは不可
description はい 1,024文字以内。空にしない。何をするか、いつ使うかを書く

Claude Code公式では、どちらも任意としている。nameがなければフォルダ名を使う。descriptionがなければ、本文の最初の空でない行で補う。description欠落時の補完はClaude Code側の例外で、Codexはdescriptionのないskillを初期一覧に入れなかった。

正常例を含む8ケースを同時に置いた結果の一部をまとめる。

ケース Claude /context Codex 初期入力
name欠落 フォルダ名で表示 フォルダ名で表示
nameとフォルダ名が不一致 frontmatterのnameで表示 frontmatterのnameで表示
大文字と空白を含むname そのまま表示 そのまま表示
壊れたYAML name値の[unterminatedを表示 name値の[unterminatedを表示
nameが65文字 65文字のnameで表示 表示されない
description欠落 本文の先頭行で表示 表示されない
frontmatterなし 本文の先頭行で表示 表示されない

Claudeのinit.skills(利用者向けの一覧)には、description欠落とfrontmatterなしが出なかった。一方、/context(モデル向けの推定)には出た。利用者向け一覧とモデル向けの推定表示で結果が違う。表示されたことは、仕様に合うことを意味しない。CLIが補っても、共有するskillは共通仕様を守る。

---
name: release-notes
description: Drafts release notes from merged PRs. Use when preparing a version tag.
---

nameはフォルダ名と同じにする。

本文と補助資料はいつ読まれるか

公式資料では、本文はskillを使うときに読む。今回、Claudeの未ログインの呼出し(終了コード1)の会話記録で展開を確認した。同じdescriptionで、本文214文字と20,059文字のskillを作った。Claudeの/contextでは、どちらも20 token未満の推定だった。この2ケースでは、本文の長さによる起動時の推定値の差は出なかった。

これは初期入力の観測であり、Codexがskillを選んだ後に本文を読む挙動は未検証である。Codexのdebug prompt-inputでは、通常の入力でも$ld-longを指定した入力でも、本文と補助資料の目印は入らなかった。Claudeで/ld-longを呼ぶと、会話記録に本文の目印が入り、補助資料の目印は入らなかった。未ログインのため呼出しは終了コード1で、モデルの応答はない。モデルが補助資料を選んで読む挙動は確かめていない。

descriptionはどれだけcontextを使うか

ASCII文字で長さを厳密にそろえて比べた。

description長 Claude /context推定 Codex初期一覧
200文字 ~70 全文
1,024文字 ~350 全文
1,025文字 ~350 1,024文字に短縮
1,500文字 ~500 1,024文字に短縮
5,000文字 ~520 1,024文字に短縮

Codexの短縮は省略記号を含めて1,024文字で、末尾の目印は消えた。これは今回の版と入力での観測で、全体予算の公式値とは別の話である。Claude Code公式には、一覧のdescriptionとwhen_to_useの合計を既定で1,536文字に切るという記述がある。

skillが多いと説明は削られるか

削られた。989文字のdescriptionを持つskillを60件追加すると、Claudeの/contextのSkills行は約4kから約9.9kになった。budget-00は~330で、budget-29・budget-30・budget-59は20未満になった。全60件の名前は残った。Codexでも60件の名前は残り、budget-00とbudget-59の説明は256文字と252文字に短縮された。

Claude Code公式では一覧の予算はcontext windowの1%で、あふれると使用回数の少ないskillから説明を落とす。Codex公式では初期一覧は既定でcontext windowの2%(不明なときは8,000文字)までで、まず説明を短くし、それでも多ければ一部のskillを省いて警告を出すことがある。今回は使用履歴を作っていないので、頻度順に削られるかは実測していない。

symlinkで共有する手順

mkdir -p .agents/skills/probe .claude/skills
# .agents/skills/probe/SKILL.md を作る
ln -s ../../.agents/skills/probe .claude/skills/probe
git add .agents/skills/probe .claude/skills/probe
git ls-files -s .claude/skills/probe

最後のコマンドで120000が出れば、symlinkとして記録されている。リンク先は.claude/skills/から見た相対パスで書く。Windowsや別OSでの扱いは未検証である。

自分の環境で確かめるには

codex debug prompt-input
claude -p /context

1行目は、Codexがモデルに渡す初期入力を出す。2行目は、Claude Codeのcontextの推定内訳を出す。Claudeの対話画面で/skill-nameと打つと、そのskillを明示的に呼べる。

まだ分かっていないこと

自動選択の精度、ログインした実ターン、補助資料の選び方、課金token、pluginや管理設定のある環境、Windowsは試していない。検索流入やAIからの参照に効くかも測っていない。

関連記事と資料

FAQ

同じSKILL.mdをClaude CodeとCodexで共有できるか

できる。.agents/skills/を正本にし、.claude/skills/からディレクトリsymlinkを張ると、Claude Code 2.1.312とcodex-cli 0.163.0の両方の一覧に出た。逆向き、SKILL.mdだけのsymlink、コピー、ローカルclone後も一覧に出た。Windowsなどは未検証である。

descriptionは毎回contextに入るか

公式資料では、既定のskillは名前と説明を先にcontextへ載せるが、予算を超えると説明が省略・短縮される。Codexの初期一覧にはパスも入る。今回測ったのは起動時の一覧で、全ターンではない。表示は推定tokenで、課金量ではない。Claude Codeではdisable-model-invocation: trueにすると説明が入らない。

本文と補助資料はいつ読まれるか

公式資料では、本文はskillを使うときに読む。今回、Claudeの未ログインの呼出し(終了コード1)の会話記録で展開を確認した。本文が20,059文字でも起動時の推定は増えず、Claudeで/skill-nameを呼ぶと本文が会話記録に入った。補助資料はその時点では入らなかった。モデルが補助資料を選んで読む挙動は未検証である。

skillが多いと説明は削られるか

削られた。989文字の説明を持つskillを60件足すと、両ツールとも全件の名前を残し、一部の説明を短くした。Claude Code公式には使用の少ないskillから削るとあるが、使用頻度順かは実測していない。

nameやdescriptionが欠けるとどうなるか

nameがなければ、両ツールともフォルダ名で表示した。descriptionがないと、Claude Codeは本文の先頭行で補い、Codexは初期一覧に入れなかった。共有するskillでは、共通仕様どおり両方を書く。

よくある質問

Q. 同じSKILL.mdをClaude CodeとCodexで共有できるか
できる。`.agents/skills/`を正本にし、`.claude/skills/`からディレクトリsymlinkを張ると、Claude Code 2.1.312とcodex-cli 0.163.0の両方の一覧に出た。逆向き、SKILL.mdだけのsymlink、コピー、ローカルclone後も一覧に出た。Windowsなどは未検証である。
Q. descriptionは毎回contextに入るか
公式資料では、既定のskillは名前と説明を先にcontextへ載せるが、予算を超えると説明が省略・短縮される。Codexの初期一覧にはパスも入る。今回測ったのは起動時の一覧で、全ターンではない。表示は推定tokenで、課金量ではない。Claude Codeでは`disable-model-invocation: true`にすると説明が入らない。
Q. 本文と補助資料はいつ読まれるか
公式資料では、本文はskillを使うときに読む。今回、Claudeの未ログインの呼出し(終了コード1)の会話記録で展開を確認した。本文が20,059文字でも起動時の推定は増えず、Claudeで`/skill-name`を呼ぶと本文が会話記録に入った。補助資料はその時点では入らなかった。モデルが補助資料を選んで読む挙動は未検証である。
Q. skillが多いと説明は削られるか
削られた。989文字の説明を持つskillを60件足すと、両ツールとも全件の名前を残し、一部の説明を短くした。Claude Code公式には使用の少ないskillから削るとあるが、使用頻度順かは実測していない。
Q. nameやdescriptionが欠けるとどうなるか
nameがなければ、両ツールともフォルダ名で表示した。descriptionがないと、Claude Codeは本文の先頭行で補い、Codexは初期一覧に入れなかった。共有するskillでは、共通仕様どおり両方を書く。