Zanim zaczniesz cokolwiek konfigurować w GitHub Copilot, warto zrozumieć z czego w ogóle składa się ten ekosystem. W dokumentacji szybko natrafiasz na trzy pojęcia: Agents, Skills i Instructions. Brzmi prosto, ale w praktyce ludzie często mylą te pojęcia albo używają ich zamiennie – a to trzy zupełnie różne narzędzia, które pełnią różne role.
W tym wpisie wyjaśniam każde z nich, pokazuję jak się do siebie mają i – co najważniejsze – kiedy po które sięgać. Na końcu znajdziesz tabelkę porównawczą, którą możesz zachować jako ściągawkę.
Agent to plik konfiguracyjny (*.agent.md), który opisuje wyspecjalizowanego asystenta. Możesz myśleć o nim jak o pracowniku z określonym profilem kompetencji – "ekspert od Terraform", "specjalista od feature flag w LaunchDarkly", "senior .NET developer z wiedzą o naszej architekturze".
Konkretnie, plik agenta określa:
jakie zadania agent obsługuje i w czym się specjalizuje
z jakich narzędzi i serwerów MCP może korzystać
jakie ma instrukcje dotyczące stylu rozmowy i ograniczeń
W VS Code możesz przełączać się między agentami w panelu Agents albo przypisywać konkretnego agenta do issue na GitHubie. Zamiast za każdym razem tłumaczyć Copilotowi "hej, pracuję z .NETem, używamy czystej architektury, testy piszemy w xUnit" – po prostu uruchamiasz odpowiedniego agenta, który to wszystko już wie.
AGENT Kiedy po niego sięgać?
Masz powtarzający się workflow wymagający głębokiej integracji z narzędziami (np. zawsze pracujesz z tym samym stosem technologicznym)
Chcesz, żeby Copilot proaktywnie wykonywał komendy lub pobierał kontekst przez MCP bez Twojego każdorazowego wskazywania
Potrzebujesz guardrails na poziomie persony – zasad, które mają obowiązywać przez całą sesję kodowania
🌟 Przykład z życia – .NET developer
Wyobraź sobie agenta dotnet-senior.agent.md, który wie że: używasz .NET 9, architektura to Clean Architecture z CQRS, testy w xUnit + FluentAssertions, linter to Roslynator. Za każdym razem gdy otwierasz VS Code i włączasz tego agenta – Copilot operuje z pełnym kontekstem Twojego projektu, bez konieczności wklejania tego samego opisu przy każdej sesji.
Skills – wielokrotnego użytku, samowystarczalne
Skill to samowystarczalny folder z możliwościami, które Copilot może załadować gdy uzna je za potrzebne. Każdy skill mieszka w swoim katalogu i zawiera plik SKILL.md – plus opcjonalne zasoby: dokumenty referencyjne, szablony, skrypty.
Plik SKILL.md definiuje:
nazwę – używaną jako komenda /nazwa w VS Code Chat i do automatycznego wykrywania przez agenty
opis – który mówi agentom i użytkownikom kiedy skill jest relevant
szczegółowe instrukcje jak skill ma być wykonany
odniesienia do bundlowanych zasobów – skryptów, szablonów, dokumentów
🔍 Skills zastąpiły stare prompt files (*.prompt.md)
Jeśli pamiętasz stary pattern z plikami *.prompt.md – skills to ich ewolucja. Oto co zyskałeś na przejściu:
Stare prompt files
Skills (nowe)
Uruchamianie
Tylko ręcznie przez slash command
✅ Automatycznie przez agenty + ręcznie
Zasoby
Tylko tekst instrukcji
✅ Skrypty, szablony, dokumenty, dane
Przenośność
Tylko GitHub Copilot
✅ Działa na wielu systemach (open spec)
Wykrywalność
Niewidoczne dla agentów
✅ Agenty same je odkrywają i uruchamiają
Skills działają według otwartego standardu Agent Skills specification – co oznacza że skill napisany dla GitHub Copilot zadziała też w Claude Code, Codex i innych kompatybilnych systemach. To inwestycja która się nie deprecjonuje razem z konkretnym narzędziem.
SKILL Kiedy po niego sięgać?
Chcesz ustandaryzować odpowiedź Copilota na powtarzające się zadanie (np. "zawsze generuj testy według naszego wzorca")
Do wykonania zadania potrzebujesz bundlowanych zasobów – szablonów, schematów, skryptów
Chcesz żeby agenty same wykrywały i uruchamiały tę zdolność bez Twojego wskazywania
Wolisz sam prowadzić rozmowę, ale z bogatym kontekstem i guardrails pod spodem
🌟 Przykład z życia – skill do generowania testów
Skill o nazwie generate-unit-tests z opisem "Use when asked to write unit tests for C# code". W folderze skilla ląduje SKILL.md z instrukcją jak pisać testy (xUnit, FluentAssertions, wzorzec AAA, mockowanie przez NSubstitute) plus templates/test-template.cs jako punkt startowy. Teraz gdy napisze "napisz testy do tej klasy" – Copilot automatycznie ładuje skilla i generuje testy zgodnie z Twoimi wzorcami, nie generycznymi przykładami z internetu.
Instructions – trwałe tło dla każdej sesji
Instructions (*.instructions.md) to tło – kontekst który Copilot czyta zawsze, gdy pracuje na pasujących plikach. Nie uruchamiasz ich ręcznie, nie trzeba ich aktywować. Są po prostu zawsze tam.
wskazówki specyficzne dla frameworka – "w Angular używaj standalone components", "w .NET nie wyłączaj analizatorów Roslynatora"
reguły specyficzne dla repozytorium – "nie commituj sekretów", "feature flagi muszą być w katalogu flags/", "każda nowa encja wymaga migracji EF Core"
Instructions możesz scopować globalnie, per język programowania, albo per katalog za pomocą glob patternów. Dzięki temu Copilot automatycznie rozumie Twój engineering playbook – bez konieczności wklejania kontekstu przy każdej rozmowie.
⚠️ Ważna różnica: Instructions vs Skills
Łatwo je pomylić, bo oba pliki zawierają instrukcje tekstowe. Różnica jest jednak fundamentalna: Instructions działają pasywnie i zawsze – Copilot je czyta niejako w tle, jako kontekst. Skill jest aktywowany – albo ręcznie przez slash command, albo gdy agent uzna go za odpowiedni do zadania. Instructions to zasady, Skills to zdolności.
INSTRUCTION Kiedy po nie sięgać?
Potrzebujesz trwałych wytycznych obowiązujących przez wiele sesji i wielu developerów
Kodujesz decyzje architektoniczne lub wymagania compliance – rzeczy które zawsze muszą być spełnione
Chcesz żeby Copilot rozumiał wzorce projektu bez każdorazowego wklejania kontekstu na początku sesji
🌟 Przykład z życia – instructions dla projektu .NET
Plik dotnet.instructions.md scopowany na pliki **/*.cs zawiera: "Projekt używa Clean Architecture. Nigdy nie dodawaj logiki biznesowej do kontrolerów. Używaj wyłącznie rekordów (record types) dla DTOs. Każda metoda publiczna musi mieć XML doc comment. Testy piszemy w xUnit z FluentAssertions." Teraz każda sesja w plikach C# automatycznie startuje z tym kontekstem – bez żadnego dodatkowego wysiłku z Twojej strony.
Jak te trzy warstwy działają razem?
Dokumentacja opisuje to jako uzupełniające się warstwy i to dobre ujęcie. Pomyśl o tym w ten sposób:
🔍 Trzy warstwy – od ogółu do szczegółu
1. Instructions – fundament. Trwałe zasady, zawsze aktywne. "Tak zawsze robimy w tym projekcie." 2. Skills – możliwości na żądanie. Aktywowane gdy potrzebne. "Tak wykonujemy to konkretne zadanie." 3. Agents – wyspecjalizowana persona. Łączy narzędzia i instrukcje w jeden spójny asystent. "To jest ekspert który obsługuje ten typ problemów."
Połączenie wszystkich trzech daje naprawdę mocne efekty:
Spójny onboarding nowych developerów – każdy dostaje tego samego Copilota z tym samym kontekstem projektu od pierwszego dnia
Powtarzalne zadania ops z minimalnym przełączaniem kontekstu – agent wie co robić, skill wie jak to zrobić
Dostosowane doświadczenie dla wyspecjalizowanych domen – security, infrastruktura, data science – każda dziedzina może mieć swojego agenta
🌟 Przykład: kompletny setup dla projektu e-commerce w .NET
Instructions:dotnet.instructions.md – zasady czystego kodu, Clean Architecture, zakaz logiki w kontrolerach.
Skills:
generate-unit-tests – generuje testy w xUnit według wzorca AAA z przykładami z tego projektu
create-ef-migration – tworzy migrację EF Core, sprawdza czy nie brakuje indeksów, dodaje rollback
write-api-endpoint – scaffolduje endpoint z validacją FluentValidation i obsługą błędów
Agent:dotnet-senior.agent.md – łączy powyższe z integracją MCP do bazy danych i repozytorium GitHub. Wie o całej architekturze projektu i proaktywnie korzysta ze skilli gdy widzi potrzebę.
Tabelka porównawcza – kiedy co stosować?
Poniżej zebrałem kluczowe różnice w jednej tabelce. Możesz ją zachować jako ściągawkę gdy będziesz decydować po co sięgnąć w konkretnej sytuacji.
Cecha
INSTRUCTION
SKILL
AGENT
Format pliku
*.instructions.md
folder + SKILL.md
*.agent.md
Kiedy aktywny?
Zawsze, pasywnie w tle
Na żądanie lub wykryty przez agenta
Gdy go wybierzesz / przypisano do sesji
Zakres działania
Wiele sesji, wiele plików
Konkretne, powtarzalne zadanie
Cała sesja / workflow
Może zawierać skrypty / zasoby?
❌ Nie
✅ Tak (szablony, skrypty, dokumenty)
✅ Tak (przez powiązane skille i MCP)
Integracja z narzędziami / MCP?
❌ Nie
Pośrednio przez skrypty
✅ Tak – to główna siła agentów
Przenośność między systemami AI
Częściowa
✅ Tak (open standard)
Zależy od platformy
Typowe zastosowanie
Standardy kodu, zasady architektury, compliance
Generowanie testów, scaffolding, migracje
Ekspert domenowy, zautomatyzowany workflow
Gdzie mieszka w repo?
.github/instructions/
.github/skills/
.github/agents/
💪 Zadanie dla Ciebie – zanim przejdziesz dalej
Pomyśl o swoim aktualnym projekcie i odpowiedz na te trzy pytania:
Jakie zasady kodowania wklejasz ręcznie na początku każdej sesji z Copilotem? → To są Twoje przyszłe Instructions.
Jakie powtarzające się zadania wykonujesz regularnie i zawsze w ten sam sposób? → To są Twoje przyszłe Skills.
Czy masz różne "tryby pracy" – raz pracujesz przy backendzie, raz przy infrastrukturze, raz robisz security review? → To są Twoi przyszli Agents.
W kolejnych wpisach cyklu dowiesz się jak każdą z tych odpowiedzi zamienić w działający plik konfiguracyjny.
Podsumowanie
Trzy pojęcia, trzy różne role:
✅ Instructions – trwałe tło, pasywne zasady, zawsze aktywne. Kodujesz w nich "jak zawsze robimy w tym projekcie".
✅ Skills – samowystarczalne zdolności na żądanie. Bundlują instrukcje z zasobami i mogą być wykrywane automatycznie przez agenty.
✅ Agents – wyspecjalizowane persony łączące narzędzia, MCP i instrukcje w jeden spójny asystent na czas sesji lub workflow.
Wszystkie trzy uzupełniają się nawzajem i dopiero razem dają pełnię możliwości. Nie musisz wdrażać wszystkiego naraz – zacznij od Instructions (najłatwiejsze do stworzenia), potem dodaj pierwsze Skills, a agenty zostawić na czas gdy poczujesz potrzebę głębszej integracji z narzędziami.
W kolejnym wpisie wchodzimy głębiej w temat który jest podstawą wszystkiego: jak Copilot rozumie i przetwarza kontekst – skąd bierze informacje, co do niego trafia, a czego nie widzi. Bez tej wiedzy każda konfiguracja będzie trochę strzelaniem na ślepo.