# Documentation, Docstrings, and README Generation

> Source: https://sukruyusufkaya.com/en/learn/claude-ustaligi/dokuman-uretimi
> Updated: 2026-05-11T13:49:11.431Z
> Category: Claude Ustalığı
> Module: 4. Coding with Claude
**TLDR:** Generate docstrings, READMEs, ADRs, runbooks with Claude. Turn docs from a debt into a revenue-producing asset.

# Üretebileceğin Doküman Türleri

- **Docstring** (Python NumPy / Google / RST stilleri)
- **JSDoc / TSDoc** (TypeScript)
- **README** (proje düzeyi)
- **ADR** (Architecture Decision Record)
- **Runbook** (incident response)
- **API referansı** (OpenAPI / Markdown)
- **Changelog**

Her biri için Claude'un farklı bir prompt kalıbı olur.

### Docstring üretimi

```text
Aşağıdaki fonksiyon için NumPy stilinde docstring yaz.
- Argümanların tipi ve anlamı
- Dönüş değeri
- Raises bölümü
- Bir Example block (doctest formatında)
- Notes (varsa edge case)
```

### README iskeleti

```text
Aşağıdaki kod tabanı için README oluştur.
Bölümler:
1) One-liner pitch
2) Quick start (kurulum + ilk komut)
3) Mimari özet (diagram opsiyonel)
4) Önemli komutlar
5) Yapılandırma (.env şeması)
6) Test çalıştırma
7) Katkı kuralları
8) Lisans
```

### ADR (mimari kararı)

```text
Mimari kararı belgesi (ADR) üret.
Bölümler:
- Title
- Status: proposed/accepted/superseded
- Context: hangi kuvvetler bu kararı zorluyor
- Decision: ne karara varıldı
- Consequences: olumlu/olumsuz sonuçlar
- Alternatives considered
```

### Runbook (incident response)

```text
Bu servis için runbook hazırla:
- Arıza emareleri (alert isimleri ile)
- Hızlı tanı adımları (komutlar)
- Geçici düzeltme
- Kalıcı düzeltme
- Kime ve nasıl bilgi ver
```

```python
def normalize_phone(raw: str, default_country: str = "TR") -> str | None:
    """Normalize a Turkish phone number to canonical form.

    Parameters
    ----------
    raw : str
        Free-form input. Spaces, hyphens, parentheses, and the leading
        plus sign are stripped before parsing.
    default_country : str, optional
        Country code; only "TR" is currently supported.

    Returns
    -------
    str or None
        Canonical form '+90 5xx xxx xx xx' if recognized,
        otherwise None.

    Raises
    ------
    None
        This function never raises; invalid input returns None.

    Examples
    --------
    >>> normalize_phone("+90 (555) 123-45-67")
    '+90 555 123 45 67'
    >>> normalize_phone("invalid") is None
    True

    Notes
    -----
    Only "TR" numbers are supported. International normalization
    is intentionally out of scope.
    """
```

## Doctest çalıştır
Docstring içindeki >>> örnekleri doctest ile otomatik test edilebilir.

```python
def merhaba(isim):
    """
    >>> merhaba("Şükrü")
    'Merhaba, Şükrü!'
    """
    return f"Merhaba, {isim}!"

import doctest
doctest.testmod(verbose=True)
```

**Boşluk doldurma egzersizi (text):**
```text
Mimari kararları belgelemek için _____ kullanılır. NumPy stilinde docstring _____ örneklerini otomatik test eder. Alarmla başlayan acil durum belgesi _____ olarak adlandırılır.
```

> ✋ Kontrol noktası: `q-405-mc1`