Dr. Skill: audyt loadoutu skilli i MCP twojego agenta
Dr. Skill (drskill) to pythonowe CLI tylko do odczytu, które ustala, jakie skille, skille dostarczane przez wtyczki i serwery MCP faktycznie ładuje każdy agent kodujący na maszynie, a potem wskazuje duplikaty, przesłonięte nazwy, kolidujące opisy, powierzchnie prompt injection i nieprzypięte serwery. Każde znalezisko kończy się poleceniem naprawy albo potwierdzeniem zapisanym w commitowanym rejestrze.
Ten poradnik jest dla programistów, którzy sami utrzymują konfigurację swoich agentów, i dla tech leadów odpowiedzialnych za wspólne katalogi .claude/, .agents/ i plik .mcp.json zespołu. Objaw, który cię tu sprowadza, dobrze znasz: agent sięga po niewłaściwy skill, ignoruje ten zainstalowany w zeszłym tygodniu albo kolega z zespołu dostaje inne zachowanie z tego samego repozytorium. Nikt nie potrafi powiedzieć, co agent ładuje, bo to rozrzucone po kilkunastu katalogach, trzech cache’ach wtyczek i każdej konfiguracji MCP na maszynie.
Co zyskujesz z audytu loadoutu
Dział zatytułowany „Co zyskujesz z audytu loadoutu”- Pełny spis tego, co faktycznie ładuje każdy agent (po uwzględnieniu reguł pierwszeństwa), łącznie ze skillami z wtyczek, z przybliżonym kosztem w tokenach
- Listę do usunięcia opartą na danych: które skille i narzędzia MCP zostały wywołane w ostatnich 30 dniach, a których nikt nigdy nie użył
- Testy routingu (
[[queries]]), które wywracają CI, gdy zapytanie trafiłoby do niewłaściwego skilla, więc routing weryfikujesz bez ponownego czytania każdego opisu - Zadanie CI, które blokuje pull request przy niepotwierdzonym ostrzeżeniu o loadoucie i jest bezpieczny dla kodu kontrybutorów
- Cztery prompty do skopiowania: triage skanu, lista do usunięcia, naprawa kolidujących opisów i dodanie bramki do CI
Dlaczego duży katalog skilli sprawia, że agent wybiera niewłaściwy skill?
Dział zatytułowany „Dlaczego duży katalog skilli sprawia, że agent wybiera niewłaściwy skill?”Katalog skilli to loadout narzędzi i kosztuje cię na dwa niezależne sposoby.
Rachunek za tokeny. W Claude Code opis każdego skilla siedzi w kontekście od początku sesji, żeby model wiedział, że skill istnieje; treść ładuje się dopiero przy wywołaniu. Budżet listy skilli to 1% okna kontekstu modelu, a tekst description plus when_to_use każdego wpisu jest ucinany po 1536 znakach. Gdy lista się nie mieści, Claude Code wyrzuca opisy, zaczynając od skilli wywoływanych najrzadziej. Po automatycznej kompakcji dołącza ponownie ostatnie wywołanie każdego skilla, zachowując pierwsze 5000 tokenów z każdego we wspólnym budżecie 25 000 tokenów, od najnowszego, więc starsze skille mogą wypaść w połowie zadania. Zanim zaczniesz usuwać skille, możesz podnieść budżet ustawieniem skillListingBudgetFraction (na przykład 0.02, czyli 2%) albo wystawić mniej ważne skille bez opisu, ustawiając je na "name-only" w skillOverrides (to ustawienie nie obejmuje skilli z wtyczek); /doctor szacuje koszt listy w kontekście i wskazuje największe pozycje.
Podatek od routingu. Opis to jedyna podstawa, na której model wybiera skill. Dwa skille, których opisy dzielą te same frazy wyzwalające, to problem routingu, nie kosmetyki, a przepełniona lista, z której wypadają opisy, tylko go pogłębia. Drew Breunig opisuje ten wzorzec w How to Fix Your Context (czerwiec 2025): trafność wyboru narzędzia spada wraz z długością listy narzędzi.
drskill mierzy pierwszy koszt i wykrywa drugi, u każdego agenta na maszynie i także dla serwerów MCP, których definicje narzędzi konkurują o tę samą decyzję routingu.
Gdzie drskill pasuje obok /skill-doctor, CLI skills i skanerów przed instalacją
Dział zatytułowany „Gdzie drskill pasuje obok /skill-doctor, CLI skills i skanerów przed instalacją”Claude Code ma teraz własny raport użycia, więc narzędzie dobierz do pytania, które zadajesz.
| Narzędzie | Na jakie pytanie odpowiada | Zakres |
|---|---|---|
npx skills | Jak zainstalować, zaktualizować i przypiąć ten skill? | Jeden skill lub repozytorium naraz; zmienia twoje katalogi skilli |
| Skaner przed instalacją, np. Snyk Agent Scan (bezpieczeństwo łańcucha dostaw skilli) | Czy w ogóle to instalować? | Skille i konfiguracje MCP, pod kątem bezpieczeństwa; wymaga tokenu API Snyka |
/skill-doctor (Claude Code v2.1.252 lub nowszy) | Ile kosztuje każdy skill i których nigdy nie użyłem? | Tylko Claude Code; pomija skille wbudowane i enterprise |
/context i /doctor w Claude Code | Jak duża jest lista skilli w tej sesji? | Jedna sesja Claude Code |
drskill | Co efektywnie ładuje każdy agent, czy coś ze sobą koliduje i czego naprawdę używam? | Każdy wykryty agent, skille i serwery MCP, po instalacji |
/skill-doctor to najszybsza odpowiedź, jeśli używasz tylko Claude Code. drskill przydaje się dopiero wtedy, gdy pracujesz z kilkoma agentami, współdzielisz skille przez .agents/skills albo potrzebujesz bramki w CI: rozwiązuje reguły pierwszeństwa, symlinki, zagnieżdżone katalogi, skille z poziomu maszyny i magazyny wtyczek dla każdego agenta. Jako jedyne z tych narzędzi testuje też routing i pilnuje zestawu w CI. Snyk Agent Scan również czyta konfiguracje MCP, ale wyłącznie pod kątem bezpieczeństwa.
Zainstaluj drskill i uruchom pierwszy skan
Dział zatytułowany „Zainstaluj drskill i uruchom pierwszy skan”drskill to pythonowe CLI, a nie Agent Skill. Nie instaluje się przez npx skills add, a twój agent nigdy go nie ładuje, więc diagnostyka nie dokłada nic do kontekstu, który diagnozuje.
-
Zainstaluj je w terminalu. Pełny pakiet zawiera sprawdzenia oceniane przez model (
--deep) i--mcp-connect:Okno terminala uv tool install drskillW CI i wszędzie tam, gdzie tych dwóch flag nie użyjesz, zainstaluj pakiet core. Pomija on dodatek
deep, który wciąga DSPy i LiteLLM, oraz dodatekconnect, który wciąga MCP SDK:Okno terminala uv tool install drskill-coreJeśli nie masz
uv, zadziała teżpipx install drskill. -
W katalogu głównym projektu utwórz startowy rejestr:
Okno terminala drskill initPowstaje
drskill.tomlz takimi wartościami domyślnymi w 0.8.1:[budget]catalog_tokens_max = 6000 # per-harness startup catalog budget (approximate tokens)body_tokens_warn = 20000 # per-skill body ceiling (approximate tokens)[thresholds]near_duplicate = 0.85 # Jaccard similarity that counts as a near duplicatedescription_overlap = 0.6 # cosine similarity that clusters descriptionsgeneric_min_distinct_tokens = 2 # fewer distinctive words than this is too vague -
Uruchom skan:
Okno terminala drskill scanWykrywa każdego agenta, jakiego znajdzie, ustala efektywny zestaw skilli każdego z nich i wypisuje najpierw błędy, potem ostrzeżenia. Nasz przebieg zaczynał się tak (ścieżki domowe skrócone):
drskill scan — 5 harnesses, 673 skills, 2 MCP serversERRORS[8ecc] new double-load: Claude Code loads the same skill 'agents-sdk' 2 times:~/.claude/plugins/cache/claude-plugins-official/cloudflare/1.0.0/skills/agents-sdk/SKILL.md,~/.claude/plugins/cache/cloudflare/cloudflare/1.0.0/skills/agents-sdk/SKILL.mdharnesses: claude-codefix: Disable or uninstall one of the plugins shipping this skill (cloudflare)WARNINGS[505d] new budget-catalog-tokens: Claude Code startup catalog is ~64153 tokens (budget 6000)harnesses: claude-codefix: drskill list --tokens --harness claude-codePierwszy błąd to przypadek podręcznikowy: ta sama wtyczka zainstalowana z dwóch marketplace’ów i załadowana dwa razy.
claude plugin uninstallna jednej z kopii usuwa duplikat. -
Przeczytaj jedno znalezisko w całości albo przejdź przez wszystkie:
Okno terminala drskill show 8eccdrskill reviewreviewdziała tylko w prawdziwym terminalu. Każde znalezisko obsługujesz jednym klawiszem:apotwierdza (ack),npotwierdza z notatką,fkolejkuje polecenia naprawy,spomija, aqkończy.
Kody wyjścia sprawiają, że lokalne uruchomienia są ciche, a CI nie: 0 oznacza czysto albo wszystko potwierdzone, 1 — aktywne znalezisko na poziomie błędu, 2 — aktywne są tylko ostrzeżenia i podano --ci. Bez --ci same ostrzeżenia kończą się kodem 0.
Co sprawdza drskill scan?
Dział zatytułowany „Co sprawdza drskill scan?”README drskill (opis projektu na stronie PyPI) dokumentuje 38 sprawdzeń skanu i 17 kolejnych, które działają tylko w drskill lint (stan na 0.8.1). Dzielą się na pięć grup, z których każda wymaga innej reakcji.
| Grupa | Przykładowe identyfikatory sprawdzeń | Co zrobić ze znaleziskiem |
|---|---|---|
| Higiena skilli | name-shadow, double-load, exact-duplicate, near-duplicate (MinHash Jaccard ≥ 0,85), spec-name-mismatch, spec-description-too-long (ponad 1024 znaki), broken-symlink, lockfile-drift, budget-catalog-tokens | Usuń nadmiarową kopię albo popraw plik; rzadko jest tu coś do rozważenia |
| Jakość opisów | description-overlap, missing-activation, generic-description, opposing-imperatives | Przepisz jeden opis, połącz skille albo potwierdź zamierzone nakładanie się |
| Powierzchnie injection | injection-unicode, injection-credential-read, injection-override, injection-egress, injection-remote-fetch, injection-shell-unreviewed, injection-shell-dangerous | Przeczytaj cytowane linie; werdykt należy do ciebie |
| Konfiguracja MCP | mcp-secret-in-config, mcp-unpinned-server, mcp-insecure-url, mcp-dead-server, mcp-diverged-server, mcp-tools-unreviewed, mcp-tool-poisoning | Przypnij pakiet, przenieś sekret do zmiennej środowiskowej, przejrzyj tekst narzędzi |
| Oczekiwania routingu | query-routing | Popraw opis, do którego zapytanie powinno było trafić |
Najwięcej uwagi wymaga missing-activation: opis, który nigdy nie mówi, kiedy użyć skilla, to częsty powód, dla którego dobry skill się nie uruchamia, bo model decyduje o załadowaniu skilla wyłącznie na podstawie pól description i when_to_use (dokumentacja skilli Claude Code). Przy pierwszym --mcp-connect mcp-tools-unreviewed wypisuje notatkę z listą narzędzi serwera; potwierdzenie jej (ack) zapisuje ten zestaw jako zatwierdzony punkt odniesienia, a każda późniejsza zmiana opisu lub schematu narzędzia staje się ostrzeżeniem, które przerywa --ci.
Których skilli twoi agenci naprawdę używają?
Dział zatytułowany „Których skilli twoi agenci naprawdę używają?”scan patrzy na loadout w postaci skonfigurowanej. drskill audit czyta ślady sesji, które Claude Code, Codex, Pi i Copilot i tak zapisują na dysku, i układa ranking tego, co faktycznie zostało wywołane.
drskill audit # this projectdrskill audit --global --since 30d # every project on the machine, last 30 daysdrskill audit --last # only the most recent sessiondrskill audit overturemaps # drill into one skill: the query that triggered it, and the trace linedrskill audit browser:get_screenshot --global # server:tool when a skill and a tool share a nameRaport kończy się sekcją Unused: skille, polecenia i narzędzia MCP bez żadnego wywołania. Wpis trafia tam tylko wtedy, gdy historia śladów danego agenta obejmuje co najmniej [usage] unused_days (domyślnie 90 dni), a instalacja jest starsza niż ten próg, więc nowy skill nie zostanie uznany za martwy po tygodniu. Okno nadpiszesz flagą --unused-days.
Liczby czytaj z czterema zastrzeżeniami. W Codex i Pi liczba wywołań skilla wynika z tego, że agent przeczytał SKILL.md, a nie ze zdarzenia wywołania — takie wiersze mają znacznik ~. Codex szyfruje rozumowanie, więc szczegóły nie pokażą tam rozumowania. Copilot nie zapisuje ani rozumowania, ani argumentów narzędzi. Każdy agent przechowuje ślady przez inny czas, dlatego zbiorczy ranking między agentami liczy wywołania na tydzień w obrębie okna danego agenta.
Audit niczego nie zapisuje w rejestrze i nie wpływa na --ci. Wyciągnięty tekst, łącznie z twoimi promptami, trzyma w cache’u ~/.drskill/cache/audit/; to stan maszyny i nigdy nie trafia do commita.
Czy to zapytanie trafi do właściwego skilla?
Dział zatytułowany „Czy to zapytanie trafi do właściwego skilla?”drskill explain symuluje, dokąd trafiłoby zapytanie:
drskill explain "review this pull request for security issues" --harness claude-codeClaude Code routes to security-review 1. 0.45 security-review Security code review for vulnerabilities. Use when asked to "security… 2. 0.30 gha-security-review GitHub Actions security review for workflow exploitation vulnerabilit…
Scores are drskill's own similarity model, not the harness router.Werdykt brzmi „routes to”, „contested” (dwa pierwsze wyniki są zbyt blisko siebie) albo „no skill matches”. Wynik to podobieństwo tekstu, a nie model twojego agenta; dodaj --deep, żeby ranking ocenił także model.
To, co zmienia sposób pracy, to zamiana takich sprawdzeń w testy. Dodaj do drskill.toml zapytania, na których polega twój zespół:
[[queries]]query = "review this pull request for security issues"expect = "security-review"
[[queries]]query = "write a migration for the orders table"Każdy drskill scan sprawdza wtedy każde zapytanie u każdego agenta i zgłasza ostrzeżenie query-routing, gdy zapytanie jest sporne albo trafia do złego skilla. Z --ci to ostrzeżenie wywraca build. Nowy skill, którego opis przejmuje istniejącą ścieżkę, wychodzi na jaw w pull requeście, który go dodaje, i nikt nie musi ponownie czytać wszystkich opisów, żeby to zauważyć.
Jak drskill czyta Claude Code, Codex i Cursor
Dział zatytułowany „Jak drskill czyta Claude Code, Codex i Cursor”Polecenie jest takie samo dla każdego agenta; --harness zawęża je do jednego. Różnią się czytane pliki, to, czy reguły pierwszeństwa są zweryfikowane, i to, czy audit ma ślady.
drskill scan --harness claude-code- Skille:
.claude/skillsi~/.claude/skills, rekurencyjnie, plus skille z włączonych wtyczek, czytane z~/.claude/plugins. Wyłączone wtyczki i nieaktualne wersje w cache’u są pomijane. - Polecenia:
.claude/commandsi~/.claude/commandstrafiają tylko do sprawdzeń injection, bo wywołuje się je jawnie. - MCP:
.mcp.jsoni~/.claude.json. - Weryfikacja: ścieżki i pierwszeństwo zweryfikowane, więc znaleziska nie mają
?. - Audit: ślady w
~/.claude/projects/, z rozumowaniem agenta przed każdym wywołaniem.
Zestaw to z widokiem wbudowanym: /context pokazuje rozmiar listy skilli w bieżącej sesji, a claude plugin details <plugin> pokazuje przewidywany koszt wtyczki w tokenach, zanim zdecydujesz się ją zostawić. Przy wyborze wtyczek zajrzyj do wtyczek wartych instalacji.
drskill scan --harness codex- Skille:
.codex/skillsi.agents/skillsw projekcie,~/.codex/skillsi~/.agents/skillsna maszynie, plus włączone wtyczki z~/.codex/plugins/cache/. - MCP:
~/.codex/config.toml. - Weryfikacja: ścieżki i pierwszeństwo zweryfikowane. Codex pokazuje każdą kopię o tej samej nazwie, zamiast wybierać zwycięzcę, więc
drskillnie zgłasza dla niego przesłonięć; duplikaty i tak wychodzą jakoexact-duplicatealbonear-duplicate. - Audit: ślady w
~/.codex/sessions/. Liczba wywołań skilli jest wnioskowana z odczytówSKILL.md(~), a rozumowanie jest zaszyfrowane.
drskill scan --harness cursor- Skille:
.cursor/skillsi.agents/skillsw projekcie,~/.cursor/skillsi~/.agents/skillsna maszynie, rekurencyjnie. - MCP:
.cursor/mcp.jsoni~/.cursor/mcp.json. - Weryfikacja: tylko ścieżki. Dokumentacja Cursora nie mówi, która kopia wygrywa przy kolizji nazw, więc znaleziska o przesłonięciu i
double-loadmają?przy nazwie agenta. Znaleziska bez?opierają się wyłącznie na zweryfikowanych regułach. - Poza zakresem w 0.8.1: README wymienia skanowanie magazynów wtyczek dla Claude Code, Codex, Gemini CLI, Copilota i droida, ale nie dla Cursora, a
auditnie czyta śladów Cursora. Dane o użyciu musisz więc brać z pozostałych agentów.
Nieznany identyfikator agenta to błąd, który wypisuje poprawne identyfikatory. drskill scan --global analizuje wyłącznie skille z poziomu maszyny.
Bramka na pull requesty dla commitowanego loadoutu
Dział zatytułowany „Bramka na pull requesty dla commitowanego loadoutu”Loadout dryfuje, choć nikt go nie edytuje: git pull przynosi skill kolegi, nieprzypięty pakiet MCP publikuje nową wersję, serwer przepisuje opis narzędzia. Bramka łapie ten dryf w pull requeście, który go powoduje.
drskill ack dopisuje wpis na końcu drskill.toml i nie rusza niczego innego:
[[ack]]check = "near-duplicate"skills = ["docx-report", "documentation-writer"]fingerprint = "sha256:..."note = "docx is output format specific; keeping both"date = 2026-07-19Odcisk (fingerprint) to hash identyfikatora sprawdzenia i treści każdego skilla, którego dotyczy znalezisko. Zmień jeden z tych skilli, a potwierdzenie przestaje obowiązywać, więc ack znaczy „ta konkretna sytuacja jest w porządku”, a nigdy „przestań sprawdzać tę parę”. Potwierdzenia dotyczące tylko skilli z poziomu maszyny trafiają do ~/.drskill.toml; flagi --local i --global-ack zmieniają to przypisanie.
--deep i --mcp-connect uruchamiaj lokalnie, a potem commituj .drskill/cache/. Tam leżą werdykty modelu i migawki narzędzi MCP, a każdy kolejny skan je czyta, więc CI dostaje wyniki bez klucza API i bez uruchamiania serwera.
name: loadouton: pull_request: paths: ['.claude/**', '.agents/**', '.codex/**', '.cursor/**', '.mcp.json', 'drskill.toml', '.drskill/**']permissions: contents: readjobs: drskill: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 with: persist-credentials: false - name: Scan the committed skill and MCP loadout run: pipx run --spec drskill-core==0.8.1 drskill scan --ciZadanie nie ma żadnego sekretu i używa pakietu core, który nie potrafi połączyć się z serwerem ani wywołać modelu. Niech tak zostanie: --mcp-connect uruchamia polecenia stdio zapisane w konfiguracji, a w pull requeście ta konfiguracja pochodzi od kontrybutora.
Kto zatwierdza: znalezisko wywraca sprawdzenie, a naprawą jest albo zmiana loadoutu, albo ack z notatką. Dodaj drskill.toml, .drskill/ i .github/workflows/ do CODEOWNERS i włącz wymagane review właściciela kodu w ochronie gałęzi albo w rulesecie, żeby każde potwierdzenie i każdą zmianę tego zadania akceptował tech lead, bo inaczej każdy, kto może commitować, może też wyciszyć ostrzeżenie. Przy pull_request GitHub uruchamia YAML workflow z merge refa pull requesta, więc bez tego review pull request może zmienić także samo zadanie.
Jeśli publikujesz skille, wtyczki albo marketplace, drskill lint uruchamia te same sprawdzenia na tym, co tworzysz, i dokłada sprawdzenia manifestu według specyfikacji Agent Plugins albo formatu wtyczek Claude Code:
drskill lint ./my-plugin --fail-on warn --jsonlint kończy się kodem 0, gdy jest czysto, 1 przy znaleziskach na poziomie --fail-on lub wyższym i 2 przy błędzie użycia, np. ścieżce, której nie da się zlintować. Jak napisać skill, który przejdzie te sprawdzenia, opisujemy w poradniku tworzenie i publikowanie własnych skilli.
Dlaczego polecenia powłoki w skillach mają osobne sprawdzenie
Dział zatytułowany „Dlaczego polecenia powłoki w skillach mają osobne sprawdzenie”Claude Code pozwala, by skill zawierał linie !`polecenie` albo blok ```!, które wykonują się przy wywołaniu skilla, zanim model zobaczy plik, a ich wynik jest wklejany do promptu. To udokumentowana funkcja, dynamiczne wstrzykiwanie kontekstu, przydatna np. do wciągnięcia bieżącego git diff. Ryzyko leży w ścieżce aktualizacji: git pull albo menedżer skilli może podmienić polecenia na inne. README drskill podaje, na podstawie testów autora, że polecenia, które się wykonują, nie przechodzą przez pytanie o uprawnienia.
drskill traktuje zestaw poleceń jak listę narzędzi MCP. injection-shell-unreviewed przy pierwszym zobaczeniu jest notatką z listą wszystkich poleceń; po potwierdzeniu tego punktu odniesienia każda zmiana staje się ostrzeżeniem, które pokazuje, co dodano, a co usunięto. injection-shell-dangerous zgłasza się od razu przy ścieżkach do poświadczeń, zmiennych środowiskowych o nazwach wyglądających na sekrety, ruchu sieciowym albo pobieraniu przekierowanym do powłoki.
Żeby wyłączyć tę funkcję, ustaw "disableSkillShellExecution": true w ustawieniach Claude Code. Obejmuje to skille użytkownika, projektu, wtyczek i dodatkowych katalogów, ale nie wbudowane ani zarządzane, i najwięcej daje w ustawieniach zarządzanych, których użytkownik nie może nadpisać.
Kiedy skan drskill wprowadza cię w błąd
Dział zatytułowany „Kiedy skan drskill wprowadza cię w błąd”Pierwszy skan zagrzebuje sygnał. Na maszynie z setkami skilli spodziewaj się setek znalezisk near-duplicate, w większości jednej przyczyny powtórzonej wiele razy: wtyczki zainstalowanej z dwóch marketplace’ów albo skilla skopiowanego do dwóch katalogów. Jak z tego wyjść: uruchom drskill show near-duplicate, usuń źródło kopii i przeskanuj ponownie, zanim cokolwiek potwierdzisz. Całą klasę sprawdzeń (drskill ack <check-id>) potwierdzaj dopiero po jej przeczytaniu.
Czysty skan to nie czysty loadout. Skille z wtyczek Cursora są poza listą magazynów wtyczek w 0.8.1, około 65 agentów przejętych z projektu vercel-labs/skills nie ma zweryfikowanych ani ścieżek, ani pierwszeństwa, a pliki binarne lub większe niż 1 MiB są odnotowywane, ale nie skanowane. Sprawdzenia tylko dla skryptów, takie jak ruch sieciowy i odczyt poświadczeń, pomijają pliki, które nie wyglądają na skrypty. Jak z tego wyjść: połącz skan z przeglądem przed instalacją i z bramkami bezpieczeństwa dla kodu pisanego przez agentów.
Sprawdzenia injection wskazują powierzchnie, a nie intencje. Znalezisko nie jest oskarżeniem, a cisza nie jest gwarancją. Każde znalezisko injection cytuje dokładne linie; przeczytaj je.
Sprawdzenia opisów to heurystyki. opposing-imperatives dopasowuje ściśle i przepuszcza sparafrazowane konflikty; description-overlap zgłasza przypadki wymagające oceny. Jak z tego wyjść: drskill scan --deep prosi model o ocenę każdej zgłoszonej pary, a klaster uznany w całości za rozłączny spada do notatki, która nie wywraca --ci. Skill z aktywnym znaleziskiem injection nigdy nie dostaje takiego obniżenia i zwykle to wyjaśnia, dlaczego jeden klaster spadł do notatki, a inny nie.
Rejestr i cache nie są podpisane. Zmiana w drskill.toml albo .drskill/cache/ może wyciszyć dowolne ostrzeżenie. Jak z tego wyjść: CODEOWNERS na oba i przegląd tych zmian tak jak kodu.
Dryf lockfile’a daje jedno ostrzeżenie zamiast wielu. Gdy żaden hash w skills-lock.json nie zgadza się z tym, co liczy drskill, narzędzie wypisuje jedno ostrzeżenie „could not verify”, zamiast oskarżać każdy skill. Dryf poszczególnych skilli pojawia się dopiero, gdy zgodzi się przynajmniej jeden hash.