Claude Code'u Yeteneklerle (Skills) Genişletme
Claude Code'da Claude'un yeteneklerini genişletmek için yetenekler (skills) oluşturabilir, yönetebilir ve paylaşabilirsiniz. Buna özel komutlar ve paketlenmiş yetenekler (bundled skills) dahildir.
Yetenekler, Claude'un yapabileceklerini genişletir. Bir SKILL.md dosyası oluşturup talimatlar eklersiniz, Claude da bunu araç setine ekler. Claude, yetenekleri gerektiğinde kullanır veya siz /skill-name ile doğrudan çağırabilirsiniz.
Aynı talimatları, kontrol listelerini veya çok adımlı prosedürleri tekrar tekrar sohbete yapıştırıyorsanız veya CLAUDE.md dosyanızdaki bir bölüm bir prosedür haline gelmişse (bir bilgi değilse) bir yetenek oluşturun. CLAUDE.md içeriğinden farklı olarak, bir yeteneğin gövdesi yalnızca kullanıldığında yüklenir, bu nedenle uzun referans materyalleri ihtiyacınız olana kadar neredeyse hiç maliyet oluşturmaz.
/help ve /compact gibi yerleşik komutlar ile /debug ve /code-review gibi paketlenmiş yetenekler için komutlar referansına bakın.
Özel komutlar yeteneklerle birleştirilmiştir. .claude/commands/deploy.md dosyası ve .claude/skills/deploy/SKILL.md dosyasının her ikisi de /deploy oluşturur ve aynı şekilde çalışır. Mevcut .claude/commands/ dosyalarınız çalışmaya devam eder. Yetenekler isteğe bağlı özellikler ekler: destekleyici dosyalar için bir dizin, sizin mi yoksa Claude'un mu çağıracağını kontrol eden frontmatter ve Claude'un gerektiğinde bunları otomatik olarak yükleme yeteneği.
Claude Code yetenekleri, birden çok AI aracında çalışan Agent Skills açık standardını takip eder. Claude Code, bu standardı çağırma kontrolü, alt-ajan (subagent) yürütme ve dinamik bağlam enjeksiyonu gibi ek özelliklerle genişletir.
Paketlenmiş Yetenekler (Bundled Skills)
Claude Code, her oturumda kullanılabilen bir dizi paketlenmiş yetenek içerir: /code-review, /batch, /debug, /loop ve /claude-api. Çoğu yerleşik komutun aksine, bunlar sabit mantığı doğrudan yürütmek yerine istem tabanlıdır (prompt-based): Claude'a ayrıntılı talimatlar verirler ve Claude'un araçlarını kullanarak işi organize etmesine izin verirler. Bunları diğer yetenekler gibi, / ve ardından yetenek adını yazarak çağırırsınız.
Paketlenmiş yetenekler, komutlar referansında yerleşik komutlarla birlikte listelenir ve Amaç (Purpose) sütununda "Yetenek" (Skill) olarak işaretlenir.
Uygulamanızı Çalıştırma ve Doğrulama (Run and verify your app)
Üç paketlenmiş yetenek, uygulamanızı başlatmak ve değişiklikleri yalnızca testler yerine çalışan uygulamaya karşı doğrulamak için birlikte çalışır:
| Yetenek | Amaç |
|---|---|
/run |
Bir değişikliğin çalıştığını görmek için uygulamanızı başlatır ve yönlendirir |
/verify |
Bir kod değişikliğinin beklendiği gibi çalıştığını doğrulamak için uygulamayı derler ve çalıştırır, testlere veya tip kontrollerine geri dönmez |
/run-skill-generator |
/run ve /verify'e projenizi nasıl derleyip başlatacağını öğretir |
Her üç yetenek de Claude Code v2.1.145 veya üstünü gerektirir. /run ve /verify kurulum gerektirmez. Başlatma işlemini proje türünüzden (CLI, sunucu, TUI, tarayıcı odaklı) ve README, package.json veya Makefile içeriğinizden çıkarır. Bu çıkarım, standart bir başlatmanın ötesinde bir şey gerektiren projeler için güvenilmez hale gelir: bir veritabanı, bir env dosyası, bir grafik oturumu, çok adımlı bir derleme.
/run-skill-generator bunun yerine tarifi kaydeder. Uygulamanızı temiz bir ortamdan çalıştırır, neyin işe yaradığını yakalar (kurulum komutları, env değişkenleri, başlatma betiği) ve bunu .claude/skills/run-<name>/ altında proje bazlı bir yetenek olarak kaydeder. Bundan sonra /run, /verify ve depodaki diğer ajanlar, tarifi yeniden keşfetmek yerine kaydedilen tarifi takip eder. Proje başına bir kez /run-skill-generator çalıştırın ve derleme veya başlatma süreci değişirse tekrar çalıştırın.
Başlarken (Getting started)
İlk Yeteneğinizi Oluşturun (Create your first skill)
Bu örnek, git deponuzdaki commit edilmemiş değişiklikleri özetleyen ve riskli olanları işaretleyen bir yetenek oluşturur. Claude okumadan önce canlı diff'i isteme çeker, böylece yanıt, Claude'un açık dosyalardan tahmin edebileceğinden ziyade gerçek çalışma ağacınıza dayanır. Claude, değişiklikleriniz hakkında soru sorduğunuzda yeteneği otomatik olarak yükler veya /summarize-changes ile doğrudan çağırabilirsiniz.
Yetenek dizinini oluşturun: Kişisel yetenekler klasörünüzde bir dizin oluşturun. Kişisel yetenekler tüm projelerinizde kullanılabilir.
mkdir -p ~/.claude/skills/summarize-changesSKILL.md yazın: Her yetenek, iki bölümden oluşan bir
SKILL.mddosyasına ihtiyaç duyar:---işaretleyicileri arasında Claude'a yeteneği ne zaman kullanacağını söyleyen YAML frontmatter ve yetenek çalıştırıldığında Claude'un izlediği talimatları içeren markdown içeriği. Dizin adı, yazdığınız komut haline gelir ve açıklama, Claude'un yeteneği otomatik olarak ne zaman yükleyeceğine karar vermesine yardımcı olur. Bunu~/.claude/skills/summarize-changes/SKILL.mddosyasına kaydedin:--- description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff. --- ## Current changes !`git diff HEAD` ## Instructions Summarize the changes above in two or three bullet points, then list any risks you notice such as missing error handling, hardcoded values, or tests that need updating. If the diff is empty, say there are no uncommitted changes.!git diff HEAD`` satırı dinamik bağlam enjeksiyonu kullanır: Claude Code komutu çalıştırır ve satırı, Claude yetenek içeriğini görmeden önce çıktısıyla değiştirir, böylece talimatlar mevcut diff ile birlikte gelir.Yetenek test edin: Bir git projesi açın, herhangi bir dosyada küçük bir düzenleme yapın ve
claudeçalıştırarak Claude Code'u başlatın. Yeteneği iki şekilde test edebilirsiniz. Claude'un otomatik olarak çağırmasına izin verin: "Ne değiştirdim?" gibi bir soru sorun. Veya doğrudan yetenek adıyla çağırın:/summarize-changes. Her iki durumda da Claude, düzenlemenizin kısa bir özetini ve bir risk listesiyle yanıt vermelidir.
Yeteneklerin Yaşadığı Yerler (Where skills live)
Bir yeteneği nerede sakladığınız, onu kimin kullanabileceğini belirler:
| Konum | Yol | Kapsam |
|---|---|---|
| Kurumsal (Enterprise) | Yönetilen ayarlara bakın | Organizasyonunuzdaki tüm kullanıcılar |
| Kişisel (Personal) | ~/.claude/skills/<skill-name>/SKILL.md |
Tüm projeleriniz |
| Proje (Project) | .claude/skills/<skill-name>/SKILL.md |
Yalnızca bu proje |
| Eklenti (Plugin) | <plugin>/skills/<skill-name>/SKILL.md |
Eklentinin etkin olduğu yer |
Aynı ada sahip yetenekler olduğunda, kurumsal kişiseli, kişisel de projeyi geçersiz kılar. Eklenti yetenekleri plugin-name:skill-name ad alanını kullanır, bu nedenle diğer seviyelerle çakışamazlar. .claude/commands/ içinde dosyalarınız varsa, bunlar aynı şekilde çalışır, ancak bir yetenek ve bir komut aynı ada sahipse yetenek önceliklidir.
Canlı Değişiklik Algılama (Live change detection)
Claude Code, yetenek dizinlerini dosya değişiklikleri için izler. ~/.claude/skills/, proje .claude/skills/ veya --add-dir dizini içindeki bir .claude/skills/ altında bir yetenek eklemek, düzenlemek veya kaldırmak, oturumu yeniden başlatmadan geçerli oturumda etkili olur. Oturum başladığında var olmayan bir üst düzey skills dizini oluşturmak, yeni dizinin izlenebilmesi için Claude Code'un yeniden başlatılmasını gerektirir.
Üst ve İç İçe Dizinlerden Otomatik Keşif (Automatic discovery from parent and nested directories)
Proje yetenekleri, başlangıç dizininizdeki ve depo köküne kadar her üst dizindeki .claude/skills/ dizininden yüklenir, böylece Claude'u bir alt dizinde başlatmak yine de kökte tanımlanan yetenekleri alır. Başlangıç dizininizin altındaki alt dizinlerde dosyalarla çalışırken, Claude Code ayrıca iç içe .claude/skills/ dizinlerinden yetenekleri talep üzerine keşfeder. Örneğin, packages/frontend/ içinde bir dosyayı düzenliyorsanız, Claude Code ayrıca packages/frontend/.claude/skills/ içindeki yetenekleri arar. Bu, paketlerin kendi yeteneklerine sahip olduğu monorepo kurulumlarını destekler.
Her yetenek, SKILL.md dosyasını giriş noktası olarak kullanan bir dizindir:
my-skill/
├── SKILL.md # Ana talimatlar (zorunlu)
├── template.md # Claude'un dolduracağı şablon
├── examples/
│ └── sample.md # Beklenen formatı gösteren örnek çıktı
└── scripts/
└── validate.sh # Claude'un çalıştırabileceği betik
SKILL.md ana talimatları içerir ve zorunludur. Diğer dosyalar isteğe bağlıdır ve daha güçlü yetenekler oluşturmanıza olanak tanır: Claude'un dolduracağı şablonlar, beklenen formatı gösteren örnek çıktılar, Claude'un çalıştırabileceği betikler veya ayrıntılı referans dokümantasyonu. Bu dosyalara SKILL.md dosyanızdan referans verin, böylece Claude ne içerdiklerini ve ne zaman yükleyeceklerini bilir.
.claude/commands/ içindeki dosyalar hâlâ çalışır ve aynı frontmatter'ı destekler. Yetenekler, destekleyici dosyalar gibi ek özellikleri destekledikleri için önerilir.
Ek Dizinlerden Yetenekler (Skills from additional directories)
--add-dir bayrağı ve /add-dir komutu, yapılandırma keşfinden ziyade dosya erişimi sağlar, ancak yetenekler bir istisnadır: eklenen bir dizin içindeki .claude/skills/ otomatik olarak yüklenir. Bu istisna yalnızca --add-dir ve /add-dir için geçerlidir. settings.json içindeki permissions.additionalDirectories ayarı yalnızca dosya erişimi sağlar ve yetenekleri yüklemez. Diğer .claude/ yapılandırmaları (alt-ajanlar, komutlar, çıktı stilleri gibi) ek dizinlerden yüklenmez.
--add-dir dizinlerinden CLAUDE.md dosyaları varsayılan olarak yüklenmez. Bunları yüklemek için CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 ayarlayın.
Yetenekleri Yapılandırma (Configure skills)
Yetenekler, SKILL.md dosyasının üst kısmındaki YAML frontmatter ve ardından gelen markdown içeriği aracılığıyla yapılandırılır.
Yetenek İçeriği Türleri (Types of skill content)
Yetenek dosyaları her türlü talimatı içerebilir, ancak onları nasıl çağırmak istediğinizi düşünmek ne ekleyeceğinize rehberlik eder:
- Referans içeriği: Claude'un mevcut çalışmanıza uyguladığı bilgiyi ekler. Kurallar, desenler, stil kılavuzları, alan bilgisi. Bu içerik, Claude'un sohbet bağlamınızla birlikte kullanabilmesi için satır içinde çalışır.
- Görev içeriği: Claude'a dağıtımlar, commit'ler veya kod oluşturma gibi belirli bir eylem için adım adım talimatlar verir. Bunlar genellikle Claude'un ne zaman çalıştıracağına karar vermesine izin vermek yerine doğrudan
/skill-nameile çağırmak istediğiniz eylemlerdir. Claude'un otomatik olarak tetiklemesini önlemek içindisable-model-invocation: trueekleyin.
Frontmatter Referansı (Frontmatter reference)
Markdown içeriğinin ötesinde, SKILL.md dosyanızın üst kısmında --- işaretleyicileri arasında YAML frontmatter alanlarını kullanarak yetenek davranışını yapılandırabilirsiniz:
---
name: my-skill
description: What this skill does
disable-model-invocation: true
allowed-tools: Read Grep
---
Tüm alanlar isteğe bağlıdır. Yalnızca description önerilir, böylece Claude yeteneği ne zaman kullanacağını bilir.
| Alan | Zorunlu | Açıklama |
|---|---|---|
name |
Hayır | Yetenek listelerinde gösterilen görünen ad. Varsayılan olarak dizin adıdır. |
description |
Önerilen | Yeteneğin ne yaptığı ve ne zaman kullanılacağı. Claude bunu ne zaman uygulayacağına karar vermek için kullanır. Atlanırsa, markdown içeriğinin ilk paragrafını kullanır. Ana kullanım durumunu ilk sıraya koyun: birleştirilmiş açıklama ve when_to_use metni, yetenek listesinde bağlam kullanımını azaltmak için 1.536 karakterde kesilir. |
when_to_use |
Hayır | Claude'un yeteneği ne zaman çağırması gerektiğine dair ek bağlam, örneğin tetikleyici ifadeler veya örnek istekler. Yetenek listesinde açıklamaya eklenir ve 1.536 karakter sınırına dahildir. |
argument-hint |
Hayır | Otomatik tamamlama sırasında beklenen argümanları belirtmek için gösterilen ipucu. Örnek: [issue-number] veya [filename] [format]. |
arguments |
Hayır | Yetenek içeriğinde $name ikamesi için adlandırılmış konumsal argümanlar. Boşlukla ayrılmış bir dize veya bir YAML listesi kabul eder. İsimler sırayla argüman konumlarına eşlenir. |
disable-model-invocation |
Hayır | Claude'un bu yeteneği otomatik olarak yüklemesini önlemek için true olarak ayarlayın. Manuel olarak /name ile tetiklemek istediğiniz iş akışları için kullanın. Ayrıca yeteneğin alt-ajanlara önceden yüklenmesini de engeller. Varsayılan: false. |
user-invocable |
Hayır | / menüsünden gizlemek için false olarak ayarlayın. Kullanıcıların doğrudan çağırmaması gereken arka plan bilgileri için kullanın. Varsayılan: true. |
allowed-tools |
Hayır | Bu yetenek etkinken Claude'un izin istemeden kullanabileceği araçlar. Boşlukla ayrılmış bir dize veya bir YAML listesi kabul eder. |
model |
Hayır | Bu yetenek etkinken kullanılacak model. Geçersiz kılma, geçerli turun geri kalanı için geçerlidir ve ayarlara kaydedilmez; bir sonraki isteminizde oturum modeli devam eder. /model ile aynı değerleri veya etkin modeli korumak için inherit kabul eder. |
effort |
Hayır | Bu yetenek etkinken çaba seviyesi. Oturum çaba seviyesini geçersiz kılar. Varsayılan: oturumdan devralır. Seçenekler: low, medium, high, xhigh, max; mevcut seviyeler modele bağlıdır. |
context |
Hayır | Bir çatallanmış alt-ajan bağlamında çalıştırmak için fork olarak ayarlayın. |
agent |
Hayır | context: fork ayarlandığında hangi alt-ajan türünün kullanılacağı. |
hooks |
Hayır | Bu yeteneğin yaşam döngüsüne göre kapsamlandırılmış kancalar. |
paths |
Hayır | Bu yeteneğin ne zaman etkinleştirileceğini sınırlayan glob desenleri. Virgülle ayrılmış bir dize veya bir YAML listesi kabul eder. Ayarlandığında, Claude yeteneği yalnızca desenlerle eşleşen dosyalarla çalışırken otomatik olarak yükler. |
shell |
Hayır | Bu yetenekteki !command`` ve ```! blokları için kullanılacak kabuk. bash (varsayılan) veya powershell kabul eder. powershell ayarı, satır içi kabuk komutlarını Windows'ta PowerShell aracılığıyla çalıştırır. CLAUDE_CODE_USE_POWERSHELL_TOOL=1 gerektirir. |
Bir Yeteneğin Komut Adını Alması (How a skill gets its command name)
Bir yeteneği çağırmak için yazdığınız komut, yetenek dosyasının bulunduğu yerden gelir. Frontmatter name alanı, yetenek listelerinde gösterilen etiketi belirler ve bir eklenti kök SKILL.md dışında, /'den sonra yazdığınız şeyi değiştirmez:
| Yetenek konumu | Komut adı kaynağı | Örnek |
|---|---|---|
~/.claude/skills/ veya .claude/skills/ altındaki yetenek dizini |
Dizin adı | .claude/skills/deploy-staging/SKILL.md → /deploy-staging |
.claude/commands/ altındaki dosya |
Uzantısız dosya adı | .claude/commands/deploy.md → /deploy |
Eklenti skills/ alt dizini |
Eklenti tarafından ad alanına alınmış dizin adı | my-plugin/skills/review/SKILL.md → /my-plugin:review |
Eklenti kök SKILL.md |
Frontmatter name, eklenti dizin adı yedek olarak |
my-plugin/SKILL.md name: review ile → /my-plugin:review |
Eklenti kök durumu, name'in komut adını belirlediği tek yerdir, çünkü onu alacak bir yetenek dizini yoktur. Frontmatter'da name ayarlanmamışsa, bunun yerine eklentinin dizin adı kullanılır.
Mevcut Dize İkameleri (Available string substitutions)
Yetenekler, yetenek içeriğinde dinamik değerler için dize ikamesini destekler:
| Değişken | Açıklama |
|---|---|
$ARGUMENTS |
Yetenek çağrılırken iletilen tüm argümanlar. $ARGUMENTS içerikte yoksa, argümanlar ARGUMENTS: <value> olarak eklenir. |
$ARGUMENTS[N] |
0 tabanlı indekse göre belirli bir argümana erişin, örneğin ilk argüman için $ARGUMENTS[0]. |
$N |
$ARGUMENTS[N] için kısayol, örneğin ilk argüman için $0 veya ikinci için $1. |
$name |
arguments frontmatter listesinde bildirilen adlandırılmış argüman. İsimler sırayla konumlara eşlenir, bu nedenle arguments: [issue, branch] ile $issue yer tutucusu ilk argümana ve $branch ikinciye genişler. |
${CLAUDE_SESSION_ID} |
Geçerli oturum kimliği. Günlüğe kaydetme, oturuma özel dosyalar oluşturma veya yetenek çıktısını oturumlarla ilişkilendirme için kullanışlıdır. |
${CLAUDE_EFFORT} |
Geçerli çaba seviyesi: low, medium, high, xhigh veya max. Yetenek talimatlarını etkin çaba ayarına uyarlamak için kullanın. |
${CLAUDE_SKILL_DIR} |
Yeteneğin SKILL.md dosyasını içeren dizin. Eklenti yetenekleri için bu, eklenti kökü değil, eklenti içindeki yeteneğin alt dizinidir. Geçerli çalışma dizininden bağımsız olarak, yetenekle birlikte gelen betiklere veya dosyalara başvurmak için bash enjeksiyon komutlarında kullanın. |
Dizinlenmiş argümanlar kabuk stili tırnak kullanır, bu nedenle çok kelimeli değerleri tek bir argüman olarak iletmek için tırnak içine alın. Örneğin, /my-skill "hello world" second, $0'ın hello world ve $1'in second olarak genişlemesini sağlar. $ARGUMENTS yer tutucusu her zaman yazıldığı gibi tam argüman dizesine genişler.
Destekleyici Dosyalar Ekleme (Add supporting files)
Yetenekler, dizinlerinde birden çok dosya içerebilir. Bu, SKILL.md dosyasını temel bilgilere odaklı tutarken, Claude'un yalnızca ihtiyaç duyulduğunda ayrıntılı referans materyaline erişmesine olanak tanır. Büyük referans belgeleri, API şartnameleri veya örnek koleksiyonlarının, yetenek her çalıştığında bağlama yüklenmesi gerekmez.
SKILL.md dosyasını 500 satırın altında tutun. Ayrıntılı referans materyalini ayrı dosyalara taşıyın.
Bir Yeteneği Kimin Çağırdığını Kontrol Etme (Control who invokes a skill)
Varsayılan olarak, hem siz hem de Claude herhangi bir yeteneği çağırabilir. /skill-name yazarak doğrudan çağırabilirsiniz ve Claude, sohbetinizle ilgili olduğunda otomatik olarak yükleyebilir. İki frontmatter alanı bunu kısıtlamanıza olanak tanır:
disable-model-invocation: true: Yalnızca siz yeteneği çağırabilirsiniz. Bunu, yan etkileri olan veya zamanlamasını kontrol etmek istediğiniz iş akışları için kullanın, örneğin/commit,/deployveya/send-slack-message. Kodunuz hazır göründüğü için Claude'un dağıtım yapmaya karar vermesini istemezsiniz.user-invocable: false: Yalnızca Claude yeteneği çağırabilir. Bunu, bir komut olarak eyleme dönüştürülemeyen arka plan bilgileri için kullanın. Örneğin, birlegacy-system-contextyeteneği eski bir sistemin nasıl çalıştığını açıklar. Claude bunu gerektiğinde bilmelidir, ancak/legacy-system-contextkullanıcıların yapması için anlamlı bir eylem değildir.
İki alanın çağırma ve bağlam yüklemeyi nasıl etkilediği:
| Frontmatter | Siz çağırabilirsiniz | Claude çağırabilir | Bağlama ne zaman yüklenir |
|---|---|---|---|
| Varsayılan | Evet | Evet | Açıklama her zaman bağlamda, tam yetenek çağrıldığında yüklenir |
disable-model-invocation: true |
Evet | Hayır | Açıklama bağlamda değil, siz çağırdığınızda tam yetenek yüklenir |
user-invocable: false |
Hayır | Evet | Açıklama her zaman bağlamda, tam yetenek çağrıldığında yüklenir |
Normal bir oturumda, yetenek açıklamaları Claude'un nelerin mevcut olduğunu bilmesi için bağlama yüklenir, ancak tam yetenek içeriği yalnızca çağrıldığında yüklenir. Önceden yüklenmiş yeteneklere sahip alt-ajanlar farklı çalışır: tam yetenek içeriği başlangıçta enjekte edilir.
Yetenek İçeriği Yaşam Döngüsü (Skill content lifecycle)
Siz veya Claude bir yeteneği çağırdığınızda, işlenmiş SKILL.md içeriği konuşmaya tek bir mesaj olarak girer ve oturumun geri kalanı için orada kalır. Claude Code, daha sonraki turlarda yetenek dosyasını yeniden okumaz, bu nedenle bir görev boyunca uygulanması gereken rehberliği, tek seferlik adımlar yerine kalıcı talimatlar olarak yazın.
Otomatik sıkıştırma (auto-compaction), çağrılan yetenekleri bir token bütçesi içinde taşır. Konuşma, bağlamı boşaltmak için özetlendiğinde, Claude Code her yeteneğin en son çağrısını özetten sonra yeniden ekler ve her birinin ilk 5.000 token'ını tutar. Yeniden eklenen yetenekler, toplam 25.000 token'lık birleşik bir bütçeyi paylaşır. Claude Code bu bütçeyi en son çağrılan yetenekten başlayarak doldurur, bu nedenle bir oturumda çok sayıda yetenek çağırdıysanız, daha eski yetenekler sıkıştırmadan sonra tamamen atılabilir.
Bir yetenek, ilk yanıttan sonra davranışı etkilemeyi bırakıyorsa, içerik genellikle hâlâ mevcuttur ve model diğer araçları veya yaklaşımları seçiyordur. Yeteneğin açıklamasını ve talimatlarını güçlendirin, böylece model onu tercih etmeye devam eder veya davranışı deterministik olarak zorlamak için kancalar (hooks) kullanın. Yetenek büyükse veya ondan sonra başka birkaç yetenek çağırdıysanız, tam içeriği geri yüklemek için sıkıştırmadan sonra yeniden çağırın.
Bir Yetenek için Araçları Önceden Onaylama (Pre-approve tools for a skill)
allowed-tools alanı, yetenek etkinken listelenen araçlar için izin verir, böylece Claude bunları onayınızı istemeden kullanabilir. Hangi araçların mevcut olduğunu kısıtlamaz: her araç çağrılabilir durumda kalır ve izin ayarlarınız yine de listelenmeyen araçları yönetir.
Bir projenin .claude/skills/ dizinine kontrol edilen yetenekler için, allowed-tools, o klasör için çalışma alanı güven iletişim kutusunu kabul ettikten sonra, .claude/settings.json içindeki izin kurallarıyla aynı şekilde etkili olur. Bir depoya güvenmeden önce proje yeteneklerini inceleyin, çünkü bir yetenek kendisine geniş araç erişimi verebilir.
Bir yeteneğin belirli araçları kullanmasını engellemek için, bunun yerine izin ayarlarınıza reddetme kuralları ekleyin.
Yeteneklere Argüman Geçirme (Pass arguments to skills)
Hem siz hem de Claude, bir yeteneği çağırırken argümanlar iletebilir. Argümanlar $ARGUMENTS yer tutucusu aracılığıyla kullanılabilir.
Bir yeteneği argümanlarla çağırırsanız ancak yetenek $ARGUMENTS içermiyorsa, Claude Code, yetenek içeriğinin sonuna ARGUMENTS: <your input> ekler, böylece Claude yine de ne yazdığınızı görür.
Bireysel argümanlara konuma göre erişmek için $ARGUMENTS[N] veya daha kısa $N kullanın.
Gelişmiş Desenler (Advanced patterns)
Dinamik Bağlam Enjekte Etme (Inject dynamic context)
!
Bu yetenek, GitHub CLI ile canlı PR verilerini getirerek bir çekme isteğini özetler. !gh pr diff`` ve diğer komutlar önce çalışır ve çıktıları isteme eklenir:
---
name: pr-summary
description: Summarize changes in a pull request
context: fork
agent: Explore
allowed-tools: Bash(gh *)
---
## Pull request context
- PR diff: !`gh pr diff`
- PR comments: !`gh pr view --comments`
- Changed files: !`gh pr diff --name-only`
## Your task
Summarize this pull request...
Bu yetenek çalıştığında:
- Her
!`` hemen yürütülür (Claude hiçbir şey görmeden önce) - Çıktı, yetenek içeriğindeki yer tutucuyu değiştirir
- Claude, gerçek PR verileriyle tamamen işlenmiş istemi alır
Bu bir ön işlemedir, Claude'un yürüttüğü bir şey değildir. Claude yalnızca nihai sonucu görür. İkame, orijinal dosya üzerinde bir kez çalışır. Komut çıktısı düz metin olarak eklenir ve daha sonraki bir geçişin genişletmesi için başka !
Satır içi form yalnızca ! bir satırın başında veya boşluktan hemen sonra göründüğünde tanınır. ! başka bir karakteri takip ediyorsa, örneğin KEY=!cmd``, yer tutucu değişmez metin olarak bırakılır ve komut çalışmaz.
Çok satırlı komutlar için, satır içi form yerine ```! ile açılan bir kod bloğu kullanın:
## Environment
```!
node --version
npm --version
git status --short
```
Kullanıcı, proje, eklenti veya ek dizin kaynaklarından gelen yetenekler ve özel komutlar için bu davranışı devre dışı bırakmak üzere ayarlarda "disableSkillShellExecution": true olarak ayarlayın. Her komut, çalıştırılmak yerine [shell command execution disabled by policy] ile değiştirilir. Paketlenmiş ve yönetilen yetenekler etkilenmez. Bu ayar en çok, kullanıcıların geçersiz kılamayacağı yönetilen ayarlarda kullanışlıdır.
Bir yetenek çalıştığında daha derin akıl yürütme istemek için, yetenek içeriğine herhangi bir yere ultrathink ekleyin.
Yetenekleri Bir Alt-Ajanda Çalıştırma (Run skills in a subagent)
Bir yeteneğin izolasyonda çalışmasını istediğinizde frontmatter'ınıza context: fork ekleyin. Yetenek içeriği, alt-ajanı yönlendiren istem haline gelir. Sohbet geçmişinize erişimi olmaz. context: fork yalnızca açık talimatları olan yetenekler için anlamlıdır. Yeteneğiniz bir görev olmadan "bu API kurallarını kullan" gibi yönergeler içeriyorsa, alt-ajan yönergeleri alır ancak eyleme dönüştürülebilir bir istem almaz ve anlamlı bir çıktı olmadan geri döner.
Yetenekler ve alt-ajanlar iki yönde birlikte çalışır:
| Yaklaşım | Sistem istemi | Görev | Ayrıca yükler |
|---|---|---|---|
context: fork ile yetenek |
Ajan türünden | SKILL.md içeriği |
CLAUDE.md, ajan Explore veya Plan olmadığı sürece |
skills alanına sahip alt-ajan |
Alt-ajanın markdown gövdesi | Claude'un delegasyon mesajı | Önceden yüklenmiş yetenekler + CLAUDE.md |
context: fork ile, görevi yeteneğinize yazarsınız ve onu yürütmesi için bir ajan türü seçersiniz. Yerleşik Explore ve Plan ajanları, bağlamlarını küçük tutmak için CLAUDE.md ve git status'ü atlar, bu nedenle agent: Explore kullanan çatallanmış bir yetenek yalnızca SKILL.md içeriğini ve ajanın kendi sistem istemini görür.
Örnek: Explore Ajanını Kullanan Araştırma Yeteneği (Example: Research skill using Explore agent)
Bu yetenek, araştırmayı çatallanmış bir Explore ajanında çalıştırır. Yetenek içeriği görev haline gelir ve ajan, kod tabanı keşfi için optimize edilmiş salt okunur araçlar sağlar:
---
name: deep-research
description: Research a topic thoroughly
context: fork
agent: Explore
---
Research $ARGUMENTS thoroughly:
1. Find relevant files using Glob and Grep
2. Read and analyze the code
3. Summarize findings with specific file references
Bu yetenek çalıştığında:
- Yeni, izole bir bağlam oluşturulur
- Alt-ajan, yetenek içeriğini istemi olarak alır ("Research $ARGUMENTS thoroughly…")
agentalanı, yürütme ortamını belirler (model, araçlar ve izinler)- Sonuçlar özetlenir ve ana sohbetinize döndürülür
agent alanı, hangi alt-ajan yapılandırmasının kullanılacağını belirtir. Seçenekler arasında yerleşik ajanlar (Explore, Plan, general-purpose) veya .claude/agents/ içindeki herhangi bir özel alt-ajan bulunur. Atlanırsa, general-purpose kullanılır.
Claude'un Yetenek Erişimini Kısıtlama (Restrict Claude's skill access)
Varsayılan olarak Claude, disable-model-invocation: true ayarlanmamış herhangi bir yeteneği çağırabilir. allowed-tools tanımlayan yetenekler, yetenek etkinken Claude'a bu araçlara her kullanımda onay almadan erişim izni verir. İzin ayarlarınız, diğer tüm araçlar için temel onay davranışını yönetmeye devam eder.
/init, /review ve /security-review dahil olmak üzere birkaç yerleşik komut da Yetenek aracı aracılığıyla kullanılabilir. /compact gibi diğer yerleşik komutlar kullanılamaz.
Claude'un hangi yetenekleri çağırabileceğini kontrol etmenin üç yolu:
Tüm yetenekleri devre dışı bırakın:
/permissionsiçinde Yetenek aracını reddederek:# Reddetme kurallarına ekleyin: SkillBelirli yeteneklere izin verin veya reddedin: İzin kurallarını kullanarak:
# Yalnızca belirli yeteneklere izin ver Skill(commit) Skill(review-pr *) # Belirli yetenekleri reddet Skill(deploy *)İzin sözdizimi: Tam eşleşme için
Skill(name), herhangi bir argümanla önek eşleşmesi içinSkill(name *).Bireysel yetenekleri gizleyin: Frontmatter'larına
disable-model-invocation: trueekleyerek. Bu, yeteneği Claude'un bağlamından tamamen kaldırır.
user-invocable alanı yalnızca menü görünürlüğünü kontrol eder, Yetenek aracı erişimini değil. Programlı çağırmayı engellemek için disable-model-invocation: true kullanın.
Ayarlardan Yetenek Görünürlüğünü Geçersiz Kılma (Override skill visibility from settings)
skillOverrides ayarı, yetenek görünürlüğünü yeteneğin kendi frontmatter'ı yerine ayarlarınızdan kontrol eder. SKILL.md dosyasını düzenlemek istemediğiniz yetenekler için kullanın; örneğin, paylaşılan bir proje deposuna kontrol edilenler veya bir MCP sunucusu tarafından sağlananlar. /skills menüsü bunu sizin için yazar: bir yeteneği vurgulayın ve durumlar arasında geçiş yapmak için Space tuşuna, ardından .claude/settings.local.json dosyasına kaydetmek için Enter tuşuna basın.
Her anahtar bir yetenek adıdır ve her değer dört durumdan biridir:
| Değer | Claude'a listelenen | / menüsünde |
|---|---|---|
"on" |
Ad ve açıklama | Evet |
"name-only" |
Yalnızca ad | Evet |
"user-invocable-only" |
Gizli | Evet |
"off" |
Gizli | Gizli |
skillOverrides içinde bulunmayan bir yetenek "on" olarak kabul edilir. Aşağıdaki örnek, bir yeteneği yalnızca adına daraltır ve diğerini tamamen kapatır:
{
"skillOverrides": {
"legacy-context": "name-only",
"deploy": "off"
}
}
Eklenti yetenekleri skillOverrides tarafından etkilenmez. Bunları bunun yerine /plugin aracılığıyla yönetin.
Yetenekleri Paylaşma (Share skills)
Yetenekler, hedef kitlenize bağlı olarak farklı kapsamlarda dağıtılabilir:
- Proje yetenekleri:
.claude/skills/dizinini sürüm kontrolüne ekleyin - Eklentiler: Eklentinizde bir
skills/dizini oluşturun - Yönetilen: Yönetilen ayarlar aracılığıyla kuruluş çapında dağıtın
Görsel Çıktı Oluşturma (Generate visual output)
Yetenekler, herhangi bir dilde betikler paketleyebilir ve çalıştırabilir, bu da Claude'a tek bir istemde mümkün olandan daha fazla yetenek kazandırır. Güçlü bir desen, görsel çıktı oluşturmaktır: verileri keşfetmek, hata ayıklamak veya raporlar oluşturmak için tarayıcınızda açılan etkileşimli HTML dosyaları.
Bu örnek, bir kod tabanı gezgini oluşturur: dizinleri genişletip daraltabileceğiniz, dosya boyutlarını bir bakışta görebileceğiniz ve dosya türlerini renge göre tanımlayabileceğiniz etkileşimli bir ağaç görünümü.
Yetenek dizinini oluşturun:
mkdir -p ~/.claude/skills/codebase-visualizer/scripts
~/.claude/skills/codebase-visualizer/SKILL.md dosyasına kaydedin. Açıklama, Claude'a bu Yeteneği ne zaman etkinleştireceğini söyler ve talimatlar, Claude'a paketlenmiş betiği çalıştırmasını söyler. Betik yolu ${CLAUDE_SKILL_DIR} kullanır, böylece yetenek kişisel, proje veya eklenti düzeyinde kurulu olsa da doğru şekilde çözümlenir:
---
name: codebase-visualizer
description: Generate an interactive collapsible tree visualization of your codebase. Use when exploring a new repo, understanding project structure, or identifying large files.
allowed-tools: Bash(python3 *)
---
## Codebase Visualizer
Generate an interactive HTML tree view that shows your project's file structure with collapsible directories.
## Usage
Run the visualization script from your project root:
```bash
python3 ${CLAUDE_SKILL_DIR}/scripts/visualize.py .
This creates codebase-map.html in the current directory and opens it in your default browser.
What the visualization shows
- Collapsible directories: Click folders to expand/collapse
- File sizes: Displayed next to each file
- Colors: Different colors for different file types
- Directory totals: Shows aggregate size of each folder
Betik, Python 3 gerektirir ancak yalnızca yerleşik kütüphaneleri kullanır, bu nedenle kurulacak paket yoktur.
Bu desen, herhangi bir görsel çıktı için çalışır: bağımlılık grafikleri, test kapsamı raporları, API dokümantasyonu veya veritabanı şeması görselleştirmeleri. Paketlenmiş betik işi yaparken Claude orkestrasyonu halleder.
## Sorun Giderme (Troubleshooting)
### Yetenek Tetiklenmiyor (Skill not triggering)
Claude beklenen yeteneği kullanmıyorsa:
- Açıklamanın, kullanıcıların doğal olarak söyleyeceği anahtar kelimeler içerdiğini kontrol edin
- Yeteneğin "Hangi yetenekler mevcut?" sorusunda görünüp görünmediğini doğrulayın
- İsteğinizi açıklamayla daha yakından eşleşecek şekilde yeniden ifade etmeyi deneyin
- Yetenek kullanıcı tarafından çağrılabilir durumdaysa doğrudan `/skill-name` ile çağırın
### Yetenek Çok Sık Tetikleniyor (Skill triggers too often)
Claude istemediğiniz zaman yeteneği kullanıyorsa:
- Açıklamayı daha spesifik hale getirin
- Yalnızca manuel çağırma istiyorsanız `disable-model-invocation: true` ekleyin
### Yetenek Açıklamaları Kesiliyor (Skill descriptions are cut short)
Yetenek açıklamaları, Claude'un nelerin mevcut olduğunu bilmesi için bağlama yüklenir. Tüm yetenek adları her zaman dahil edilir, ancak çok sayıda yeteneğiniz varsa, açıklamalar karakter bütçesine sığacak şekilde kısaltılır ve bu da Claude'un isteğinizle eşleştirmesi gereken anahtar kelimeleri kaldırabilir. Bütçe, modelin bağlam penceresinin %1'i oranında ölçeklenir. Taştığında, en az çağırdığınız yeteneklerin açıklamaları önce atılır, böylece gerçekten kullandığınız yetenekler tam metinlerini korur.
Bütçenin taşıp taşmadığını ve hangi yeteneklerin etkilendiğini görmek için `/doctor` çalıştırın. Bütçeyi yükseltmek için `skillListingBudgetFraction` ayarını (ör. `0.02` = %2) veya `SLASH_COMMAND_TOOL_CHAR_BUDGET` ortam değişkenini sabit bir karakter sayısına ayarlayın. Diğer yetenekler için bütçeyi boşaltmak üzere, düşük öncelikli girişleri `skillOverrides` içinde `"name-only"` olarak ayarlayın, böylece açıklama olmadan listelenirler. Ayrıca, kaynakta `description` ve `when_to_use` metnini kısaltabilirsiniz: ana kullanım durumunu ilk sıraya koyun, çünkü her girişin birleştirilmiş metni bütçeden bağımsız olarak 1.536 karakterle sınırlıdır. Sınır, `maxSkillDescriptionChars` ile yapılandırılabilir.
## İlgili Kaynaklar (Related resources)
- **Yapılandırmanızda hata ayıklama**: Bir yeteneğin neden görünmediğini veya tetiklenmediğini teşhis edin
- **Alt-ajanlar**: Görevleri uzmanlaşmış ajanlara devredin
- **Eklentiler**: Yetenekleri diğer uzantılarla paketleyin ve dağıtın
- **Kancalar**: Araç olayları etrafında iş akışlarını otomatikleştirin
- **Bellek**: Kalıcı bağlam için `CLAUDE.md` dosyalarını yönetin
- **Komutlar**: Yerleşik komutlar ve paketlenmiş yetenekler için referans
- **İzinler**: Araç ve yetenek erişimini kontrol edin
## Örnek Kullanım Senaryosu
Bir ekip, monorepo yapısındaki bir web uygulaması üzerinde çalışıyor. Geliştiriciler, her commit öncesi kod kalitesini artırmak ve dağıtım sürecini standartlaştırmak istiyor.
1. **Kod inceleme yeteneği oluşturma**: Takım lideri, proje kökünde `.claude/skills/code-review/SKILL.md` dosyası oluşturur. Frontmatter'da `disable-model-invocation: true` ayarlar, böylece yalnızca geliştiriciler manuel olarak `/code-review` çağırabilir. Yetenek içeriğinde, Claude'a değişiklikleri incelemesi, güvenlik açıklarını, test eksikliklerini ve kodlama standartlarından sapmaları işaretlemesi talimatını verir.
2. **Dağıtım yeteneği ekleme**: Aynı dizinde `.claude/skills/deploy/SKILL.md` oluşturulur. `allowed-tools: Bash(npm *) Bash(aws *)` ile ön onay verilir. Yetenek, testleri çalıştırma, uygulamayı derleme ve AWS'ye dağıtma adımlarını içerir.
3. **Geliştirici iş akışı**: Bir geliştirici, bir hata düzeltmesi yapar ve `/code-review` yazar. Claude, değişiklikleri analiz eder, bir eksik test olduğunu belirtir. Geliştirici testi ekler, ardından `/deploy` yazar. Claude, testleri çalıştırır, uygulamayı derler ve staging ortamına dağıtır.
4. **Monorepo paket yetenekleri**: `packages/frontend/` altında çalışan bir geliştirici, `packages/frontend/.claude/skills/lint/SKILL.md` oluşturur. Claude, bu dizinde çalışırken lint yeteneğini otomatik keşfeder ve ön uç kodunu kontrol ederken kullanır.
5. **Sorun giderme**: Bir yetenek tetiklenmezse, geliştirici `/doctor` çalıştırarak bütçe taşması olup olmadığını kontrol eder. Gerekirse `skillOverrides` ile düşük öncelikli yetenekleri "name-only" yaparak yer açar.