W poście #2 i #3 wspomnieliśmy skills jako jedną z warstw rozszerzeń Claude Code. Teraz zajmiemy się nimi szczegółowo.

Czym jest skill

Skill to zapisany prompt — plik tekstowy z instrukcjami, który Claude Code wstrzykuje do kontekstu na żądanie. Gdy użytkownik pisze /review, agent dostaje do przeczytania zestaw instrukcji i od tej chwili postępuje według nich: sprawdza diff, szuka problemów, raportuje wyniki. Skill to tekst, który model czyta i wykonuje — jak szczegółowe zlecenie na kartce.

Narzędzie MCP działa inaczej: to kod uruchomiony po stronie zewnętrznego serwera lub programu. Model generuje wywołanie (np. search_web(query="Claude skills")), serwer MCP wykonuje zapytanie do prawdziwego API wyszukiwarki i odsyła wynik. Agent nie zna implementacji — dostaje gotowy rezultat. Skill mówi agentowi jak myśleć i działać; MCP daje mu dostęp do zewnętrznych możliwości.

Wbudowane skills Claude Code

Claude Code ma kilka wbudowanych skills:

Wbudowane skills Claude Code
SkillSlash commandCo robi
init/initInicjalizuje CLAUDE.md dla projektu
review/reviewCode review pull requestu
security-review/security-reviewAudyt bezpieczeństwa pending changes
simplify/simplifyPrzegląd kodu pod kątem jakości i powtórzeń
update-config/update-configKonfiguracja settings.json (hooks; permissions)
claude-api/claude-apiBudowanie/debugging aplikacji z Claude API

Anatomia skilla

Skill to plik Markdown z frontmatterem i treścią instrukcji. Frontmatter definiuje dwa pola: name (nazwa używana jako slash command) i description (krótki opis triggera — pojawia się na liście dostępnych skills w kontekście). Reszta pliku to instrukcje:

---
name: incident-postmortem
description: Użyj gdy użytkownik prosi o postmortem, analizę incydentu lub raport awarii
---

# incident-postmortem

1. Zapytaj o incydent: kiedy, jakie systemy, ile trwał, kto był zaangażowany
2. Zbierz materiały: przeczytaj logi z `logs/`, alerty z `alerts/`, notatki z kanału incydentowego
3. Odtwórz oś czasu: każde zdarzenie z timestampem i odpowiedzialną osobą/systemem
4. Znajdź przyczynę źródłową (root cause) — stosuj metodę "5 Why":
   - Nie poprzestaj na "serwer padł" — pytaj dlaczego padł, dlaczego nie było failover, dlaczego alerty nie zadziałały
5. Wygeneruj postmortem wg struktury:
   - Podsumowanie (2-3 zdania dla managementu)
   - Oś czasu
   - Root cause
   - Impact (ilu użytkowników, ile czasu, czy były straty finansowe)
   - Action items: konkretne zadania z właścicielem i deadline
6. Zapisz jako `postmortems/{{YYYY-MM-DD}}-{{slug}}.md`

## Constraints
- Action items muszą mieć właściciela i datę — bez tego to nie action item
- Nie szukaj winnych — skup się na systemach i procesach, nie osobach
- Sekcja "Co poszło dobrze" jest obowiązkowa — nawet w najgorszym incydencie

Dwa tryby uruchamiania

Skill może być uruchomiony na dwa sposoby:

Slash command — użytkownik jawnie wpisuje /database-migration. Zawsze działa.

Auto-trigger — model sam decyduje o załadowaniu skilla, gdy rozpozna pasujący kontekst. Pole description w frontmatterze to właśnie warunek triggera. Jeśli opis brzmi "użyj gdy użytkownik prosi o migrację bazy danych", model załaduje skill przy pasującym zapytaniu — bez /.

Oba tryby mogą działać równolegle: jeden skill może być wywołany jawnie slash commandem i jednocześnie auto-triggerować się na podstawie kontekstu.

Jak skills trafiają do kontekstu

Skills nie są ładowane do kontekstu na starcie sesji. W prompcie systemowym pojawia się jedynie lista dostępnych skills — same nazwy z krótkimi opisami triggerów. Pełna treść skilla jest wstrzykiwana dopiero w momencie wywołania.

Dzięki temu posiadanie dziesiątek zdefiniowanych skills kosztuje minimalnie — opis każdego skilla jest obcinany do 1 536 znaków, więc lista samych nazw i opisów to relatywnie mały overhead. Token overhead właściwej treści rośnie dopiero w momencie faktycznego użycia skilla.

Gdzie umieścić skill

Skills żyją w katalogach konfiguracji Claude Code:

  • Projekt: .claude/skills/<nazwa>/SKILL.md — skill dostępny tylko w tym projekcie
  • Globalny: ~/.claude/skills/<nazwa>/SKILL.md — skill dostępny we wszystkich projektach

Struktura katalogu wygląda tak:

.claude/
└── skills/
    ├── incident-postmortem/
    │   └── SKILL.md
    └── weekly-report/
        └── SKILL.md

Katalog skilla może zawierać dodatkowe pliki, do których SKILL.md odwołuje się w instrukcjach:

.claude/
└── skills/
    ├── incident-postmortem/
    │   └── SKILL.md
    └── weekly-report/
        ├── SKILL.md
        └── report-template.md   ← szablon raportu

Typowe dodatkowe pliki:

  • Szablon dokumentu — plik Markdown z gotową strukturą, którą skill wypełnia danymi. Agent dostaje instrukcję "wypełnij szablon z report-template.md" zamiast generować strukturę za każdym razem od nowa.
  • Przykładowy output — jeden lub kilka plików example-*.md pokazujących, jak powinien wyglądać wynik. Few-shot examples wbudowane w skill, nie w prompt.
  • Konfiguracja — plik config.yaml z parametrami (np. lista odbiorców raportu, progi alertów), które skill odczytuje zamiast pytać użytkownika za każdym razem.

Praktyczny przykład: skill weekly-report

Skill dla account managera, który co tydzień raportuje status klientów. Katalog skilla:

.claude/
└── skills/
    └── weekly-report/
        ├── SKILL.md
        └── report-template.md

report-template.md — szablon, który skill wypełnia:

# Weekly Account Report — {{tydzień}}

## Podsumowanie tygodnia
{{1-2 zdania co się wydarzyło}}

## Status klientów

| Klient | Stan | Następny krok | Termin |
|--------|------|---------------|--------|
| ...    | ...  | ...           | ...    |

## Ryzyka i eskalacje
{{lista ryzyk wymagających uwagi managera}}

## Plan na przyszły tydzień
{{top 3 priorytety}}

SKILL.md — instrukcje dla agenta:

---
name: weekly-report
description: Użyj gdy użytkownik prosi o raport tygodniowy, status klientów lub weekly update
---

# weekly-report

1. Zapytaj użytkownika o tydzień (domyślnie: bieżący, pon-pt)
2. Zbierz dane z dostępnych źródeł:
   - Przeczytaj notatki ze spotkań z katalogu `notes/` z tego tygodnia
   - Sprawdź otwarte zadania w `tasks/open.md`
   - Jeśli dostępne: pobierz komentarze z CRM przez narzędzie MCP
3. Wypełnij szablon z pliku `report-template.md`:
   - Status każdego aktywnego klienta: zielony (OK) / żółty (wymaga uwagi) / czerwony (ryzyko)
   - Następny krok musi być konkretny: kto, co, kiedy
   - Ryzyka: tylko to, co wymaga decyzji lub eskalacji — nie informacji
4. Zapisz raport jako `reports/weekly-{{YYYY-WW}}.md`
5. Pokaż użytkownikowi przed zapisem — zapytaj czy coś uzupełnić

## Constraints
- Status "czerwony" zawsze wymaga wpisu w sekcji Ryzyka
- Nie generuj "następnych kroków" w stylu "monitorować sytuację" — to nie jest krok
- Jeśli brak notatek za dany tydzień — wyraźnie zaznacz luki, nie wypełniaj domysłami

Popularne skills

Społeczność Claude Code tworzy i udostępnia skills na GitHubie. Kilka wartych uwagi:

Popularne skills dla Claude Code — źródła: hesreallyhim/awesome-claude-code; alirezarezvani/claude-skills
SkillKategoriaOpis
/security-reviewKodAudyt bezpieczeństwa zmian na bieżącej gałęzi. Analizuje diff pod kątem OWASP Top 10: injection; wycieki danych; błędy autentykacji.
/debugKodSystematyczne debugowanie: zbiera stack trace; izoluje zmienne; proponuje hipotezy od najbardziej do najmniej prawdopodobnej; uruchamia testy weryfikujące każdą.
/deploy-checkDevOpsPrzed deployem sprawdza gotowość: testy; zmienne środowiskowe; migracje bazy; otwarte TODO w zmienionym kodzie. Zatrzymuje deploy jeśli coś nie gra.
/meeting-insights-analyzerKomunikacjaPrzetwarza surowe notatki ze spotkania na ustrukturyzowany dokument: decyzje; action items z właścicielami i deadlines; otwarte pytania.
/exec-summaryZarządzanieSkraca długi raport lub dokument do jednostronicowego executive summary: teza; kluczowe dane; rekomendacja; ryzyka. Format dostosowany do odbiorcy (zarząd; inwestor; klient).
/deal-reviewSprzedażAnaliza szansy sprzedażowej przed spotkaniem: czyta historię kontaktu z CRM; identyfikuje obiekcje; sugeruje argumenty i pytania odkrywające potrzeby klienta.
/proposalSprzedażGeneruje ofertę handlową na podstawie notatek z rozmów z klientem: wypełnia szablon oferty; dopasowuje język do branży klienta; kalkuluje ROI z podanych danych.
/invoice-checkFinanseWeryfikuje fakturę przed zatwierdzeniem: sprawdza zgodność z zamówieniem; poprawność stawki VAT; limity budżetowe; flaguje anomalie do ręcznego przeglądu.
/contract-reviewPrawoWstępny przegląd umowy: wypisuje zobowiązania; terminy; kary umowne; klauzule ograniczające odpowiedzialność. Przyspiesza pierwszy przegląd — nie zastępuje prawnika.
/gdpr-checkComplianceSprawdza nową funkcjonalność lub proces pod kątem RODO: identyfikuje przetwarzane dane osobowe; podstawy prawne; obowiązki informacyjne; ryzyka.
/job-descriptionHRTworzy ogłoszenie o pracę na podstawie briefu od managera: wymagania; zakres obowiązków; benefity. Dba o neutralność językową i eliminuje dyskryminujące sformułowania.
/interview-scorecardHRNa podstawie opisu stanowiska generuje kartę oceny rozmowy kwalifikacyjnej: kryteria oceny; pytania behawioralne; skale dla każdej kompetencji.
/rfp-responseSprzedażOdpowiadanie na zapytania ofertowe: analizuje wymagania RFP; mapuje je na możliwości firmy; generuje draft odpowiedzi wg szablonu.