Przejdź do treści
28/30Rozdział 28 z 30

Agent Skills i SKILL.md: zmierzona progresywna prezentacja

Pięć realnych skill z 128 374 token instrukcji zajmuje 253 token context. Skróć opisy, a agent przestaje je znajdować.

Na tej stronie

Weźmy projekt, w którym zainstalowano pięć opublikowanych skill. Oto ich koszt.

terminalBASH
ls .claude/skills/
TEXT
next-best-practices  next-cache-components  vercel-composition-patterns
vercel-react-best-practices  vercel-react-native-skills
o200k_base tokens, measuredTEXT
skill                              level 1   level 2    level 3   files
next-best-practices                     40       966     19,374      19
next-cache-components                   28     2,334          0       0
vercel-composition-patterns             59       533     10,667      13
vercel-react-best-practices             68     1,670     53,670      75
vercel-react-native-skills              58       950     37,957      41
                                    ------   -------   --------
total                                  253     6,453    121,668

Sto dwadzieścia osiem tysięcy token instrukcji, przykładów i reguł — więcej, niż mieści się w context window na 128 000 token — a stały koszt dostępności wszystkich pięciu to 253 token, dwie dziesiąte procenta. Nic innego w tym kursie nie ma takiego kształtu. Za definicję narzędzia płacisz przy każdym żądaniu, niezależnie od tego, czy zostanie użyte, a rozdział 26 zmierzył jeden serwer MCP na 1 619 token, zanim zrobił cokolwiek: trzydzieści dwa razy więcej niż średnia linia poziomu 1 w tabeli powyżej.

Ten rozdział dotyczy mechanizmu, który daje taki stosunek, dwóch sposobów, na jakie się psuje, oraz pytania, które ten mechanizm wymusza, a na które prawie nikt nie odpowiada: mając dany fragment wiedzy, do którego z czterech miejsc należy.

Dlaczego ten rozdział nie ma języka programowania

Link do sekcji: Dlaczego ten rozdział nie ma języka programowania

Rozdział 14 ustalił regułę dla drugiej połowy tego kursu — połączenia, ponowienia i anulowanie są w TypeScript — oraz ogłosił pięć wyjątków. To jedno z nich, a powodem nie jest preferencja.

Skill to plik Markdown. Nie plik konfigurujący program, nie plik kompilowany przez program: dokument, który model czyta, tak samo jak czyta wiadomość, którą wpisałeś. Przypisanie temu rozdziałowi języka programowania oznaczałoby niezrozumienie formatu, a to nieporozumienie jest najczęstsze w rozmowach o skill. Wszystko poniżej to Markdown i YAML, plus jeden mały skrypt powłoki, który istnieje właśnie po to, by pokazać, gdzie kod należy, a gdzie nie należy w skill.

Rachunek, który rozwiązuje, czyli arytmetyka z rozdziału 16

Link do sekcji: Rachunek, który rozwiązuje, czyli arytmetyka z rozdziału 16

Oto prawdziwa instrukcja: jak pewna firma pisze swoje informacje o wydaniu. To procedura, nie preferencja — ma uporządkowany zestaw kroków, taksonomię, głos, szablon i skrypt, który zbiera materiał źródłowy.

Włóż to wszystko do system prompt, jak robi większość zespołów, a arytmetyka z rozdziału 16 przejmuje stery. System prompt jest prefiksem, a za prefiks płaci się przy każdym wywołaniu. Pomiar z użyciem o200k_base na folderze napisanym do tego rozdziału:

the same instruction, two ways, 40 turnsTEXT
whole thing pasted into the system prompt   1,716 x 40  =  68,640 input tokens   $0.1373
as a skill, activated once on turn 12          46 x 40
                                            + 324 (SKILL.md body)
                                            + 665 (two reference files read)
                                                        =   2,829 input tokens   $0.0057
as a skill, never activated at all             46 x 40  =   1,840 input tokens   $0.0037

Dwadzieścia cztery razy taniej, gdy jest użyty, trzydzieści siedem razy taniej, gdy nie jest. Stawki są z rozdziału 16: $2,00 za milion token wejściowych.

Teraz uczciwy kontrargument, bo rozdział, który by go pominął, byłby reklamą. Prompt caching w dużej mierze zamyka lukę kosztową. System prompt jest stabilny i znajduje się na początku, co czyni go najlepszym możliwym kandydatem do cache; przy $0,20 za milion cached input te same 68 640 token kosztuje $0,0168 zamiast $0,1373. Nadal trzy razy więcej niż skill, ale już nie o rząd wielkości.

Pieniądze nigdy nie były najmocniejszym argumentem. Tym jest to:

Caching sprawia, że stały prefiks jest tańszy. Nie sprawia, że jest mniejszy.

W turze 40 wersja z system-prompt nadal ma 1 716 token polityki informacji o wydaniu siedzących w oknie podczas rozmowy o czymś zupełnie innym, konkurujących o to, co rozdział 24 nazwał budżetem attention modelu. Wersja skill ma 46. Zrób cache złej rzeczy, a kupiłeś zniżkę na rozproszenie.

Jako formuła, z nn turami, L1L_1 metadanymi, L2L_2 treścią, L3L_3 całym pakietem i RR zbiorem faktycznie przeczytanych plików z pakietu:

system prompt=n(L1+L2+L3)skill=nL1+1[used](L2+iRL3(i))\text{system prompt} = n\,(L_1 + L_2 + L_3) \qquad \text{skill} = n\,L_1 + \mathbb{1}[\text{used}]\left(L_2 + \sum_{i \in R} L_3^{(i)}\right)

Cały ten rozdział to różnica między mnożeniem drugiego składnika przez nn a mnożeniem go przez jeden albo przez zero.

Skill to katalog. Specyfikacja jest na tyle krótka, że można ją przytoczyć w całości:

the whole formatTEXT
release-notes/
├── SKILL.md          # required: YAML frontmatter + Markdown instructions
├── scripts/          # optional: executable code
├── references/       # optional: documentation read on demand
├── assets/           # optional: templates, schemas, examples
└── ...               # anything else you like

SKILL.md musi zaczynać się od YAML frontmatter i wymagane są dokładnie dwa pola: name oraz description.1 Cztery kolejne są opcjonalne i nie zdefiniowano żadnych innych:

PoleWymaganeOgraniczenie
nametak1–64 znaki, małe litery, cyfry i łączniki; bez łącznika na początku, na końcu ani podwójnego; musi odpowiadać nazwie katalogu
descriptiontak1–1024 znaki, niepuste; mówi, co skill robi i kiedy go używać
licensenienazwa licencji albo nazwa dołączonego pliku licencji
compatibilityniedo 500 znaków: docelowy produkt, wymagane pakiety, dostęp do sieci
metadataniedowolna mapa kluczy tekstowych na wartości tekstowe, dla twoich narzędzi
allowed-toolsnierozdzielona spacjami lista wstępnie zatwierdzonych narzędzi; oznaczone jako eksperymentalne

Oto kompletny skill do informacji o wydaniu, z treścią poniżej trzydziestu linii:

release-notes/SKILL.mdMARKDOWN
---
name: release-notes
description: Write the release notes for a tagged version in this company's house style. Use when preparing a release, drafting a changelog entry, or when someone asks for the notes for a version number or a tag.
allowed-tools: Bash(git log:*) Bash(git tag:*) Read
---

# Release notes

## Procedure

1. Run `scripts/collect.sh <previous-tag> <new-tag>`. It prints one line per merged
   pull request: number, title, author and the labels.
2. Drop every line whose labels contain `internal`, `ci` or `chore`.
3. Put each surviving line into exactly one of the four categories in
   [references/categories.md](references/categories.md). A change that seems to fit two
   belongs in the higher one; the order in that file is the order of precedence.
4. Rewrite each line as a sentence in the voice defined in
   [references/voice.md](references/voice.md). The pull request title is a note to
   the team; the release note is a note to a stranger.
5. Check the result against [references/examples.md](references/examples.md).

## The one rule that is not negotiable

Every note says what a person can now do, or what stopped happening to them. If a
sentence can only be understood by someone who has read the diff, it is not finished.

Zwróć uwagę, czym jest ta treść. To nie polityka — to spis treści z kolejnością działań. Polityka żyje w trzech plikach, które wskazuje, ale których nie zawiera. A krok pierwszy przekazuje pracę skryptowi, bo kod skryptu nigdy nie wchodzi do context window: wchodzi tylko jego wynik.2

Trzy poziomy i koszt każdego z nich

Link do sekcji: Trzy poziomy i koszt każdego z nich

Model ładowania ma nazwę i trzy etapy. Specyfikacja opisuje je z przypisanym budżetem token:1

  1. Metadane, około 100 token: name i description, ładowane przy starcie dla każdego zainstalowanego skill.
  2. Instrukcje, zalecane poniżej 5 000 token: treść SKILL.md, ładowana, gdy skill zostanie aktywowany.
  3. Zasoby, według potrzeb: dołączone pliki, ładowane tylko wtedy, gdy coś ich wymaga.

Dokumentacja referencyjna dodaje do tej samej tabeli czwartą kolumnę — kiedy ładowane, koszt token, zawartość — i najważniejszy jest trzeci wiersz: brak, dopóki nie zostanie użyte.3 Jest tam też zdanie podsumowujące cały rozdział:

Pliki nie zużywają context, dopóki nie zostaną użyte, więc Skills mogą zawierać rozbudowaną dokumentację API, duże zbiory danych albo obszerne przykłady. Nie ma kary w context za dołączoną zawartość, która nie jest używana.3

Tabela zmierzona na początku tego rozdziału to sprawdzenie tej tezy na pięciu skill, których nikt nie pisał na potrzeby tego artykułu. Dwa wiersze warto czytać razem.

next-best-practices ma treść o długości 966 token, która linkuje do dziewiętnastu plików zawierających 19 374 token. Poproś go o naprawienie błędu hydration, a agent czyta treść plus hydration-error.md: 1 409 token z 20 340, czynnik czternaście, a pozostałe osiemnaście plików nigdy nie zostaje otwartych.

next-cache-components ma treść o długości 2 334 token i nie ma żadnych dołączonych plików. To poprawny skill i dobrze napisany, ale nie ma poziomu 3 do odsłonięcia. To uczciwa granica techniki: progresywna prezentacja oszczędza tylko wtedy, gdy jest coś do odroczenia. Skill, którego wiedza się nie rozkłada, płaci za całą treść przy aktywacji, a jedyną pozostałą dźwignią jest nieaktywowanie go.

Zepsuj to: opis jest całym interfejsem

Link do sekcji: Zepsuj to: opis jest całym interfejsem

Poziom 1 to decyzja routing podejmowana na podstawie jednego zdania. Nic innego w skill nie wpływa na to, czy kiedykolwiek zostanie otwarty — ani jakość treści, ani przykłady, ani skrypty. Opis nie jest więc dokumentacją. Jest powierzchnią zapytania i może być błędny.

Specyfikacja mówi to w formie dobrego i złego przykładu, a zły przykład ma cztery słowa: description: Helps with PDFs.1 Warto to zmierzyć, zamiast po prostu przyjąć.

Sześć skill, każdy z wiarygodnym opisem, który mówi, co robi i kiedy go używać. Dwadzieścia cztery żądania, po cztery na skill, sformułowane tak, jak sformułowałby je człowiek, i nigdy nienazywające skill. Model widzi sześć linii w swoim system prompt i ma odpowiedzieć jedną nazwą albo NONE. Greedy decoding, więc wynik jest odtwarzalny. Potem te same dwadzieścia cztery żądania z tymi samymi sześcioma skill, ale z opisami skróconymi do gołego tematu.

the two system promptsTEXT
rich   - sql-review: Review a SQL migration for locks, missing indexes and unsafe
         defaults before it runs on the production database. Use when someone adds
         or changes a migration, an index, or a table column.
thin   - sql-review: Helps with SQL.
24 requests, Qwen2.5-0.5B-Instruct, greedy decodingTEXT
rich   295 tokens of level 1 for six skills   18/24 correct = 75.0 %  [55.1, 88.0]
thin    81 tokens of level 1 for six skills   10/24 correct = 41.7 %  [24.5, 61.2]

paired: rich only 9, thin only 1, two-sided sign test p = 0.0215
answered NONE: rich 1 of 24, thin 9 of 24

Najpierw czytaj przedziały, jak nalegał rozdział 4 i jak znów będzie nalegał rozdział 29: nakładają się, a dwadzieścia cztery przypadki nie pozwalają uszeregować dwóch systemów wyłącznie po agregatach. Rozstrzyga porównanie sparowane, a to instrument z rozdziału 15: spośród dziesięciu przypadków, w których dwa ramiona się nie zgadzały, dziewięć przypadło bogatym opisom, a jeden cienkim. To jest ustalone na zwykłym progu.

Teraz przeczytaj ostatnią linię, która jest właściwym wynikiem. Przy cienkich opisach model odpowiedział NONE na dziewięć z dwudziestu czterech żądań. Nie zły skill: żaden skill. Oto cztery z nich, dosłownie:

TEXT
"Check this migration before I run it against production."     -> release-notes
"Will this CREATE INDEX lock writes?"                          -> NONE
"Is this ALTER TABLE safe to deploy at peak traffic?"          -> NONE
"Is 'seamless and powerful' allowed in the app store listing?" -> next-best-practices

Zainstalowany był idealny skill sql-review, z treścią, przykładami i checklistą, a mimo to nigdy nie został otwarty, trzy razy z rzędu, przy trzech pytaniach, do których został napisany. Poziomy 2 i 3 są nieistotne dla skill, do którego poziom 1 nigdy nie dociera.

Koszt naprawy: 214 token, różnica między 295 a 81, rozłożona na sześć skill. To wynik z rozdziału 18 nadchodzący z drugiej strony. Tam zmiana wyłącznie opisu narzędzia podniosła formatowanie dat z 2 poprawnych na 24 do 24 na 24. Tutaj zmiana wyłącznie opisu skill podnosi aktywację z 10 na 24 do 18. W obu przypadkach najtańszą poprawką w systemie jest zdanie, i w obu przypadkach zdanie musi nazwać trigger, a nie tylko temat: nie czym dana rzecz jest, ale co użytkownik właśnie powiedział, gdy ma zastosowanie.

Jedno zastrzeżenie, które ten rozdział jest winien własnym standardom. To model o pół miliarda parametrów, a frontier model radzi sobie z routing znacznie lepiej niż 75%. Czytaj mechanizm, nie wielkość efektu: sygnał routing ma długość jednego zdania niezależnie od modelu, który go czyta, a żaden model nie może wybierać na podstawie informacji, której nie umieściłeś w tym zdaniu.

Zepsuj to jeszcze raz: wyjście awaryjne kosztujące 26 362 token

Link do sekcji: Zepsuj to jeszcze raz: wyjście awaryjne kosztujące 26 362 token

Druga awaria jest przeciwieństwem pierwszej. Skill zostaje znaleziony, poziomy są poprawnie rozdzielone, a agent i tak czyta wszystko.

vercel-react-best-practices to naprawdę dobrze zbudowany skill. Jego treść o długości 1 670 token to tabela priorytetów ośmiu kategorii i szybki skrót wskazujący 70 plików reguł, po jednej linii każdy. Reguły leżą obok na dysku: 70 plików, najmniejszy 132 token, mediana 319, największy 1 052. Zadaj jedno pytanie o barrel imports, a uczciwy koszt to treść plus jeden plik — poniżej 2 400 token wobec pakietu 53 670.

A potem ostatnia linia treści mówi to:

the final section of SKILL.mdTEXT
## Full Compiled Document

For the complete guide with all rules expanded: `AGENTS.md`

AGENTS.md ma 26 362 token. To sklejone 70 plików reguł: ich suma to 25 784, a różnica to nagłówki między nimi. Skill daje więc agent wybór między przeczytaniem jednej medianowej reguły za 319 token a przeczytaniem tej samej zawartości, całej, za cenę osiemdziesiąt trzy razy wyższą — i oferuje ten wybór w zdaniu bez przypisanego kosztu i bez warunku, kiedy warto z niego skorzystać.

To nie jest bug i plik nie jest zły; skompilowany dokument jest naprawdę użyteczny dla człowieka oraz dla agent poproszonego o audyt całej bazy kodu. To plik poziomu 3 z zaproszeniem poziomu 2, a lekcja uogólnia się poza ten jeden skill: każda ścieżka wychodząca z SKILL.md powinna mówić, ile kosztuje i kiedy jest tego warta, bo model nie ma jak wiedzieć, że jedna nazwa pliku jest osiemdziesiąt trzy razy droższa od nazwy pliku nad nią.

Ten sam folder niesie mniejszą lekcję o nieświeżości. Treść mówi „70 rules across 8 categories” i wymienia 70; katalog rules/ zawiera 72 pliki, z których dwa są rusztowaniem (_template.md i _sections.md); a boczny metadata.json mówi „40+ rules”. Trzy liczniki tego samego zbioru w jednym folderze: jeden poprawny, jeden arytmetyczny i jeden pozostały po wcześniejszej wersji. Skill jest dokumentem, a dokumenty gniją dokładnie tak jak komentarz w kodzie, który rozjechał się z kodem tuż obok — z tą różnicą, że ten dokument czyta maszyna, która nie uniesie brwi.

Pola dodawane przez implementację referencyjną i pułapka przenośności

Link do sekcji: Pola dodawane przez implementację referencyjną i pułapka przenośności

Otwarta specyfikacja definiuje sześć pól frontmatter. Implementacja referencyjna, Claude Code, akceptuje dwadzieścia.2 Pięć grup warto znać z nazwy, bo to tam format przestaje być tylko dokumentem:

Uprawnienia i wywołanie. allowed-tools wstępnie zatwierdza narzędzia dla tury, która wywołała skill, a zgoda czyści się przy następnej wiadomości; disallowed-tools je usuwa. disable-model-invocation powstrzymuje model przed samodzielnym załadowaniem go, zamieniając skill w komendę uruchamianą przez człowieka. user-invocable: false robi odwrotnie: ukryty przed ludźmi, dostępny tylko dla modelu, jako wiedza w tle.

Izolacja i koszt. context: fork uruchamia skill w osobnym kontekście sub-agent z własnym oknem — granica sub-agent z rozdziału 25 jako jedna linia YAML — gdzie agent wybiera rodzaj, a background decyduje, czy tura czeka. model i effort zmieniają, który model działa, gdy skill jest aktywny, tylko dla tej tury.

Argumenty (arguments, argument-hint) pozwalają człowiekowi przekazać wartości podstawiane do treści, co sprawia, że skill nadaje się do użycia jako slash command. Zakres (paths) ogranicza aktywację do plików pasujących do glob. A dynamic context injection to element, który zmienia model mentalny: linia w formie !`git diff HEAD` uruchamia się przed wysłaniem treści, a jej wynik zostaje podstawiony do tekstu. Dokument jest szablonem, a część zostaje obliczona w chwili czytania.

Teraz pułapka, i jest podana w tej samej dokumentacji: poza Claude Code — w produkcie webowym, przez Skills API, przy pakowaniu — dozwolone jest tylko sześć pól ze specyfikacji, a każde inne pole jest twardym błędem przy uploadzie.2 Skill, który działa idealnie w jednym produkcie, nie instaluje się więc w innym należącym do tego samego dostawcy, i zawodzi na frontmatter, a nie na czymkolwiek, co dałoby się przetestować przez przeczytanie prozy. Jeśli chcesz, by skill był przenośny, te sześć pól to cały budżet. Jeśli nie chcesz, powiedz to w compatibility, które istnieje dokładnie po to.

Tabela, dla której istnieje ten rozdział

Link do sekcji: Tabela, dla której istnieje ten rozdział

Cztery rzeczy są ciągle ze sobą mylone, a to zamieszanie nie jest słowną pedanterią: zły wybór kosztuje pieniądze w każdej turze albo odbiera gwarancję, którą myślałeś, że masz.

System promptSkillNarzędzieSerwer MCP
Czym jesttekst w każdym żądaniufolder, którego korzeniem jest SKILL.mdJSON Schema plus endpoint w twoim kodzieproces albo usługa mówiąca protokołem
Co robi modelczyta go, zawszeczyta go, gdy uzna, że opis pasujewywołuje je i czeka na twój wynikwywołuje go przez hosta, jeden klient na serwer
Ile kosztujepełną długość, w każdej turze, na zawszeokoło 50 token na turę; treść raz, jeśli użytajego schema, w każdej turze; wykonanie przy wywołaniukażdy schema plus instructions serwera, w każdej turze
Co może zagwarantowaćnic — to radanic — to rada, którą model może pominąćwszystko, co twój kod wymusza przed działaniemwszystko, co wymusza serwer
Kto to piszetyty, współpracownik albo vendortyktoś inny, dla wielu hostów
Rozdział15ten1826 i 27

Dwa pogrubione wiersze są całym rozróżnieniem. Skill jest czytany; narzędzie jest wywoływane. Skill to proza, która trafia do context window i konkuruje o attention ze wszystkim innym, co się tam znajduje; model może ją wykonać, źle odczytać albo zignorować, a system niczego nie zauważy. Narzędzie to wywołanie, które całkowicie wychodzi z rąk modelu: twój kod dostaje argumenty, waliduje je, sprawdza uprawnienia i decyduje. Rozdział 18 ujął to tak, że model proponuje, a twój kod rozporządza — i to rozdzielenie jest dokładnie tym, czego skill nie ma.

A więc sześć prawdziwych przypadków, rozstrzygniętych:

„Odpowiadaj w języku użytkownika. Nigdy nie podawaj ceny, której nie dostałeś.”

Link do sekcji: „Odpowiadaj w języku użytkownika. Nigdy nie podawaj ceny, której nie dostałeś.”

System prompt. Stosuje się w każdej turze, jest ograniczeniem, a nie procedurą, i ma dwa zdania. Coś, co stosuje się zawsze, nie ma czego progresywnie odsłaniać, a płacenie za linię odkrywania w każdej turze po to, by uniknąć płacenia za dwa zdania w każdej turze, nie jest oszczędnością.

„Jak piszemy tu informacje o wydaniu.”

Link do sekcji: „Jak piszemy tu informacje o wydaniu.”

Skill. Proceduralny, potrzebny być może w jednej turze na czterdzieści, dający się rozłożyć na głos, taksonomię i przykłady, oraz będący prozą, którą człowiek będzie edytował. To kształt, dla którego zaprojektowano ten format, a pomiar powyżej pokazuje, co oszczędza.

„Wyszukaj zamówienie po identyfikatorze w bazie magazynowej.”

Link do sekcji: „Wyszukaj zamówienie po identyfikatorze w bazie magazynowej.”

Narzędzie. Stoi za tym deterministyczna funkcja, a model nie może improwizować zapytania. Zapisanie tego jako skill — dokumentu wyjaśniającego, jak odpytać magazyn — daje modelowi schema i nadzieję. Schema plus endpoint daje mu odpowiedź.

„Czytaj i zapisuj zgłoszenia w naszym trackerze z każdego produktu agent używanego przez firmę.”

Link do sekcji: „Czytaj i zapisuj zgłoszenia w naszym trackerze z każdego produktu agent używanego przez firmę.”

Serwer MCP. Możliwość nie jest twoja, kilka hostów jej potrzebuje i ma historię uwierzytelniania. To problem N×MN \times M, od którego zaczął rozdział 26; protokół jest odpowiedzią, a rozdział 27 wysyła ją dwa razy. Skill nie może zostać odkryty przez hosta, który nigdy nie widział twojego systemu plików — a to dokładnie luka, którą zamyka praca standaryzacyjna na końcu tego rozdziału.

„Czterystustronicowy podręcznik marki.”

Link do sekcji: „Czterystustronicowy podręcznik marki.”

Żadne z czterech. To wiedza do wyszukania, nie procedura do wykonania, i należy do indeksu, który agent przeszukuje: rozdział 19. Dołączenie jej jako poziomu 3 jest dozwolone, kuszące i błędne, bo model musiałby zgadnąć wyłącznie z nazw, który z czterdziestu plików zawiera odpowiedź. Dobrym skill jest natomiast dwustronicowa procedura mówiąca agent, kiedy przeszukiwać ten indeks, co oznacza niski wynik podobieństwa i jak cytować to, co znajdzie.

„Nigdy nie zwracaj więcej niż dwieście euro bez człowieka.”

Link do sekcji: „Nigdy nie zwracaj więcej niż dwieście euro bez człowieka.”

Narzędzie z bramką approval, i nigdy skill. To przypadek, który ma znaczenie. Zapisany w SKILL.md limit jest zdaniem, które model czyta i zwykle respektuje; zapisany w narzędziu zwrotu jest gałęzią, która uruchamia się, zanim jakiekolwiek pieniądze się ruszą. Limit, którego przekroczenie byłoby dla ciebie wstydliwe, nie jest dokumentacją. Reguła warta zapamiętania: jeśli konsekwencja zignorowania instrukcji jest gorsza niż źle sformatowana odpowiedź, instrukcja nie należy do dokumentu.

Od firmowego żargonu do standardu, z liczbami

Link do sekcji: Od firmowego żargonu do standardu, z liczbami

Historia jest krótka, wyjątkowo dobrze datowana i to jej część prawie nikt nie opowiada.

Agent Skills opublikowano 16 października 2025 jako funkcję jednego dostawcy, zdefiniowaną w tamtym ogłoszeniu jako „organized folders of instructions, scripts, and resources that agents can discover and load dynamically to perform better at specific tasks”, z trzema poziomami opisanymi przez analogię wartą zachowania: „like a well-organized manual that starts with a table of contents, then specific chapters, and finally a detailed appendix”.4

18 grudnia 2025 tę samą stronę zaktualizowano, ogłaszając format jako otwarty standard, z własną specyfikacją pod adresem agentskills.io, governance otwartym na wkład i walidatorem referencyjnym.3 Odczytana 7 września 2026 wizytówka klientów standardu wymienia czterdzieści sześć produktów — edytory, terminale, platformy chmurowe i środowiska uruchomieniowe mobilne, w tym first-party coding agents od Anthropic, OpenAI, Google i Mistral — każdy z linkiem do własnej dokumentacji konfiguracji.1

Zbieżność z MCP odbywa się jawnie, z liczbami, które możesz sprawdzić:

Czym jestOtwarteStan na 7 wrz 2026
SEP-2076Agent Skills as a First-Class MCP Primitive: nowe metody skills/list i skills/get, capability skills, powiadomienie list_changed13 stycznia 2026zamknięte, 24 lutego 2026
Skills Over MCP working groupdefiniuje, jak skills są „discovered, distributed, and consumed through MCP”; spotyka się co tydzień; siedemnastu wymienionych członków, dwóch z nich to leadsinterest group 1 lutego 2026; working group 16 kwietnia 2026aktywna
SEP-2640Skills Extension, Extensions Track: konwencja zasobu skill://, identyfikator rozszerzenia io.modelcontextprotocol/skills, odkrywanie przez skills/list i treść przez resources/read23 kwietnia 2026w review

Ciekawe jest zamknięcie, nie propozycje. SEP-2076 prosił o czwarty primitive obok tools, resources i prompts. Working group, która z niego powstała, zdecydowała, że odpowiedź brzmi nie: skills jadą na primitive resources, który już istnieje, jako rozszerzenie opt-in.5 Rozdział 26 zmierzył ten sam instynkt w changelogu samego protokołu, gdzie sampling, roots i logging zdeprecjonowano zamiast zachować. Organ standaryzacyjny, który usuwa własną propozycję, zachowuje się dobrze, a powód, by opowiedzieć tę historię z liczbami na wierzchu, jest taki, że streszczenia, które przeczytasz gdzie indziej, nadal opisują skills jako MCP primitive.

Umiesz już napisać SKILL.md, rozdzielić go na trzy poziomy, które same się opłacają, przeczytać frontmatter cudzego skill i wiedzieć, które pola nie przetrwają uploadu gdzie indziej, oraz odpowiedzieć na pytanie, wokół którego zbudowano cały rozdział — system prompt, skill, narzędzie czy serwer — z uzasadnieniem, a nie z przyzwyczajenia.

Nie umiesz natomiast stwierdzić, czy twój działa.

Każde istotne twierdzenie w tym rozdziale było pomiarem, a najważniejsze było accuracy: 18 z 24 wobec 10 z 24, z przedziałem dla każdego i testem sparowanym między nimi, bo dwa nakładające się agregaty niczego nie rozstrzygają. Ten instrument został pożyczony. Opis skill jest kluczem routing, jego treść jest procedurą, którą model może, ale nie musi wykonać, i obie te właściwości da się poznać tylko przez wielokrotne uruchomienie rzeczy i ocenienie tego, co wróciło — czyli golden set, grader napisany przed uruchomieniem oraz metrykę, która pyta, czy zadziałało za każdym razem, a nie przynajmniej raz.

Rozdział 29 jest właśnie o tym i zaczyna się od liczby, na której opiera się metoda z tego rozdziału: agent, który odnosi sukces siedem razy na dziesięć, wygląda jak 70%, a jego pass^10 — szansa, że odniesie sukces we wszystkich dziesięciu — wynosi zero. Mierzy też trzy graders na tych samych dwustu transkryptach i dostaje 0%, 13% oraz 26% bez regenerowania ani jednego token. Zanim zaufasz zdaniu, które właśnie wpisałeś do description, potrzebujesz instrumentu, który powie ci, że jest gorsze od tego, które zastąpiłeś.


Każde zliczenie token w tym rozdziale zostało wykonane lokalnie za pomocą tiktoken 0.14.0 i kodowania o200k_base, 7 września 2026: na pięciu skill firm trzecich wymienionych na początku tego rozdziału oraz na skill release-notes napisanym do tego rozdziału, którego pełny tekst częściowo odtworzono powyżej. Poziom 1 mierzony jest jako pojedyncza linia - name: description, którą host renderuje do system prompt; poziom 2 to treść SKILL.md po frontmatter; poziom 3 to każdy inny plik w folderze. Koszty używają stawek zmierzonych w rozdziale 16 dla gpt-5.6-terra, $2,00 za milion token wejściowych i $0,20 za milion cached input tokens, zastosowanych do tych liczników — to arytmetyka na zmierzonych token, a nie obserwacje z prawdziwego rachunku. Do napisania tego rozdziału nie wywołano żadnego płatnego API.

Eksperyment aktywacji uruchomił Qwen/Qwen2.5-0.5B-Instruct w half precision na jednej konsumenckiej karcie GPU, greedy decoding, 24 żądania na sześć skill, dwa razy — raz z opisami, które mówią, co skill robi i kiedy ma zastosowanie, raz z opisami skróconymi do gołego tematu w stylu „poor example” z samej specyfikacji. Przedziały to Wilson przy 95%; porównanie sparowane to dwustronny exact sign test na dziesięciu przypadkach niezgodnych; przedział Wilsona pochodzi z rozdziału 4, a exact paired sign test z rozdziału 15, oba użyte bez zmian. Wielkości efektu czytaj jako właściwość bardzo małego modelu, a metodę jako przenośną.

Pięć skill zmierzonych tutaj to pakiety firm trzecich, nie napisane na potrzeby tego rozdziału: next-best-practices i next-cache-components z vercel-labs/next-skills oraz vercel-composition-patterns, vercel-react-best-practices i vercel-react-native-skills z vercel-labs/agent-skills. Ich wewnętrzne liczniki — 70 plików reguł, AGENTS.md przy 26 362 token, metadata.json datowany na styczeń 2026 i twierdzący „40+ rules” — odczytano z plików na dysku 7 września 2026 i są właściwościami tej opublikowanej wersji, nie krytyką autorów: każdy z nich to rodzaj dryfu, który pojawia się w każdym drzewie dokumentacji edytowanym częściej, niż jest liczone.

  1. Agent Skills Specification i Overview, agentskills.io/specification oraz agentskills.io, odczytane 7 września 2026. Źródło układu katalogu; tabela frontmatter odtworzona powyżej ze wszystkimi ograniczeniami (name 1–64 znaki i zgodność z katalogiem, description 1–1024 znaki, compatibility do 500, allowed-tools oznaczone jako eksperymentalne); dobre i słabe przykłady description; trzyetapowy opis progressive-disclosure z budżetem token (metadane około 100 token, instrukcje zalecane poniżej 5 000, zasoby według potrzeb) oraz rada, by trzymać SKILL.md poniżej 500 linii; uwaga, że „the agent will load this entire file once it's decided to activate a skill”; konwencje scripts/, references/ i assets/; komenda skills-ref validate; stwierdzenie, że format „was originally developed by Anthropic, released as an open standard, and has been adopted by a growing number of agent products”; oraz client showcase, które w dniu odczytu wymieniało czterdzieści sześć produktów. 2 3 4

  2. Skills w dokumentacji Claude Code, code.claude.com/docs/en/skills, odczytane 7 września 2026. Źródło pełnej tabeli pól użytej w sekcji „pola dodawane przez implementację referencyjną” — when_to_use, argument-hint, arguments, disable-model-invocation, user-invocable, allowed-tools, disallowed-tools, model, effort, context, agent, background, hooks, paths, shell, metadata, license, compatibility — opisu dynamic context injection z !`command` uruchamianym przed wysłaniem treści, reguły, że zgoda allowed-tools czyści się przy następnej wiadomości, oraz noty compliance, że poza Claude Code akceptowane jest tylko sześć pól ze specyfikacji, a każde inne powoduje twardy błąd przy uploadzie albo pakowaniu. 2 3

  3. Przegląd Agent Skills, platform.claude.com/docs/en/agents-and-tools/agent-skills/overview, odczytany 7 września 2026. Źródło tabeli poziomów z czterema kolumnami (Level 1 metadata, always, about 100 tokens per skill; Level 2 instructions, when triggered, under 5k tokens; Level 3+ resources, as needed, none until accessed); zdania zacytowanego w całości o tym, że dołączona zawartość nie niesie kary w context; „until a Skill is triggered, only its name and description occupy context”; stwierdzenia, że kod skryptu nigdy nie wchodzi do context window i robi to tylko jego wynik; oraz sekcji bezpieczeństwa, która każe używać skills wyłącznie z zaufanych źródeł i ostrzega, że złośliwy skill „can direct Claude to invoke tools or execute code in ways that don't match the Skill's stated purpose” — temat rozdziału 30, nadchodzący przez dokument, a nie przez opis narzędzia. 2 3

  4. Anthropic, Equipping agents for the real world with Agent Skills, 16 października 2025, anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills, odczytane 7 września 2026. Źródło definicji cytowanej powyżej, analogii ze spisem treści/rozdziałami/appendix, trzech poziomów opisanych pierwotnie oraz framingu, że agents potrzebują „more composable, scalable, and portable ways” przekazywania im domain expertise. Towarzyszące ogłoszenie produktowe pod claude.com/blog/skills zawiera datę publikacji 16 października 2025 i aktualizację z 18 grudnia 2025, która wprowadziła zarządzanie na poziomie organizacji oraz otwarty standard.

  5. Skills Over MCP Charter, modelcontextprotocol.io/community/working-groups/skills-over-mcp, odczytany 7 września 2026. Źródło cytowanego powyżej mission statement, dat z changeloga (interest group utworzona 1 lutego 2026, initial charter 14 kwietnia 2026, przekształcenie w working group 16 kwietnia 2026, SEP-2640 podlinkowany 25 kwietnia 2026), przywództwa i siedemnastu wymienionych członków, cotygodniowego rytmu spotkań oraz kryterium sukcesu wskazującego projekt Skills Extension jako „a formal extension using existing Resources primitives”. SEP-2076, Agent Skills as a First-Class MCP Primitive, github.com/modelcontextprotocol/modelcontextprotocol/pull/2076, otwarto 13 stycznia 2026 i zamknięto 24 lutego 2026; proponował skills/list, skills/get, capability serwera skills i powiadomienie skills/list_changed, oraz definiował skill jako „a named bundle of instructions plus references to tools, prompts, and resources that together teach an agent how to perform a domain-specific workflow”. SEP-2640, Skills Extension, .../pull/2640, otwarto 23 kwietnia 2026 na Extensions Track i zawiera konwencję zasobu skill:// oraz identyfikator rozszerzenia io.modelcontextprotocol/skills. Rozdział 26 wymienia tę samą working group wśród opcjonalnych rozszerzeń protokołu.

Gotowy, żeby to LIA wybierała za Ciebie?

Twórz ze wszystkimi modelami AI w jednym miejscu — zacznij dziś za darmo.