mirror of
https://github.com/affaan-m/ECC.git
synced 2026-09-08 07:37:48 +02:00
462 lines
12 KiB
Markdown
462 lines
12 KiB
Markdown
# Everything Claude Code'a Katkıda Bulunma
|
||||
|
|
|
|||
|
|
Katkıda bulunmak istediğiniz için teşekkürler! Bu repo, Claude Code kullanıcıları için bir topluluk kaynağıdır.
|
|||
|
|
|
|||
|
|
## İçindekiler
|
|||
|
|
|
|||
|
|
- [Ne Arıyoruz](#ne-arıyoruz)
|
|||
|
|
- [Hızlı Başlangıç](#hızlı-başlangıç)
|
|||
|
|
- [Skill'lere Katkıda Bulunma](#skilllere-katkıda-bulunma)
|
|||
|
|
- [Agent'lara Katkıda Bulunma](#agentlara-katkıda-bulunma)
|
|||
|
|
- [Hook'lara Katkıda Bulunma](#hooklara-katkıda-bulunma)
|
|||
|
|
- [Command'lara Katkıda Bulunma](#commandlara-katkıda-bulunma)
|
|||
|
|
- [MCP ve dokümantasyon (örn. Context7)](#mcp-ve-dokümantasyon-örn-context7)
|
|||
|
|
- [Cross-Harness ve Çeviriler](#cross-harness-ve-çeviriler)
|
|||
|
|
- [Pull Request Süreci](#pull-request-süreci)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Ne Arıyoruz
|
|||
|
|
|
|||
|
|
### Agent'lar
|
|||
|
|
Belirli görevleri iyi yöneten yeni agent'lar:
|
|||
|
|
- Dile özgü reviewer'lar (Python, Go, Rust)
|
|||
|
|
- Framework uzmanları (Django, Rails, Laravel, Spring)
|
|||
|
|
- DevOps uzmanları (Kubernetes, Terraform, CI/CD)
|
|||
|
|
- Alan uzmanları (ML pipeline'ları, data engineering, mobil)
|
|||
|
|
|
|||
|
|
### Skill'ler
|
|||
|
|
Workflow tanımları ve alan bilgisi:
|
|||
|
|
- Dil en iyi uygulamaları
|
|||
|
|
- Framework pattern'leri
|
|||
|
|
- Test stratejileri
|
|||
|
|
- Mimari kılavuzları
|
|||
|
|
|
|||
|
|
### Hook'lar
|
|||
|
|
Faydalı otomasyonlar:
|
|||
|
|
- Linting/formatlama hook'ları
|
|||
|
|
- Güvenlik kontrolleri
|
|||
|
|
- Doğrulama hook'ları
|
|||
|
|
- Bildirim hook'ları
|
|||
|
|
|
|||
|
|
### Command'lar
|
|||
|
|
Faydalı workflow'ları çağıran slash command'lar:
|
|||
|
|
- Deployment command'ları
|
|||
|
|
- Test command'ları
|
|||
|
|
- Kod üretim command'ları
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Hızlı Başlangıç
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. Fork ve clone
|
|||
|
|
gh repo fork affaan-m/everything-claude-code --clone
|
|||
|
|
cd everything-claude-code
|
|||
|
|
|
|||
|
|
# 2. Branch oluştur
|
|||
|
|
git checkout -b feat/my-contribution
|
|||
|
|
|
|||
|
|
# 3. Katkınızı ekleyin (aşağıdaki bölümlere bakın)
|
|||
|
|
|
|||
|
|
# 4. Yerel olarak test edin
|
|||
|
|
cp -r skills/my-skill ~/.claude/skills/ # skill'ler için
|
|||
|
|
# Ardından Claude Code ile test edin
|
|||
|
|
|
|||
|
|
# 5. PR gönderin
|
|||
|
|
git add . && git commit -m "feat: add my-skill" && git push -u origin feat/my-contribution
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Skill'lere Katkıda Bulunma
|
|||
|
|
|
|||
|
|
Skill'ler, Claude Code'un bağlama göre yüklediği bilgi modülleridir.
|
|||
|
|
|
|||
|
|
### Dizin Yapısı
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
skills/
|
|||
|
|
└── your-skill-name/
|
|||
|
|
└── SKILL.md
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### SKILL.md Şablonu
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
name: your-skill-name
|
|||
|
|
description: Skill listesinde gösterilen kısa açıklama
|
|||
|
|
origin: ECC
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Skill Başlığınız
|
|||
|
|
|
|||
|
|
Bu skill'in neyi kapsadığına dair kısa genel bakış.
|
|||
|
|
|
|||
|
|
## Temel Kavramlar
|
|||
|
|
|
|||
|
|
Temel pattern'leri ve yönergeleri açıklayın.
|
|||
|
|
|
|||
|
|
## Kod Örnekleri
|
|||
|
|
|
|||
|
|
\`\`\`typescript
|
|||
|
|
// Pratik, test edilmiş örnekler ekleyin
|
|||
|
|
function example() {
|
|||
|
|
// İyi yorumlanmış kod
|
|||
|
|
}
|
|||
|
|
\`\`\`
|
|||
|
|
|
|||
|
|
## En İyi Uygulamalar
|
|||
|
|
|
|||
|
|
- Uygulanabilir yönergeler
|
|||
|
|
- Yapılması ve yapılmaması gerekenler
|
|||
|
|
- Kaçınılması gereken yaygın hatalar
|
|||
|
|
|
|||
|
|
## Ne Zaman Kullanılır
|
|||
|
|
|
|||
|
|
Bu skill'in uygulandığı senaryoları açıklayın.
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Skill Kontrol Listesi
|
|||
|
|
|
|||
|
|
- [ ] Tek bir alan/teknolojiye odaklanmış
|
|||
|
|
- [ ] Pratik kod örnekleri içeriyor
|
|||
|
|
- [ ] 500 satırın altında
|
|||
|
|
- [ ] Net bölüm başlıkları kullanıyor
|
|||
|
|
- [ ] Claude Code ile test edilmiş
|
|||
|
|
|
|||
|
|
### Örnek Skill'ler
|
|||
|
|
|
|||
|
|
| Skill | Amaç |
|
|||
|
|
|-------|---------|
|
|||
|
|
| `coding-standards/` | TypeScript/JavaScript pattern'leri |
|
|||
|
|
| `frontend-patterns/` | React ve Next.js en iyi uygulamaları |
|
|||
|
|
| `backend-patterns/` | API ve veritabanı pattern'leri |
|
|||
|
|
| `security-review/` | Güvenlik kontrol listesi |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Agent'lara Katkıda Bulunma
|
|||
|
|
|
|||
|
|
Agent'lar, Task tool üzerinden çağrılan özelleşmiş asistanlardır.
|
|||
|
|
|
|||
|
|
### Dosya Konumu
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
agents/your-agent-name.md
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Agent Şablonu
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
name: your-agent-name
|
|||
|
|
description: Bu agent'ın ne yaptığı ve Claude'un onu ne zaman çağırması gerektiği. Spesifik olun!
|
|||
|
|
tools: ["Read", "Write", "Edit", "Bash", "Grep", "Glob"]
|
|||
|
|
model: sonnet
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
Siz bir [rol] uzmanısınız.
|
|||
|
|
|
|||
|
|
## Rolünüz
|
|||
|
|
|
|||
|
|
- Birincil sorumluluk
|
|||
|
|
- İkincil sorumluluk
|
|||
|
|
- YAPMADIĞINIZ şeyler (sınırlar)
|
|||
|
|
|
|||
|
|
## Workflow
|
|||
|
|
|
|||
|
|
### Adım 1: Anlama
|
|||
|
|
Göreve nasıl yaklaşıyorsunuz.
|
|||
|
|
|
|||
|
|
### Adım 2: Uygulama
|
|||
|
|
İşi nasıl gerçekleştiriyorsunuz.
|
|||
|
|
|
|||
|
|
### Adım 3: Doğrulama
|
|||
|
|
Sonuçları nasıl doğruluyorsunuz.
|
|||
|
|
|
|||
|
|
## Çıktı Formatı
|
|||
|
|
|
|||
|
|
Kullanıcıya ne döndürüyorsunuz.
|
|||
|
|
|
|||
|
|
## Örnekler
|
|||
|
|
|
|||
|
|
### Örnek: [Senaryo]
|
|||
|
|
Girdi: [kullanıcının sağladığı]
|
|||
|
|
Eylem: [yaptığınız]
|
|||
|
|
Çıktı: [döndürdüğünüz]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Agent Alanları
|
|||
|
|
|
|||
|
|
| Alan | Açıklama | Seçenekler |
|
|||
|
|
|-------|-------------|---------|
|
|||
|
|
| `name` | Küçük harf, tire ile ayrılmış | `code-reviewer` |
|
|||
|
|
| `description` | Ne zaman çağrılacağına karar vermek için kullanılır | Spesifik olun! |
|
|||
|
|
| `tools` | Sadece gerekli olanlar | `Read, Write, Edit, Bash, Grep, Glob, WebFetch, Task`, veya agent MCP kullanıyorsa MCP tool isimleri (örn. `mcp__context7__resolve-library-id`, `mcp__context7__query-docs`) |
|
|||
|
|
| `model` | Karmaşıklık seviyesi | `haiku` (basit), `sonnet` (kodlama), `opus` (karmaşık) |
|
|||
|
|
|
|||
|
|
### Örnek Agent'lar
|
|||
|
|
|
|||
|
|
| Agent | Amaç |
|
|||
|
|
|-------|---------|
|
|||
|
|
| `tdd-guide.md` | Test odaklı geliştirme |
|
|||
|
|
| `code-reviewer.md` | Kod incelemesi |
|
|||
|
|
| `security-reviewer.md` | Güvenlik taraması |
|
|||
|
|
| `build-error-resolver.md` | Build hatalarını düzeltme |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Hook'lara Katkıda Bulunma
|
|||
|
|
|
|||
|
|
Hook'lar, Claude Code olayları tarafından tetiklenen otomatik davranışlardır.
|
|||
|
|
|
|||
|
|
### Dosya Konumu
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
hooks/hooks.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Hook Türleri
|
|||
|
|
|
|||
|
|
| Tür | Tetikleyici | Kullanım Alanı |
|
|||
|
|
|------|---------|----------|
|
|||
|
|
| `PreToolUse` | Tool çalışmadan önce | Doğrulama, uyarı, engelleme |
|
|||
|
|
| `PostToolUse` | Tool çalıştıktan sonra | Formatlama, kontrol, bildirim |
|
|||
|
|
| `SessionStart` | Oturum başladığında | Bağlam yükleme |
|
|||
|
|
| `Stop` | Oturum sona erdiğinde | Temizleme, denetim |
|
|||
|
|
|
|||
|
|
### Hook Formatı
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"hooks": {
|
|||
|
|
"PreToolUse": [
|
|||
|
|
{
|
|||
|
|
"matcher": "tool == \"Bash\" && tool_input.command matches \"rm -rf /\"",
|
|||
|
|
"hooks": [
|
|||
|
|
{
|
|||
|
|
"type": "command",
|
|||
|
|
"command": "echo '[Hook] ENGELLENDİ: Tehlikeli komut' && exit 1"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"description": "Tehlikeli rm komutlarını engelle"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Matcher Sözdizimi
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// Belirli tool'ları eşleştir
|
|||
|
|
tool == "Bash"
|
|||
|
|
tool == "Edit"
|
|||
|
|
tool == "Write"
|
|||
|
|
|
|||
|
|
// Girdi pattern'lerini eşleştir
|
|||
|
|
tool_input.command matches "npm install"
|
|||
|
|
tool_input.file_path matches "\\.tsx?$"
|
|||
|
|
|
|||
|
|
// Koşulları birleştir
|
|||
|
|
tool == "Bash" && tool_input.command matches "git push"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Hook Örnekleri
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
// tmux dışında dev server'ları engelle
|
|||
|
|
{
|
|||
|
|
"matcher": "tool == \"Bash\" && tool_input.command matches \"npm run dev\"",
|
|||
|
|
"hooks": [{"type": "command", "command": "echo 'Dev server'lar için tmux kullanın' && exit 1"}],
|
|||
|
|
"description": "Dev server'ların tmux'ta çalışmasını sağla"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// TypeScript düzenledikten sonra otomatik formatla
|
|||
|
|
{
|
|||
|
|
"matcher": "tool == \"Edit\" && tool_input.file_path matches \"\\.tsx?$\"",
|
|||
|
|
"hooks": [{"type": "command", "command": "npx prettier --write \"$file_path\""}],
|
|||
|
|
"description": "TypeScript dosyalarını düzenlemeden sonra formatla"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// git push öncesi uyar
|
|||
|
|
{
|
|||
|
|
"matcher": "tool == \"Bash\" && tool_input.command matches \"git push\"",
|
|||
|
|
"hooks": [{"type": "command", "command": "echo '[Hook] Push yapmadan önce değişiklikleri gözden geçirin'"}],
|
|||
|
|
"description": "Push öncesi gözden geçirme hatırlatıcısı"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Hook Kontrol Listesi
|
|||
|
|
|
|||
|
|
- [ ] Matcher spesifik (aşırı geniş değil)
|
|||
|
|
- [ ] Net hata/bilgi mesajları içeriyor
|
|||
|
|
- [ ] Doğru çıkış kodlarını kullanıyor (`exit 1` engeller, `exit 0` izin verir)
|
|||
|
|
- [ ] Kapsamlı test edilmiş
|
|||
|
|
- [ ] Açıklama içeriyor
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Command'lara Katkıda Bulunma
|
|||
|
|
|
|||
|
|
Command'lar, `/command-name` ile kullanıcı tarafından çağrılan eylemlerdir.
|
|||
|
|
|
|||
|
|
### Dosya Konumu
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
commands/your-command.md
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Command Şablonu
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: /help'te gösterilen kısa açıklama
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Command Adı
|
|||
|
|
|
|||
|
|
## Amaç
|
|||
|
|
|
|||
|
|
Bu command'ın ne yaptığı.
|
|||
|
|
|
|||
|
|
## Kullanım
|
|||
|
|
|
|||
|
|
\`\`\`
|
|||
|
|
/your-command [args]
|
|||
|
|
\`\`\`
|
|||
|
|
|
|||
|
|
## Workflow
|
|||
|
|
|
|||
|
|
1. İlk adım
|
|||
|
|
2. İkinci adım
|
|||
|
|
3. Son adım
|
|||
|
|
|
|||
|
|
## Çıktı
|
|||
|
|
|
|||
|
|
Kullanıcının aldığı.
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Örnek Command'lar
|
|||
|
|
|
|||
|
|
| Command | Amaç |
|
|||
|
|
|---------|---------|
|
|||
|
|
| `commit.md` | Git commit'leri oluştur |
|
|||
|
|
| `code-review.md` | Kod değişikliklerini incele |
|
|||
|
|
| `tdd.md` | TDD workflow'u |
|
|||
|
|
| `e2e.md` | E2E test |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## MCP ve dokümantasyon (örn. Context7)
|
|||
|
|
|
|||
|
|
Skill'ler ve agent'lar, sadece eğitim verilerine güvenmek yerine güncel verileri çekmek için **MCP (Model Context Protocol)** tool'larını kullanabilir. Bu özellikle dokümantasyon için faydalıdır.
|
|||
|
|
|
|||
|
|
- **Context7**, `resolve-library-id` ve `query-docs`'u açığa çıkaran bir MCP server'ıdır. Kullanıcı kütüphaneler, framework'ler veya API'ler hakkında sorduğunda, cevapların güncel dokümantasyonu ve kod örneklerini yansıtması için kullanın.
|
|||
|
|
- Canlı dokümantasyona bağlı **skill'lere** katkıda bulunurken (örn. kurulum, API kullanımı), ilgili MCP tool'larının nasıl kullanılacağını açıklayın (örn. kütüphane ID'sini çözümle, ardından dokümantasyonu sorgula) ve pattern olarak `documentation-lookup` skill'ine veya Context7'ye işaret edin.
|
|||
|
|
- Dokümantasyon/API sorularını yanıtlayan **agent'lara** katkıda bulunurken, agent'ın tool'larına Context7 MCP tool isimlerini ekleyin (örn. `mcp__context7__resolve-library-id`, `mcp__context7__query-docs`) ve çözümle → sorgula workflow'unu belgeleyin.
|
|||
|
|
- **mcp-configs/mcp-servers.json** bir Context7 girişi içerir; kullanıcılar `documentation-lookup` skill'ini (`skills/documentation-lookup/` içinde) ve `/docs` command'ını kullanmak için bunu harness'lerinde (örn. Claude Code, Cursor) etkinleştirir.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Cross-Harness ve Çeviriler
|
|||
|
|
|
|||
|
|
### Skill alt kümeleri (Codex ve Cursor)
|
|||
|
|
|
|||
|
|
ECC, diğer harness'ler için skill alt kümeleri içerir:
|
|||
|
|
|
|||
|
|
- **Codex:** `.agents/skills/` — `agents/openai.yaml` içinde listelenen skill'ler Codex tarafından yüklenir.
|
|||
|
|
- **Cursor:** `.cursor/skills/` — Cursor için bir skill alt kümesi paketlenmiştir.
|
|||
|
|
|
|||
|
|
Codex veya Cursor'da kullanılabilir olması gereken **yeni bir skill eklediğinizde**:
|
|||
|
|
|
|||
|
|
1. Skill'i her zamanki gibi `skills/your-skill-name/` altına ekleyin.
|
|||
|
|
2. **Codex**'te kullanılabilir olması gerekiyorsa, `.agents/skills/` altına ekleyin (skill dizinini kopyalayın veya referans ekleyin) ve gerekirse `agents/openai.yaml` içinde referans verildiğinden emin olun.
|
|||
|
|
3. **Cursor**'da kullanılabilir olması gerekiyorsa, Cursor'un düzenine göre `.cursor/skills/` altına ekleyin.
|
|||
|
|
|
|||
|
|
Beklenen yapı için bu dizinlerdeki mevcut skill'leri kontrol edin. Bu alt kümeleri senkronize tutmak manuel bir işlemdir; bunları güncellediyseniz PR'ınızda belirtin.
|
|||
|
|
|
|||
|
|
### Çeviriler
|
|||
|
|
|
|||
|
|
Çeviriler `docs/` altında bulunur (örn. `docs/zh-CN`, `docs/zh-TW`, `docs/ja-JP`). Çevrilmiş agent'ları, command'ları veya skill'leri değiştirirseniz, ilgili çeviri dosyalarını güncellemeyi veya bakımcıların ya da çevirmenlerin bunları güncelleyebilmesi için bir issue açmayı düşünün.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Pull Request Süreci
|
|||
|
|
|
|||
|
|
### 1. PR Başlık Formatı
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
feat(skills): add rust-patterns skill
|
|||
|
|
feat(agents): add api-designer agent
|
|||
|
|
feat(hooks): add auto-format hook
|
|||
|
|
fix(skills): update React patterns
|
|||
|
|
docs: improve contributing guide
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. PR Açıklaması
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
## Özet
|
|||
|
|
Ne eklediğiniz ve neden.
|
|||
|
|
|
|||
|
|
## Tür
|
|||
|
|
- [ ] Skill
|
|||
|
|
- [ ] Agent
|
|||
|
|
- [ ] Hook
|
|||
|
|
- [ ] Command
|
|||
|
|
|
|||
|
|
## Test
|
|||
|
|
Bunu nasıl test ettiniz.
|
|||
|
|
|
|||
|
|
## Kontrol Listesi
|
|||
|
|
- [ ] Format yönergelerini takip ediyor
|
|||
|
|
- [ ] Claude Code ile test edildi
|
|||
|
|
- [ ] Hassas bilgi yok (API anahtarları, yollar)
|
|||
|
|
- [ ] Net açıklamalar
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. İnceleme Süreci
|
|||
|
|
|
|||
|
|
1. Bakımcılar 48 saat içinde inceler
|
|||
|
|
2. İstenirse geri bildirimlere cevap verin
|
|||
|
|
3. Onaylandığında, main'e merge edilir
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Yönergeler
|
|||
|
|
|
|||
|
|
### Yapın
|
|||
|
|
- Katkıları odaklanmış ve modüler tutun
|
|||
|
|
- Net açıklamalar ekleyin
|
|||
|
|
- Göndermeden önce test edin
|
|||
|
|
- Mevcut pattern'leri takip edin
|
|||
|
|
- Bağımlılıkları belgeleyin
|
|||
|
|
|
|||
|
|
### Yapmayın
|
|||
|
|
- Hassas veri eklemeyin (API anahtarları, token'lar, yollar)
|
|||
|
|
- Aşırı karmaşık veya niş config'ler eklemeyin
|
|||
|
|
- Test edilmemiş katkılar göndermeyin
|
|||
|
|
- Mevcut işlevselliğin kopyalarını oluşturmayın
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Dosya Adlandırma
|
|||
|
|
|
|||
|
|
- Tire ile küçük harf kullanın: `python-reviewer.md`
|
|||
|
|
- Açıklayıcı olun: `tdd-workflow.md` değil `workflow.md`
|
|||
|
|
- İsim, dosya adıyla eşleşsin
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Sorularınız mı var?
|
|||
|
|
|
|||
|
|
- **Issue'lar:** [github.com/affaan-m/everything-claude-code/issues](https://github.com/affaan-m/everything-claude-code/issues)
|
|||
|
|
- **X/Twitter:** [@affaanmustafa](https://x.com/affaanmustafa)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
Katkıda bulunduğunuz için teşekkürler! Birlikte harika bir kaynak oluşturalım.
|