Model marketplace'u pluginów ma kuszącą propozycję: instaluj to, czego potrzebujesz, pomijaj to, czego nie, twórz własne. Zadziałał dla przeglądarek, dla VS Code, dla WordPress. Wydawało się naturalne zastosować ten sam model do agentów AI. Potem pojawił się ClawHub — 41,7% opublikowanych skilli zawierało podatności, setki były wprost złośliwe, a cały model zaufania zawalił się pod ciężarem łańcucha dostaw, którego nikt nie mógł zaudytować.
NanoClaw spojrzał na tę porażkę i zadał inne pytanie: co jeśli rozszerzalność nie wymagałaby marketplace'u w ogóle? Co jeśli dodanie nowej możliwości do asystenta AI byłoby tak proste jak powiedzenie Claude Code, czego chcesz, i pozwolenie mu zmodyfikować kod źródłowy bezpośrednio?
To jest model skilli Claude Code. I okazuje się, że jest zarówno prostszy, jak i bezpieczniejszy niż jakikolwiek system pluginów.
Jak skille naprawdę działają
Skill Claude Code to komenda slash — jak /add-telegram lub /add-discord — którą uruchamiasz wewnątrz sesji Claude Code. Kiedy wywołujesz skill, Claude Code czyta kod źródłowy NanoClaw, rozumie istniejącą architekturę i wpisuje nową integrację bezpośrednio do bazy kodu. Nie instaluje pakietu z rejestru. Nie pobiera kodu z internetu. Generuje kod dopasowany do Twojej konkretnej instancji NanoClaw, przeglądany przez Ciebie przed uruchomieniem.
Skill /add-telegram na przykład nie instaluje pakietu npm Telegram i nie podłącza go przez interfejs pluginów. Dodaje listener bota Telegram do pętli wiadomości NanoClaw, używając biblioteki node-telegram-bot-api, z tą samą izolacją kontenerową i modelem bezpieczeństwa, którego już używa WhatsApp. Wygenerowany kod podąża za tymi samymi wzorcami co istniejąca baza kodu, bo Claude Code widzi istniejącą bazę kodu i dopasowuje jej styl.
To jest fundamentalnie inne od systemu pluginów na trzy sposoby. Po pierwsze, kod jest widoczny. Możesz przeczytać każdą dodaną linię, zrozumieć, co robi, i zmodyfikować, jeśli chcesz. Nie ma skompilowanego pliku binarnego, zminifikowanego bundla, nieprzejrzystego pakietu, któremu ufasz na ślepo. Po drugie, kod jest lokalny. Żyje w Twoim repozytorium, pod Twoją kontrolą wersji, podlegając Twojemu procesowi przeglądu. Nie dzwoni do domu, nie aktualizuje się automatycznie, nie zmienia zachowania bez Twojej wiedzy. Po trzecie, kod jest zintegrowany. Nie działa w oddzielnym sandboxie pluginów z ograniczonym API — jest częścią aplikacji, z pełnym dostępem do wzorców i narzędzi, których używa reszta bazy kodu.
Dlaczego to jest bezpieczniejsze niż pluginy
Argument bezpieczeństwa jest prosty, ale warto go rozwinąć, bo jest odwrotnością tego, czego większość deweloperów oczekuje.
W systemie pluginów bezpieczeństwo zależy od zaufania. Ufasz autorowi pluginu, ufasz procesowi przeglądu marketplace'u, ufasz, że pakiet nie został skompromitowany od czasu przeglądu, i ufasz, że jego zależności też nie zostały skompromitowane. Każde z tych założeń zaufania to potencjalny punkt awarii, a ClawHub pokazał, że wszystkie mogą zawieść jednocześnie.
W modelu skilli bezpieczeństwo zależy od widoczności. Kiedy Claude Code generuje integrację Telegram, widzisz dokładnie, co robi, zanim to uruchomisz. Możesz przejrzeć kod, przetestować go, zmodyfikować lub całkowicie odrzucić. Granica zaufania to nie „czy ufam pakietowi npm nieznanego dewelopera?" — to „czy ten kod, który mogę przeczytać, robi to, co chcę?"
Nie ma też łańcucha dostaw do zaatakowania. Złośliwy aktor nie może przesłać strojańskiego skilla do marketplace'u, bo nie ma marketplace'u. Nie może podrobić nazwy popularnego pakietu, bo nie ma pakietów. Powierzchnia ataku, która umożliwiła setki złośliwych skilli ClawHub, po prostu nie istnieje w tym modelu.
Kompromisem jest to, że skille wymagają Claude Code do ich wygenerowania, co oznacza, że potrzebujesz klucza Anthropic API i sesji Claude Code. Nie możesz przeglądać katalogu i kliknąć „zainstaluj". Ale dla projektu, którego użytkownicy to deweloperzy komfortowo posługujący się CLI, ten kompromis jest ledwo zauważalny — a korzyści bezpieczeństwa są znaczące.
Skille, które istnieją dziś
NanoClaw jest dostarczany z wbudowanym WhatsApp. Wszystko inne jest dodawane przez skille. Obecny zestaw skilli obejmuje najczęściej żądane integracje: /add-telegram dla wsparcia bota Telegram, /add-discord dla integracji z bramką Discord, /add-slack dla Slack Events API i /add-signal dla komunikatora Signal.
Każdy skill generuje mniej więcej 100-300 linii kodu, w zależności od złożoności API kanału. Wygenerowany kod zawiera listener kanału, formatowanie wiadomości, routing kontenerowy i konfigurację — wszystko potrzebne, by integracja działała od początku do końca. Zawiera też deklaracje zmiennych środowiskowych i instrukcje konfiguracji, więc wiesz dokładnie, jakie tokeny i dane uwierzytelniające musisz dostarczyć.
Poza integracjami kanałów skille mogą dodawać narzędzia i możliwości. Skill /add-web-search mógłby dodać narzędzie wyszukiwania internetowego, którego agenci mogą używać wewnątrz kontenerów. Skill /add-calendar mógłby zintegrować się z Google Calendar do planowania. Wzorzec jest ten sam: Claude Code czyta bazę kodu, rozumie architekturę i generuje kod, który pasuje.
Filozofia przyjazna forkom
Za modelem skilli stoi głębsza filozofia, którą warto wyartykułować. NanoClaw jest zaprojektowany do forkowania. Nie w wrogim sensie „weź kod i konkuruj" — w kolaboratywnym sensie „weź kod i zrób go swoim".
Kiedy uruchamiasz /add-telegram, nie instalujesz zależności, która wiąże Cię z cyklem wydawniczym NanoClaw. Dodajesz kod do swojego forka, który posiadasz całkowicie. Jeśli upstream NanoClaw zmieni się w sposób, który Ci nie odpowiada, Twoja integracja Telegram nadal działa. Jeśli chcesz zmodyfikować formatowanie wiadomości Telegram, edytujesz kod bezpośrednio — bez ograniczeń API pluginów, bez czekania, aż upstream udostępni nowy hook.
To jest przeciwieństwo vendor lock-in, który tworzą marketplace'y pluginów. Pluginy WordPress wiążą Cię z WordPress. Rozszerzenia VS Code wiążą Cię z VS Code. Skille ClawHub wiązały Cię z OpenClaw. Skille NanoClaw generują zwykły TypeScript, który akurat działa z architekturą NanoClaw, ale nie zależy od żadnego środowiska uruchomieniowego pluginów ani infrastruktury marketplace'u.
Rezultatem jest projekt, który staje się coraz bardziej zdolny z czasem — nie dlatego, że marketplace rośnie, ale dlatego, że fork każdego użytkownika akumuluje dokładnie te możliwości, których potrzebuje, generowane przez AI, które rozumie bazę kodu wystarczająco dobrze, by ją poprawnie rozszerzać. To rozszerzalność przez zrozumienie, nie przez abstrakcję.