Bu bölüm yeniden kullanılabilir Claude uzantıları oluşturan ileri düzey kullanıcılar içindir. Çoğu okuyucu, ekibe veya topluluğa Claude yapılandırmaları dağıtmıyorsa bu bölümü atlayabilir. Tek başınıza çalışıyorsanız veya kendiniz için yalnızca bir özel agent’a ihtiyacınız varsa, .claude/agents/ dosyalarını kullanmaya devam edin.
Ekibiniz için harika bir hook, özel agent ve MCP yapılandırma seti oluşturdunuz. Şimdi bunları dosyaları manuel olarak kopyalamak veya doğru dizin yapısını çözmek zorunda kalmaması gereken 20 başka geliştiriciyle paylaşmanız gerekiyor. Plugin’ler her şeyi tek bir dağıtılabilir birim halinde paketler.
Plugin’ler; agent’ları, hook’ları ve MCP sunucularını bir araya getiren paketlenmiş yapılandırmalardır. Şöyle düşünün: MCP araç ekler. Özel agent’lar kişilik ekler. Hook’lar davranış ekler. Plugin’ler üçünü de tek bir dağıtılabilir birimde bir araya getirir. Bir plugin, .claude-plugin/plugin.json bildirimi olan bir dizindir — geri kalan her şey isteğe bağlıdır. İsim alanı sistemi çakışmaları önler, böylece birden fazla plugin birbirine müdahale etmeden bir arada var olabilir.
Hızlı karar: sadece araçlara mı ihtiyacınız var? MCP sunucusu. Sadece bir kişiliğe mi? Agent dosyası. Sadece yaşam döngüsü hook’larına mı? hooks.json. Plugin’ler, bunlardan ikisi veya daha fazlasını tek bir paket olarak bir araya getirmeniz gerektiğinde kullanılır.
Plugin Yapısı
Her plugin tek bir zorunlu dosyayla başlar: .claude-plugin/plugin.json. Dizin düzeninin geri kalanı standart .claude/ proje yapısını yansıtır, ancak plugin kökünde yaşar — .claude-plugin/ içinde değil.
Örnek: bir ‘secure-dev’ plugin’i — sandbox’lanmış agent yapılandırması, dosya sistemi yazmalarını engelleyen PreToolUse hook’u ve yalnızca onaylı API’ler için MCP sunucusu:
secure-dev/├── .claude-plugin/│ └── plugin.json # Zorunlu: bildirim (bu dizindeki TEK dosya)├── agents/│ └── sandbox.md # Araç kısıtlamalı salt okunur agent├── hooks/│ └── hooks.json # Edit/Write'ı engelleyen PreToolUse hook'u├── .mcp.json # Yalnızca onaylı API sunucusu└── skills/ └── audit/ └── SKILL.md # Güvenlik denetimi iş akışıBildirim tek zorunlu dosyadır. İşte minimal bir plugin.json:
{ "name": "my-plugin", "description": "A description of what this plugin does", "version": "1.0.0", "author": { "name": "Your Name" }, "homepage": "https://github.com/your-org/my-plugin", "repository": "https://github.com/your-org/my-plugin", "license": "MIT"}name alanı isim alanını belirler. "my-plugin" adlı bir plugin, tüm becerilerini /my-plugin:skill-name olarak dışa açar.
Bildirim Alanları
plugin.json Alanları
| Alan | Zorunlu | Amaç |
|---|---|---|
name | Evet | Plugin tanımlayıcısı — tüm beceriler için isim alanı ön ekini belirler |
description | Hayır | /plugin list’te gösterilen insan tarafından okunabilir özet |
version | Hayır | Pazar yeri dağıtımı ve güncellemeler için semver dizesi |
author | Hayır | Oluşturucuyu tanımlayan name alanlı nesne |
homepage | Hayır | Plugin dokümantasyonu veya tanıtım sayfası URL’si |
repository | Hayır | Kaynak depo URL’si |
license | Hayır | SPDX lisans tanımlayıcısı (ör. MIT, Apache-2.0) |
Şimdi minimal bir plugin oluşturun:
mkdir -p .claude-plugin && echo ‘{“name”:“my-team-plugin”,“version”:“0.1.0”,“description”:“Team-specific hooks and agents”}’ > .claude-plugin/plugin.json
Plugin dizinine bir hook veya agent dosyası ekleyin. Claude bunu bir sonraki oturumunuzda keşfediyor mu?
Komutlar ve Beceriler
Hem komutlar hem de beceriler bir plugin’de yaşar, ancak farklı amaçlara hizmet eder ve farklı kuralları takip eder.
Plugin'lerde Komutlar ve Beceriler
| Özellik | Komutlar | Beceriler |
|---|---|---|
| Çağırma | /command-name (bağımsız) veya /plugin:command (isim alanlı) | /plugin-name:skill-name (her zaman isim alanlı) |
| Kapsam | Hızlı eylemler, UI yardımcıları, oturum yönetimi | Araçları ve akıl yürütmeyi kullanan çok adımlı agent görevleri |
| Adlandırma | commands/ dizinindeki Markdown dosyaları | skills/<name>/ alt dizinlerindeki SKILL.md dosyaları |
| Argümanlar | Komut adından sonraki metin | SKILL.md’deki $ARGUMENTS yer tutucusu kullanıcı girdisini yakalar |
| Karmaşıklık | Tek prompt, araç orkestasyonu yok | Araç çağrıları ve çok turlu akıl yürütmeli tam agent döngüsü |
Kurulum ve Yönetim
Plugin’leri bir Claude oturumu içinden yönetmek için /plugin eğik çizgi komut ailesini kullanın.
Geliştirme oturumu sırasında plugin dosyalarını düzenledikten sonra, değişikliklerinizi almak için /reload-plugins çalıştırın. CLI, plugin dosyalarını değişiklikler için otomatik olarak izlemez.
İsim Alanları
Plugin becerileri her zaman plugin adıyla önek alır, iki nokta ile ayrılır. Bu, adlandırma çakışmalarını önler — iki plugin çakışma olmadan lint adında bir beceri tanımlayabilir.
İsim Alanı Çözümlemesi
| Plugin Adı | Beceri Adı | Çağırma |
|---|---|---|
review-tools | security-check | /review-tools:security-check |
review-tools | perf-check | /review-tools:perf-check |
db-utils | migrate | /db-utils:migrate |
İsim alanından vazgeçemezsiniz. Plugin becerileri asla yalın /skill-name olarak kullanılamaz — önek zorunludur.
Bağımsız ve Plugin Karşılaştırması
.claude/skills/ içindeki bağımsız bir beceri ile plugin arasında seçim, beceriye kimin ihtiyaç duyduğuna ve nasıl dağıtılacağına bağlıdır.
Hangisi Ne Zaman Kullanılmalı
| Yaklaşım | Beceri Çağırma | En Uygun Kullanım |
|---|---|---|
Bağımsız (.claude/) | /hello | Kişisel iş akışları, projeye özel araçlar, hızlı deneyler |
| Plugin | /plugin-name:hello | Ekip paylaşımı, topluluk dağıtımı, versiyonlanmış sürümler |
Yerel Geliştirme
Geliştirme sırasında, plugin’inizi kurmadan yerel bir dizinden yüklemek için --plugin-dir bayrağını kullanın:
Bayrağı tekrarlayarak aynı anda birden fazla plugin yükleyebilirsiniz:
claude --plugin-dir ./plugin-one --plugin-dir ./plugin-twoYerel bir plugin ve pazar yeri plugin’i aynı adı paylaştığında, yerel --plugin-dir versiyonu öncelik kazanır. Ancak, organizasyon ayarlarından gelen yönetilen zorunlu etkin plugin’ler her zaman --plugin-dir’i geçersiz kılar.
Plugin Hook’ları
Plugin’ler, plugin kökündeki hooks/hooks.json dosyasında hook tanımlayabilir. Kritik bir güvenlik kısıtlaması vardır: plugin hook’ları yalnızca http ve prompt işleyici türlerini destekler. command ve agent işleyici türleri, üçüncü taraf plugin’lerden rastgele kod yürütmeyi önlemek için engellenmiştir.
{ "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "prompt", "prompt": "Check if this bash command is safe: $ARGUMENTS", "timeout": 15 } ] } ]}Hem plugin hem de proje hook tanımladığında, ikisi de çalışır — proje hook’ları önce yürütülür.
Plugin Önceliği
Yükleme Önceliği
| Senaryo | Kazanan |
|---|---|
—plugin-dir ile pazar yeri kurulumu (aynı ad) | —plugin-dir (yerel) |
Yönetilen zorunlu etkin plugin ile —plugin-dir | Yönetilen plugin |
| Plugin hook’ları ile proje hook’ları | İkisi de çalışır (proje hook’ları önce) |
| Plugin becerileri ile bağımsız beceriler | Çakışma yok (farklı isim alanları) |
.claude-plugin/ dizinine yalnızca plugin.json gider. Geri kalan her şey — skills/, commands/, agents/, hooks/, .mcp.json, .lsp.json — plugin kökünde yaşar. Bunları .claude-plugin/ içine koymak, plugin’i sessizce bozan yaygın bir hatadır.
Komutlar ve beceriler ayrı kavramlardır. Komutlar, basit eğik çizgiyle çağrılan prompt’lardır (commands/ dizinindeki Markdown dosyaları). Beceriler, çok adımlı agent görevleridir (skills/<name>/ dizinindeki SKILL.md dosyaları). Bunları karıştırmak — örneğin, bir SKILL.md’yi commands dizinine koymak — dosyanın görmezden gelinmesine veya yanlış yorumlanmasına neden olur.
Plugin sistemi Claude Code sürüm 1.0.33 veya üstünü gerektirir. Önceki sürümler plugin dizinlerini hiçbir hata mesajı olmadan tamamen görmezden gelir. Doğrulamak için claude —version çalıştırın.
Geliştirme sırasında plugin dosyalarını düzenledikten sonra, değişikliklerinizi almak için /reload-plugins çalıştırın. Dosya izleyiciler plugin değişikliklerini otomatik olarak algılamaz.
Güvenlik: Bir plugin kurmak ona hook yürütme ve MCP sunucu kaydetme ayrıcalıkları verir. Yalnızca güvenilir kaynaklardan plugin kurun. Zararlı komutlar veya yetkisiz sunucu bağlantıları içermediğinden emin olmak için yüklemeden önce plugin.json, hooks/hooks.json ve .mcp.json dosyalarını inceleyin.
Yapılandırma Çözümleme Matrisi
Farklı yapılandırma türleri, alt dizinlerde çalışırken farklı kalıtım kurallarına sahiptir:
Üst Dizinlerden Ne Kalıtılır?
| Yapılandırma Türü | Yukarı Arar mı? | .git ile Engellenir mi? | İzolasyon Mekanizması |
|---|---|---|---|
CLAUDE.md | Evet (tam hiyerarşiyi birleştirir) | Hayır | Yalnızca ayrı depolar |
Beceriler (.claude/skills/) | Evet | Evet | mkdir .git veya —disable-slash-commands |
MCP yapılandırmaları (.mcp.json) | Evet (birleştirir) | Hayır | —strict-mcp-config |
Hook’lar (settings.json) | Hayır | Uygulanamaz | Zaten yalnızca yerel |
İzinler (settings.json) | Hayır | Uygulanamaz | Zaten yalnızca yerel |
Monorepo ekipleri için temel çıkarımlar:
- Kök düzeyindeki
CLAUDE.mdher alt klasör oturumunda vazgeçilemez şekilde görünür. Kök düzeyindeki talimatları genel tutun. - Kök düzeyindeki
.mcp.jsonsunucularını tüm alt klasör oturumlarıyla paylaşır. İzolasyona ihtiyaç duyan alt klasörlerde--strict-mcp-configkullanın. - Üst dizin hook’ları ve izin reddi kuralları alt klasör oturumlarına yayılmaz. Her alt klasör kendi güvenlik hook’larını tanımlamalıdır.
- Boş bir alt yapılandırma, üst kalıtımı gölgelemez veya engellemez.
CLAUDE.mdveya.mcp.jsoniçin gölgeleme mekanizması yoktur.
Minimal bir plugin oluşturun: mkdir -p .claude-plugin && echo ‘{“name”:“my-plugin”,“version”:“0.1.0”}’ > .claude-plugin/plugin.json. En iyi hook veya özel agent’ınızı dizine ekleyin. Artık paylaşılabilir, versiyonlanmış bir Claude Code yapılandırma paketiniz var.