/skill-doctor: skille, które niepotrzebnie zużywają kontekst

Skill, którego Claude nigdy nie wywołuje, i tak kosztuje swoją nazwę i opis przy każdej turze. Komenda /skill-doctor, dostępna od 4 września 2026, liczy to marnotrawstwo i pokazuje, gdzie ciąć.

/skill-doctor: skille, które niepotrzebnie zużywają kontekst
Szybka odpowiedź

/skill-doctor pokazuje skille załadowane w Twojej sesji, które nigdy nie zostały wywołane, i ile kosztują w kontekście. Raport otwiera się w zakładce Stats menedżera /plugin albo drukuje się jako tekst z -p, i wymaga Claude Code 2.1.252 lub nowszego. Cięcia dokonuje się przez /skills i spację, a skille dostarczane przez plugin wyłącza się z poziomu /plugin.

Uruchamiasz Claude Code, jeszcze o nic nie poprosiłeś, a część kontekstu już poszła. Na mierzonej tu instalacji załadowanych jest 117 osobistych skilli, 108 nigdy nie zostało wywołanych, a ich listing idzie z każdą turą rozmowy.

Co dokładnie pokazuje /skill-doctor

Komenda pojawiła się wraz z Claude Code 2.1.261, wydanym 4 września 2026. Notatka wydania ogłasza to w jednym zdaniu: pokazuje, które załadowane skille pozostają nieużywane i ile kosztują w kontekście, żeby można je było przyciąć.

Dokumentacja precyzuje zakres. Raport obejmuje skille Twojej sesji, z wyjątkiem skilli dołączonych do Claude Code i skilli firmowych. Wskazuje te, które nigdy nie zostały wywołane, pokazuje, gdzie je wyłączyć, i dodatkowo wylicza pluginy, które nie były ostatnio używane. W sesji interaktywnej otwiera się w zakładce Stats menedżera /plugin, w trybie nieinteraktywnym, z -p, Claude Code wypisuje go jako tekst.

Przed próbą warto znać dwa warunki. Potrzebny jest Claude Code 2.1.252 lub nowszy. A z poziomu Remote Control, na telefonie czy w przeglądarce, komenda odmawia odpowiedzi: zwraca Skill usage reports are not available on this connection. Uruchom ją w terminalu maszyny, która hostuje sesję.

Dlaczego nigdy niewywoływany skill i tak kosztuje kontekst?

Bo skill ładuje się w trzech etapach. Otwarty standard Agent Skills nazywa to stopniowym ujawnianiem: przy starcie agent czyta tylko nazwę i opis każdego skilla, gdy zadanie odpowiada temu opisowi, czyta treść SKILL.md, pliki dodatkowe otwiera tylko wtedy, gdy ich potrzebuje. Mechanizm opisuje szczegółowo nasz przewodnik po formacie SKILL.md.

Za pierwszy poziom płaci się jednak przy każdej turze rozmowy. Dokumentacja Claude Code jest jednoznaczna: każdy skill z listingu dokłada się do kontekstu przy każdej turze, niezależnie od tego, czy Claude z niego korzysta. A ten listing ma budżet znaków odpowiadający 1% okna kontekstu modelu. Po jego przekroczeniu Claude Code skraca opisy, żeby zmieścić się w budżecie, ryzykując usunięcie akurat tych słów kluczowych, które uruchamiają właściwy skill.

Zbyt wiele skilli kosztuje więc tokeny, a przy okazji obniża trafność wywoływania tych, na których naprawdę Ci zależy.

Raport, na 117 skillach

Na instalacji ładującej 117 osobistych skilli komenda wypisuje jedną linię na skill i zdanie podsumowania. Tryb nieinteraktywny drukuje go jako czysty tekst, co pozwala go zachować:

bash
claude -p '/skill-doctor'

Skills loaded this session

  skill                      source        context  7d tokens   uses  last used
  ab-test-setup              userSettings     ~270          -     0×  never
  cold-email                 userSettings     ~230          -     0×  never
  …
  seo-onpage                 userSettings     < 20          -     0×  never
  …
  seo-search-console         userSettings     ~190       1.2m     1×  6 days
  seo-keyword-research       userSettings     ~160      15.2m     1×  3 days
  video                      userSettings     ~210     548.4k     4×  3 days
  wp-article-thumbnails      userSettings     ~190      28.5m     8×  today

  context = this skill's one-line listing in the system prompt, included every turn
  (dash = not in the current listing, costs nothing; full SKILL.md loads only when it runs)
  7d tokens = tokens attributed to the skill over the last 7 days of sessions on this machine

108 skills loaded but never invoked. Each one adds to the system prompt every turn.
Disable in /skills, or remove from .claude/skills.

Cztery kolumny niosą decyzję. context podaje wagę linii listingu, tej, która idzie z każdą turą: tutaj od poniżej 20 do 360 tokenów na skill, około 8 800 łącznie. 7d tokens liczy, ile skill rzeczywiście zużył przez siedem dni, i pokazuje myślnik, gdy nie zużył nic. uses i last used mówią resztę: ze 117 załadowanych skilli 108 nigdy nie zostało wywołanych, a tylko pięć zużyło cokolwiek w ciągu tygodnia.

Mierzenie bez komendy

Na wersji wcześniejszej niż 2.1.252, albo po prostu żeby zweryfikować rząd wielkości, poziom 1 mierzy się bezpośrednio w plikach, skoro składa się wyłącznie z frontmattera YAML.

bash
# Waga poziomu 1: nazwa i opis każdego osobistego skilla
awk 'FNR==1{f=0;p=0}
     /^---[[:space:]]*$/{f++; next}
     f!=1{next}
     /^[A-Za-z_-]+:/{p=($1=="name:"||$1=="description:"||$1=="when_to_use:")}
     p{c+=length($0)}
     END{printf "%d skills, %d caracteres, ~%d tokens\n", ARGC-1, c, c/4}' \
  ~/.claude/skills/*/SKILL.md
# 117 skills, 45715 caracteres, ~11428 tokens

Szacunek „jeden token na cztery znaki” daje 11 428 tokenów tam, gdzie raport liczy około 8 800: zawyża, co w zupełności wystarcza do podjęcia decyzji. Ten sam rachunek dla ~/.codex/skills daje 7 skilli i około 590 tokenów: pod tym względem obaj agenci nie grają w tej samej lidze, co pokazuje porównanie Codex i Claude Code.

Druga komenda wypisuje ranking. To wystarczy, żeby podjąć decyzję.

bash
awk 'FNR==1{if(NR>1) print c, d; c=0; f=0; p=0; n=split(FILENAME,t,"/"); d=t[n-1]}
     /^---[[:space:]]*$/{f++; next}
     f!=1{next}
     /^[A-Za-z_-]+:/{p=($1=="name:"||$1=="description:"||$1=="when_to_use:")}
     p{c+=length($0)}
     END{print c, d}' ~/.claude/skills/*/SKILL.md | sort -rn | head -5
# 1101 elevenlabs-game-music
# 1078 elevenlabs-game-sfx
# 864 directory-submissions
# 855 customer-research
# 831 ab-test-setup

Te 117 plików SKILL.md liczy łącznie 778 142 znaki, czyli około 194 500 tokenów, a listing stanowi z tego tylko 6%. Stopniowe ujawnianie robi więc swoje, a tym, co waży na co dzień, pozostaje liczba skilli. Pozostaje fakt, że 45 715 znaków mieści się w rzędzie wielkości budżetu listingu: bez /context nie da się sprawdzić, czy moje opisy są już przycięte.

Wycinanie tego, co się nie przydaje

Otwórz /skills, zaznacz skill, naciśnij spację, żeby przełączać stany, a potem Esc, żeby zapisać. Menu samo zapisuje ustawienie skillOverrides w .claude/settings.local.json. Istnieją cztery stany.

Wartość Co widzi Claude W menu /
on Nazwa i opis Tak
name-only Sama nazwa Tak
user-invocable-only Ukryty Tak
off Ukryty Nie

name-only to dobry kompromis dla skilla, który sam czasem wywołujesz: nazwa zostaje w listingu, opis przestaje ważyć. off pasuje do tych, które instalowałeś „na próbę”.

Uwaga na przypadek pluginów: skille dostarczane przez plugin nie podlegają skillOverrides. Trzeba wyłączyć plugin z poziomu /plugin, a potem uruchomić /reload-plugins albo zrestartować sesję, żeby jego skille zostały odładowane.

Sprawdzenie, czy cięcie coś dało

Linia Skills w /context pokazuje rozmiar listingu po zastosowaniu budżetu: to dokładnie to, co dostaje model. Zanotuj wartość, wytnij zbędne skille, zrestartuj sesję, zanotuj ponownie. Jeśli wartość się nie zmienia mimo wyłączenia dziesięciu skilli, to znak, że budżet był już wypełniony i Claude Code przycinał opisy, a samo cięcie i tak poprawi trafność wywoływania.

Jeśli chodzi o rachunek, /cost i /usage pozostają punktami odniesienia, ale spodziewaj się skromnego zysku: prawdziwa korzyść widoczna jest w kontekście, nie w euro. Jeśli szukasz oszczędności innego rzędu wielkości, przyjrzyj się routingowi odczytów plików, jak w relacji Spotify na temat hooków.

Dwa ustawienia pozwalają rozszerzyć budżet zamiast ciąć: skillListingBudgetFraction (na przykład 0.02 dla 2%) oraz zmienna środowiskowa SLASH_COMMAND_TOOL_CHAR_BUDGET, która ustala liczbę znaków. Rozszerzenie tylko przesuwa problem: kontekst odzyskany na skillach ginie gdzie indziej.

Co warto zapamiętać

  • Nigdy niewywołany skill i tak kosztuje swoją nazwę i opis przy każdej turze: to poziom 1 stopniowego ujawniania.
  • /skill-doctor wymaga Claude Code 2.1.252 lub nowszego i wyświetla się w zakładce Stats menedżera /plugin.
  • Raport liczy tutaj 117 załadowanych skilli, 108 nigdy niewywołanych, około 8 800 tokenów listingu. Dwie linie awk na ~/.claude/skills/*/SKILL.md dają ten sam rząd wielkości bez komendy.
  • Tnie się przez /skills i spację, skille z pluginów wycina się z poziomu /plugin, a potem /reload-plugins.
  • Sprawdza się to na linii Skills w /context, która odzwierciedla faktycznie zastosowany budżet.

Częste błędy

Komenda nie istnieje w Twojej wersji /skill-doctor wymaga Claude Code 2.1.252 lub nowszego. Sprawdź przez claude --version, zanim zaczniesz jej szukać w menu.
Chęć ukrycia skilla z pluginu przez skillOverrides Skille dostarczane przez plugin nie podlegają skillOverrides. Wyłącz plugin z poziomu /plugin, a potem uruchom /reload-plugins albo zrestartuj sesję.
Uruchamianie komendy z poziomu Remote Control Odpowiada wtedy Skill usage reports are not available on this connection. Otwórz terminal na maszynie, która hostuje sesję.
Mylenie wagi listingu z wagą skilli Treść SKILL.md ładuje się dopiero przy wywołaniu. To, co waży przy każdej turze, to wyłącznie nazwa i opis.
Pisanie zbyt długich opisów, żeby lepiej wyzwalać skille Gdy listing przekracza budżet, Claude Code skraca opisy i może wyciąć słowa kluczowe wyzwalające. Para description i when_to_use i tak ma limit 1 536 znaków.

Claude CodeSkills

Damien Flandrin Web developer od 2010 roku, twórca Gekkode i Email Impact. Każdy artykuł jest sprawdzany na prawdziwym projekcie przed publikacją. Kontakt
Newsletter

Nowe testy, poradniki i projekty, e-mailem.

Powtarzalne testy, wersjonowany kod, datowane wyniki. Nigdy spamu.