
自分のスキルファイルがClaude Codeに読まれない置き場所は、19か所中18か所
あなたが書いたスキル(SKILL.md)は、置き場所を間違えると、AIに一度も渡りません。同じ空のスキルを19か所に置いて手元のMacで確かめたところ、Claude Code に見えたのは1か所、Codex は2か所でした。
Claude Code や Codex に自分の手順(スキル)を覚えさせている人は、置き場所を2つに増やすだけでは足りないことがあります。
この記事では、実験の中身と、1本のスキルを両方に読ませる置き方を書きます。読み終えたら、自分のスキルが今どこにあるかを ls で確かめてください。
先に結論
確かめたことを3点にまとめます。
19か所に置いた空のスキルのうち、Claude Code 2.1.290 の一覧に出たのは .claude の1か所だけでした。2回とも同じ結果です
Codex 0.153.4 は .agents と .codex の2か所でした。こちらも2回とも同じです
本体を .agents に置き、.claude からシンボリックリンクを張ると、両方のツールに名前が出ました(各1回)

何を、どう置いて確かめたか
きっかけは、10月3日に GitHub のトレンド上位のスキル集 impeccable を調べたことです。同じスキルが18種類のフォルダへ配られていました。
同じスキルが置かれているディレクトリは 18か所(.agent / .agents / .claude / .cursor / .dsh / .gemini / .github / .grok / .hermes / .kiro / .opencode / .pi / .qoder / .rovodev / .trae / .trae-cn / .veto / .vibe)
(出典: 筆者の10月3日の記事。GitHub の tree API で数えた結果)
配布側が18か所に置くのは分かります。では、あなたのMacで実際に読まれるのは何か所なのか。それを確かめました。
空の git リポジトリを作り、18か所に、10月3日の記事で触れた .codex を加えた19か所へ、空のスキルを1本ずつ置きました。名前は場所ごとに変え、中身は何もしない1枚です。
.claude/skills/probe-claude/SKILL.md
.agents/skills/probe-agents/SKILL.md
(以下、19か所とも同じ形)SKILL.md の中身は、名前と説明の2行だけです。
---
name: probe-claude
description: 検証用の空スキル(置き場所 .claude)。呼び出さないこと。
---あとは、各ツールに同じ質問を投げました。「このプロジェクトで利用できるスキルのうち、名前が probe- で始まるものを、名前だけ1行ずつ全て列挙して。ツールは使わず、いま見えている一覧だけから答えて」という内容です。Claude Code と Codex を、それぞれ2回ずつ走らせました。
結果は Claude Code 1か所・Codex 2か所
Claude Code は、2回とも probe-claude の1行だけを返しました。Codex は、2回とも probe-agents と probe-codex の2行でした。
# Claude Code(2回とも)
probe-claude# Codex(2回とも)
probe-agents
probe-codexこの結果は、プロジェクトのフォルダの直下に置いた場合です。ホームフォルダ側(~/.claude/skills など)は別の話で、今回は試していません。
2つのツールの結果は重なっていません。つまり、.claude に置いたスキルは Codex に見えず、.agents に置いたスキルは Claude Code に見えません。
残りの16か所は、どちらのツールにも見えませんでした。.cursor や .gemini は、名前から見て別のツール向けの置き場所のようです。このMacでは Cursor・Gemini CLI・opencode の実行ファイルが見つからず、それらは試せていません。
自分のMacで19か所を再現する
同じ実験は、使い捨てのフォルダと次のコマンドで再現できます。本物のプロジェクトの中では試さないでください。
mkdir probe && cd probe && git init -q
for d in .agent .agents .claude .cursor .dsh .gemini .github .grok .hermes .kiro .opencode .pi .qoder .rovodev .trae .trae-cn .veto .vibe .codex; do
n="probe-${d#.}"; mkdir -p "$d/skills/$n"
printf -- '---\nname: %s\ndescription: 検証用の空スキル。呼び出さないこと。\n---\n' "$n" > "$d/skills/$n/SKILL.md"
done作ったあと、そのフォルダで Claude Code や Codex に、先ほどの質問をそのまま投げます。私は、質問を1つだけ渡して答えを受け取る実行方法で、各ツール2回ずつ走らせました。
結果は、使っている版で変わるかもしれません。私が走らせたのは Claude Code 2.1.290 と Codex 0.153.4 で、手元のMacの値です。自分の版では何か所になったか、数えてみてください。

なぜ1か所しか読まないのか
答えは単純で、ツールごとに読む場所が決まっているからです。公式の説明を見ると、Claude Code の置き場所は .claude/skills でした。
Project | .claude/skills/<skill-name>/SKILL.md | Sessions in this repository. Commit it so your team gets it too
(出典: Claude Code Docs「Skills」、2026年10月6日取得)
Codex のほうは、リポジトリの置き場所として、次の1か所が表に載っています。
$REPO_ROOT/.agents/skills
(出典: Codex の公式ドキュメント「Build skills」の置き場所の表、2026年10月6日取得)
気になったのは .codex です。今回の実測では Codex が .codex に置いたスキルも読みましたが、私が見た説明には .codex/skills は載っていませんでした。公式に載っていないので、将来も読まれる保証はありません。
本体は1つ、もう片方はリンクにする
2つのツールで同じスキルを使うなら、同じ内容を2か所にコピーすると、片方だけ直し忘れて内容がずれます。本体を1つにして、もう一方からリンクを張る形で確かめました。

手順は次の3つです。使い捨てのフォルダで試してください。
.agents/skills/<名前>/SKILL.md に本体を置く
.claude/skills の中で、本体へのリンクを張る
それぞれのツールに、スキルの名前を列挙させる
2番目の1行は、次のとおりです。
ln -s ../../.agents/skills/probe-shared .claude/skills/probe-shared私の環境では、Claude Code も Codex も、probe-shared を1行返しました(各1回)。リンクの向きは、本体が .agents 側、リンクが .claude 側です。

自分のスキルファイルがどこにあるか調べる
今あるスキルがどこにあるか、プロジェクトの直下で次を打てば分かります。
find .claude/skills .agents/skills -maxdepth 1 -mindepth 1 2>/dev/null片方にしか無いスキルは、もう片方のツールには見えていません。ホームフォルダ側(~/.claude/skills など)も同じ考え方ですが、今回は試していません。
よくある質問
一覧に出たスキルは、呼び出しも成功しますか
試していません。今回確かめたのは、一覧に名前が出るかどうかだけです。呼び出しの成否や、モデルが選ぶかどうかは別の話です。
Copilot CLI や Cursor は確かめましたか
試していません。このMacで走らせたのは Claude Code と Codex だけです。ほかのツールは、各公式の説明を確認してください。
リンクではなくコピーでも読まれますか
コピーは試していません。ただ、内容を2か所で保つ手間が増えるので、リンクのほうが続けやすいと思います。リンクが使えない環境があるかも、確かめていません。
19か所の結果は、毎回同じですか
私の環境では、各ツール2回とも同じでした。ただ、分母は2回です。版が上がれば読む場所が増える可能性は十分あります。
なぜ書いたか
スキルの配り先が18か所に増えたと知ったとき、自分のMacではどれが読まれているのか分かりませんでした。数えないまま「全部に置けば安心」と思うのは違うと考え、置いて確かめました。
明日やることは1つです。いま使っているスキルが、自分の使うツールの置き場所にあるかを ls で見てください。
関連する過去の記事です。