Claude CodeのSkill、便利なので増やしたくなります。
毎回貼っていた手順を SKILL.md にしておけば、必要な時だけ呼び出せます。ドキュメント生成、レビュー、Playwright、Cloudflare、記事執筆。用途ごとに分けていくと、かなり気持ちいいです。
ただ、増やしたあとに困ることがあります。
どのSkillが本当に使われているのか、どれがただ一覧に載っているだけなのか、よくわからなくなるんですよね。しかもSkillは、完全に無料で存在しているわけではありません。Claudeが「こういうSkillがあります」と知るための説明文は、毎ターンのコンテキストに乗ります。
便利だから増やす。増やしたら少しずつ重くなる。でも、どれが重いのか見えない。
この見えない感じが一番いやです。
Claude Code v2.1.261で追加された /skill-doctor は、そこを見るためのコマンドです。公式リリースノートには、読み込まれたSkillのうち使われていないものと、それぞれのコンテキストコストを見せ、剪定できるようにする、とあります。
地味ですが、私はかなり良い追加だと思います。派手な新機能より、毎日使う環境を軽く保つ機能の方が効くことがあります。
Skillは「使う時だけ本文が読む」ので軽い、でも一覧は別です
まず前提を整理します。
Claude Codeの公式Skillsドキュメントでは、Skillは SKILL.md に手順を書いてClaudeの道具箱に入れる仕組みとして説明されています。Claudeは関連すると判断した時にSkillを使いますし、ユーザーが /skill-name のように直接呼ぶこともできます。
ここで大事なのは、Skill本文は常に全部読み込まれるわけではない、という点です。
長い参照資料や手順は、Skillが実際に必要になった時までほぼコストがかからない。これはCLAUDE.mdに巨大な手順を全部書くよりかなり健全です。
ただし、ClaudeがSkillを選ぶためには「こういうSkillがあります」という一覧情報が必要です。Skill名や説明、呼び出し条件の情報は、Claudeが判断できる形で見えている必要があります。
つまりこうです。
- Skill本文は必要になるまで読まれにくい
- でもSkillの一覧情報は、判断材料として毎ターン効いてくる
- Skillが増えすぎると、その一覧情報だけでもコンテキストを食う
ここを混同すると、「Skillは遅延読み込みだから無限に増やして大丈夫」と思ってしまいます。大丈夫ではないです。
では/skill-doctorを使ってみる
使い方はシンプルです。
/skill-doctor
対話セッションで実行すると、レポートは /plugin マネージャーのStatsタブに開く、と公式ドキュメントにあります。
非対話モード、つまり claude -p のような実行ではテキストとして出力されます。無人実行やログに残す用途なら、こちらの方が扱いやすいですね。
レポートで見るべきなのは、主にこのあたりです。
- ロードされているSkill
- そのSkillがどれくらいコンテキストを使っているか
- 最近または一度も使われていないSkill
- どこで無効化できるか
「一度も呼ばれていないSkill」が出てきたら、まずそこから見ます。さらに、その中でコンテキストコストが大きいものから切る。これで大丈夫です。
簡単ですね。
消す前に、まずoffにする
ここでいきなりファイルを消すのは雑です。
Skillは、あとから必要になることがあります。特に自分で作ったSkillは、「今週は使っていないけど、月次処理では使う」みたいなことが普通にあります。削除してから思い出すと面倒です。
まずは設定で無効化するのが安全です。
公式ドキュメントでは skillOverrides でSkillの見え方を制御できます。たとえば、完全に消したいわけではないけれど通常の一覧からは外したい場合は off にできます。
{
"skillOverrides": {
"legacy-context": "off"
}
}
これで、Skill自体のファイルを残したまま、Claude Codeの通常のSkill一覧から外せます。
使うか迷うものは削除ではなく off。これはかなり大事です。設定で戻せる状態にしておくと、剪定が怖くなくなります。
コンテキスト消費が大きいSkillから見る
Skillの数だけ見ても、あまり意味はありません。
小さいSkillが10個あるより、説明が長くて条件が複雑なSkillが1個ある方が効いていることがあります。人間の荷物整理と同じで、数ではなく重さを見た方がいいです。
/skill-doctor は、ここを数字で見せてくれます。
私なら、こういう順で見ます。
- 一度も使われていないSkillを見る
- その中でコンテキストコストが大きいものを上から見る
- 月次・週次など、低頻度だが必要なSkillではないか確認する
- 不要なら
offにする - しばらく困らなければ削除を検討する
コピペで大丈夫です、という話ではなく、運用の順番の話です。
AIまわりの設定は、消す時ほど慎重にやった方がいいです。動いている時は誰も見ませんが、壊れた時だけ急に困ります。
Remote Controlからは使えない
公式ドキュメントには、もう1つ大事な注意があります。
/skill-doctor をRemote Control経由、つまりスマホやブラウザからつないだセッションで実行すると、Skill usage reports are not available on this connection. と返る、と書かれています。
これは端末側で実行する必要があります。
たぶん、どのSkillがどう読み込まれているか、ローカル側のセッション状態に強く依存するからだと思います(ここは実装まで確認していないので推測です)。少なくとも、スマホからちょっと覗いて掃除する用途ではなく、実際にClaude Codeが走っているマシン上で見るもの、と覚えておけばよさそうです。
Skillを増やす前提の時代になっている
以前、Claude CodeにPlaywrightプラグインを入れる話を書きました。プラグイン、MCP、Skillの役割が増えてきて、「とりあえず入れて試す」がやりやすくなっています。
それ自体は良いことです。自分の作業に合わせて道具箱を育てられるのは超便利。
ただ、道具箱は放っておくと散らかります。使っていない道具が増えて、必要なものを探す時だけ遅くなる。Claude Codeでも同じことが起きます。
Focus viewや/diffパネルは、人間が見るべき情報を絞るための機能でした。/skill-doctor は、Claudeに見せる情報を絞るための機能です。
この違い、地味ですがかなり効きます。
まとめると、増やした後に掃除するためのコマンドです
/skill-doctor は、Skillを作るためのコマンドではありません。
増やしたSkillを、あとから点検するためのコマンドです。
読み込まれているSkillのうち、使われていないものを見つける。コンテキストコストが大きいものから見直す。いきなり削除せず、まず skillOverrides で off にする。
これだけで、Claude Codeの作業環境はかなり整理しやすくなります。
Skillは増やしていいです。むしろ、自分の作業をちゃんとSkillに切り出していくのは良い流れだと思います。ただ、増やしたら掃除しましょう。そこまで含めて運用です。
というわけで、Claude CodeにSkillをいくつも入れている人は、一度 /skill-doctor を叩いてみてください。使っていないのにコンテキストだけ食っているSkillが見つかるかもしれません。
こういう見えないコストを可視化してくれる機能、私は好きです。


コメント