# Error Recovery

> Tool hataları ve yaygın sorunlar için recovery stratejileri. PostToolUseFailure hook'u tarafından kullanılır.

- Skill: `erhankaraarslan/error-recovery` (Agent Skill)
- Install (CLI): `npx skillmds@latest add erhankaraarslan/error-recovery`
- Raw SKILL.md: https://api.skillmd.com/api/skills/erhankaraarslan/error-recovery/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: erhankaraarslan (https://skillmd.com/u/erhankaraarslan)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/erhankaraarslan/error-recovery

---


# Error Recovery Skill

Bu skill, Anthropic'in tool use best practices'lerine göre hata durumlarından kurtarma stratejileri sağlar.

## Yaygın Hatalar ve Çözümleri

### 1. NPM/Node Hataları

#### `ENOENT: no such file or directory, package.json`
```bash
# Çözüm: Doğru dizinde misin?
pwd
ls -la package.json

# Yoksa proje kökünü bul
find . -name "package.json" -type f 2>/dev/null | head -5
```

#### `npm ERR! ERESOLVE`
```bash
# Çözüm: Dependency conflict
npm install --legacy-peer-deps
# veya
rm -rf node_modules package-lock.json && npm install
```

#### `MODULE_NOT_FOUND`
```bash
# Çözüm
npm install
# veya spesifik modül
npm install <modül-adı>
```

### 2. Git Hataları

#### `fatal: not a git repository`
```bash
# Çözüm: Git repo değil veya yanlış dizin
git init
# veya doğru dizine git
cd <proje-kökü>
```

#### `error: Your local changes would be overwritten`
```bash
# Çözüm: Değişiklikleri sakla
git stash
git pull
git stash pop
```

#### `CONFLICT (content): Merge conflict`
```bash
# Çözüm: Conflict'leri göster
git diff --name-only --diff-filter=U
# Manuel çözüm gerekli - kullanıcıya sor
```

### 3. TypeScript/Build Hataları

#### `Cannot find module` (import)
```bash
# Çözüm: Path kontrolü
# 1. Dosya var mı?
ls -la <dosya-yolu>

# 2. tsconfig paths doğru mu?
cat tsconfig.json | grep -A5 "paths"

# 3. Index export var mı?
cat <modül>/index.ts
```

#### `Property does not exist on type`
```bash
# Çözüm: Type tanımını bul
grep -rn "interface\|type" --include="*.ts" src/ | grep <TypeAdı>
```

### 4. Database Hataları

#### `Connection refused` (PostgreSQL/MySQL)
```bash
# Çözüm: Service çalışıyor mu?
# macOS
brew services list | grep postgres

# Linux
systemctl status postgresql

# Docker
docker ps | grep postgres
```

#### `relation does not exist`
```bash
# Çözüm: Migration çalıştır
npm run db:migrate
# veya
npx prisma migrate dev
```

### 5. Docker Hataları

#### `Cannot connect to Docker daemon`
```bash
# Çözüm: Docker çalışıyor mu?
docker info

# macOS: Docker Desktop açık mı?
open -a Docker
```

#### `port is already allocated`
```bash
# Çözüm: Portu kullanan process'i bul ve durdur
lsof -i :3000
kill -9 <PID>
```

### 6. Permission Hataları

#### `EACCES: permission denied`
```bash
# Çözüm: Dosya izinlerini kontrol et
ls -la <dosya>

# Düzelt (dikkatli ol!)
chmod 644 <dosya>  # Dosya için
chmod 755 <dizin>  # Dizin için
```

#### `sudo required`
```
⚠️ DİKKAT: sudo kullanmak tehlikeli olabilir.
Kullanıcıya danış ve alternatif ara.

Alternatifler:
- nvm/pyenv kullan (global yerine local)
- Docker container içinde çalış
- .local dizinine yükle
```

## Error Recovery Süreci

```
1. HATA TESPİT
   ↓
2. HATA TİPİNİ BELİRLE
   - Build error?
   - Runtime error?
   - Permission error?
   - Network error?
   ↓
3. CONTEXT TOPLA
   - Hangi komut çalıştı?
   - Hangi dizindeyiz?
   - Son ne değişti?
   ↓
4. ÇÖZÜM UYGULA
   - Basit fix dene
   - Başarısızsa alternatif dene
   - Hala başarısızsa kullanıcıya sor
   ↓
5. DOĞRULA
   - Aynı komutu tekrar çalıştır
   - Hata devam ediyor mu?
```

## Error Logging

Hatalar otomatik olarak loglanır:
```
~/.claude/error-log.txt
```

Log formatı:
```
[2025-01-26 10:30:45] TOOL FAILURE: Bash - npm test failed
Context: /Users/x/project
Last command: npm test
Error: Jest has detected the following 1 open handle
Resolution: Added --forceExit flag
```

## Kullanıcıya Ne Zaman Danış

Aşağıdaki durumlarda kullanıcıya sor:

1. **Veri kaybı riski:** `rm`, `DROP`, `TRUNCATE`
2. **Credential gerekli:** API key, password
3. **Belirsiz çözüm:** Birden fazla olası fix var
4. **Tekrarlayan hata:** 3+ denemede başarısız
5. **Production etkisi:** Deploy, migration

## Recovery Rapor Formatı

```markdown
## 🔧 Error Recovery Report

**Hata:** [error message]
**Komut:** [failed command]
**Dizin:** [working directory]

### Analiz
[Hatanın nedeni]

### Denenen Çözümler
1. ❌ [çözüm 1] - [neden başarısız]
2. ✅ [çözüm 2] - Başarılı

### Önlem
[Bu hatanın tekrarını önlemek için öneri]
```

## Anti-Patterns

❌ **Yapma:**
- Hatayı ignore etme
- sudo ile zorla çöz
- Rastgele komut dene
- Kullanıcıya sormadan kritik değişiklik yap

✅ **Yap:**
- Hatayı anla, sonra çöz
- En az invaziv çözümü dene
- Değişiklikleri logla
- Belirsizlikte sor

