Kullanıcı API testleri oluşturmak, integration test setleri hazırlamak, REST endpoint'leri test etmek veya contract testleri geliştirmek istediğinde kullanılır.
cd ~/.claude/skills
git clone https://github.com/alirezarezvani/claude-skills.git claude-skills mkdir -p ~/.claude/skills/api-test-suite-builder
curl -fsSL https://raw.githubusercontent.com/alirezarezvani/claude-skills/HEAD/.gemini/skills/api-test-suite-builder/SKILL.md \
-o ~/.claude/skills/api-test-suite-builder/SKILL.md Tier: POWERFUL Category: Engineering Domain: Testing / API Quality
API rotası tanımlarını çeşitli framework'ler arasında tarar (Next.js App Router, Express, FastAPI, Django REST) ve kimlik doğrulama, giriş doğrulaması, hata kodları, sayfalandırma, dosya yüklemeleri ve oran sınırlamasını kapsayan kapsamlı test paketlerini otomatik olarak oluşturur. Vitest+Supertest (Node) veya Pytest+httpx (Python) için çalıştırmaya hazır test dosyaları çıktı verir.
# Tüm route handler'ları bul
find ./app/api -name "route.ts" -o -name "route.js" | sort
# Her route dosyasından HTTP methodlarını çıkart
grep -rn "export async function\|export function" app/api/**/route.ts | \
grep -oE "(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS)" | sort -u
# Tam route haritası
find ./app/api -name "route.ts" | while read f; do
route=$(echo $f | sed 's|./app||' | sed 's|/route.ts||')
methods=$(grep -oE "export (async )?function (GET|POST|PUT|PATCH|DELETE)" "$f" | \
grep -oE "(GET|POST|PUT|PATCH|DELETE)")
echo "$methods $route"
done
# Tüm router dosyalarını bul
find ./src -name "*.ts" -o -name "*.js" | xargs grep -l "router\.\(get\|post\|put\|delete\|patch\)" 2>/dev/null
# Satır numaralarıyla routeları çıkart
grep -rn "router\.\(get\|post\|put\|delete\|patch\)\|app\.\(get\|post\|put\|delete\|patch\)" \
src/ --include="*.ts" | grep -oE "(get|post|put|delete|patch)\(['\"][^'\"]*['\"]"
# Route haritası oluştur
grep -rn "router\.\|app\." src/ --include="*.ts" | \
grep -oE "\.(get|post|put|delete|patch)\(['\"][^'\"]+['\"]" | \
sed "s/\.\(.*\)('\(.*\)'/\U\1 \2/"
# Tüm route dekoratörlerini bul
grep -rn "@app\.\|@router\." . --include="*.py" | \
grep -E "@(app|router)\.(get|post|put|delete|patch)"
# Path ve fonksiyon adıyla çıkart
grep -rn "@\(app\|router\)\.\(get\|post\|put\|delete\|patch\)" . --include="*.py" | \
grep -oE "@(app|router)\.(get|post|put|delete|patch)\(['\"][^'\"]*['\"]"
# urlpatterns çıkartma
grep -rn "path\|re_path\|url(" . --include="*.py" | grep "urlpatterns" -A 50 | \
grep -E "path\(['\"]" | grep -oE "['\"][^'\"]+['\"]" | head -40
# ViewSet router kaydı
grep -rn "router\.register\|DefaultRouter\|SimpleRouter" . --include="*.py"
Her kimlik doğrulama gerektiren uç nokta için oluşturun:
| Test Durumu | Beklenen Durum |
|---|---|
| Authorization başlığı yok | 401 |
| Geçersiz token formatı | 401 |
| Geçerli token, yanlış kullanıcı rolü | 403 |
| Süresi dolan JWT token | 401 |
| Geçerli token, doğru rol | 2xx |
| Silinen kullanıcıdan token | 401 |
Request body olan her POST/PUT/PATCH uç noktası için:
| Test Durumu | Beklenen Durum |
|---|---|
Boş body {} |
400 or 422 |
| Eksik gerekli alanlar (teker teker) | 400 or 422 |
| Yanlış tür (string yerine int bekleniyor) | 400 or 422 |
| Sınır: min-1 değeri | 400 or 422 |
| Sınır: min değeri | 2xx |
| Sınır: max değeri | 2xx |
| Sınır: max+1 değeri | 400 or 422 |
| String alanında SQL injection | 400 or 200 (sanitized) |
| String alanında XSS payload | 400 or 200 (sanitized) |
| Gerekli alanlar için null değerler | 400 or 422 |
→ Detaylar için references/example-test-files.md dosyasına bakın
Bir codebase verildiğinde, bu işlemi izleyin:
"returns 401 when token is expired" değil "auth test 3"beforeAll kullanın, cleanup için afterAll — pahalı işlemler için beforeEach değilHerhangi bir yaratıcı çalışmaya başlamadan önce bunu mutlaka kullanın - feature oluştururken, component inşa ederken, functionality eklerken veya davranış değiştirirken. Kullanıcı niyetini, gereksinimleri ve tasarımı implementation öncesinde araştırır.
Uygulama tamamlandığında, tüm testler geçtiğinde ve çalışmanızı nasıl entegre edeceğinize karar vermeniz gerektiğinde kullanın - merge, PR veya cleanup seçeneklerini sunarak geliştirme sürecinin tamamlanmasını rehberlik eder.
Kod incelemesi geri bildirimi alırken, önerileri uygulamadan önce kullanın; özellikle geri bildirim belirsiz veya teknik olarak şüpheli görünüyorsa - performatif anlaşmadan veya körü körüne uygulamadan ziyade teknik titizlik ve doğrulama gerekir.
Görevleri tamamlarken, büyük özellikleri hayata geçirirken veya merge etmeden önce çalışmanın gereksinimleri karşıladığını doğrulamak için kullanın.
Yeni bir feature üzerinde çalışmaya başlarken veya implementasyon planını yürütmeden önce kullanın - native araçlar veya git worktree fallback aracılığıyla izole edilmiş bir workspace sağlar.
Herhangi bir konuşma başlatırken kullanın - skill'lerin nasıl bulunacağını ve kullanılacağını belirler, clarification soruları da dahil olmak üzere HERHANGİ bir yanıt vermeden önce skill invocation gerektirir.