Skip to content

Plugin'ler

Claude CLI plugin'lerini oluşturma, kurma ve dağıtma

13 dk okuma

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.

Plugin Structure
.claude-plugin/ plugin.json hooks/ agents/ mcp.json skills/ namespace + version merge with project hooks register agent commands load MCP servers register slash commands Session Ready

Bildirim Alanları

plugin.json Alanları

AlanZorunluAmaç
nameEvetPlugin tanımlayıcısı — tüm beceriler için isim alanı ön ekini belirler
descriptionHayır/plugin list’te gösterilen insan tarafından okunabilir özet
versionHayırPazar yeri dağıtımı ve güncellemeler için semver dizesi
authorHayırOluşturucuyu tanımlayan name alanlı nesne
homepageHayırPlugin dokümantasyonu veya tanıtım sayfası URL’si
repositoryHayırKaynak depo URL’si
licenseHayırSPDX lisans tanımlayıcısı (ör. MIT, Apache-2.0)
Try This

Ş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

ÖzellikKomutlarBeceriler
Çağırma/command-name (bağımsız) veya /plugin:command (isim alanlı)/plugin-name:skill-name (her zaman isim alanlı)
KapsamHızlı eylemler, UI yardımcıları, oturum yönetimiAraçları ve akıl yürütmeyi kullanan çok adımlı agent görevleri
Adlandırmacommands/ dizinindeki Markdown dosyalarıskills/<name>/ alt dizinlerindeki SKILL.md dosyaları
ArgümanlarKomut adından sonraki metinSKILL.md’deki $ARGUMENTS yer tutucusu kullanıcı girdisini yakalar
KarmaşıklıkTek prompt, araç orkestasyonu yokAraç ç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.

Plugin Yönetimi
$ claude
> Starting Claude Code session...
# Pazar yerinden bir plugin kur
$ /plugin install @anthropic/code-review
Installed @anthropic/code-review v1.2.0
Skills available: /code-review:security-check, /code-review:perf-check
# Kurulu tüm plugin'leri listele
$ /plugin list
@anthropic/code-review v1.2.0 (2 skills, 0 hooks)
# Bir plugin'i kaldır
$ /plugin uninstall @anthropic/code-review
Uninstalled @anthropic/code-review

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-toolssecurity-check/review-tools:security-check
review-toolsperf-check/review-tools:perf-check
db-utilsmigrate/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şımBeceri ÇağırmaEn Uygun Kullanım
Bağımsız (.claude/)/helloKişisel iş akışları, projeye özel araçlar, hızlı deneyler
Plugin/plugin-name:helloEkip 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:

Yerel Plugin Geliştirme
$ claude --plugin-dir ./my-plugin
> Starting Claude Code session...
> Loaded plugin: my-plugin (1 skill)
# Plugin becerisini çağır
$ /my-plugin:code-review src/auth.ts
Reviewing src/auth.ts for quality and correctness...

Bayrağı tekrarlayarak aynı anda birden fazla plugin yükleyebilirsiniz:

Terminal window
claude --plugin-dir ./plugin-one --plugin-dir ./plugin-two

Yerel 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

SenaryoKazanan
—plugin-dir ile pazar yeri kurulumu (aynı ad)—plugin-dir (yerel)
Yönetilen zorunlu etkin plugin ile —plugin-dirYö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ı)
Gotcha

.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.

Gotcha

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.

Tip

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.

Note

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.

Gotcha

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.mdEvet (tam hiyerarşiyi birleştirir)HayırYalnızca ayrı depolar
Beceriler (.claude/skills/)EvetEvetmkdir .git veya —disable-slash-commands
MCP yapılandırmaları (.mcp.json)Evet (birleştirir)Hayır—strict-mcp-config
Hook’lar (settings.json)HayırUygulanamazZaten yalnızca yerel
İzinler (settings.json)HayırUygulanamazZaten yalnızca yerel

Monorepo ekipleri için temel çıkarımlar:

  • Kök düzeyindeki CLAUDE.md her alt klasör oturumunda vazgeçilemez şekilde görünür. Kök düzeyindeki talimatları genel tutun.
  • Kök düzeyindeki .mcp.json sunucularını tüm alt klasör oturumlarıyla paylaşır. İzolasyona ihtiyaç duyan alt klasörlerde --strict-mcp-config kullanı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.md veya .mcp.json için gölgeleme mekanizması yoktur.
Now Do This

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.