Claude KokpitiGÖSTERGELER · ALIŞKANLIKLAR
DOLUNAY'IN CLAUDE CODE DÜZENİ

Claude'u kör uçurma.

Göstergeler, komutlar ve günlük kullanımda işime yarayanlar.

01
DESKTOP CODE · TERMİNAL

Terminalde bağlantı kontrolü daha esnek.

Desktop’ın yerel Code sekmesiyle farklar.

Desktop Code ile terminalin bağlantı ve otomasyon farkları
FarkDesktop
Code sekmesi
Terminal
Claude Code
Terminale tanımlı API bilgileriEk ayar gerekebilirKabuktan devralır
İşe özel bağlantı listesiArayüz / dosya ayarıBaşlatırken seç
Başka programdan çağırma✕✓

Benim avantajım: Terminale tanımladığım bağlantıları iş başına seçip otomasyona bağlayabiliyorum.

12 Eylül 2026 · Desktop ortamı ↗ · Terminal seçenekleri ↗

02
BAĞLAM GÖSTERGESİ · BENİM TERMİNALİM

Sohbet yukarıda. Göstergeler aşağıda.

12 Eylül ekran görüntümden yeniden çizildi. Değerler o ana ait.

AntigravityTerminal
Claude Code v2.1.269
Opus 5 (1M context) · xhigh effort · Claude Max
~/Desktop/Antigravity
Yeni sohbet
›
›› bypass permissions on (shift+tab to cycle)

Bağlam bu sohbetin doluluğu; alt üç satır ayrı hesapların kotası. Gri ve “erişilemiyor” yazan değerler canlı ölçüm değildir. Alt satırları sağa kaydırabilirsin.

Kendi bağlam ve Claude kota göstergeni kur
İki satırlık başlangıç sürümü; çoklu hesap ekranım ayrı bir özelleştirme.
KURULUM METNİNİ GÖR
Claude Code için bağlam göstergesi kur. Tarifi harfiyen uygula. Bana soru sormadan bitir.

ORTAMI KORU
Önce iki şeyi öğren: işletim sistemini (Mac, Windows ya da Linux) ve Claude Code sürümünü (claude --version). İkisini de bana tek satırda söyle. Sürüm komutu çalışmazsa kurulumu bulamadığını yaz ve dur. Desteklenmeyen ayarı kurmuş gibi gösterme.
Bu tarif Mac'te yazıldı ama mantığı her sistemde aynıdır. Windows ya da Linux'taysam reddetme, durma: aynı sonucu o sistemin kendi araçlarıyla kur. Komutları, yolları, betik dilini, ses ve paket aracını o sisteme çevir; testleri de orada koş. Yalnız o sistemde gerçekten mümkün olmayan tek parçayı atla, sebebini tek satırla söyle, gerisini kur.
Aşağıdaki ~/.claude yolları, varsa CLAUDE_CONFIG_DIR klasörünü ifade eder. Komutlara gerçek mutlak yolu güvenli tırnaklarla yaz; boşluklu yolları dene.
Eksik klasörleri oluştur. settings.json yoksa boş JSON nesnesiyle başla. Varsa yalnız ilgili alanları birleştir; diğer ayarları koru.
Değişecek dosyaların tarihli yedeğini al; eski yedeği ezme. Aynı kurulum tekrarlandığında kancaları ve kuralları çoğaltma.
Gerçek kullanıcı ayarlarını test verisiyle değiştirme. Testleri geçici klasörde koş. Sonuç belirsizse kuruldu deme.

HEDEF
Terminalin altında iki satır görünsün:
Bağlam [██████░░░░] %58  145K/250K  Opus
Kota   5 saat %31 (2sa 10dk)  Hafta %12 (4g 3sa)

VERİ
• Claude Code her güncellemede betiğin standart girdisine (stdin) bir JSON verir. Oturum verisinin tek kaynağı bu JSON'dur. İstisna iki: aşağıdaki sıkıştırma sınırı ayarı ve şimdiki saat.
• Kullanacağın alanlar: model.display_name, context_window.context_window_size, context_window.used_percentage, rate_limits.five_hour.used_percentage, rate_limits.five_hour.resets_at, rate_limits.seven_day.used_percentage, rate_limits.seven_day.resets_at.
• İnternete çıkma. Token dosyası okuma. Sohbet kaydını (transcript) ayrıştırma. Hepsi yavaştır ve bozulur.

BAĞLAM SATIRI
• Sıkıştırma sınırı: önce CLAUDE_CODE_AUTO_COMPACT_WINDOW ortam değişkeni, o yoksa settings.json içindeki autoCompactWindow.
• settings.json yolu: CLAUDE_CONFIG_DIR tanımlıysa $CLAUDE_CONFIG_DIR/settings.json, değilse ~/.claude/settings.json.
• Payda: sıkıştırma sınırı varsa ve context_window_size'dan küçükse payda odur. Değilse payda context_window_size'dır.
• Neden: 1 milyonluk modelde sıkıştırma 250 binde yapılıyorsa hazır yüzde sıkıştırma anında %22 gösterir. Kırmızıyı hiç görmezsin.
• Bağlamdaki token için önce context_window.current_usage nesnesine bak. Nesnede en az bir geçerli sayı varsa input_tokens + cache_creation_input_tokens + cache_read_input_tokens toplamını kullan. Eksik bileşeni 0 say; bütün bileşenler null ise veri bilinmiyor, 0 sanma. Alanların tam yolu context_window.current_usage.<alan> biçimindedir; kökte current_usage arama.
• current_usage yoksa context_window.used_percentage sayısını context_window_size ile çarparak tokenı hesapla. Bu yüzde model penceresine aittir; sıkıştırma paydasına göre yeniden hesaplanır.
• Bu iki kaynak da yoksa bağlam bilinmiyor. total_input_tokens alanını bu tarifte kullanma; eski sürümlerde birikimlidir. Pencereyi aşmasını beklemek güvenilir bir sürüm testi değildir.
• Null eksik veridir; sayısal 0 geçerli veridir. Sıkıştırma sınırı yalnız pozitif, sonlu bir sayıysa geçerlidir.
• Yüzde = token × 100 / payda. Önce çarp, sonra böl. Böyle yapmazsan tamsayı bölmesi hep 0 verir. Payda 0 ya da yoksa yüzdeyi hesaplama, bir sonraki kurala geç.
• Yüzdeyi 0 ile 100 arasına sıkıştır.
• Token 0 ise %0 göster. Token belirlenemiyorsa çubuğu boş bırak, yüzde yerine "-" yaz. Model yüzdesini farklı paydayla doğrudan gösterme.
• Çubuk 10 kare: █ dolu, ░ boş.
• Renk: 85 ve üstü kırmızı, 60 ve üstü sarı, altı yeşil.
• Yuvarlama kuralı tek: tam yarım çıkarsa yukarı yuvarla. 72.5 sayısı 73 olur, 72 değil.
• Token ve paydayı bine böl, en yakın tamsayıya yuvarla, K ekle: 145K/250K. Sonuç 1000K ya da üstüyse M ile yaz: 1M. Token yoksa "-" yaz.
• Model adını satırın sonuna yaz. Yoksa "-" yaz.

KOTA SATIRI
• rate_limits yalnız Pro ve Max aboneliğinde ve ilk cevaptan sonra gelir. Hiç yoksa satır yine çıksın: "Kota   bekleniyor".
• İki pencere birbirinden bağımsız eksik olabilir. Eksik olanın yerine "-" yaz.
• resets_at saniye cinsinden zaman damgasıdır (epoch). Kalan = resets_at eksi şimdiki epoch (date +%s). Boşsa "-" yaz. Yalnız geçmişteki geçerli zamana "yenilendi" yaz.
• Kalan 1 günden azsa "Xsa Ydk" yaz: 3600 saniye "1sa 0dk", 59 dakika "0sa 59dk". 1 gün ve üstüyse "Xg Ysa" yaz. Tam bölme ve kalan kullan. Tarih metni ayrıştırma, yalnız saniye çıkar.
• Kota yüzdeleri de aynı renk kuralını kullansın.

BİLİNEN TUZAKLAR (hepsine önlem al)
1. stdin'i bir kez oku: input=$(cat). İkinci okuma boş gelir.
2. JSON boş, bozuk ya da alanları null olabilir. Oturumun ilk anında ve /compact sonrasında böyledir. Betik asla hata basmasın, her durumda 0 ile çıksın, iki satırı yine bassın.
3. jq'yu tek çağrıda kullan: bütün alanları @tsv ile tek seferde çek. Alan başına ayrı jq çağırma. Betik 300 milisaniyede bitmeli. Yavaş betiğin çıktısı hiç görünmez, çünkü bir sonraki güncelleme onu iptal eder.
4. jq yoksa sistemin paket aracıyla kur: Mac'te brew install jq, Windows'ta winget install jqlang.jq, Linux'ta apt ya da dnf. Kuramazsan aynı betiği python3 ile yaz. İkisi de yoksa dur ve bana tek satır yaz: "jq ya da python3 gerekli."
5. Satırın şekli sabit kalsın. Veri yoksa sütunu silme, yerine "-" koy. Yoksa satır her güncellemede zıplar.
6. printf genişliği bayt sayar. Türkçe harfler ve █░ çok baytlıdır, hizayı bozar. printf ile sabit genişlik (%-10s gibi) kullanma, boşlukları kendin koy.
7. Renkleri printf '%b\n' ile bas. Her renkli parçanın sonunda rengi sıfırla: \033[0m.
8. Sayılar kesirli gelebilir (58.7). Önce en yakın tamsayıya yuvarla, tam yarımı yukarı al. Bash aritmetiğine kesirli sayı girerse betik çöker.
9. Taşan yüzdeleri (-1, 130) 0-100 arasına sıkıştır. Token, pencere ve zaman sayılarına bu kuralı uygulama.

KURULUM
Ayar klasörü: CLAUDE_CONFIG_DIR tanımlıysa o klasör, değilse ~/.claude. Aşağıda ~/.claude yazan her yer bu klasördür.
1. ~/.claude/statusline.sh zaten varsa önce statusline.sh.<tarih-saat>.yedek adıyla kopyala. Sonra betiği yaz, chmod +x ver.
2. ~/.claude/settings.json'ın yedeğini al: settings.json.<tarih-saat>.yedek. Dosyayı silme, baştan yazma. Yalnız şu anahtarı ekle ya da güncelle:
"statusLine": {"type": "command", "command": "~/.claude/statusline.sh", "padding": 0}
3. Kaydedince geçerli JSON olduğunu doğrula: jq . dosya, jq yoksa python3 -m json.tool dosya. Bozulduysa yedeği geri koy.

TEST (bitti demeden önce hepsini koş, çıktıyı bana göster)
Betiğe elle JSON vererek aşağıdaki durumları dene:
1. Normal: context_window.current_usage toplamı 145000, pencere 200000, iki kota dolu. Payda 200K, yüzde yuvarlanmış %73 olmalı.
2. Boş girdi: printf '' | ~/.claude/statusline.sh
3. Bozuk JSON: printf '{bozuk' | ~/.claude/statusline.sh
4. Bütün alanlar null.
5. rate_limits hiç yok.
6. resets_at geçmişte.
7. Pencere 1000000, context_window.current_usage toplamı 200000. Geçici bir klasöre içinde {"autoCompactWindow": 250000} olan bir settings.json koy. Betiği env -u CLAUDE_CODE_AUTO_COMPACT_WINDOW CLAUDE_CONFIG_DIR=o_klasör ile çalıştır. %80 ve sarı çıkmalı.
8. Eski sürüm: total_input_tokens 900000, pencere 1000000, current_usage toplamı 50000, sınır 250000. %20 olmalı, %100 değil.
9. current_usage yok, used_percentage 20, pencere 1000000, sınır 250000: %80 olmalı.
10. current_usage toplamı 0: %0 olmalı. Tamamen eksik bağlam: yüzde yerine "-" olmalı.
11. Sınır 0, negatif veya metinse yok say. Boşluk içeren ayar klasöründe de aynı sonuç çıkmalı.
12. Kota yüzdesi 58.7, pencerelerden yalnız biri var, zamanı eksik: betik çökmemeli. Eksik zaman "yenilendi" olmamalı.
Her durumda iki satır çıkmalı, stderr boş ve çıkış kodu 0 olmalı. Çıktıyı ve süreyi ölç; 300 ms hedefini aşarsa düzelt. Biri geçmezse tümünü tekrar koş.

WINDOWS
Windows'taysam aynı kuralları uygula. Git Bash ve jq çalışıyorsa aynı statusline.sh betiğini kullan, komutu bash ile başlat: bash "betiğin tam yolu". Çalışmıyorsa aynı kuralları PowerShell betiğiyle yaz (statusline.ps1) ve komutu powershell -NoProfile -File "betiğin tam yolu" diye kaydet. Yolda \ yerine / kullan. Hangisini seçersen aynı testleri koş ve süreyi ölç; PowerShell 300 ms'yi aşarsa bunu bana söyle.

SON
Test sonuçlarından sonra son durum cümlesini yaz: "Kuruldu. Bir sonraki mesajından sonra alt satırda göreceksin."
03
SEKME IŞIKLARI

Hangi sekme beni bekliyor?

Adı sabit kalır. Işığı kendiliğinden değişir.

🟡Reels scriptÇalışıyor
🔵Marka teklifiBeni bekliyor
⚪Bot nöbetiParkta

İşin türünü ayırmak için adın yanına renkli kare de ekliyorum.

Işıkları ve otomatik adı kur
Claude Code'a yapıştır.
KURULUM METNİNİ GÖR
Terminal sekmelerime durum ışığı ve otomatik ad kur. Tarifi harfiyen uygula. Bana soru sormadan bitir.

ORTAMI KORU
Önce iki şeyi öğren: işletim sistemini (Mac, Windows ya da Linux) ve Claude Code sürümünü (claude --version). İkisini de bana tek satırda söyle. Sürüm komutu çalışmazsa kurulumu bulamadığını yaz ve dur. Desteklenmeyen ayarı kurmuş gibi gösterme.
Bu tarif Mac'te yazıldı ama mantığı her sistemde aynıdır. Windows ya da Linux'taysam reddetme, durma: aynı sonucu o sistemin kendi araçlarıyla kur. Komutları, yolları, betik dilini, ses ve paket aracını o sisteme çevir; testleri de orada koş. Yalnız o sistemde gerçekten mümkün olmayan tek parçayı atla, sebebini tek satırla söyle, gerisini kur.
Aşağıdaki ~/.claude yolları, varsa CLAUDE_CONFIG_DIR klasörünü ifade eder. Komutlara gerçek mutlak yolu güvenli tırnaklarla yaz; boşluklu yolları dene.
Eksik klasörleri oluştur. settings.json yoksa boş JSON nesnesiyle başla. Varsa yalnız ilgili alanları birleştir; diğer ayarları koru.
Değişecek dosyaların tarihli yedeğini al; eski yedeği ezme. Aynı kurulum tekrarlandığında kancaları ve kuralları çoğaltma.
Gerçek kullanıcı ayarlarını test verisiyle değiştirme. Testleri geçici klasörde koş. Sonuç belirsizse kuruldu deme.

WINDOWS VE LINUX
Işık, ses, ad ve kilit kuralları her sistemde aynıdır; yalnız araçlar değişir. Betikleri Claude Code'un o sistemde kancaları çalıştırdığı kabuğa göre yaz: Windows'ta Git Bash varsa .sh, yoksa PowerShell .ps1. Aşağıdaki tty ve ps adımları Mac ve Linux içindir. Windows Terminal ve VS Code da aynı başlık kaçış dizisini anlar. Windows'ta /dev/tty yerine önce CONOUT$ konsoluna yazmayı, olmazsa PowerShell'de [Console]::Title ayarını dene. Sınavdan sonra gerçek bir sekmede başlık değişmediyse kuruldu deme, hangi parçanın çalışmadığını söyle.

HEDEF
Her Claude Code sekmesinin başlığı şöyle görünsün: 🟡 Reels script
🟡 Claude çalışıyor. 🔵 Cevabımı bekliyor, bir de ses çalar. ⚪ Park: zamanlanmış bir uyanışı var, şu an kimseyi beklemiyor.
Ad, sohbetteki ilk gerçek mesajımdan çıkar ve bir daha değişmez.

DOSYALAR (hepsi ~/.claude/hooks altında, hepsine chmod +x)
1. sekme-isik.sh: tek argüman alır: start, working, pretool, waiting ya da stop. stdin'den kanca JSON'unu okur.
2. sekme-adi.sh: sekme-adi.sh "Başlık" [--zorla]. Adı yazar ve kilitler.
3. ilk-mesaj.sh: ilk gerçek mesajda Claude'a ad koymasını hatırlatır.
Aynı adlı dosya varsa önce benzersiz tarihli .yedek uzantısıyla kopyala.
Durum dosyaları ~/.claude/state/sekme klasöründe, oturuma göre ayrı tutulur. Bu klasör SEKME_DIZIN ortam değişkeniyle değiştirilebilsin (test için).
Durum dosyasını yazarken önce aynı klasörde geçici bir dosyaya yaz, sonra mv ile yerine koy. Aynı oturumun iki kancası aynı anda koşabilir; yarım yazılmış dosya okunmasın.

KANCALAR (~/.claude/settings.json)
Önce yedek al. Var olan kancaları SİLME, listelere ekle. Kaydedince geçerli JSON olduğunu doğrula: jq . dosya, jq yoksa python3 -m json.tool dosya. Bozulduysa yedeği geri koy.
• SessionStart: sekme-isik.sh start
• UserPromptSubmit: iki ayrı kanca girdisi olarak ekle. Önce sekme-isik.sh working, sonra ilk-mesaj.sh. Tek komut satırında birleştirme: her kanca kendi kopyasını stdin'den okur, zincirlersen ikincisine girdi kalmaz.
• PreToolUse (matcher boş): sekme-isik.sh pretool
• Notification (matcher "permission_prompt|elicitation_dialog|agent_needs_input"): sekme-isik.sh waiting
• Stop: sekme-isik.sh stop
• StopFailure: sekme-isik.sh stop
Ayrıca settings.json'daki "env" bölümüne "CLAUDE_CODE_DISABLE_TERMINAL_TITLE": "1" ekle. Yoksa Claude Code başlığı kendisi yazar ve ışığı ezer.

IŞIK KURALLARI
• working: 🟡
• pretool: 🟡. Ama tool_name AskUserQuestion ya da ExitPlanMode ise 🔵 ve ses.
• waiting: 🔵 ve ses. Sekme o an ⚪ ise ⚪ kalsın, ses çalmasın.
• start: source alanı startup ya da clear ise 🔵, sessiz. resume ya da compact ise son ışığı geri yükle, yoksa 🔵. (Sıkıştırma da start tetikler.)
• stop: sırayla bak:
  1. background_tasks içinde type alanı "shell" olmayan bir görev varsa 🟡 (arkada ajan çalışıyor). type alanı yoksa o görevi shell say.
  2. Değilse session_crons boş değilse ⚪ (zamanlanmış uyanış var).
  3. Değilse background_tasks içinde shell görevi varsa 🟡.
  4. Değilse 🔵 ve ses.
  Bu alanlar JSON'da hiç yoksa 🔵 ve ses.
• Ses kuralı tek: ses yalnız 🔵 ile çalar. 🟡 ve ⚪ daima sessizdir.
• Her ışığı oturuma göre bir dosyaya kaydet.

BAŞLIĞI YAZMAK (en çok burada bozulur)
1. Kanca betikleri stdout'a ASLA bir şey yazmasın. UserPromptSubmit ve SessionStart'ta stdout Claude'un bağlamına girer. Kaçış dizisini oraya basarsan sohbet kirlenir, başlık da değişmez. Tek istisna aşağıdaki ilk-mesaj.sh hatırlatmasıdır.
2. Başlığı terminale yaz: printf '\033]0;%s\007' "$baslik" > "$tty"
3. Kanca içinde /dev/tty çoğu zaman açılmaz. Önce /dev/tty'yi dene. Olmazsa süreç ağacında yukarı çık: ps -o tty= -p PID ve ps -o ppid= -p PID ile en fazla 8 adım. Boş OLMAYAN VE "??" OLMAYAN ilk tty'yi al, başına /dev/ ekle. Bulduğun tty'yi oturuma göre bir dosyaya kaydet, sonraki çağrılarda önce oradan oku. Yazılabilir değilse sessizce çık.
4. tty bulunamazsa hiçbir şey yapma, ses de çalma, 0 ile çık.
5. Süreç ağacında 2 ya da daha fazla claude süreci varsa (iç içe çalışan Claude) hiçbir şey yapma. Yoksa içteki, dıştaki sekmenin adını ezer.
6. Ses: Mac'te afplay /System/Library/Sounds/Submarine.aiff, Linux'ta paplay varsa onu kullan. Windows'ta C:/Windows/Media klasöründeki bir .wav dosyasını PowerShell'in System.Media.SoundPlayer aracıyla çal. Arka plana at (&), bitmesini bekleme. Ses yalnız tty bulunduysa çalsın.
7. Adın içindeki kontrol karakterlerini ve emojileri temizle. 40 karakterden uzunsa kes, sonuna … koy.
8. Ad yoksa çalışma klasörünün adını kullan.
9. Her betik 1 saniyenin altında bitsin, her hata yolunda 0 ile çıksın. jq yoksa python3 ile oku.

OTURUM KİMLİĞİ
• Kanca JSON'unda session_id ve cwd var. Durum dosyalarını session_id ile adlandır.
• sekme-adi.sh kanca değildir, Claude onu Bash ile çağırır. Oturumu CLAUDE_CODE_SESSION_ID ortam değişkeninden alsın. O yoksa (eski sürüm) kancaların cwd için tuttuğu işarete baksın: kancalar her çağrıda cwd, session_id ve zamanı yazsın. Aynı klasörde son 2 dakikada tek oturum mesaj aldıysa onu kullansın. Birden fazlaysa adı yazmasın, stderr'e "Oturum ayırt edilemedi." yazıp 0 ile çıksın. Hiç eşleşme yoksa yine adı yazmasın, stderr'e "Oturum bulunamadı." yazıp 0 ile çıksın.
• sekme-adi.sh başlığı yenilerken kancaların kaydettiği tty'yi kullansın, çünkü Bash aracında tty yoktur.

AD KİLİDİ
• ilk-mesaj.sh: prompt alanı boşsa, / ile başlıyorsa ya da 10 karakterden kısaysa hiçbir şey yapmasın ve işaret de koymasın. İlk gerçek mesajda bir kez işaret koysun ve stdout'a şu cümleyi bassın (bu kancada stdout Claude'a gider, istenen de bu):
Bu sohbetin ilk gerçek mesajı. İşten 2-4 kelimelik sade bir başlık çıkar ve şunu çalıştır: ~/.claude/hooks/sekme-adi.sh "Başlık". İyi örnek: Reels script, Fatura otomasyonu. Kısaltma ya da yer tutucu yazma.
• Oturumun zaten adı varsa hatırlatma basmasın.
• sekme-adi.sh: ilk yazıştan sonra adı kilitlesin. Sonraki çağrılar adı değiştirmesin, stderr'e "Ad kilitli, tekrar deneme." yazsın ve 0 ile çıksın. --zorla kilidi kırar.
• "Başlık", "Sade Kısa Başlık" gibi yer tutucuları ve boş adı reddetsin.
• Ad yazılınca başlığı hemen yenilesin, mevcut ışığı koruyarak.

EDİTÖR AYARI
TERM_PROGRAM ortam değişkenine bak. "vscode" ise VS Code tabanlı bir editördesin (VS Code, Cursor, Windsurf, Antigravity). TERM_PROGRAM tek başına editörün adını söylemez. Süreç ağacından çalışmakta olan uygulamayı belirle; başka editörün ayarını değiştirme. O editörün kullanıcı ayar dosyasına şunu ekle: "terminal.integrated.tabs.title": "${sequence}". Mac'te dosya ~/Library/Application Support/<Editör adı>/User/settings.json yolundadır. Linux'ta XDG_CONFIG_HOME, yoksa ~/.config altında o editörün User/settings.json dosyasını bul. Windows'ta dosya %APPDATA%/<Editör adı>/User/settings.json yolundadır. Editörü kesin belirleyemezsen ortak kancaları hazırla, editör ayarını tamamlandı sayma. Bu dosyada yorum satırı olabilir: jq ile yeniden yazma, satırı dikkatle ekle, sonra dosyayı tekrar okuyup kontrol et. Bu ayar yoksa sekme başlığı hiç değişmez. Mac Terminal, iTerm2, Ghostty ve Windows Terminal ayar istemez.

TEST (bitti demeden koş, sonucu tablo olarak göster)
Betiklere SEKME_TEST=1 modu ekle. Bu kontrol tty ve iç içe süreç kontrolünden ÖNCE olsun. Testte terminali uygun varsay; gerçek tty arama, ses çalma veya başlık yazma. Yazılacak başlık ve ses kararını stderr'e bas.
Testleri SEKME_DIZIN ile geçici bir klasörde koş, gerçek durum klasörüne dokunma. Sahte JSON ile:
1. start, source startup: 🔵, ses yok.
2. working: 🟡.
3. pretool, tool_name AskUserQuestion: 🔵, ses var.
4. stop, boş background_tasks ve session_crons: 🔵, ses var.
5. stop, session_crons dolu: ⚪.
6. stop, type "agent" olan bir background_tasks: 🟡.
7. waiting, sekme ⚪ iken: ⚪, ses yok.
8. start, source compact: önceki ışık korunur.
9. sekme-adi.sh "Reels script": ad yazılır. İkinci çağrı "Başka ad": reddedilir. --zorla ile: değişir.
10. Önceki testlerden farklı, yeni session_id ile ilk-mesaj.sh: "/help" sessiz. "selam" sessiz. "reels için üç hook yazalım" hatırlatma basar. Aynı oturumda ikinci uzun mesaj sessiz.
Biri geçmezse düzelt ve hepsini baştan koş.

SON
Test sonuçlarından sonra son durum cümlesini yaz: "Kuruldu. Yeni bir sekme açıp ilk mesajını yaz, ad ve ışık gelecek."
Windows'taysan başlığın gerçek sekmede değiştiğini sen göremezsin; o cümleyi yazma. Şunu yaz: "Dosyalar kuruldu, testler geçti. Windows'ta başlığı ben göremiyorum: yeni bir sekme açıp ilk mesajını yaz, ad ve ışık gelmezse bana söyle, düzelteyim."
04
YARDIMCI AJANLAR · SUB-AGENT

Küçük işi yardımcıya ver.

Ana Claude işi yönetir. Daha hafif model, verilen parçayı yapıp sonucu getirir.

🧠OpusKarar ve zor işler
⇄
⚡SonnetArama ve kontrol

Örnek: “Dosyalardaki hataları tara.” Yardımcı arar, ana Claude sonucu değerlendirir.

Yardımcı işler için model seçimini kur
Claude Code'a yapıştır.
KURULUM METNİNİ GÖR
Opus kullanırken yardımcı işleri otomatik Sonnet'e ver, yargı işini Opus'ta tut. Tarifi harfiyen uygula. Bana soru sormadan bitir.

ORTAMI KORU
Önce iki şeyi öğren: işletim sistemini (Mac, Windows ya da Linux) ve Claude Code sürümünü (claude --version). İkisini de bana tek satırda söyle. Sürüm komutu çalışmazsa kurulumu bulamadığını yaz ve dur. Desteklenmeyen ayarı kurmuş gibi gösterme.
Bu tarif Mac'te yazıldı ama mantığı her sistemde aynıdır. Windows ya da Linux'taysam reddetme, durma: aynı sonucu o sistemin kendi araçlarıyla kur. Komutları, yolları, betik dilini, ses ve paket aracını o sisteme çevir; testleri de orada koş. Yalnız o sistemde gerçekten mümkün olmayan tek parçayı atla, sebebini tek satırla söyle, gerisini kur.
Aşağıdaki ~/.claude yolları, varsa CLAUDE_CONFIG_DIR klasörünü ifade eder. Komutlara gerçek mutlak yolu güvenli tırnaklarla yaz; boşluklu yolları dene.
Eksik klasörleri oluştur. settings.json yoksa boş JSON nesnesiyle başla. Varsa yalnız ilgili alanları birleştir; diğer ayarları koru.
Değişecek dosyaların tarihli yedeğini al; eski yedeği ezme. Aynı kurulum tekrarlandığında kancaları ve kuralları çoğaltma.
Gerçek kullanıcı ayarlarını test verisiyle değiştirme. Testleri geçici klasörde koş. Sonuç belirsizse kuruldu deme.

ÖNCE KONTROL
Ana modelim, şu an bu sohbeti yürüten modeldir. /status satırında ya da oturum bilgisinde yazar; emin değilsen bana sor değil, oradan oku.
Opus değilse hiçbir şey kurma. Bana şunu de ve dur: "Zaten Opus kullanmıyorsun, gerek yok. Opus'a geçtiğin gün bu metni bana tekrar ver."

NEDEN
Claude arka planda yardımcı ajan açar. Model yazılmazsa ajan ana modeli, yani Opus'u kullanır. Arama gibi mekanik işler böylece en pahalı modelde koşar.

1. İKİ YARDIMCI AJANI SONNET'E BAĞLA
~/.claude/agents/ klasöründe iki dosya oluştur. Aynı adlı dosya varsa üzerine yazma, bana söyle ve dur.

Dosya: ~/.claude/agents/general-purpose.md
---
name: general-purpose
description: General-purpose agent for researching complex questions, searching for code, and executing multi-step tasks.
model: sonnet
---
Sana verilen işi kapsamı içinde yap. Bitince kısa bir özet dön: ne buldun, ne yaptın, ne kaldı. Ham çıktı dökme.

Dosya: ~/.claude/agents/Explore.md
---
name: Explore
description: Read-only search agent for broad searches across many files. Returns conclusions, not file dumps.
model: sonnet
tools: Read, Glob, Grep
---
Yalnız oku ve ara, hiçbir dosyayı değiştirme. Bulduğunu dosya yolu ve satır numarasıyla kısa bir özet halinde dön.

2. KURAL YAZ
~/.claude/CLAUDE.md sonuna şu bölümü ekle. Var olan içeriğe dokunma, bölüm zaten varsa ekleme.
## Yardımcı ajan modeli
• Arama, tarama, test koşturma, biçim dönüştürme: model "sonnet".
• Yazı, tasarım, karar, müşteriye giden metin, zor hata ayıklama: model "opus".
• Emin değilsen opus. Ucuz modele verilen yargı işi yeniden yapılır, sonunda daha pahalıya gelir.
• Sayma ve karşılaştırma gibi kesin işler için model değil kod çalıştır.

3. YAPMA
• Toplu model zorlaması kurma. Güncel sürümlerde çağrının modeli, sonra ajan dosyası önceliklidir. CLAUDE_CODE_SUBAGENT_MODEL_FORCE açıksa bu ayrımı ezer; mevcutsa çelişkiyi bildir. CLAUDE_CODE_SUBAGENT_MODEL tek başına güncel sürümlerde bir varsayılandır; eski sürümlerde davranış değişebilir.
• Haiku'yu varsayılan yapma. Yargı isteyen işte hata yapar.
• Kendi modeli yazılı olan ajanlara dokunma.

4. KONTROL
İki dosyanın başlık bölümünü (--- arası) göster ve geçerli olduğunu doğrula. Daha yüksek öncelikli proje ajanlarını kontrol et. Yeni oturumda küçük bir arama görevini Sonnet ile çalıştır; gerçek modelini /tasks veya oturum kaydıyla doğrula. Ana sohbetin Opus kaldığını da doğrula. Yeni oturum sınavını yapamıyorsan yalnız dosyaların hazır olduğunu söyle.

SON
Gerçek model sınavı geçtiyse: "Kuruldu. Yardımcı arama Sonnet ile, ana sohbet Opus ile doğrulandı." Sınav yapılamadıysa: "Dosyalar hazır; yeni oturumda model seçimi henüz doğrulanmadı."
05
AUTO-COMPACT · OTOMATİK ÖZET

Sohbet uzayınca özetle devam.

Eski konuşma kısalır. Aynı sohbet devam eder.

Uzun konuşma
→
Kısa özet
→
↳Devam

Ben 250 binlik sınır kullanıyorum. Kararlarım ve kaldığım yer özette korunsun istiyorum.

Özetleme sınırını ve korunacakları ayarla
Claude Code'a yapıştır.
KURULUM METNİNİ GÖR
Claude Code'da otomatik sıkıştırmayı 250 bine ayarla. Sıkıştırmada son talimatlarım kaybolmasın. Tarifi harfiyen uygula. Bana soru sormadan bitir.

ORTAMI KORU
Önce iki şeyi öğren: işletim sistemini (Mac, Windows ya da Linux) ve Claude Code sürümünü (claude --version). İkisini de bana tek satırda söyle. Sürüm komutu çalışmazsa kurulumu bulamadığını yaz ve dur. Desteklenmeyen ayarı kurmuş gibi gösterme.
Bu tarif Mac'te yazıldı ama mantığı her sistemde aynıdır. Windows ya da Linux'taysam reddetme, durma: aynı sonucu o sistemin kendi araçlarıyla kur. Komutları, yolları, betik dilini, ses ve paket aracını o sisteme çevir; testleri de orada koş. Yalnız o sistemde gerçekten mümkün olmayan tek parçayı atla, sebebini tek satırla söyle, gerisini kur.
Aşağıdaki ~/.claude yolları, varsa CLAUDE_CONFIG_DIR klasörünü ifade eder. Komutlara gerçek mutlak yolu güvenli tırnaklarla yaz; boşluklu yolları dene.
Eksik klasörleri oluştur. settings.json yoksa boş JSON nesnesiyle başla. Varsa yalnız ilgili alanları birleştir; diğer ayarları koru.
Değişecek dosyaların tarihli yedeğini al; eski yedeği ezme. Aynı kurulum tekrarlandığında kancaları ve kuralları çoğaltma.
Gerçek kullanıcı ayarlarını test verisiyle değiştirme. Testleri geçici klasörde koş. Sonuç belirsizse kuruldu deme.

1. AYAR
~/.claude/settings.json'ın yedeğini al: settings.json.<tarih-saat>.yedek. Dosyayı silme, baştan yazma. Yalnız şu anahtarı ekle ya da güncelle:
"autoCompactWindow": 250000, "autoCompactEnabled": true
Önce kurulu sürümün ayar desteğini doğrula. Ortam değişkeniyle başka sınır verilmişse onu da tespit et; çelişkiyi gizleme.
Kaydedince geçerli JSON olduğunu doğrula: jq . dosya, jq yoksa python3 -m json.tool dosya. Bozulduysa yedeği geri koy.
Bilgi: Bu ayar 1 milyonluk pencereli modelde işe yarar. 200 binlik modelde zaten erken sıkıştırır, zararı yok. Sıkıştırma sınırın biraz öncesinde başlar (yaklaşık 217 bin), bu normal.

2. NE KORUNSUN
~/.claude/CLAUDE.md dosyasının sonuna şu bölümü ekle. Dosya yoksa oluştur. Var olan içeriğe dokunma. "## Compact Instructions" başlığı zaten varsa ekleme.
## Compact Instructions
Konuşma özetlenirken şunları mutlaka koru:
• Aktif iş, kaldığımız yer ve sıradaki somut adım.
• Değişen dosyalar ve yarım kalan iş.
• Verdiğim kararlar ve hala cevap bekleyen sorular.
• Koşulan testler ve sonuçları.
• Bu oturumda çıkan tuzaklar.
Atılabilir: uzun araç çıktıları, çözülmüş deneme yanılma, tekrar eden onaylar.

3. SON TALİMATLARIM GERİ GELSİN
Özet benim cümlelerimi yorumlar, bazılarını düşürür. Bunu önlemek için ~/.claude/hooks/sikistirma-sonrasi.py yaz (python3, yalnız standart kütüphane). Aynı adlı dosya varsa önce benzersiz tarihli .yedek uzantısıyla kopyala.
• settings.json'a SessionStart kancası olarak ekle, matcher "compact". Var olan kancaları silme. Komut: python3 ~/.claude/hooks/sikistirma-sonrasi.py
• Kaydetmeden önce python3 komutunun bu sistemde gerçekten çalıştığını dene. Windows'ta çoğu zaman py -3 ya da python adıyla çalışır; komuta çalışan adı ve betiğin tam yolunu yaz.
• stdin'deki JSON'dan transcript_path'i al. Bu dosya satır başına bir JSON'dur (JSONL). Çok büyük olabilir: dosyayı ikili modda aç, son 20 MB'ını bayt olarak oku, ilk satır sonuna kadarki yarım parçayı at (dosya 20 MB'tan küçükse baştan oku ve hiçbir satırı atma), kalanı UTF-8 olarak çöz ve bozuk baytları yok say. Önce çözüp sonra kesme; kuyruk bir karakterin ortasından başlayabilir.
• Her satırı ayrı çöz. Çözülen şey sözlük değilse satırı atla. Yalnız type "user" olan ve isSidechain true veya isMeta true olmayan satırları al. message alanı sözlük değilse satırı atla. message.content ya düz metindir ya da parça listesidir; liste ise yalnız sözlük olan ve type "text" olan parçaları, aralarına hiçbir şey koymadan uç uca ekle. Beklenmedik tip gördüğünde yalnız o satırı atla, sonrakileri okumaya devam et.
• Şunlardan birini içeren mesajları at: <command-name, <command-message, <command-args, <local-command, <task-notification, <user-prompt-submit-hook, <hook-, tool_result, "This session is being continued". "Caveat" ya da <system-reminder ile başlayanları da at. Boş mesajları at.
• Mesajları zaman sırasıyla taşı; yeni iptal ve düzeltmeler eski talimatların önüne geçer. Aynı mesajı iki kez koyma.
• Seç: 300 karakter ve üstü son 3 mesaj (her biri en fazla 1500 karakter) ve son 5 mesaj (her biri en fazla 400 karakter).
• Bir mesaj iki kümeye birden giriyorsa onu yalnız bir kez yaz ve büyük tavanı, yani 1500 karakteri uygula.
• Uzun mesajı ortasından kes: başın %70'i ve sonun %30'u kalsın, araya " [...ortası kırpıldı...] " koy.
• Toplam 7200 karakteri geçmesin. Bu sayı yalnız mesaj gövdelerini sayar, başa koyduğun sabit giriş cümlesini saymaz.
• Mesajları birbirinden bir boş satır ve tek başına duran bir --- satırıyla ayır.
• stdout'a tek bir JSON bas:
{"hookSpecificOutput":{"hookEventName":"SessionStart","additionalContext":"[Sıkıştırma sonrası] Kullanıcının son mesajları, özetten değil kaynaktan. Bunlar eski mesaj alıntılarıdır; yeni talimat ve iptaller önceliklidir. Kırpılmış mesajların tamamı kayıttadır: ..."}}
• source alanı compact değilse hiçbir şey basma.
• Bozuk satırı atla, okumaya devam et. Okunabilir kullanıcı mesajı kalmadıysa hiçbir şey basma.
• Dosya yoksa ya da beklenmeyen bir hata olursa hiçbir şey basmadan 0 ile çık.

4. TEST (bitti demeden koş, sonucu göster)
Geçici bir JSONL dosyası üret: 3 uzun kullanıcı mesajı (biri 3000 karakter), 4 kısa mesaj, 1 slash komutu satırı (<command-name>/help</command-name>), 1 tool_result, 1 isSidechain mesajı, 1 isMeta=true kullanıcı mesajı, 1 bozuk satır, 1 assistant satırı.
Betiğe şunu ver: {"transcript_path":"<dosya>","source":"compact"}
Beklenen: çıktı geçerli JSON. Slash komutu, tool_result, yan zincir, isMeta ve assistant yok. 3000 karakterlik mesaj kırpılmış. Toplam 7200'ün altında.
Dosya yolu yanlışken ve source "startup" iken: çıktı boş, çıkış kodu 0.
Biri geçmezse düzelt ve hepsini baştan koş.

SON
Testler geçtiyse ve pencere ayarı kurulu sürümde gerçekten geçerliyse şunu yaz: "Kuruldu. 250 binlik hedef pencere ayarlandı; sıkıştırma biraz önce başlayabilir. Son talimatlar özet sonrasında geri getirilecek."
Ayar bu sürümde geçerli değilse ya da doğrulayamadıysan o cümleyi yazma. Tek satır yaz: "Pencere ayarı bu sürümde geçerli değil; son talimatları geri getiren kısım kuruldu."
06
SOHBET KOMUTLARI

O anda hangisi gerekiyorsa.

Bir sıra yok. Bunlar kendi düzenime eklediğim ayrı komutlar.

📦
/chat-devirİşi yeni sohbete taşırken.
🔎
/chat-zorlaCevabı yeterli bulmadığımda.
🌙
/chat-uyuDaha sonra kontrol isterken.
✓
/chat-kapaSohbeti kapatmadan önce.
07
ROUTINES VE /CHAT-UYU

Neden /chat-uyu kullanıyorum?

Kontrol edeceğim işin dosyaları ve erişimleri bu oturumda hazır.

Bulut Routines ile yerel chat-uyu karşılaştırması
FarkClaude Routines
Bulut
/chat-uyu
Benim özel komutum
Çalıştığı yerYeni bulut oturumuMevcut yerel oturum
Dosyalar ve erişimlerAyrıca hazırlanırHazır olanları kullanır
Bilgisayar kapalıyken✓✕

“Sabah kontrol et, bozulduysa düzelt.” Yerel dosyalarım ve bağlantılarım hazır olduğu için bu nöbette /chat-uyu kullanıyorum.

Bilgisayar ve oturum açık kalmalı. Routines de bağlanan servislerde işlem yapabilir. Kaynak ↗

/chat-uyu komutunu ekle
Claude Code'a yapıştır.
KURULUM METNİNİ GÖR
Claude Code'a /chat-uyu komutunu kur. Bu komut sekmeyi uyutur, saati gelince uyandırır ve kurduğum işin gerçekten çalıştığını kontrol ettirir. Tarifi harfiyen uygula. Bana soru sormadan bitir.

ORTAMI KORU
Önce iki şeyi öğren: işletim sistemini (Mac, Windows ya da Linux) ve Claude Code sürümünü (claude --version). İkisini de bana tek satırda söyle. Sürüm komutu çalışmazsa kurulumu bulamadığını yaz ve dur. Desteklenmeyen ayarı kurmuş gibi gösterme.
Bu tarif Mac'te yazıldı ama mantığı her sistemde aynıdır. Windows ya da Linux'taysam reddetme, durma: aynı sonucu o sistemin kendi araçlarıyla kur. Komutları, yolları, betik dilini, ses ve paket aracını o sisteme çevir; testleri de orada koş. Yalnız o sistemde gerçekten mümkün olmayan tek parçayı atla, sebebini tek satırla söyle, gerisini kur.
Aşağıdaki ~/.claude yolları, varsa CLAUDE_CONFIG_DIR klasörünü ifade eder. Komutlara gerçek mutlak yolu güvenli tırnaklarla yaz; boşluklu yolları dene.
Eksik klasörleri oluştur. settings.json yoksa boş JSON nesnesiyle başla. Varsa yalnız ilgili alanları birleştir; diğer ayarları koru.
Değişecek dosyaların tarihli yedeğini al; eski yedeği ezme. Aynı kurulum tekrarlandığında kancaları ve kuralları çoğaltma.
Gerçek kullanıcı ayarlarını test verisiyle değiştirme. Testleri geçici klasörde koş. Sonuç belirsizse kuruldu deme.

~/.claude/skills/chat-uyu/SKILL.md dosyasını oluştur. Klasör varsa üzerine yazma, bana söyle ve dur. İçeriği tam olarak şu olsun:

---
name: chat-uyu
description: Sekmeyi uyutur, saati gelince uyanıp işin canlıda çalıştığını kontrol eder. "sonra kontrol et", "yarın sabah bak", "yayına girince doğrula" dendiğinde de çalışır.
argument-hint: "[ne zaman] [neye bakılacak]"
---

# /chat-uyu

Bir iş bittiğinde asıl sınavı gelecekte olur: video o saatte yayına girince, mail sabah gidince, bot ilk gerçek mesajı alınca. Bu komut o ana randevu kurar.

## Ne zaman
• Kullanıcı isterse.
• Gelecekte kendi başına çalışacak bir işi bitirdiysen (zamanlanmış paylaşım, otomatik mail, bot, zamanlanmış görev) sormadan kendin kur.
• Dosya düzenleme, rapor ya da soru cevabı için kurma. Onların gelecekte sınavı yok.

## Uyumadan önce
1. Ölçüyü yaz: uyanınca neye bakacaksın, neye "tamam" denir. Örnek: "18:05 videosu Instagram'da yayında mı, açıklaması doğru mu."
2. Saati seç: olaydan biraz sonra ve tam ya da buçuk olmayan bir dakika. 18:00 değil 18:07. 09:00 değil 09:12.
3. Güncel tarih, saat ve yerel saat dilimini oku. Geçmiş tarihe randevu kurma; aşağıdaki tarih yalnız örnektir. CronCreate aracıyla randevu kur. Tek seferlik kontrol için recurring false ver ve dakika, saat, gün, ay alanlarının hepsini sabitle (örnek: "7 18 11 9 *"). Tekrarlayan kontrol için recurring true.
4. Randevu metni kendi başına anlaşılır olsun, çünkü uyanan sen bu konuşmayı hatırlamayabilirsin. İçine yaz: bugünün tarihi, ne kuruldu, neye bakılacak, ölçü, sapmada ne yapılacak.
5. CronList ile randevunun kurulduğunu ve saatini doğrula.
6. Kullanıcıya tek satır yaz: "⏰ 18:07'de uyanıp paylaşımı kontrol edeceğim. Bu sekmeyi kapatma."

## Uyanınca
1. Ölçüye bak. Gerçek veriyle bak, tahminle değil.
2. Yolundaysa sessiz kal. Kullanıcı özellikle sonuç istediyse tek satırla bildir.
3. Sapma varsa: kendi alanındaki şeyi kendin düzelt (kod, ayar, saat, metin). Dışarıya giden işi (mail, silme, yeniden paylaşım, ödeme, müşteri mesajı) önce kullanıcıya sor.
4. Kanıt henüz oluşmadıysa (video daha yayına girmediyse) yeni bir tek seferlik randevu kur. Aynı iş için en fazla 3 kez ertele ve randevu metnine kaçıncı deneme olduğunu yaz. Üçüncüden sonra erteleme; kullanıcıya "Üç denemede de ölçemedim, sebebi şu" de.
5. Ölçemediysen "sorun yok" deme. "Ölçemedim, sebebi şu" de.

## Sınırlar
• Kontrol için Claude Code çalışıyor olmalı. Kapalıyken görev çalışmaz. Güncel sürümlerde --resume bazı randevuları geri getirebilir; buna güvenip sekmeyi kapatma. Yeniden açınca CronList ile doğrula.
• Claude çalışıyorsa bile meşgulken randevu tur sonuna sarkabilir. Bilgisayar uyursa randevu kaçabilir. Uyanınca saati kontrol et, kaçtıysa hemen bak.
• Tekrarlayan randevular 7 gün sonra kendiliğinden silinir. Yenilemeden önce eskisini CronDelete ile sil.
• Aynı işe iki randevu kurma. Kurmadan önce CronList ile bak.
• Bir saatten uzun bekleme için ScheduleWakeup kullanma, CronCreate kullan.
• CronCreate aracı yoksa taklit etme. Kullanıcıya "Bu sürümde zamanlama aracı yok" de.

(SKILL.md dosyası burada biter. Aşağıdaki satırlar dosyanın içine yazılmaz; onlar sana talimattır.)

Dosyayı yazınca başlık bölümünün (--- arası) geçerli olduğunu kontrol et. Sonra bana tek satır yaz: "Kuruldu. Bir işi bitirince 'yarın sabah kontrol et' demen yeter."
08
CODEX TAŞERONU

İsteği Claude'a, işi Codex'e.

Claude işi verir, dönen sonucu kontrol eder ve bana teslim eder.

Codex'i Claude'a bağla
Claude Code'a yapıştır.
KURULUM METNİNİ GÖR
Claude Code'a Codex'i taşeron olarak bağla. Mekanik işi Codex yapsın, sen yönet ve kontrol et. Tarifi harfiyen uygula. Bana soru sormadan bitir.

ORTAMI KORU
Önce iki şeyi öğren: işletim sistemini (Mac, Windows ya da Linux) ve Claude Code sürümünü (claude --version). İkisini de bana tek satırda söyle. Sürüm komutu çalışmazsa kurulumu bulamadığını yaz ve dur. Desteklenmeyen ayarı kurmuş gibi gösterme.
Bu tarif Mac'te yazıldı ama mantığı her sistemde aynıdır. Windows ya da Linux'taysam reddetme, durma: aynı sonucu o sistemin kendi araçlarıyla kur. Komutları, yolları, betik dilini, ses ve paket aracını o sisteme çevir; testleri de orada koş. Yalnız o sistemde gerçekten mümkün olmayan tek parçayı atla, sebebini tek satırla söyle, gerisini kur.
Aşağıdaki ~/.claude yolları, varsa CLAUDE_CONFIG_DIR klasörünü ifade eder. Komutlara gerçek mutlak yolu güvenli tırnaklarla yaz; boşluklu yolları dene.
Eksik klasörleri oluştur. settings.json yoksa boş JSON nesnesiyle başla. Varsa yalnız ilgili alanları birleştir; diğer ayarları koru.
Değişecek dosyaların tarihli yedeğini al; eski yedeği ezme. Aynı kurulum tekrarlandığında kancaları ve kuralları çoğaltma.
Gerçek kullanıcı ayarlarını test verisiyle değiştirme. Testleri geçici klasörde koş. Sonuç belirsizse kuruldu deme.

1. KURULUM KONTROLÜ
• codex --version çalıştır. Yoksa npm install -g @openai/codex ile kur.
• codex login status ile girişe bak. Giriş yoksa bana şunu söyle ve dur: "Terminalde codex login yazıp ChatGPT hesabınla giriş yap, sonra bu mesajı tekrar gönder." Girişi benim yerime yapmaya çalışma.

2. /codex KOMUTU
~/.claude/skills/codex/SKILL.md dosyasını oluştur. Klasör varsa üzerine yazma, bana söyle ve dur. İçeriği tam olarak şu olsun:

---
name: codex
description: Mekanik bir işi (kod taraması, kod yazımı, test, biçim dönüştürme, ikinci göz) Codex'e devreder, sonucu kontrol edip döner.
argument-hint: "[iş]"
---

# /codex

## Ne gider, ne kalır
• Codex'e: kod taraması, kod yazımı, test yazımı, biçim dönüştürme, ikinci göz incelemesi.
• Sende kalır: kullanıcıyla konuşmak, zevk ve ürün kararı, bağlı hesaplardan canlı veri, tek satırlık düzeltme.

## Görev metni
Codex bu sohbeti görmez. Görev metnine dört şey yaz:
• Kabul ölçütü: iş neye bitti denir.
• Kapsam dışı: neye dokunmayacak.
• Kenar vakalar: nerede bozulabilir.
• Kanıt: sonucu nasıl gösterecek.
Sonuna şunu ekle: "En fazla 30 satır özet dön. Ham çıktı dökme."
Görev metnine şifre, anahtar, token ya da kişisel veri koyma.

## Çalıştırma
Görev metnini mktemp ile açtığın geçici bir dosyaya yaz. Komut satırına gömme, tırnaklar bozulur. Sonuç için de mktemp ile bir dosya aç. Sonra:
codex exec -C "PROJE_KLASORU" -s read-only --skip-git-repo-check -o "$SONUC" - < "$GOREV"
• Windows'ta Git Bash varsa aynı komut çalışır. Yoksa PowerShell'de yap: geçici dosyaları New-TemporaryFile ile aç, görevi Get-Content -Raw ile okuyup aynı codex exec komutuna borula. PowerShell'de < yönlendirmesi yoktur.
• Varsayılan salt okuma: -s read-only. Codex dosya yazacaksa -s workspace-write kullan. Önce temiz ve ayrı bir git worktree kur; ana veya kirli çalışma alanında yazdırma. Gerçek proje yolunu bu worktree ile değiştir. Sonra değişikliği git diff ile incele, test et ve kabul edilen değişiklikleri asıl projeye taşı. Ortam veya tokenların kendiliğinden aktarıldığını varsayma.
• Bash aracına en uzun zaman aşımını ver (10 dakika). İş daha uzun sürecekse komutu arka planda başlat, bitince $SONUC dosyasını oku.
• Arka plan işi için süreç veya görev kimliğini sakla. Önce gerçekten tamamlanmasını ve çıkış kodunu bekle; boş ya da eski sonuç dosyasını başarı sayma. Başarısız yazma işleminden sonra önce git diff ile kısmi değişikliği incele; körlemesine tekrar başlatma.
• Codex'in son mesajı $SONUC dosyasındadır, onu oku.

## Kontrol
Codex'in "bitti" demesi yetmez. Değişen dosyaya bak, testi kendin koş. Geçmezse eksik olanı görev metnine ekle ve bir kez daha gönder.

## Codex kullanılamazsa
Kota dolduysa ya da hata verdiyse işi kendin yap. Kullanıcıya tek satırla söyle.

(SKILL.md dosyası burada biter. Aşağıdaki satırlar dosyanın içine yazılmaz; onlar sana talimattır.)

3. KURAL
~/.claude/CLAUDE.md sonuna ekle, var olan içeriğe dokunma: "Mekanik iş (kod taraması, kod yazımı, test, dönüştürme) önce /codex ile Codex'e gider. Karar ve kullanıcıyla konuşma bende kalır."

4. TEST
Küçük bir salt okuma işi gönder: "Bu klasördeki dosyaları say ve en büyük üçünü listele. 5 satırı geçme." Sonucu bana göster.

SON
Testi gerçekten Codex koştuysa ve sonuç dosyasında sorduğun sayı ile dosya adları varsa şunu yaz: "Kuruldu. Ağır işi artık Codex yapacak, ben kontrol edeceğim."
Codex çalışmadıysa (giriş yok, kota dolu, hata) ya da dosya dolu görünüp soruyu cevaplamıyorsa o cümleyi yazma. Ne olduğunu tek satırla söyle: "Komut kuruldu ama Codex şu an cevap vermedi, sebebi şu."
09
CLAUDE'U GELİŞTİREN SOHBETLER

Sistemin sorununa ayrı bir sohbet.

Claude Code'un çalışma düzenindeki sorunu, yalnız o konuya odaklanan başka bir Claude sohbetine veririm.

🧩
Öğrettim, yine unuttu.Yeni sohbette neden bildiği yolu bulamadığını araştırsın.
🔎
İşi yardımcıya veriyor mu?Diğer sohbetlerde iş dağıtımı gerçekten çalışıyor mu, denetlesin.
⚖️
Az token, düşük kalite olmasın.Tasarrufu ve cevap kalitesini birlikte ölçüp iyileştirsin.

Düzelttikten sonra /chat-uyu. Bu özel sohbet belirlenen aralıklarla uyanıp değişikliğin gerçek işlerde hala çalıştığına baksın.

10
HAFIZA TETİKLEYİCİSİ

Hafıza Tetikleyicisi

Bir şeyi bilmesi yetmez. Ben o işi istediğimde, bildiği yönteme gitmeli.

BİZDEKİ GERÇEK ÖRNEK
“Yorum yazana otomatik DM gitsin.”
📂 Daha önce kurduğumuz yöntem

Kaydı yalnız “Meta uygulaması” diye tanımlayınca bulamıyordu. Benim kullanacağım cümleyle eşleştirdik.

HAZIR GELEN / BİZİM EKLEDİĞİMİZ
Claude Code'da hazır

Kalıcı talimatlar, otomatik hafıza ve beceri seçimi.

Bizim kurduğumuz düzen

İsteği doğru kayda bağlayan ve eksik bağlantıları denetleyen hafıza tetikleyicisi.

Herkesin kurulumunda bu özel düzen yok. Hazır özelliklerin üzerine biz geliştirdik.

Yeni sohbette aynı isteği başka sözlerle de denetirim. İlgisiz istekte yanlış yönteme gitmemeli. Claude'un hafızası ↗ · Beceri seçimi ↗

Kendi hafıza tetikleyicini kur
Bizim yaklaşımın öğrenciye uygun başlangıç sürümü.
KURULUM METNİNİ GÖR
Claude Code'a "Hafıza Tetikleyicisi" adında bir başlangıç düzeni kur. Amacım, daha önce kaydettiğimiz yöntemin ben ilgili işi istediğimde bulunması. Bir notun kayıtlı olması ile doğru anda kullanılması ayrı şeylerdir.

ÖNCE ORTAMI TANI
Claude Code sürümünü, kullanıcı yapılandırma klasörünü (CLAUDE_CONFIG_DIR varsa onu, yoksa ~/.claude), bu projenin talimat ve hafıza düzenini incele. Yalnız ilgili dosyaları oku. Mevcut aynı adlı düzen varsa geliştir; ikinci bir kopya kurma. Değişecek dosyaları benzersiz tarihli adlarla yedekle; mevcut ayarları ve kuralları koru. Gizli bilgileri hafızaya veya test çıktısına koyma.

KALICI DÜZEN
1. Kullanıcı düzeyinde beceri dosyasını oluştur: <aktif yapılandırma klasörü>/skills/hafiza-tetikleyicisi/SKILL.md. Ara klasörü atlama, yoksa beceri keşfedilmez. Geçerli YAML frontmatter kullan. Description şu durumları anlatsın: "Yeni bir yöntem veya beceri kaydederken; bunu daha önce yapmıştık ama yine sıfırdan başladın dendiğinde." İçerik kısa olsun: amaç, kayıt yeri, kayda erişme yolu, bilinen tuzaklar ve doğrulama. Her işe aynı çözümü zorlamasın.
2. Kullanıcı düzeyindeki CLAUDE.md'ye kısa bir yönlendirme ekle: "Yeni yöntem veya beceri kalıcılaştırırken çağrılma yolunu da kur; önceki yöntem bulunamadığında hafiza-tetikleyicisi becerisine bak." Mevcut benzer kuralı birleştir, çoğaltma.
3. Bir becerinin description satırını araç adıyla değil, benim o işi isteyeceğim doğal cümlelerle yaz. Örneğin yalnız "Meta aracı" yerine "Yoruma yazana otomatik DM göndermek istediğimde". Açıklama işi hangi durumda çağıracağını anlatsın; her sohbete bütün becerilerin gövdesini yükleme.
4. Bir ders veya karar doğduğunda uygun hafızaya yaz ve onun gerçekten yüklenen indeksinden erişilebilir kıl. Her beceri için zorla hafıza notu üretme. Tüm projelerde geçerli tercihler kullanıcı talimatına, yalnız bu işe ait bilgiler proje kapsamında kalır.
5. Küçük bir denetim komutu ekle: /hafiza-tetikleyicisi çalıştığında yalnız kullanıcı becerileri ve mevcut projenin becerilerinde eksik ya da boş description olanları, bir de kayıtlı fakat bulunamayanları incelesin. Bir kayıt bulunamayan sayılır: kayıtta yazan dosya yolu diskte yoksa. Tüm diski taramasın. Bulgunun dosyasını ve sebebini göstersin; ilgisiz kayıtları değiştirmesin. Başlangıç sürümü manuel denetimlidir; otomatik kanca kurulmuş gibi anlatma.

SINAMA
Gerçek iş yapmayan geçici bir örnek beceriyle dene: aynı ihtiyacı üç farklı cümleyle verince ilgili tarifi bulmalı; iki ilgisiz istekte seçmemeli. Yeni bir oturumda yalnız kalıcı dosyalarla dene, önceki sohbetin ipucunu taşıma. Test verisini gerçek hafızaya ekleme. Test bitince o geçici beceriyi sil, kalıcı bırakma. İkinci kurulumda kurallar çoğalmamalı ve eski içerik korunmalı. Bulunabilirlik testinde dış servise mesaj gönderme veya işlem yapma.
Otomatik seçilme testinde becerinin adını veya dosya yolunu söyleme ve /hafiza-tetikleyicisi çağırma; yalnız doğal isteği ver. Dosyayı açıkça okutarak alınan sonucu otomatik tetiklenme kanıtı sayma.

TESLİM
Hangi kalıcı dosyaya ne eklendiğini ve taze oturumda neyin gerçekten sınandığını kısa yaz. Taze oturum testi mümkün olmadıysa bunu açıkça belirt; "artık asla unutmaz" deme.
11
İYİ SKILL NASIL OLMALI?

Skill, ezber reçete yerine bağlam versin.

Modeli tamamlasın: amacı ve önemli bilgiyi versin, çözüm için hareket alanı bıraksın.

01 · SEÇENEK SUNMAK sunum-deck · solda gerçek alıntı
KISITLAYAN
“Kural: birden çok alternatif sunma.”
BAĞLAM VEREN
“Amaç karar vermeyi kolaylaştırmak. Anlamlı fark varsa seçenekleri karşılaştır.”
02 · GÖRSEL DİL website-olusturucu · solda Türkçe çeviri
KISITLAYAN
“Renkler seçilen şablonla birebir eşleşsin.”
BAĞLAM VEREN
“Şablon markanın görsel dilini gösterir. Renkleri okunurluğu da gözeterek seç.”
03 · ÖRNEĞİ KULLANMAK sunum-deck · solda gerçek alıntı
KISITLAYAN
“Yeni deck bunlara birebir uymalı.”
BAĞLAM VEREN
“Örnekler sade anlatımın referansı. Sunumun düzenini konuya ve izleyiciye göre kur.”

Sağdakiler aynı cümleler için yeniden yazım önerileri. Gerçek gereksinim ve güvenlik sınırları açık kalır.

12
GÜNLÜK ALIŞKANLIKLAR

Bir kez kur, her gün kullan.

12.1 · CEVABI DİNLE

!oku

Uzun cevabı dinliyorum; okumak için ekrana bağlı kalmıyorum.

› !okuBu sohbetin son cevabı → ses
!oku komutunu kur
Mac, Windows ve Linux’ta ücretsiz sistem sesiyle çalışan başlangıç sürümü.
KURULUM METNİNİ GÖR
Claude Code terminaline !oku komutunu kur. Yazınca yalnız bu sohbetin son tamamlanmış cevabını sesli okusun. Yeniden !oku veya !oku dur yazınca yalnız bu oturumun okumasını durdursun. Bilgisayarın ücretsiz sistem sesini kullan: Mac'te say, Windows'ta yerleşik konuşma motoru (PowerShell ile System.Speech), Linux'ta spd-say ya da espeak. Ücretli API veya yeni hesap gerekmesin.

ORTAMI KORU
Önce işletim sistemi ve Claude Code sürümünü doğrula. Tarif Mac'te yazıldı ama mantığı her sistemde aynıdır. Windows ya da Linux'taysam reddetme, durma: aynı sonucu o sistemin kendi araçlarıyla kur. Yalnız o sistemde gerçekten mümkün olmayan tek parçayı atla, sebebini tek satırla söyle, gerisini kur. CLAUDE_CONFIG_DIR varsa onu, yoksa ~/.claude kullan. Mevcut oku komutu veya aynı amaçlı kurulum varsa üzerine yazma; uyumlu biçimde geliştir. Değişecek dosyalara benzersiz tarihli yedek al. settings.json içindeki diğer ayarları ve kancaları koruyarak birleştir. Aynı kurulum ikinci kez çalışınca çoğalmasın. Yollar boşluk ve Türkçe karakter içerebilir.

OTURUMU DOĞRU BAĞLA
Güncel Claude Code, ! komutlarının çıktısına otomatik cevap verebilir. Bu cevap asıl okunacak metnin yerine geçmesin. Bu kurulumda kullanıcı settings.json dosyasına respondToBashCommands: false ayarını diğer alanları koruyarak ekle; desteklendiğini resmi belgede doğrula. Eski değeri yedekte sakla. Bunun bütün ! komutlarından sonraki otomatik Claude yanıtını kapattığını teslimde tek cümleyle belirt. Desteklenmeyen veya üst politika tarafından engellenen ayarda sessiz çalışma doğrulanamazsa eksikliği bildir, çalışıyor sayma.
Resmi Claude Code hooks belgesinden mevcut sürümün SessionStart ve Stop alanlarını doğrula.
Stop girdisindeki session_id ile last_assistant_message değerlerini kullanarak yalnız tamamlanmış son cevabı kaydet. Transkriptin o anda diske yazılmış olduğunu varsayma. Oturum kimliğini güvenli dosya adına dönüştür; atomik yaz, dizin izni 700 ve dosya izni 600 olsun. Boş cevapta önceki cevap yanlışlıkla okunmasın. Bozuk kanca girdisi oturumu kilitlemesin.
SessionStart'ta oturum kimliğini ve gereken komut yolunu CLAUDE_ENV_FILE aracılığıyla sonraki kabuk komutlarına güvenli biçimde aktar. Bu dosya Stop'ta varmış gibi davranma. Hazır oturum kimliği değişkeni varsa aynı oturuma aitliğini doğrula. !oku kabuğunun doğru kimliği gerçekten aldığını sınamadan varsayma. Kimlik yoksa veya bu oturumun cevabı henüz yoksa kısa açıklamayla çık. En yeni dosyaya, başka sekmeye veya ortak son-cevap dosyasına asla düşme.

SES VE KOMUT
oku çalıştırılabilir dosyasını kullanıcıya ait bir bin dizinine koy; terminalin !oku ile bulmasını sağla. Var olan PATH ve kabuk ayarlarını ezme. Türkçe sesi sistem sesinin kurulu sesleri arasından keşfet (Windows'ta Türkçe ses, Türkçe konuşma paketiyle gelir); yoksa eksikliği söyle, kendiliğinden indirme başlatma.
Metni shell kodu olarak çalıştırma; dosya veya stdin üzerinden ses aracına ver. Türkçe, çok satırlı metin, tırnak, ters tırnak ve dolar işareti aynen metin kalsın. Komut hemen dönsün, ses arka planda sürsün. Aynı oturumda çift oynatma oluşmasın. Süreci oturuma özel kimlik ve sahiplik kontrolüyle takip et; PID yeniden kullanılmışsa başka süreci durdurma. killall, pkill ya da taskkill ile diğer sesleri veya uygulamaları kapatma. Hata verirse "okunuyor" diye başarı bildirme.
Durdurma yolunu cevap dosyası ve Türkçe ses kontrolünden önce işlet. !oku dur, cevap kaydı silinmiş veya ses aracı sonradan erişilemez olmuş olsa da doğrulanmış kendi oynatımını durdurabilsin. Oturum kimliği yoksa başka süreç arama.

SINAMA VE TESLİM
Testleri geçici ayar dizininde, sesi gerçekten çalmayan bir ses aracı taklidiyle yap: A ve B oturumları kendi cevabını okusun; kimliksiz/boş/bozuk kayıt okunmasın; Türkçe ve özel karakterler korunsun; başlat/durdur yalnız kendi sürecini etkilesin; tekrar kurulum eski ayarları korusun. Kurulum sırasında ses oynatma.
Ek karşı örnekler: !oku sonrasında otomatik kontrol cevabı oluşup son-cevap kaydı değişmemeli; cevap dosyası silindikten sonra !oku dur kendi oynatımını yine durdurmalı. respondToBashCommands ayarının etkinliğini yalnız dosyada yazılı olmasından çıkarma.
Dosya kurulumu ile canlı doğrulamayı ayır. Gerçek taze Claude Code oturumunda !oku'nun doğru cevabı seçtiğini ve komutun bulunduğunu doğrulayabilirsen bunu belirt; yapamadıysan "dosyalar hazır, yeni oturumda sesli kullanım henüz doğrulanmadı" de. Bana kullanımını iki satırda göster: !oku ve !oku dur.
12.2 · AYNI TERCİHİ TEKRAR ÖĞRETME

Her seferinde istiyorsam, kalıcılaştırırım.

Tüm işlerimde geçerliyse global talimata; yalnız bu işe aitse proje hafızasına.

“Bunu sonraki sohbetlerde de uygula. Tüm projelerim için kalıcı tercihim olarak kaydet.”
Kalıcı tercih mantığını öğret
Her yeni sohbette aynı kontrolü baştan yapmamak için.
KURULUM METNİNİ GÖR
Şu çalışma mantığını Claude Code'da kalıcılaştır: Bir davranışı "bundan sonra", "her seferinde" veya "bunu tekrar söylemeyeyim" diye istediğimde, yalnız bu sohbette uygulamakla yetinme. Tercihin doğru kapsamda kalıcı kayda girmesini sağla.

Önce aktif kullanıcı yapılandırma klasörünü bul: CLAUDE_CONFIG_DIR varsa o, yoksa ~/.claude. Mevcut kullanıcı ve proje talimatlarını oku; değiştireceğin dosyaların benzersiz tarihli yedeğini al, içeriği koru. Kullanıcı düzeyindeki CLAUDE.md'ye bu kısa ilkeyi ekle veya mevcut eşdeğerini güncelle:

"Kullanıcı bir davranışı tekrar tekrar istediğini açıkça söylüyorsa kapsamına uygun kalıcılaştır. Tüm işler için geçerliyse kullanıcı düzeyindeki talimata, yalnız bir proje içinse o projenin talimatına veya hafızasına kaydet. Geçici bir isteği kendiliğinden global kurala dönüştürme. Çelişen eski tercihi çöz, aynı kuralı çoğaltma; kapsam gerçekten belirsizse tek kısa soru sor. Kaydın yeni oturumda yüklenebilen bir yerde olmasını sağla."

Global, aynı kullanıcı yapılandırmasını kullanan projeler demektir; başka hesap ve cihaza otomatik aktarım vaat etme. Otomatik proje hafızasını bütün projelere geçerli kullanıcı talimatı sanma. Her yanıta kayıt raporu ekleme; ilk kalıcılaştırmada kapsamı tek cümleyle belirt.

Deneme için gerçek tercihlerimi değiştirme. Geçici yapılandırmada "tüm projelerimde Türkçe yanıt ver" ve "yalnız bu projede resmi dil kullan" örnekleriyle kapsamı sına. Tek seferlik isteğin global dosyaya yazılmadığını da kontrol et. Gerçek kalıcı kuralın taze oturumda yüklendiğini doğrula; yapamıyorsan bunu belirt. Aynı kurulumun ikinci çalışmasında yinelenen madde oluşmasın. Sonucu kısa yaz.
12.3 · YALNIZ KULLANACAĞIN METNİ AL

Temiz metin ayrı dursun.

Açıklama dışarıda; göndereceğim metin iki çizginin arasında.

BENİM ALDIĞIM CEVAP

Mesaj hazır:

── ⬇ BURADAN KOPYALA ⬇ ──

Merhaba, yarın saat 14.00 benim için uygundur. Görüşmek üzere.

── ⬆ BURAYA KADAR ⬆ ──
Aynı temiz çıktıyı al
Bu tercihi tüm projelerinde kalıcılaştırır.
KURULUM METNİNİ GÖR
Claude Code cevaplarım için şu temiz metin düzenini kalıcı tercih olarak kur. Bu, başka yere kopyalayacağım mesaj, açıklama, başlık veya promptlar için geçerli olsun; sıradan bilgi cevaplarına gereksiz çizgi ekleme.

KOPYALANACAK METİN DÜZENİ
Kısa açıklaman varsa dışarıda dursun. Kullanacağım asıl metni şu iki satırın arasına koy:

── ⬇ BURADAN KOPYALA ⬇ ──
Merhaba, yarın saat 14.00 benim için uygundur. Görüşmek üzere.
── ⬆ BURAYA KADAR ⬆ ──

Çizgilerin arasında yalnız göndereceğim metin olsun. "İşte metnin", değerlendirme, not veya kaynak açıklaması ekleme. Düz metin isteğinde Markdown süsü, alıntı işareti veya kod çiti kullanma; doğal paragraf sonlarını koru, ekrana sığdırmak için yapay satır kırma. Metnin kendi içeriği gerektiriyorsa bağlantıyı ve noktalama işaretlerini koru. Özellikle kod ya da Markdown istersem istenen biçimi uygula; bu tercih içeriğin gerektirdiği biçimi bozmasın.
Birden çok ayrı metin gerekiyorsa her birine ayrı çizgi çifti koy, hangi metin olduğunu çizgilerin dışında belirt. Kendiliğinden panoya yazma; bu düzen ekrandan temiz kopyalama içindir.

KALICI KAYIT
Aktif kullanıcı yapılandırma klasöründeki CLAUDE.md'ye bu tercihi kısa ve açık biçimde ekle (CLAUDE_CONFIG_DIR varsa onu, yoksa ~/.claude kullan). Bu bütün projelerim için bir çıktı tercihi. Mevcut dosyayı benzersiz tarihli yedekle, diğer kuralları koru, aynı tercih zaten varsa birleştir. Benzer kurallarla çelişki üretme.

DOĞRULA
Tek mesaj, iki ayrı mesaj, sıradan bilgi sorusu ve özellikle kod istediğim dört örneği kontrol et. Çizgi içinden alınan metin yalnız istenen içerik olmalı. Tercihin taze bir oturumda yüklenmesini de doğrula; yapamıyorsan doğrulanmış gibi anlatma. Son cevapta kısa bir örnek göster; yapılan teknik işlemleri uzun uzun anlatma.