Claude Code'da Beceriler (Skills) ile Yetenekleri Genişletme
Claude Code, beceriler (skills) sayesinde Claude'un yeteneklerini genişletmenize olanak tanır. Bir SKILL.md dosyası oluşturup talimatlar ekleyerek Claude'un araç setine yeni yetenekler kazandırabilirsiniz. Claude, becerileri ihtiyaç duyduğunda otomatik olarak kullanır veya siz /beceri-adi yazarak doğrudan çağırabilirsiniz.
Beceriler, sürekli olarak sohbete yapıştırdığınız talimatlar, kontrol listeleri veya çok adımlı prosedürler için idealdir. CLAUDE.md içeriğinden farklı olarak, bir becerinin gövdesi yalnızca kullanıldığında yüklenir, bu nedenle uzun referans materyalleri ihtiyaç duyulana kadar neredeyse hiç maliyet oluşturmaz.
Dahil Edilen Beceriler (Bundled Skills)
Claude Code, her oturumda kullanılabilen bir dizi dahil edilmiş beceri (bundled skill) ile birlikte gelir:
/simplify- Kodu basitleştirir/batch- Toplu işlemler/debug- Hata ayıklama/loop- Döngüsel işlemler/claude-api- Claude API ile ilgili işlemler
Bu beceriler, çoğu yerleşik komutun aksine, sabit mantık yürütmek yerine prompt tabanlıdır: Claude'a ayrıntılı talimatlar verir ve araçlarını kullanarak işi organize etmesini sağlar. Bunları diğer beceriler gibi / ve ardından beceri adını yazarak çağırırsınız.
Başlarken (Getting Started)
İlk Becerinizi Oluşturun
Bu örnek, git deponuzdaki commit edilmemiş değişiklikleri özetleyen ve riskli olanları işaretleyen bir beceri oluşturur:
- Beceri dizinini oluşturun:
mkdir -p ~/.claude/skills/summarize-changes
SKILL.mddosyasını yazın:
---
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.
- Beceriyi test edin: Bir git projesi açın, küçük bir düzenleme yapın ve
claudekomutunu çalıştırın. Beceriyi otomatik olarak çağırması için "What did I change?" gibi bir soru sorun veya/summarize-changesyazarak doğrudan çağırın.
Becerilerin Yaşadığı Yerler (Where Skills Live)
Beceriyi nerede sakladığınız, kimlerin kullanabileceğini belirler:
| Konum | Yol | Kapsam |
|---|---|---|
| Kurumsal (Managed) | Yönetici ayarları | Organizasyondaki tüm kullanıcılar |
| Kişisel (Personal) | ~/.claude/skills/<beceri-adi>/SKILL.md |
Tüm projeleriniz |
| Proje (Project) | .claude/skills/<beceri-adi>/SKILL.md |
Yalnızca bu proje |
| Eklenti (Plugin) | <eklenti>/skills/<beceri-adi>/SKILL.md |
Eklentinin etkin olduğu yer |
Aynı ada sahip beceriler olduğunda öncelik sırası: kurumsal > kişisel > proje. Eklenti becerileri eklenti-adi:beceri-adi ad alanını kullanır, bu nedenle diğer seviyelerle çakışamaz.
Canlı Değişiklik Algılama (Live Change Detection)
Claude Code, beceri dizinlerindeki dosya değişikliklerini izler. ~/.claude/skills/, proje .claude/skills/ veya --add-dir ile eklenmiş bir dizindeki .claude/skills/ altında beceri ekleme, düzenleme veya silme işlemleri, oturumu yeniden başlatmadan geçerli olur.
Otomatik Keşif (Automatic Discovery)
Proje becerileri, başlangıç dizininizdeki ve depo köküne kadar olan her üst dizindeki .claude/skills/ klasörlerinden yüklenir. Monorepo yapılarında, alt dizinlerdeki .claude/skills/ klasörleri de ihtiyaç halinde keşfedilir.
Becerileri Yapılandırma (Configure Skills)
Beceri İçerik Türleri (Types of Skill Content)
- Referans içerik: Claude'un mevcut çalışmanıza uygulayacağı bilgiler (kurallar, desenler, stil kılavuzları). Satır içi çalışır.
- Görev içeriği: Belirli bir eylem için adım adım talimatlar (dağıtım, commit, kod oluşturma). Genellikle doğrudan çağırmak istediğiniz eylemlerdir.
Frontmatter Referansı (Frontmatter Reference)
Tüm alanlar isteğe bağlıdır. Yalnızca description önerilir:
| Alan | Zorunlu | Açıklama |
|---|---|---|
name |
Hayır | Beceri görünen adı. Atlanırsa dizin adı kullanılır. |
description |
Önerilen | Becerinin ne yaptığı ve ne zaman kullanılacağı. |
when_to_use |
Hayır | Claude'un beceriyi ne zaman çağırması gerektiğine dair ek bağlam. |
argument-hint |
Hayır | Otomatik tamamlama sırasında beklenen argüman ipucu. |
arguments |
Hayır | $name değiştirmesi için adlandırılmış konumsal argümanlar. |
disable-model-invocation |
Hayır | true olarak ayarlanırsa Claude'un otomatik yüklemesini engeller. |
user-invocable |
Hayır | false olarak ayarlanırsa / menüsünden gizlenir. |
allowed-tools |
Hayır | Beceri etkinken Claude'un izinsiz kullanabileceği araçlar. |
model |
Hayır | Beceri etkinken kullanılacak model. |
effort |
Hayır | Beceri etkinken çaba seviyesi (low, medium, high, xhigh, max). |
context |
Hayır | fork olarak ayarlanırsa alt-agent bağlamında çalıştırır. |
agent |
Hayır | context: fork ayarlandığında kullanılacak alt-agent türü. |
hooks |
Hayır | Beceri yaşam döngüsüne bağlı hook'lar. |
paths |
Hayır | Becerinin ne zaman etkinleştirileceğini sınırlayan glob desenleri. |
shell |
Hayır | !command`` ve ```! blokları için kabuk (bash veya powershell). |
Kullanılabilir Dize Değiştirmeleri (Available String Substitutions)
| Değişken | Açıklama |
|---|---|
$ARGUMENTS |
Beceri çağrılırken geçirilen tüm argümanlar. |
$ARGUMENTS[N] |
0 tabanlı indeksle belirli bir argümana erişim. |
$N |
$ARGUMENTS[N] için kısayol. |
$name |
arguments frontmatter listesinde bildirilen adlandırılmış argüman. |
${CLAUDE_SESSION_ID} |
Geçerli oturum kimliği. |
${CLAUDE_EFFORT} |
Geçerli çaba seviyesi. |
${CLAUDE_SKILL_DIR} |
Becerinin SKILL.md dosyasını içeren dizin. |
Destekleyici Dosyalar Ekleme (Add Supporting Files)
Beceriler, dizinlerinde birden fazla dosya içerebilir. Bu, SKILL.md dosyasını temel bilgilerle sınırlı tutarken Claude'un yalnızca ihtiyaç duyulduğunda ayrıntılı referans materyallerine erişmesini sağlar:
my-skill/
├── SKILL.md (gerekli - genel bakış ve yönlendirme)
├── reference.md (ayrıntılı API dokümanları)
├── examples.md (kullanım örnekleri)
└── scripts/
└── helper.py (yardımcı script)
SKILL.md dosyasını 500 satırın altında tutun. Ayrıntılı referans materyallerini ayrı dosyalara taşıyın.
Beceriyi Kimin Çağırabileceğini Kontrol Etme (Control Who Invokes a Skill)
Varsayılan olarak hem siz hem de Claude herhangi bir beceriyi çağırabilir. İki frontmatter alanı bunu kısıtlamanıza olanak tanır:
| Frontmatter | Siz çağırabilir | Claude çağırabilir | Bağlama yüklendiğinde |
|---|---|---|---|
| Varsayılan | Evet | Evet | Açıklama her zaman bağlamda, beceri çağrıldığında yüklenir |
disable-model-invocation: true |
Evet | Hayır | Açıklama bağlamda değil, siz çağırdığınızda yüklenir |
user-invocable: false |
Hayır | Evet | Açıklama her zaman bağlamda, çağrıldığında yüklenir |
Beceri İçerik Yaşam Döngüsü (Skill Content Lifecycle)
Bir beceri çağrıldığında, işlenmiş SKILL.md içeriği konuşmaya tek bir mesaj olarak girer ve oturum boyunca orada kalır. Claude Code, sonraki turlarda beceri dosyasını yeniden okumaz. Otomatik sıkıştırma (auto-compaction), çağrılan becerileri bir token bütçesi dahilinde taşır. Her becerinin en son 5.000 token'ı korunur ve yeniden eklenen beceriler toplam 25.000 token'lık bir bütçeyi paylaşır.
Bir Beceri için Araçları Önceden Onaylama (Pre-approve Tools for a Skill)
allowed-tools alanı, beceri etkinken listelenen araçlar için izin verir, böylece Claude bunları her kullanımda onay istemeden kullanabilir. Bu, hangi araçların kullanılabileceğini kısıtlamaz; her araç çağrılabilir durumda kalır.
Becerilere Argüman Geçirme (Pass Arguments to Skills)
Hem siz hem de Claude, bir beceriyi çağırırken argümanlar geçirebilirsiniz. Argümanlar $ARGUMENTS yer tutucusu aracılığıyla kullanılabilir:
---
name: fix-issue
description: Fix a GitHub issue
disable-model-invocation: true
---
Fix GitHub issue $ARGUMENTS following our coding standards.
1. Read the issue description
2. Understand the requirements
3. Implement the fix
4. Write tests
5. Create a commit
/fix-issue 123 yazdığınızda, Claude "Fix GitHub issue 123 following our coding standards..." mesajını alır.
Gelişmiş Desenler (Advanced Patterns)
Dinamik Bağlam Ekleme (Inject Dynamic Context)
!
## Pull request context
- PR diff: !`gh pr diff`
- PR comments: !`gh pr view --comments`
- Changed files: !`gh pr diff --name-only`
Çok satırlı komutlar için ```! ile açılan bir kod bloğu kullanın.
Becerileri Alt-Agent'ta Çalıştırma (Run Skills in a Subagent)
Frontmatter'a context: fork ekleyerek bir becerinin izole bir ortamda çalışmasını sağlayabilirsiniz. Beceri içeriği, alt-agent'ı yönlendiren prompt haline gelir. Konuşma geçmişinize erişimi olmaz:
---
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
Claude'un Beceri Erişimini Kısıtlama (Restrict Claude's Skill Access)
Claude'un hangi becerileri çağırabileceğini kontrol etmenin üç yolu:
- Tüm becerileri devre dışı bırakma:
/permissionsiçindeSkillaracını reddetme - Belirli becerilere izin verme/reddetme: İzin kuralları kullanma (
Skill(commit),Skill(deploy *)) - Bireysel becerileri gizleme: Frontmatter'a
disable-model-invocation: trueekleme
Beceri Görünürlüğünü Ayarlardan Geçersiz Kılma (Override Skill Visibility from Settings)
skillOverrides ayarı, beceri görünürlüğünü becerinin kendi frontmatter'ı yerine ayarlarınızdan kontrol eder:
{
"skillOverrides": {
"legacy-context": "name-only",
"deploy": "off"
}
}
Her değer dört durumdan birini alır: "on", "name-only", "user-invocable-only", "off".
Becerileri Paylaşma (Share Skills)
Beceriler farklı kapsamlarda dağıtılabilir:
- Proje becerileri:
.claude/skills/klasörünü sürüm kontrolüne ekleyin - Eklentiler: Eklentinizde
skills/dizini oluşturun - Yönetilen: Yönetilen ayarlar aracılığıyla organizasyon çapında dağıtın
Görsel Çıktı Oluşturma (Generate Visual Output)
Beceriler, herhangi bir dilde script'ler paketleyip çalıştırabilir. Güçlü bir desen, etkileşimli HTML dosyaları oluşturmaktır. Örnek olarak, kod tabanı görselleştirici becerisi, Python script'i ile proje yapısını gösteren etkileşimli bir ağaç görünümü oluşturur.
Sorun Giderme (Troubleshooting)
Beceri Tetiklenmiyor (Skill Not Triggering)
- Açıklamanın, kullanıcıların doğal olarak söyleyeceği anahtar kelimeleri içerdiğini kontrol edin
- Becerinin "What skills are available?" listesinde göründüğünü doğrulayın
- Talebinizi açıklamayla daha yakından eşleşecek şekilde yeniden ifade edin
- Beceri kullanıcı tarafından çağrılabilir ise doğrudan
/beceri-adiile çağırın
Beceri Çok Sık Tetikleniyor (Skill Triggers Too Often)
- Açıklamayı daha spesifik hale getirin
- Yalnızca manuel çağırma istiyorsanız
disable-model-invocation: trueekleyin
Beceri Açıklamaları Kesiliyor (Skill Descriptions Are Cut Short)
Beceri açıklamaları bağlama yüklenir. Çok sayıda beceriniz varsa, açıklamalar karakter bütçesine sığacak şekilde kısaltılabilir. /doctor komutunu çalıştırarak bütçenin taşıp taşmadığını ve hangi becerilerin etkilendiğini görebilirsiniz.
İlgili Kaynaklar (Related Resources)
- Yapılandırmanızı hata ayıklama: Bir becerinin neden görünmediğini veya tetiklenmediğini teşhis edin
- Alt-agent'lar: Görevleri uzmanlaşmış agent'lara devredin
- Eklentiler: Becerileri diğer uzantılarla paketleyin ve dağıtın
- Hook'lar: Araç olayları etrafında iş akışlarını otomatikleştirin
- Bellek: Kalıcı bağlam için
CLAUDE.mddosyalarını yönetin - Komutlar: Yerleşik komutlar ve dahil edilen beceriler için referans
- İzinler: Araç ve beceri erişimini kontrol edin
Örnek Kullanım Senaryosu
Bir geliştirici, büyük bir monorepo projesinde çalışıyor ve sık sık yaptığı değişiklikleri özetleyip commit mesajı oluşturması gerekiyor. Ayrıca, belirli bir GitHub issue'sunu düzeltmek için standart bir iş akışı izlemek istiyor.
Kişisel beceri dizinini oluşturun:
mkdir -p ~/.claude/skills/commit-helper~/.claude/skills/commit-helper/SKILL.mddosyasını oluşturun:--- description: Summarizes uncommitted changes and creates a commit message. Use when the user asks to commit changes or wants a commit message. disable-model-invocation: true allowed-tools: Bash(git add *) Bash(git commit *) Bash(git status *) Bash(git diff *) --- ## Current changes !`git diff HEAD` ## Instructions 1. Summarize the changes above in bullet points 2. Create a descriptive commit message following conventional commits format 3. Stage all changes with `git add -A` 4. Commit with the generated message using `git commit -m "<message>"`Proje bazlı bir issue düzeltme becerisi oluşturun:
mkdir -p .claude/skills/fix-issue.claude/skills/fix-issue/SKILL.mddosyasını oluşturun:--- name: fix-issue description: Fix a GitHub issue by number disable-model-invocation: true --- Fix GitHub issue $ARGUMENTS following our coding standards: 1. Read the issue description from GitHub 2. Understand the requirements 3. Implement the fix 4. Write tests for the fix 5. Create a commit with the changesKullanım: Projede değişiklik yaptıktan sonra
/commit-helperyazın. Claude, değişiklikleri özetleyecek, bir commit mesajı oluşturacak ve commit işlemini gerçekleştirecek. Bir issue'yu düzeltmek için/fix-issue 42yazın, Claude issue'yu okuyup standart iş akışını uygulayacak.