Claude Code dodaje obsługę folderów z wieloma wtyczkami za pomocą flagi --plugin-dir
Wraz z wydaniem wersji v2.1.265, narzędzie Claude Code zyskało zaktualizowany mechanizm zarządzania rozszerzeniami, stworzony z myślą o sprawniejszym dewelopmencie. Nowa funkcjonalność pozwala użyć flagi --plugin-dir do wskazania głównego katalogu, z którego aplikacja automatycznie i zbiorczo ładuje wiele niezależnych wtyczek. Rozwiązanie to ułatwia testowanie rozbudowanych struktur, umożliwiając pracę nad wieloma rozszerzeniami jednocześnie bez potrzeby wprowadzania skomplikowanych parametrów rozruchowych.
Hurtowe skanowanie i inicjalizacja wtyczek
Przed wersją v2.1.265, testowanie wielu lokalnych wtyczek wymagało podawania ścieżek do każdego z rozszerzeń osobno. Obecnie, gdy jako argument do --plugin-dir wskazany zostanie folder pozbawiony własnego pliku manifestu na najwyższym poziomie hierarchii, Claude Code interpretuje go jako kontener grupujący wtyczki.
Algorytm odpowiadający za inicjalizację działa w sposób płytki – sprawdza jedynie bezpośrednie podfoldery wewnątrz wskazanego katalogu głównego. Jeżeli w danym podfolderze znajduje się poprawnie sformatowany manifest zlokalizowany w ścieżce .claude-plugin/plugin.json, to cały ten podfolder ładuje się jako w pełni autonomiczna wtyczka. Co istotne z punktu widzenia projektowego, system po cichu ignoruje całą resztę zawartości. Katalogi bez manifestu oraz wolne pliki tymczasowe są po prostu pomijane, co chroni programistów przed irytującymi komunikatami o błędach podczas kompilacji czy luźnego wersjonowania kodu.
Dynamiczne zarządzanie w trakcie sesji (mid-session)
Zarządzanie katalogiem rozszerzeń nie jest ograniczone wyłącznie do momentu startu aplikacji. W trybie interaktywnym zaimplementowano nasłuch struktury plików, który obsługuje operacje w trakcie trwającej sesji (mid-session).
Gdy w kontrolowanym folderze pojawi się nowy podfolder wraz z manifestem .claude-plugin/plugin.json, system automatycznie doczytuje nową funkcjonalność, od razu włączając ją do arsenału modelu. Podobnie działa mechanizm odpinania – skasowanie podfolderu wtyczki całkowicie wyładowuje ją z pamięci układu. Wszystkie zrealizowane zmiany są transparentne i powodują wypisanie dedykowanego komunikatu powiadomienia na ekranie terminala.
Inżynierowie zabezpieczyli jednak proces tak, by zmiany w locie nie zdestabilizowały oszczędności płynących z pamięci podręcznej. Jeśli dynamiczne przeładowanie rozszerzeń miałoby unieważnić pamięć podręczną zapytań (prompt cache) wygenerowaną podczas wcześniejszej rozmowy, proces adaptacji jest chwilowo wstrzymywany. Zamiast wymuszonej zmiany, system instruuje użytkownika, by w odpowiednim dla niego momencie ręcznie wykonał wywołanie komendy /reload-plugins.
Rozwiązywanie konfliktów i cykl deweloperski
Zdolność do sprawnego i bezpiecznego wczytywania folderów z poziomu --plugin-dir odgrywa też kluczową rolę podczas nadpisywania logiki. Jeśli wtyczka znajdująca się w lokalnym katalogu zbiorczym ma taką samą nazwę jak rozszerzenie już zainstalowane (na przykład ze źródła takiego jak claude-plugins-official czy claude-community), to podczas trwającej sesji nadrzędny priorytet otrzymuje lokalna wersja testowa. Taka struktura uwalnia programistę od czasochłonnego obowiązku ciągłego instalowania i odinstalowywania kodu podczas pracy (z wyłączeniem sytuacji, w których wtyczki mają narzucone parametry force-enable lub force-disable na poziomie administracyjnym).
Możliwość ładowania wielu z nich z jednego punktu ułatwia naturalne przekuwanie małych skryptów – pisanych początkowo jako narzędzia osobiste w ukrytym katalogu .claude/ – na profesjonalne wtyczki udostępniane szerokiej publiczności. Każdy ładowany podfolder dysponuje pełnymi możliwościami platformy: może zawierać spersonalizowane polecenia (w plikach SKILL.md w podfolderze skills/), hooki w pliku hooks.json, logikę analityczną w .lsp.json, protokoły integracyjne w .mcp.json oraz serwisy nasłuchujące w pliku monitors.json.
(Notatka redakcyjna: Podczas gromadzenia materiałów próba pozyskania dodatkowego kontekstu rynkowego za pomocą zewnętrznego wyszukiwania zakończyła się technicznym błędem sieciowym; artykuł bazuje ściśle na udokumentowanej implementacji funkcji z wersji v2.1.265.)