0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code にスキルを80本足しても、増えたトークンは185だった

0
Last updated at Posted at 2026-09-07

/skill-doctor に「19本が一度も呼ばれていない。毎ターン、システムプロンプトに載り続けている」と言われました。

消したら 3,710トークン減りました。予告は約2,160だったので、多めに減っています。

では逆はどうか。ダミーのスキルを足していきました。

 47本   82,179 トークン
127本   82,364 トークン   ← 80本足して +185

増えません。 上限に当たっていました。

検証環境: Windows 10 / Claude Code 2.1.260 / モデル claude-opus-5 / 測定は 2026-09-07 時点


/skill-doctor が出してくるもの

2.1.252 以降で動きます。-p でも印字されます(列幅を詰めた抜粋)。

skill                 source          context  7d tokens  uses  last used
web-scraping          userSettings       ~140          -    0×  never
ai-news-radar         userSettings        ~90      25.1m   25×  today

19 skills loaded but never invoked. Each one adds to the system prompt every turn.

context 列の意味は脚注にあります。

context = this skill's one-line listing in the system prompt, included every turn

私の環境は49件(ユーザー47+プラグイン2)。context の合計は約5,810トークン、うち未使用21件が約2,280でした。


消したら、予告より減った

未使用19本を退避し、同じプロンプトを3回投げました(最小値)。

入力トークン
47本のまま 82,177
19本を外す 78,467

−3,710。 1本あたり195トークンです。予告の約2,160より多く減りました。


ところが、足しても増えない

同じ手順でダミーのスキルを足していきます。

スキル数 入力トークン 47本との差
47 82,179 0
57 82,150 −29
67 82,189 +10
87 82,262 +83
127 82,364 +185

80本足して185トークン。1本2.3です。

消すときは195、足すときは2.3。84倍違います。

同じ40本でも、予算を広げた状態なら +2,079トークン(1本52)、既定なら +73(1本1.8)。28倍違います。 上限に届いていなければ、足したぶんはそのまま乗ります。


一覧には予算があった

公式ドキュメントの記述です。

The listing always contains every skill name, but if you have many skills, Claude Code shortens descriptions to fit the listing's character budget, which can strip the keywords Claude needs to match your request.
(一覧には必ず全部の名前が入る。ただし数が多いと、文字数の予算に収まるよう説明を短くする。Claude が要求と突き合わせるのに必要なキーワードが落ちることがある

SLASH_COMMAND_TOOL_CHAR_BUDGET で予算を変えられます。変えて測りました。

予算(文字) 入力トークン 既定との差
2,000 71,841 −10,340
10,000 72,312 −9,869
既定 82,181 0
30,000 82,182 +1
100,000 83,466 +1,285

30,000を指定すると既定と一致しました(差+1)。100,000まで広げると1,285トークン増え、30万・100万まで広げても、そこから増えませんでした。 つまり既定で削られているのは、この1,285トークンで全部です。

なおドキュメントは既定を「モデルのコンテキスト長の1%」と書いています。 ただしそれが何文字になるのかは、この式からは出せませんでした。 換算の仕方は確かめられていません。

予算はモデル依存です。 上は claude-opus-5 での実測で、コンテキストの短いモデルではもっと早く削られます。


何が削られているのか

一度も呼んでいない web-scraping の説明が一覧に付いているか、3回ずつ聞きました。

既定           NO   NO   NO
予算 100,000   YES  YES  YES

予算を広げたときに返ってきた説明は約400文字SKILL.md の記述は398字)。既定では名前だけになっていました。

ドキュメントにも書いてあります。

When the listing overflows, Claude Code drops descriptions starting with the skills you invoke least, so the skills you use most keep their full text.
(溢れたときは、呼び出し回数が少ないものから説明を落とす。よく使うものは全文が残る)


「未使用」は、自分で自分を強めている

/skill-doctor の「0回」は、使う必要がなかったからとは限りません。 説明が消えていて見つけられなかった可能性があります。

たまにしか使わないが、使うときには要るスキルほど、この輪に入ります。


測ったけれど、起きなかったこと

セッションの途中でスキルを1本消しても、キャッシュは飛びませんでした(継続が99.7%と99.8%、消した直後も99.8%)。システムプロンプトが変わるので書き直すと思っていましたが、そうなりません。掃除のコストは気にしなくてよさそうです。 ただし試したのは1本だけです。


手を打つなら

  • 本数を減らす。 実測で1本あたり195トークン。効きます
  • 予算を上げる。 skillListingBudgetFraction0.02 にするか、SLASH_COMMAND_TOOL_CHAR_BUDGET に文字数を入れる
  • description を短く書く。 1エントリの上限は1,536文字。長く書くほど、他のスキルの枠を食います

まとめ

  • /skill-doctor は「未使用19本が毎ターン載っている」と言う。消すと 3,710トークン減った(予告は約2,160)
  • 逆に80本足しても185トークンしか増えない。 一覧には文字数の予算があり、
    100,000まで広げると1,285トークン分の説明が戻った
  • 溢れたぶんは、呼び出し回数の少ないスキルから落ちる。 一度も呼んでいないスキルは名前だけだった
  • 「未使用」は原因ではなく結果かもしれない。 なお1本消してもキャッシュは飛ばなかった

スキルを増やしても重くはなりません。代わりに、見つけてもらえなくなります。


参考

※ 引用は原文と日本語訳を併記しています。訳は読みやすさを優先しているので、正確な表現は原典をご確認ください。

関連記事


JQITのエンジニアの95%以上は未経験からの採用です。
よければコーポレートサイトにも遊びに来てください。

コーポレートサイト

エンジニア採用も行っています。もしご興味あれば覗いてみてください。

採用サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?