スキルを1つ書き上げたあと、次に出てくる問題は「これをどうやって他の人にも使ってもらうか」です。Claude Code のスキルは配布のための特別な仕組みを持っておらず、どのディレクトリに置いたかがそのまま配布範囲になります。本稿では公式ドキュメント Extend Claude with skills をもとに、4つの置き場所と、同じ名前が重なったときの解決順、そして Cowork やクラウドセッションで個人スキルが読まれない理由を整理します。
スキルの置き場所が配布範囲を決める
公式ドキュメントは、スキルの保存先について「どこに保存するかが、誰がそれを使えるかを決める」と述べています。置き場所は次の4つです。
| 種別 | パス | 適用範囲 |
|---|---|---|
| Enterprise(管理設定) | 管理設定ディレクトリの .claude/skills/ | 組織の全ユーザー |
| Personal(個人) | ~/.claude/skills/<skill-name>/SKILL.md | 自分の全プロジェクト |
| Project(プロジェクト) | .claude/skills/<skill-name>/SKILL.md | そのプロジェクトのみ |
| Plugin(プラグイン) | <plugin>/skills/<skill-name>/SKILL.md | プラグインを有効にした場所 |
公式ドキュメントの「Share skills」節は、配布先の相手に応じて次の3つを挙げています。
- プロジェクトスキル:
.claude/skills/をバージョン管理にコミットする - プラグイン: プラグインの中に
skills/ディレクトリを作る - 管理設定(Managed): managed settings 経由で組織全体へ配布する
ここで押さえておきたいのは、~/.claude/skills/ は配布経路ではないということです。個人スキルは自分のマシンの全プロジェクトに効きますが、そのマシンの外へは出ません。「チームで使いたい」と思った時点で、プロジェクトかプラグインか管理設定のどれかに移す必要があります。
プロジェクトスキルとしてリポジトリに入れる
いちばん手数が少ないのがこれです。スキルのディレクトリをリポジトリの .claude/skills/ に置いて、そのままコミットします。
.claude/
skills/
deploy/
SKILL.md
これで /deploy がそのリポジトリで使えるようになります。追加の設定もインストール手順も要りません。clone した人のセッションでそのまま読み込まれます。
読み込み範囲について、公式ドキュメントは2つの挙動を分けて説明しています。
- 起動ディレクトリとその親: プロジェクトスキルは、Claude Code を起動したディレクトリと、そこからリポジトリのルートまでの各親ディレクトリの
.claude/skills/から読み込まれます。サブディレクトリで起動しても、ルートに置いたスキルは拾われます。 - 起動ディレクトリより下の入れ子: こちらは起動時には読み込まれません。Claude がそのサブディレクトリ内のファイルを読むか編集した時点で初めて読み込まれ、以後そのセッション中は使えるようになります。たとえば
packages/frontend/配下のファイルを Claude が編集したあとに、packages/frontend/.claude/skills/のスキルが利用可能になります。それまでは補完にも出ず、名前で呼び出すこともできません。
この「入れ子は遅れて読み込まれる」性質は、モノレポでパッケージごとにスキルを配るときに効いてきます。パッケージ固有の手順をそのパッケージの中に置いておけば、そのパッケージを触っているときだけ候補に出る、という配り方ができます。
なお、スキルディレクトリの変更はセッション中に検知されます。~/.claude/skills/、プロジェクトの .claude/skills/、--add-dir で追加したディレクトリ内の .claude/skills/ にスキルを追加・編集・削除すると、再起動なしでそのセッションに反映されます。ただしセッション開始時に存在しなかったトップレベルのスキルディレクトリを新規に作った場合は、Claude Code を再起動してください。監視対象に入っていないためです。
プラグインとして配る
複数のリポジトリへ同じスキルを配りたい、あるいはスキルだけでなくフックやサブエージェント、MCP サーバーも一緒に配りたい場合はプラグインにします。プラグインの中に skills/ ディレクトリを作り、その下にスキルを置きます。
<plugin>/
skills/
deploy/
SKILL.md
プラグインスキルは plugin-name:skill-name という名前空間を持ちます。つまり my-plugin/skills/deploy/SKILL.md は /my-plugin:deploy になり、プロジェクトの .claude/skills/ にある deploy と共存できます。名前が衝突しない、というのがプラグイン配布の実務上の利点です。
削除の手順も置き場所ごとに違います。プラグインスキルを外すときは、そのスキルを提供しているプラグインを無効化またはアンインストールします。/plugin メニューから操作するか、次のコマンドを使います。
/plugin uninstall <plugin-name>@<marketplace-name>
プラグインのスキルが実際に外れるのは /reload-plugins を実行するか再起動したあとです。個人・プロジェクトのスキルがディレクトリを消した時点でセッションから消えるのとは、この点が異なります。
もう1つ、スキルのフォルダに .claude-plugin/plugin.json を置くと、そのフォルダが <name>@skills-dir という名前のプラグインとして読み込まれ、エージェント・フック・MCP サーバーを同梱できるようになります。プロジェクトの .claude/skills/ でこれを使う場合は、先にワークスペースの信頼ダイアログを承認する必要があります。
名前が衝突したときの解決順
同じ名前のスキルが複数の場所にあるとき、Claude Code は出所を見て解決します。公式ドキュメントが挙げている規則は次のとおりです。
- 階層をまたぐ場合、enterprise が personal を上書きし、personal が project を上書きします。 たとえば
~/.claude/skills/とプロジェクトの.claude/skills/の両方にdeployがあるとき、/deployは個人のほうを実行します。 - これらの階層にあるスキルは、同名のバンドルスキルも上書きします。ただしバンドルスキルのエイリアスは上書きしません。プロジェクトの
.claude/skills/にcode-reviewを置くとバンドルの/code-reviewは置き換わりますが、バンドル側のエイリアス/reviewを打っても自分のスキルは動きません。 - プラグインスキルは名前空間を持つので衝突しません(前節のとおり)。
.claude/commands/のファイルも同じように扱われますが、スキルとコマンドが同名なら、スキルが優先されます。.claude/commands/deploy.mdと.claude/skills/deploy/SKILL.mdの両方があれば/deployはスキルを実行します。- これらの出所のスキルやコマンドは、claude.ai アカウントから同期されたスキルも上書きします。
入れ子のスキルだけは扱いが違い、名前が重なっても両方が残ります。プロジェクトのルートに deploy、apps/web/.claude/skills/ にも deploy がある場合、入れ子のほうは apps/web:deploy というディレクトリ修飾名で現れ、その説明文にはどのディレクトリに適用されるかが書かれます。/deploy と打てばルートのスキルが動き、入れ子のほうを明示的に呼ぶには /apps/web:deploy と打ちます。
ここには覚えておく価値のある挙動があります。修飾なしの名前で呼び出したときも、Claude Code はルートのスキルの内容にディレクトリ修飾された派生の一覧を付け足し、「Claude が作業しているファイルを含むディレクトリの派生も呼び出すように」という指示を添えます。つまり入れ子のスキルは、修飾なしで呼ばれた場合でもそのディレクトリの作業には効きます。
なお、enterprise・personal・project の各置き場所で synced というフォルダ名は予約されています(大文字小文字を問いません)。CLAUDE_CODE_SYNC_SKILLS を設定した非対話実行で、claude.ai で有効にしたスキルがここへダウンロードされるためで、同じ名前で自分が書いたスキルは読み飛ばされます。
Cowork とクラウドセッションでの注意
配布を考えるうえで、いちばん見落としやすいのがここです。Cowork セッションとクラウドセッション(routines を含む)は、自分のマシンの ~/.claude/skills/ を読みません。
この2種類のセッションは、いずれもセッション開始時に claude.ai アカウントで有効にしたスキルを読み込みます。管理はデスクトップアプリのサイドバーの「Customize」か、claude.ai のスキル設定から行います。クラウドセッションはこれに加えて、clone したリポジトリの .claude/skills/ にコミットされたプロジェクトスキルも読み込みます。
したがって、スキルが自分のマシンの ~/.claude/skills/ にしか無い場合、routine がそれを呼び出すと「スキルが見つかりません」と報告されます。routine の実行は毎回まっさらなリモートセッションとして始まるためです。個人スキルをこれらのセッションでも使えるようにする方法は次のとおりです。
- Cowork とクラウドセッション向け: そのスキルを claude.ai アカウントで有効にする。
- クラウドセッション向け: 代わりに、そのスキルをリポジトリの
.claude/skills/にコミットするか、リポジトリの.claude/settings.jsonで宣言したプラグインに同梱する。リポジトリで宣言されたプラグインはセッション開始時にインストールされますが、ユーザー設定でだけ有効にしたプラグインは引き継がれません。
混同しやすい点として、デスクトップの定期タスク(scheduled tasks)はこれらとは別です。定期タスクは自分のマシン上でローカルに実行されるため、他のローカルセッションと同じ場所からスキルを読み込みます。「routine では動かないがデスクトップの定期タスクでは動く」という食い違いは、この差から生まれます。
まとめると、配布先を決める順序は単純です。自分だけなら個人、リポジトリの参加者に配るならプロジェクト、複数リポジトリや他の設定と一緒に配るならプラグイン、組織全体なら管理設定。そしてクラウド側でも動かすつもりがあるなら、個人スキルのままにしない——この一点を最初に決めておくと、あとで探し回らずに済みます。
本記事は Claude Code 公式ドキュメント「Extend Claude with skills」の記載内容にもとづく非公式の日本語解説です(確認日 2026-09-04)。仕様は更新されることがあるため、最新の内容は公式ドキュメントをご確認ください。