mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-07 01:33:31 +08:00
Add Turkish (tr) docs and update README (#744)
* Add Turkish (tr) docs and update README Add a full set of Turkish documentation under docs/tr (agents, changelog, CLAUDE guide, contributing, code of conduct, and many agents/commands/skills/rules files). Update README to include a link to the Turkish docs and increment the supported language count from 5 to 6. This commit adds localized guidance and references to help Turkish-speaking contributors and users. * Update docs/tr/TROUBLESHOOTING.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/tr/README.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * docs(tr): fix license link and update readmes Update Turkish docs: change license badge link to point to repository root (../../LICENSE), increment displayed language count from 5 to 6, and remove two outdated related links from docs/tr/examples/README.md to keep references accurate. * Update docs/tr/commands/instinct-import.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/tr/commands/checkpoint.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> --------- Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
bb1efad7c7
commit
fd2a8edb53
61
docs/tr/rules/README.md
Normal file
61
docs/tr/rules/README.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# Kurallar (Rules)
|
||||
|
||||
Claude Code için kodlama kuralları ve en iyi uygulamalar.
|
||||
|
||||
## Dizin Yapısı
|
||||
|
||||
### Common (Dile Bağımsız Kurallar)
|
||||
|
||||
Tüm programlama dillerine uygulanan temel kurallar:
|
||||
|
||||
- **agents.md** - Agent orkestrasyonu ve kullanımı
|
||||
- **coding-style.md** - Genel kodlama stili kuralları (immutability, dosya organizasyonu, hata yönetimi)
|
||||
- **development-workflow.md** - Özellik geliştirme iş akışı (araştırma, planlama, TDD, kod incelemesi)
|
||||
- **git-workflow.md** - Git commit ve PR iş akışı
|
||||
- **hooks.md** - Hook sistemi (PreToolUse, PostToolUse, Stop)
|
||||
- **patterns.md** - Yaygın tasarım pattern'leri (Repository, API Response Format)
|
||||
- **performance.md** - Performans optimizasyonu (model seçimi, context window yönetimi)
|
||||
- **security.md** - Güvenlik kuralları (secret yönetimi, güvenlik kontrolleri)
|
||||
- **testing.md** - Test gereksinimleri (TDD, minimum %80 coverage)
|
||||
|
||||
### TypeScript/JavaScript
|
||||
|
||||
TypeScript ve JavaScript projeleri için özel kurallar:
|
||||
|
||||
- **coding-style.md** - Tip sistemleri, immutability, hata yönetimi, input validasyonu
|
||||
- **hooks.md** - Prettier, TypeScript check, console.log uyarıları
|
||||
- **patterns.md** - API response format, custom hooks, repository pattern
|
||||
- **security.md** - Secret yönetimi, environment variable'lar
|
||||
- **testing.md** - Playwright E2E testing
|
||||
|
||||
### Python
|
||||
|
||||
Python projeleri için özel kurallar:
|
||||
|
||||
- **coding-style.md** - PEP 8, type annotation'lar, immutability, formatlama araçları
|
||||
- **hooks.md** - black/ruff formatlama, mypy/pyright tip kontrolü
|
||||
- **patterns.md** - Protocol (duck typing), dataclass'lar, context manager'lar
|
||||
- **security.md** - Secret yönetimi, bandit güvenlik taraması
|
||||
- **testing.md** - pytest framework, coverage, test organizasyonu
|
||||
|
||||
### Golang
|
||||
|
||||
Go projeleri için özel kurallar:
|
||||
|
||||
- **coding-style.md** - gofmt/goimports, tasarım ilkeleri, hata yönetimi
|
||||
- **hooks.md** - gofmt/goimports formatlama, go vet, staticcheck
|
||||
- **patterns.md** - Functional options, küçük interface'ler, dependency injection
|
||||
- **security.md** - Secret yönetimi, gosec güvenlik taraması, context & timeout'lar
|
||||
- **testing.md** - Table-driven testler, race detection, coverage
|
||||
|
||||
## Kullanım
|
||||
|
||||
Bu kurallar Claude Code tarafından otomatik olarak yüklenir ve uygulanır. Kurallar:
|
||||
|
||||
1. **Dile bağımsız** - `common/` dizinindeki kurallar tüm projeler için geçerlidir
|
||||
2. **Dile özgü** - İlgili dil dizinindeki kurallar (typescript/, python/, golang/) common kuralları genişletir
|
||||
3. **Path tabanlı** - Kurallar YAML frontmatter'daki path pattern'leri ile eşleşen dosyalara uygulanır
|
||||
|
||||
## Orijinal Dokümantasyon
|
||||
|
||||
Bu dokümantasyonun İngilizce orijinali `rules/` dizininde bulunmaktadır.
|
||||
50
docs/tr/rules/common/agents.md
Normal file
50
docs/tr/rules/common/agents.md
Normal file
@@ -0,0 +1,50 @@
|
||||
# Agent Orkestrasyonu
|
||||
|
||||
## Mevcut Agent'lar
|
||||
|
||||
`~/.claude/agents/` dizininde bulunur:
|
||||
|
||||
| Agent | Amaç | Ne Zaman Kullanılır |
|
||||
|-------|---------|-------------|
|
||||
| planner | Uygulama planlaması | Karmaşık özellikler, refactoring |
|
||||
| architect | Sistem tasarımı | Mimari kararlar |
|
||||
| tdd-guide | Test odaklı geliştirme | Yeni özellikler, hata düzeltmeleri |
|
||||
| code-reviewer | Kod incelemesi | Kod yazdıktan sonra |
|
||||
| security-reviewer | Güvenlik analizi | Commit'lerden önce |
|
||||
| build-error-resolver | Build hatalarını düzeltme | Build başarısız olduğunda |
|
||||
| e2e-runner | E2E testleri | Kritik kullanıcı akışları |
|
||||
| refactor-cleaner | Ölü kod temizliği | Kod bakımı |
|
||||
| doc-updater | Dokümantasyon | Dokümanları güncelleme |
|
||||
| rust-reviewer | Rust kod incelemesi | Rust projeleri |
|
||||
|
||||
## Anlık Agent Kullanımı
|
||||
|
||||
Kullanıcı istemi gerekmez:
|
||||
1. Karmaşık özellik istekleri - **planner** agent kullan
|
||||
2. Kod yeni yazıldı/değiştirildi - **code-reviewer** agent kullan
|
||||
3. Hata düzeltmesi veya yeni özellik - **tdd-guide** agent kullan
|
||||
4. Mimari karar - **architect** agent kullan
|
||||
|
||||
## Paralel Görev Yürütme
|
||||
|
||||
Bağımsız işlemler için DAIMA paralel Task yürütme kullan:
|
||||
|
||||
```markdown
|
||||
# İYİ: Paralel yürütme
|
||||
3 agent'ı paralel başlat:
|
||||
1. Agent 1: Auth modülü güvenlik analizi
|
||||
2. Agent 2: Cache sistemi performans incelemesi
|
||||
3. Agent 3: Utilities tip kontrolü
|
||||
|
||||
# KÖTÜ: Gereksiz sıralı yürütme
|
||||
Önce agent 1, sonra agent 2, sonra agent 3
|
||||
```
|
||||
|
||||
## Çok Perspektifli Analiz
|
||||
|
||||
Karmaşık problemler için split role sub-agent'lar kullan:
|
||||
- Factual reviewer
|
||||
- Senior engineer
|
||||
- Security expert
|
||||
- Consistency reviewer
|
||||
- Redundancy checker
|
||||
48
docs/tr/rules/common/coding-style.md
Normal file
48
docs/tr/rules/common/coding-style.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# Kodlama Stili
|
||||
|
||||
## Immutability (KRİTİK)
|
||||
|
||||
DAIMA yeni nesneler oluştur, mevcut olanları ASLA değiştirme:
|
||||
|
||||
```
|
||||
// Pseudocode
|
||||
YANLIŞ: modify(original, field, value) → original'i yerinde değiştirir
|
||||
DOĞRU: update(original, field, value) → değişiklikle birlikte yeni kopya döner
|
||||
```
|
||||
|
||||
Gerekçe: Immutable veri gizli yan etkileri önler, debug'ı kolaylaştırır ve güvenli eşzamanlılık sağlar.
|
||||
|
||||
## Dosya Organizasyonu
|
||||
|
||||
ÇOK KÜÇÜK DOSYA > AZ BÜYÜK DOSYA:
|
||||
- Yüksek kohezyon, düşük coupling
|
||||
- Tipik 200-400 satır, maksimum 800
|
||||
- Büyük modüllerden utility'leri çıkar
|
||||
- Type'a göre değil, feature/domain'e göre organize et
|
||||
|
||||
## Hata Yönetimi
|
||||
|
||||
Hataları DAIMA kapsamlı bir şekilde yönet:
|
||||
- Her seviyede hataları açıkça ele al
|
||||
- UI'ye yönelik kodda kullanıcı dostu hata mesajları ver
|
||||
- Server tarafında detaylı hata bağlamı logla
|
||||
- Hataları asla sessizce yutma
|
||||
|
||||
## Input Validasyonu
|
||||
|
||||
Sistem sınırlarında DAIMA validate et:
|
||||
- İşlemeden önce tüm kullanıcı girdilerini validate et
|
||||
- Mümkün olan yerlerde schema tabanlı validasyon kullan
|
||||
- Açık hata mesajlarıyla hızlıca başarısız ol
|
||||
- Harici verilere asla güvenme (API yanıtları, kullanıcı girdisi, dosya içeriği)
|
||||
|
||||
## Kod Kalitesi Kontrol Listesi
|
||||
|
||||
İşi tamamlandı olarak işaretlemeden önce:
|
||||
- [ ] Kod okunabilir ve iyi adlandırılmış
|
||||
- [ ] Fonksiyonlar küçük (<50 satır)
|
||||
- [ ] Dosyalar odaklı (<800 satır)
|
||||
- [ ] Derin iç içe geçme yok (>4 seviye)
|
||||
- [ ] Düzgün hata yönetimi
|
||||
- [ ] Hardcoded değer yok (sabit veya config kullan)
|
||||
- [ ] Mutasyon yok (immutable pattern'ler kullanıldı)
|
||||
38
docs/tr/rules/common/development-workflow.md
Normal file
38
docs/tr/rules/common/development-workflow.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Geliştirme İş Akışı
|
||||
|
||||
> Bu dosya [common/git-workflow.md](./git-workflow.md) dosyasını git işlemlerinden önce gerçekleşen tam özellik geliştirme süreci ile genişletir.
|
||||
|
||||
Feature Implementation Workflow geliştirme pipeline'ını tanımlar: araştırma, planlama, TDD, kod incelemesi ve ardından git'e commit.
|
||||
|
||||
## Feature Uygulama İş Akışı
|
||||
|
||||
0. **Araştırma & Yeniden Kullanım** _(her yeni implementasyondan önce zorunlu)_
|
||||
- **Önce GitHub kod araması:** Yeni bir şey yazmadan önce mevcut implementasyonları, şablonları ve pattern'leri bulmak için `gh search repos` ve `gh search code` çalıştır.
|
||||
- **İkinci olarak kütüphane dokümanları:** Uygulamadan önce API davranışını, paket kullanımını ve versiyona özgü detayları doğrulamak için Context7 veya birincil vendor dokümanlarını kullan.
|
||||
- **İlk ikisi yetersiz olduğunda Exa:** GitHub araması ve birincil dokümanlardan sonra daha geniş web araştırması veya keşif için Exa kullan.
|
||||
- **Paket kayıtlarını kontrol et:** Utility kodu yazmadan önce npm, PyPI, crates.io ve diğer kayıtları ara. Kendi çözümlerinden ziyade test edilmiş kütüphaneleri tercih et.
|
||||
- **Adapte edilebilir implementasyonlar ara:** Problemin %80+'sını çözen ve fork'lanabilir, port edilebilir veya wrap edilebilir açık kaynak projeler ara.
|
||||
- Gereksinimi karşıladığında sıfırdan yeni kod yazmak yerine kanıtlanmış bir yaklaşımı benimsemeyi veya port etmeyi tercih et.
|
||||
|
||||
1. **Önce Planla**
|
||||
- Uygulama planı oluşturmak için **planner** agent kullan
|
||||
- Kodlamadan önce planlama dokümanları oluştur: PRD, architecture, system_design, tech_doc, task_list
|
||||
- Bağımlılıkları ve riskleri belirle
|
||||
- Fazlara ayır
|
||||
|
||||
2. **TDD Yaklaşımı**
|
||||
- **tdd-guide** agent kullan
|
||||
- Önce testleri yaz (RED)
|
||||
- Testleri geçmek için uygula (GREEN)
|
||||
- Refactor et (IMPROVE)
|
||||
- %80+ coverage'ı doğrula
|
||||
|
||||
3. **Kod İncelemesi**
|
||||
- Kod yazdıktan hemen sonra **code-reviewer** agent kullan
|
||||
- CRITICAL ve HIGH sorunları ele al
|
||||
- Mümkün olduğunda MEDIUM sorunları düzelt
|
||||
|
||||
4. **Commit & Push**
|
||||
- Detaylı commit mesajları
|
||||
- Conventional commits formatını takip et
|
||||
- Commit mesaj formatı ve PR süreci için [git-workflow.md](./git-workflow.md) dosyasına bak
|
||||
24
docs/tr/rules/common/git-workflow.md
Normal file
24
docs/tr/rules/common/git-workflow.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Git İş Akışı
|
||||
|
||||
## Commit Mesaj Formatı
|
||||
```
|
||||
<type>: <description>
|
||||
|
||||
<optional body>
|
||||
```
|
||||
|
||||
Types: feat, fix, refactor, docs, test, chore, perf, ci
|
||||
|
||||
Not: Attribution ~/.claude/settings.json aracılığıyla global olarak devre dışı bırakıldı.
|
||||
|
||||
## Pull Request İş Akışı
|
||||
|
||||
PR oluştururken:
|
||||
1. Tam commit geçmişini analiz et (sadece son commit değil)
|
||||
2. Tüm değişiklikleri görmek için `git diff [base-branch]...HEAD` kullan
|
||||
3. Kapsamlı PR özeti taslağı hazırla
|
||||
4. TODO'ları içeren test planı ekle
|
||||
5. Yeni branch ise `-u` flag'i ile push et
|
||||
|
||||
> Git işlemlerinden önce tam geliştirme süreci (planlama, TDD, kod incelemesi) için
|
||||
> [development-workflow.md](./development-workflow.md) dosyasına bakın.
|
||||
30
docs/tr/rules/common/hooks.md
Normal file
30
docs/tr/rules/common/hooks.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Hooks Sistemi
|
||||
|
||||
## Hook Tipleri
|
||||
|
||||
- **PreToolUse**: Tool yürütmeden önce (validasyon, parametre değişikliği)
|
||||
- **PostToolUse**: Tool yürütmeden sonra (auto-format, kontroller)
|
||||
- **Stop**: Session bittiğinde (final doğrulama)
|
||||
|
||||
## Auto-Accept İzinleri
|
||||
|
||||
Dikkatli kullan:
|
||||
- Güvenilir, iyi tanımlanmış planlar için etkinleştir
|
||||
- Keşifsel çalışmalar için devre dışı bırak
|
||||
- Asla dangerously-skip-permissions flag'i kullanma
|
||||
- Bunun yerine `~/.claude.json` içinde `allowedTools` yapılandır
|
||||
|
||||
## TodoWrite En İyi Uygulamalar
|
||||
|
||||
TodoWrite tool'unu şunlar için kullan:
|
||||
- Çok adımlı görevlerdeki ilerlemeyi takip et
|
||||
- Talimatların anlaşıldığını doğrula
|
||||
- Gerçek zamanlı yönlendirmeyi etkinleştir
|
||||
- Detaylı implementasyon adımlarını göster
|
||||
|
||||
Todo listesi şunları ortaya çıkarır:
|
||||
- Sıra dışı adımlar
|
||||
- Eksik öğeler
|
||||
- Fazladan gereksiz öğeler
|
||||
- Yanlış detay düzeyi
|
||||
- Yanlış yorumlanmış gereksinimler
|
||||
31
docs/tr/rules/common/patterns.md
Normal file
31
docs/tr/rules/common/patterns.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Yaygın Pattern'ler
|
||||
|
||||
## Skeleton Projeler
|
||||
|
||||
Yeni fonksiyonellik uygulanırken:
|
||||
1. Test edilmiş skeleton projeler ara
|
||||
2. Seçenekleri değerlendirmek için paralel agent'lar kullan:
|
||||
- Güvenlik değerlendirmesi
|
||||
- Genişletilebilirlik analizi
|
||||
- İlgililik puanlaması
|
||||
- Uygulama planlaması
|
||||
3. En iyi eşleşmeyi temel olarak klonla
|
||||
4. Kanıtlanmış yapı içinde iterate et
|
||||
|
||||
## Tasarım Pattern'leri
|
||||
|
||||
### Repository Pattern
|
||||
|
||||
Veri erişimini tutarlı bir arayüz arkasında kapsülle:
|
||||
- Standart işlemleri tanımla: findAll, findById, create, update, delete
|
||||
- Concrete implementasyonlar storage detaylarını ele alır (database, API, file, vb.)
|
||||
- Business logic storage mekanizması yerine abstract interface'e bağlıdır
|
||||
- Veri kaynaklarının kolay değiştirilmesini sağlar ve mock'larla testi basitleştirir
|
||||
|
||||
### API Response Formatı
|
||||
|
||||
Tüm API yanıtları için tutarlı bir zarf kullan:
|
||||
- Success/status göstergesi ekle
|
||||
- Data payload ekle (hata durumunda nullable)
|
||||
- Hata mesajı alanı ekle (başarı durumunda nullable)
|
||||
- Sayfalandırılmış yanıtlar için metadata ekle (total, page, limit)
|
||||
55
docs/tr/rules/common/performance.md
Normal file
55
docs/tr/rules/common/performance.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# Performans Optimizasyonu
|
||||
|
||||
## Model Seçim Stratejisi
|
||||
|
||||
**Haiku 4.5** (Sonnet kapasitesinin %90'ı, 3x maliyet tasarrufu):
|
||||
- Sık çağrılan hafif agent'lar
|
||||
- Pair programming ve kod üretimi
|
||||
- Multi-agent sistemlerinde worker agent'lar
|
||||
|
||||
**Sonnet 4.6** (En iyi kodlama modeli):
|
||||
- Ana geliştirme çalışması
|
||||
- Multi-agent iş akışlarını orkestrasyon
|
||||
- Karmaşık kodlama görevleri
|
||||
|
||||
**Opus 4.5** (En derin akıl yürütme):
|
||||
- Karmaşık mimari kararlar
|
||||
- Maksimum akıl yürütme gereksinimleri
|
||||
- Araştırma ve analiz görevleri
|
||||
|
||||
## Context Window Yönetimi
|
||||
|
||||
Context window'un son %20'sinden kaçın:
|
||||
- Büyük ölçekli refactoring
|
||||
- Birden fazla dosyaya yayılan özellik implementasyonu
|
||||
- Karmaşık etkileşimleri debug etme
|
||||
|
||||
Daha düşük context hassasiyeti olan görevler:
|
||||
- Tek dosya düzenlemeleri
|
||||
- Bağımsız utility oluşturma
|
||||
- Dokümantasyon güncellemeleri
|
||||
- Basit hata düzeltmeleri
|
||||
|
||||
## Extended Thinking + Plan Mode
|
||||
|
||||
Extended thinking varsayılan olarak etkindir ve dahili akıl yürütme için 31,999 token'a kadar ayırır.
|
||||
|
||||
Extended thinking kontrolü:
|
||||
- **Toggle**: Option+T (macOS) / Alt+T (Windows/Linux)
|
||||
- **Config**: `~/.claude/settings.json` içinde `alwaysThinkingEnabled` ayarla
|
||||
- **Budget cap**: `export MAX_THINKING_TOKENS=10000`
|
||||
- **Verbose mode**: Thinking çıktısını görmek için Ctrl+O
|
||||
|
||||
Derin akıl yürütme gerektiren karmaşık görevler için:
|
||||
1. Extended thinking'in etkin olduğundan emin ol (varsayılan olarak açık)
|
||||
2. Yapılandırılmış yaklaşım için **Plan Mode**'u etkinleştir
|
||||
3. Kapsamlı analiz için birden fazla kritik tur kullan
|
||||
4. Çeşitli perspektifler için split role sub-agent'lar kullan
|
||||
|
||||
## Build Sorun Giderme
|
||||
|
||||
Build başarısız olursa:
|
||||
1. **build-error-resolver** agent kullan
|
||||
2. Hata mesajlarını analiz et
|
||||
3. Aşamalı olarak düzelt
|
||||
4. Her düzeltmeden sonra doğrula
|
||||
29
docs/tr/rules/common/security.md
Normal file
29
docs/tr/rules/common/security.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Güvenlik Kuralları
|
||||
|
||||
## Zorunlu Güvenlik Kontrolleri
|
||||
|
||||
HERHANGİ bir commit'ten önce:
|
||||
- [ ] Hardcoded secret yok (API anahtarları, şifreler, token'lar)
|
||||
- [ ] Tüm kullanıcı girdileri validate edildi
|
||||
- [ ] SQL injection önleme (parametreli sorgular)
|
||||
- [ ] XSS önleme (sanitize edilmiş HTML)
|
||||
- [ ] CSRF koruması etkin
|
||||
- [ ] Authentication/authorization doğrulandı
|
||||
- [ ] Tüm endpoint'lerde rate limiting
|
||||
- [ ] Hata mesajları hassas veri sızdırmıyor
|
||||
|
||||
## Secret Yönetimi
|
||||
|
||||
- Kaynak kodda ASLA secret'ları hardcode etme
|
||||
- DAIMA environment variable'lar veya secret manager kullan
|
||||
- Başlangıçta gerekli secret'ların mevcut olduğunu validate et
|
||||
- İfşa olmuş olabilecek secret'ları rotate et
|
||||
|
||||
## Güvenlik Yanıt Protokolü
|
||||
|
||||
Güvenlik sorunu bulunursa:
|
||||
1. HEMEN DUR
|
||||
2. **security-reviewer** agent kullan
|
||||
3. Devam etmeden önce CRITICAL sorunları düzelt
|
||||
4. İfşa olmuş secret'ları rotate et
|
||||
5. Benzer sorunlar için tüm kod tabanını incele
|
||||
29
docs/tr/rules/common/testing.md
Normal file
29
docs/tr/rules/common/testing.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Test Gereksinimleri
|
||||
|
||||
## Minimum Test Coverage: %80
|
||||
|
||||
Test Tipleri (HEPSİ gerekli):
|
||||
1. **Unit Tests** - Bireysel fonksiyonlar, utility'ler, component'ler
|
||||
2. **Integration Tests** - API endpoint'leri, database işlemleri
|
||||
3. **E2E Tests** - Kritik kullanıcı akışları (framework dile göre seçilir)
|
||||
|
||||
## Test Odaklı Geliştirme
|
||||
|
||||
ZORUNLU iş akışı:
|
||||
1. Önce test yaz (RED)
|
||||
2. Testi çalıştır - BAŞARISIZ olmalı
|
||||
3. Minimum implementasyon yaz (GREEN)
|
||||
4. Testi çalıştır - BAŞARILI olmalı
|
||||
5. Refactor et (IMPROVE)
|
||||
6. Coverage'ı doğrula (%80+)
|
||||
|
||||
## Test Hatalarında Sorun Giderme
|
||||
|
||||
1. **tdd-guide** agent kullan
|
||||
2. Test izolasyonunu kontrol et
|
||||
3. Mock'ların doğru olduğunu doğrula
|
||||
4. Testleri değil implementasyonu düzelt (testler yanlış olmadıkça)
|
||||
|
||||
## Agent Desteği
|
||||
|
||||
- **tdd-guide** - Yeni özellikler için PROAKTİF olarak kullan, test-önce-yaz'ı zorlar
|
||||
32
docs/tr/rules/golang/coding-style.md
Normal file
32
docs/tr/rules/golang/coding-style.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.go"
|
||||
- "**/go.mod"
|
||||
- "**/go.sum"
|
||||
---
|
||||
# Go Kodlama Stili
|
||||
|
||||
> Bu dosya [common/coding-style.md](../common/coding-style.md) dosyasını Go'ya özgü içerikle genişletir.
|
||||
|
||||
## Formatlama
|
||||
|
||||
- **gofmt** ve **goimports** zorunludur — stil tartışması yok
|
||||
|
||||
## Tasarım İlkeleri
|
||||
|
||||
- Interface'leri kabul et, struct'ları döndür
|
||||
- Interface'leri küçük tut (1-3 metot)
|
||||
|
||||
## Hata Yönetimi
|
||||
|
||||
Hataları daima context ile sarmalayın:
|
||||
|
||||
```go
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create user: %w", err)
|
||||
}
|
||||
```
|
||||
|
||||
## Referans
|
||||
|
||||
Kapsamlı Go idiom'ları ve pattern'leri için skill: `golang-patterns` dosyasına bakın.
|
||||
17
docs/tr/rules/golang/hooks.md
Normal file
17
docs/tr/rules/golang/hooks.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.go"
|
||||
- "**/go.mod"
|
||||
- "**/go.sum"
|
||||
---
|
||||
# Go Hooks
|
||||
|
||||
> Bu dosya [common/hooks.md](../common/hooks.md) dosyasını Go'ya özgü içerikle genişletir.
|
||||
|
||||
## PostToolUse Hooks
|
||||
|
||||
`~/.claude/settings.json` içinde yapılandır:
|
||||
|
||||
- **gofmt/goimports**: Edit'ten sonra `.go` dosyalarını otomatik formatla
|
||||
- **go vet**: `.go` dosyalarını düzenledikten sonra statik analiz çalıştır
|
||||
- **staticcheck**: Değiştirilen paketlerde genişletilmiş statik kontroller çalıştır
|
||||
45
docs/tr/rules/golang/patterns.md
Normal file
45
docs/tr/rules/golang/patterns.md
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.go"
|
||||
- "**/go.mod"
|
||||
- "**/go.sum"
|
||||
---
|
||||
# Go Pattern'leri
|
||||
|
||||
> Bu dosya [common/patterns.md](../common/patterns.md) dosyasını Go'ya özgü içerikle genişletir.
|
||||
|
||||
## Functional Options
|
||||
|
||||
```go
|
||||
type Option func(*Server)
|
||||
|
||||
func WithPort(port int) Option {
|
||||
return func(s *Server) { s.port = port }
|
||||
}
|
||||
|
||||
func NewServer(opts ...Option) *Server {
|
||||
s := &Server{port: 8080}
|
||||
for _, opt := range opts {
|
||||
opt(s)
|
||||
}
|
||||
return s
|
||||
}
|
||||
```
|
||||
|
||||
## Küçük Interface'ler
|
||||
|
||||
Interface'leri implement edildikleri yerde değil, kullanıldıkları yerde tanımla.
|
||||
|
||||
## Dependency Injection
|
||||
|
||||
Bağımlılıkları enjekte etmek için constructor fonksiyonları kullan:
|
||||
|
||||
```go
|
||||
func NewUserService(repo UserRepository, logger Logger) *UserService {
|
||||
return &UserService{repo: repo, logger: logger}
|
||||
}
|
||||
```
|
||||
|
||||
## Referans
|
||||
|
||||
Concurrency, hata yönetimi ve paket organizasyonu dahil kapsamlı Go pattern'leri için skill: `golang-patterns` dosyasına bakın.
|
||||
34
docs/tr/rules/golang/security.md
Normal file
34
docs/tr/rules/golang/security.md
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.go"
|
||||
- "**/go.mod"
|
||||
- "**/go.sum"
|
||||
---
|
||||
# Go Güvenlik
|
||||
|
||||
> Bu dosya [common/security.md](../common/security.md) dosyasını Go'ya özgü içerikle genişletir.
|
||||
|
||||
## Secret Yönetimi
|
||||
|
||||
```go
|
||||
apiKey := os.Getenv("OPENAI_API_KEY")
|
||||
if apiKey == "" {
|
||||
log.Fatal("OPENAI_API_KEY not configured")
|
||||
}
|
||||
```
|
||||
|
||||
## Güvenlik Taraması
|
||||
|
||||
- Statik güvenlik analizi için **gosec** kullan:
|
||||
```bash
|
||||
gosec ./...
|
||||
```
|
||||
|
||||
## Context & Timeout'lar
|
||||
|
||||
Timeout kontrolü için daima `context.Context` kullan:
|
||||
|
||||
```go
|
||||
ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
|
||||
defer cancel()
|
||||
```
|
||||
31
docs/tr/rules/golang/testing.md
Normal file
31
docs/tr/rules/golang/testing.md
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.go"
|
||||
- "**/go.mod"
|
||||
- "**/go.sum"
|
||||
---
|
||||
# Go Testing
|
||||
|
||||
> Bu dosya [common/testing.md](../common/testing.md) dosyasını Go'ya özgü içerikle genişletir.
|
||||
|
||||
## Framework
|
||||
|
||||
**Table-driven testler** ile standart `go test` kullan.
|
||||
|
||||
## Race Detection
|
||||
|
||||
Daima `-race` flag'i ile çalıştır:
|
||||
|
||||
```bash
|
||||
go test -race ./...
|
||||
```
|
||||
|
||||
## Coverage
|
||||
|
||||
```bash
|
||||
go test -cover ./...
|
||||
```
|
||||
|
||||
## Referans
|
||||
|
||||
Detaylı Go test pattern'leri ve helper'lar için skill: `golang-testing` dosyasına bakın.
|
||||
42
docs/tr/rules/python/coding-style.md
Normal file
42
docs/tr/rules/python/coding-style.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.py"
|
||||
- "**/*.pyi"
|
||||
---
|
||||
# Python Kodlama Stili
|
||||
|
||||
> Bu dosya [common/coding-style.md](../common/coding-style.md) dosyasını Python'a özgü içerikle genişletir.
|
||||
|
||||
## Standartlar
|
||||
|
||||
- **PEP 8** konvansiyonlarını takip et
|
||||
- Tüm fonksiyon imzalarında **type annotation'lar** kullan
|
||||
|
||||
## Immutability
|
||||
|
||||
Immutable veri yapılarını tercih et:
|
||||
|
||||
```python
|
||||
from dataclasses import dataclass
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class User:
|
||||
name: str
|
||||
email: str
|
||||
|
||||
from typing import NamedTuple
|
||||
|
||||
class Point(NamedTuple):
|
||||
x: float
|
||||
y: float
|
||||
```
|
||||
|
||||
## Formatlama
|
||||
|
||||
- Kod formatlama için **black**
|
||||
- Import sıralama için **isort**
|
||||
- Linting için **ruff**
|
||||
|
||||
## Referans
|
||||
|
||||
Kapsamlı Python idiom'ları ve pattern'leri için skill: `python-patterns` dosyasına bakın.
|
||||
19
docs/tr/rules/python/hooks.md
Normal file
19
docs/tr/rules/python/hooks.md
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.py"
|
||||
- "**/*.pyi"
|
||||
---
|
||||
# Python Hooks
|
||||
|
||||
> Bu dosya [common/hooks.md](../common/hooks.md) dosyasını Python'a özgü içerikle genişletir.
|
||||
|
||||
## PostToolUse Hooks
|
||||
|
||||
`~/.claude/settings.json` içinde yapılandır:
|
||||
|
||||
- **black/ruff**: Edit'ten sonra `.py` dosyalarını otomatik formatla
|
||||
- **mypy/pyright**: `.py` dosyalarını düzenledikten sonra tip kontrolü çalıştır
|
||||
|
||||
## Uyarılar
|
||||
|
||||
- Düzenlenen dosyalarda `print()` ifadeleri hakkında uyar (bunun yerine `logging` modülü kullan)
|
||||
39
docs/tr/rules/python/patterns.md
Normal file
39
docs/tr/rules/python/patterns.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.py"
|
||||
- "**/*.pyi"
|
||||
---
|
||||
# Python Pattern'leri
|
||||
|
||||
> Bu dosya [common/patterns.md](../common/patterns.md) dosyasını Python'a özgü içerikle genişletir.
|
||||
|
||||
## Protocol (Duck Typing)
|
||||
|
||||
```python
|
||||
from typing import Protocol
|
||||
|
||||
class Repository(Protocol):
|
||||
def find_by_id(self, id: str) -> dict | None: ...
|
||||
def save(self, entity: dict) -> dict: ...
|
||||
```
|
||||
|
||||
## DTO'lar olarak Dataclass'lar
|
||||
|
||||
```python
|
||||
from dataclasses import dataclass
|
||||
|
||||
@dataclass
|
||||
class CreateUserRequest:
|
||||
name: str
|
||||
email: str
|
||||
age: int | None = None
|
||||
```
|
||||
|
||||
## Context Manager'lar & Generator'lar
|
||||
|
||||
- Kaynak yönetimi için context manager'ları (`with` ifadesi) kullan
|
||||
- Lazy evaluation ve bellek verimli iterasyon için generator'ları kullan
|
||||
|
||||
## Referans
|
||||
|
||||
Decorator'lar, concurrency ve paket organizasyonu dahil kapsamlı pattern'ler için skill: `python-patterns` dosyasına bakın.
|
||||
30
docs/tr/rules/python/security.md
Normal file
30
docs/tr/rules/python/security.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.py"
|
||||
- "**/*.pyi"
|
||||
---
|
||||
# Python Güvenlik
|
||||
|
||||
> Bu dosya [common/security.md](../common/security.md) dosyasını Python'a özgü içerikle genişletir.
|
||||
|
||||
## Secret Yönetimi
|
||||
|
||||
```python
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
|
||||
api_key = os.environ["OPENAI_API_KEY"] # Eksikse KeyError hatası verir
|
||||
```
|
||||
|
||||
## Güvenlik Taraması
|
||||
|
||||
- Statik güvenlik analizi için **bandit** kullan:
|
||||
```bash
|
||||
bandit -r src/
|
||||
```
|
||||
|
||||
## Referans
|
||||
|
||||
Django'ya özgü güvenlik kuralları için (eğer uygulanabilirse) skill: `django-security` dosyasına bakın.
|
||||
38
docs/tr/rules/python/testing.md
Normal file
38
docs/tr/rules/python/testing.md
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.py"
|
||||
- "**/*.pyi"
|
||||
---
|
||||
# Python Testing
|
||||
|
||||
> Bu dosya [common/testing.md](../common/testing.md) dosyasını Python'a özgü içerikle genişletir.
|
||||
|
||||
## Framework
|
||||
|
||||
Test framework'ü olarak **pytest** kullan.
|
||||
|
||||
## Coverage
|
||||
|
||||
```bash
|
||||
pytest --cov=src --cov-report=term-missing
|
||||
```
|
||||
|
||||
## Test Organizasyonu
|
||||
|
||||
Test kategorizasyonu için `pytest.mark` kullan:
|
||||
|
||||
```python
|
||||
import pytest
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_calculate_total():
|
||||
...
|
||||
|
||||
@pytest.mark.integration
|
||||
def test_database_connection():
|
||||
...
|
||||
```
|
||||
|
||||
## Referans
|
||||
|
||||
Detaylı pytest pattern'leri ve fixture'lar için skill: `python-testing` dosyasına bakın.
|
||||
199
docs/tr/rules/typescript/coding-style.md
Normal file
199
docs/tr/rules/typescript/coding-style.md
Normal file
@@ -0,0 +1,199 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.ts"
|
||||
- "**/*.tsx"
|
||||
- "**/*.js"
|
||||
- "**/*.jsx"
|
||||
---
|
||||
# TypeScript/JavaScript Kodlama Stili
|
||||
|
||||
> Bu dosya [common/coding-style.md](../common/coding-style.md) dosyasını TypeScript/JavaScript'e özgü içerikle genişletir.
|
||||
|
||||
## Tipler ve Interface'ler
|
||||
|
||||
Public API'ları, paylaşılan modelleri ve component prop'larını açık, okunabilir ve yeniden kullanılabilir yapmak için tipleri kullan.
|
||||
|
||||
### Public API'lar
|
||||
|
||||
- Dışa aktarılan fonksiyonlara, paylaşılan utility'lere ve public sınıf metotlarına parametre ve dönüş tipleri ekle
|
||||
- TypeScript'in açık local değişken tiplerini çıkarmasına izin ver
|
||||
- Tekrarlanan inline object şekillerini adlandırılmış tipler veya interface'lere çıkar
|
||||
|
||||
```typescript
|
||||
// YANLIŞ: Açık tipler olmadan dışa aktarılan fonksiyon
|
||||
export function formatUser(user) {
|
||||
return `${user.firstName} ${user.lastName}`
|
||||
}
|
||||
|
||||
// DOĞRU: Public API'larda açık tipler
|
||||
interface User {
|
||||
firstName: string
|
||||
lastName: string
|
||||
}
|
||||
|
||||
export function formatUser(user: User): string {
|
||||
return `${user.firstName} ${user.lastName}`
|
||||
}
|
||||
```
|
||||
|
||||
### Interface vs. Type Alias'ları
|
||||
|
||||
- Extend edilebilir veya implement edilebilir object şekilleri için `interface` kullan
|
||||
- Union'lar, intersection'lar, tuple'lar, mapped tipler ve utility tipler için `type` kullan
|
||||
- Interoperability için `enum` gerekli olmadıkça string literal union'ları tercih et
|
||||
|
||||
```typescript
|
||||
interface User {
|
||||
id: string
|
||||
email: string
|
||||
}
|
||||
|
||||
type UserRole = 'admin' | 'member'
|
||||
type UserWithRole = User & {
|
||||
role: UserRole
|
||||
}
|
||||
```
|
||||
|
||||
### `any`'den Kaçın
|
||||
|
||||
- Uygulama kodunda `any`'den kaçın
|
||||
- Harici veya güvenilmeyen girdi için `unknown` kullan, ardından güvenli bir şekilde daralt
|
||||
- Bir değerin tipi çağırana bağlı olduğunda generic'ler kullan
|
||||
|
||||
```typescript
|
||||
// YANLIŞ: any tip güvenliğini kaldırır
|
||||
function getErrorMessage(error: any) {
|
||||
return error.message
|
||||
}
|
||||
|
||||
// DOĞRU: unknown güvenli daraltmayı zorlar
|
||||
function getErrorMessage(error: unknown): string {
|
||||
if (error instanceof Error) {
|
||||
return error.message
|
||||
}
|
||||
|
||||
return 'Unexpected error'
|
||||
}
|
||||
```
|
||||
|
||||
### React Props
|
||||
|
||||
- Component prop'larını adlandırılmış `interface` veya `type` ile tanımla
|
||||
- Callback prop'larını açıkça tiplendir
|
||||
- Belirli bir nedeni olmadıkça `React.FC` kullanma
|
||||
|
||||
```typescript
|
||||
interface User {
|
||||
id: string
|
||||
email: string
|
||||
}
|
||||
|
||||
interface UserCardProps {
|
||||
user: User
|
||||
onSelect: (id: string) => void
|
||||
}
|
||||
|
||||
function UserCard({ user, onSelect }: UserCardProps) {
|
||||
return <button onClick={() => onSelect(user.id)}>{user.email}</button>
|
||||
}
|
||||
```
|
||||
|
||||
### JavaScript Dosyaları
|
||||
|
||||
- `.js` ve `.jsx` dosyalarında, tipler netliği artırdığında ve TypeScript migration pratik olmadığında JSDoc kullan
|
||||
- JSDoc'u runtime davranışıyla hizalı tut
|
||||
|
||||
```javascript
|
||||
/**
|
||||
* @param {{ firstName: string, lastName: string }} user
|
||||
* @returns {string}
|
||||
*/
|
||||
export function formatUser(user) {
|
||||
return `${user.firstName} ${user.lastName}`
|
||||
}
|
||||
```
|
||||
|
||||
## Immutability
|
||||
|
||||
Immutable güncellemeler için spread operator kullan:
|
||||
|
||||
```typescript
|
||||
interface User {
|
||||
id: string
|
||||
name: string
|
||||
}
|
||||
|
||||
// YANLIŞ: Mutation
|
||||
function updateUser(user: User, name: string): User {
|
||||
user.name = name // MUTASYON!
|
||||
return user
|
||||
}
|
||||
|
||||
// DOĞRU: Immutability
|
||||
function updateUser(user: Readonly<User>, name: string): User {
|
||||
return {
|
||||
...user,
|
||||
name
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Hata Yönetimi
|
||||
|
||||
Try-catch ile async/await kullan ve unknown hataları güvenli bir şekilde daralt:
|
||||
|
||||
```typescript
|
||||
interface User {
|
||||
id: string
|
||||
email: string
|
||||
}
|
||||
|
||||
declare function riskyOperation(userId: string): Promise<User>
|
||||
|
||||
function getErrorMessage(error: unknown): string {
|
||||
if (error instanceof Error) {
|
||||
return error.message
|
||||
}
|
||||
|
||||
return 'Unexpected error'
|
||||
}
|
||||
|
||||
const logger = {
|
||||
error: (message: string, error: unknown) => {
|
||||
// Production logger'ınızla değiştirin (örneğin, pino veya winston).
|
||||
}
|
||||
}
|
||||
|
||||
async function loadUser(userId: string): Promise<User> {
|
||||
try {
|
||||
const result = await riskyOperation(userId)
|
||||
return result
|
||||
} catch (error: unknown) {
|
||||
logger.error('Operation failed', error)
|
||||
throw new Error(getErrorMessage(error))
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Input Validasyonu
|
||||
|
||||
Schema tabanlı validasyon için Zod kullan ve schema'dan tipleri çıkar:
|
||||
|
||||
```typescript
|
||||
import { z } from 'zod'
|
||||
|
||||
const userSchema = z.object({
|
||||
email: z.string().email(),
|
||||
age: z.number().int().min(0).max(150)
|
||||
})
|
||||
|
||||
type UserInput = z.infer<typeof userSchema>
|
||||
|
||||
const validated: UserInput = userSchema.parse(input)
|
||||
```
|
||||
|
||||
## Console.log
|
||||
|
||||
- Production kodunda `console.log` ifadeleri yok
|
||||
- Bunun yerine uygun logging kütüphaneleri kullan
|
||||
- Otomatik tespit için hook'lara bakın
|
||||
22
docs/tr/rules/typescript/hooks.md
Normal file
22
docs/tr/rules/typescript/hooks.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.ts"
|
||||
- "**/*.tsx"
|
||||
- "**/*.js"
|
||||
- "**/*.jsx"
|
||||
---
|
||||
# TypeScript/JavaScript Hooks
|
||||
|
||||
> Bu dosya [common/hooks.md](../common/hooks.md) dosyasını TypeScript/JavaScript'e özgü içerikle genişletir.
|
||||
|
||||
## PostToolUse Hooks
|
||||
|
||||
`~/.claude/settings.json` içinde yapılandır:
|
||||
|
||||
- **Prettier**: Edit'ten sonra JS/TS dosyalarını otomatik formatla
|
||||
- **TypeScript check**: `.ts`/`.tsx` dosyalarını düzenledikten sonra `tsc` çalıştır
|
||||
- **console.log uyarısı**: Düzenlenen dosyalarda `console.log` hakkında uyar
|
||||
|
||||
## Stop Hooks
|
||||
|
||||
- **console.log audit**: Session bitmeden önce değiştirilen tüm dosyalarda `console.log` kontrolü yap
|
||||
52
docs/tr/rules/typescript/patterns.md
Normal file
52
docs/tr/rules/typescript/patterns.md
Normal file
@@ -0,0 +1,52 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.ts"
|
||||
- "**/*.tsx"
|
||||
- "**/*.js"
|
||||
- "**/*.jsx"
|
||||
---
|
||||
# TypeScript/JavaScript Pattern'leri
|
||||
|
||||
> Bu dosya [common/patterns.md](../common/patterns.md) dosyasını TypeScript/JavaScript'e özgü içerikle genişletir.
|
||||
|
||||
## API Response Formatı
|
||||
|
||||
```typescript
|
||||
interface ApiResponse<T> {
|
||||
success: boolean
|
||||
data?: T
|
||||
error?: string
|
||||
meta?: {
|
||||
total: number
|
||||
page: number
|
||||
limit: number
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Custom Hooks Pattern
|
||||
|
||||
```typescript
|
||||
export function useDebounce<T>(value: T, delay: number): T {
|
||||
const [debouncedValue, setDebouncedValue] = useState<T>(value)
|
||||
|
||||
useEffect(() => {
|
||||
const handler = setTimeout(() => setDebouncedValue(value), delay)
|
||||
return () => clearTimeout(handler)
|
||||
}, [value, delay])
|
||||
|
||||
return debouncedValue
|
||||
}
|
||||
```
|
||||
|
||||
## Repository Pattern
|
||||
|
||||
```typescript
|
||||
interface Repository<T> {
|
||||
findAll(filters?: Filters): Promise<T[]>
|
||||
findById(id: string): Promise<T | null>
|
||||
create(data: CreateDto): Promise<T>
|
||||
update(id: string, data: UpdateDto): Promise<T>
|
||||
delete(id: string): Promise<void>
|
||||
}
|
||||
```
|
||||
28
docs/tr/rules/typescript/security.md
Normal file
28
docs/tr/rules/typescript/security.md
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.ts"
|
||||
- "**/*.tsx"
|
||||
- "**/*.js"
|
||||
- "**/*.jsx"
|
||||
---
|
||||
# TypeScript/JavaScript Güvenlik
|
||||
|
||||
> Bu dosya [common/security.md](../common/security.md) dosyasını TypeScript/JavaScript'e özgü içerikle genişletir.
|
||||
|
||||
## Secret Yönetimi
|
||||
|
||||
```typescript
|
||||
// ASLA: Hardcoded secret'lar
|
||||
const apiKey = "sk-proj-xxxxx"
|
||||
|
||||
// DAIMA: Environment variable'lar
|
||||
const apiKey = process.env.OPENAI_API_KEY
|
||||
|
||||
if (!apiKey) {
|
||||
throw new Error('OPENAI_API_KEY not configured')
|
||||
}
|
||||
```
|
||||
|
||||
## Agent Desteği
|
||||
|
||||
- Kapsamlı güvenlik denetimleri için **security-reviewer** skill kullan
|
||||
18
docs/tr/rules/typescript/testing.md
Normal file
18
docs/tr/rules/typescript/testing.md
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
paths:
|
||||
- "**/*.ts"
|
||||
- "**/*.tsx"
|
||||
- "**/*.js"
|
||||
- "**/*.jsx"
|
||||
---
|
||||
# TypeScript/JavaScript Testing
|
||||
|
||||
> Bu dosya [common/testing.md](../common/testing.md) dosyasını TypeScript/JavaScript'e özgü içerikle genişletir.
|
||||
|
||||
## E2E Testing
|
||||
|
||||
Kritik kullanıcı akışları için E2E test framework'ü olarak **Playwright** kullan.
|
||||
|
||||
## Agent Desteği
|
||||
|
||||
- **e2e-runner** - Playwright E2E testing uzmanı
|
||||
Reference in New Issue
Block a user