<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="tr"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://ahmetcadirci.com/feed/index.xml" rel="self" type="application/atom+xml" /><link href="https://ahmetcadirci.com/" rel="alternate" type="text/html" hreflang="tr" /><updated>2026-09-20T17:36:53+03:00</updated><id>https://ahmetcadirci.com/feed/index.xml</id><title type="html">Ahmet Çadırcı</title><subtitle>Kişisel web siteme blog yazıları, videolar, podcast&apos;ler ve çeşitli teknoloji içerikleri yayınlamaktayım. Web geliştirme, tasarım ve teknoloji alanlarındaki deneyimlerimi paylaşıyor, güncel konulara değiniyorum.
</subtitle><author><name>Ahmet Çadırcı</name><email>info@ahmetcadirci.com</email></author><entry><title type="html">Eski Bir MacBook’u Ev Sunucusuna Dönüştürmek: Docker Yolculuğu</title><link href="https://ahmetcadirci.com/2026/docker/" rel="alternate" type="text/html" title="Eski Bir MacBook’u Ev Sunucusuna Dönüştürmek: Docker Yolculuğu" /><published>2026-06-27T19:32:00+03:00</published><updated>2026-06-27T19:32:00+03:00</updated><id>https://ahmetcadirci.com/2026/docker</id><content type="html" xml:base="https://ahmetcadirci.com/2026/docker/"><![CDATA[<p>Bir gün atıl kalan eski bir MacBook’a baktım ve şunu düşündüm: “Bu makine hâlâ çalışıyor, neden boşta beklesin?” İşte o andan itibaren başlayan ve beni beklenmedik bir öğrenme yolculuğuna sürükleyen süreç, bu yazının konusu.</p>

<h2 id="başlangıç-eski-donanım-yeni-ufuklar">Başlangıç: Eski Donanım, Yeni Ufuklar</h2>

<p>2017 model bir MacBook Pro ile yola çıktım. Intel işlemci, 8 GB RAM, macOS Ventura. İlk engel hemen karşıma çıktı: güncel Docker Desktop artık bu donanımı desteklemiyordu.</p>

<p>Ama her kısıtlama yeni bir çözümü beraberinde getirir.</p>

<h3 id="çözüm-colima--macports">Çözüm: Colima + MacPorts</h3>

<p>MacPorts ile Docker araçlarını kurdum, Docker Desktop’ın yaptığı işi ise <strong>Colima</strong> üstlendi. Colima, arka planda hafif bir Linux VM çalıştırarak Docker daemon’u ayağa kaldırıyor. Sonuç? Docker Desktop olmadan tam işlevsel bir Docker ortamı.</p>

<p>Kurulum mantığım netti:</p>
<ul>
  <li><strong>brew</strong> → sadece GUI uygulamalar</li>
  <li><strong>MacPorts</strong> → CLI araçları ve servisler</li>
</ul>

<p>Bu ayrım, sistemi düzenli tutmanın en kolay yolu oldu.</p>

<h2 id="portainer-dockerı-görselleştirmek">Portainer: Docker’ı Görselleştirmek</h2>

<p>Terminal komutlarıyla container yönetmek başlangıçta karmaşık gelebilir. <strong>Portainer</strong> bu sorunu çözdü — Docker’ın üstünde çalışan, tarayıcıdan erişilen bir yönetim arayüzü.</p>

<p>Container başlatmak, durdurmak, log görmek, volume yönetmek… Hepsi birkaç tıkla. Üstelik Portainer’ın kendisi de bir Docker container’ı olarak çalışıyor.</p>

<h3 id="öğrenilen-kritik-kavramlar">Öğrenilen Kritik Kavramlar</h3>

<p><strong>Container vs Stack:</strong> Tek başına çalışan servisler için container yeterli. Birden fazla servisi birlikte çalıştırman gerekiyorsa — örneğin bir uygulama + veritabanı + cache — Stack kullanmak gerekiyor. Stack’ler <code class="language-plaintext highlighter-rouge">docker-compose.yml</code> mantığıyla çalışıyor.</p>

<p><strong>Restart Policy:</strong> Her container’ı <code class="language-plaintext highlighter-rouge">Always</code> restart politikasıyla kurmak, sistemi yeniden başlattığında her şeyin otomatik ayağa kalkmasını sağlıyor. Bunu öğrenmeden önce her seferinde container’ları tek tek başlatmak zorunda kaldım.</p>

<p><strong>Volume vs Bind Mount:</strong> Container silindiğinde veriler de gidebilir. Verinin kalıcı olması için ya named volume ya da host’taki bir klasörü bağlamak (bind mount) şart.</p>

<h2 id="hazır-şablonlar-hızlı-kurulumun-gücü">Hazır Şablonlar: Hızlı Kurulumun Gücü</h2>

<p>Portainer’ın App Templates özelliği, popüler uygulamaları form doldurup “Deploy” diyerek kurmaya yarıyor. Topluluk tarafından hazırlanmış şablon listeleri ekleyince yüzlerce uygulama tek tıkla erişilebilir hale geliyor.</p>

<p>Elbette dikkatli olmak gerekiyor: şablonlar resmi değil. Port ayarlarını, volume path’lerini kendi sistemine göre düzenlemek şart.</p>

<h2 id="tek-dizin-felsefesi-her-şey-bir-arada">Tek Dizin Felsefesi: Her Şey Bir Arada</h2>

<p>Birkaç container kurduktan sonra kaos başladı. Config dosyaları nerede? Veriler nerede?</p>

<p>Çözüm basitti: <strong>tek bir dizin altında her şeyi toplamak.</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~/Documents/docker/
├── jellyfin/
│   ├── config/
│   └── media/
├── navidrome/
│   ├── config/
│   └── music/
├── kavita/
│   ├── config/
│   └── books/
└── nextcloud/
    ├── config/
    └── data/
</code></pre></div></div>

<p>Bu yapı sayesinde:</p>
<ul>
  <li>Finder’dan kolayca erişebiliyorum</li>
  <li>Yedek almak tek komut</li>
  <li>Hangi verinin nerede olduğunu biliyorum</li>
</ul>

<p>Her servis kendi klasöründe, config ve data ayrı. Basit ama etkili.</p>

<h2 id="tailscale-kendi-özel-ağın">Tailscale: Kendi Özel Ağın</h2>

<p>Evdeki tüm servislere dışarıdan güvenle erişmek istiyordum. Port açmak istemiyordum, statik IP yoktu. <strong>Tailscale</strong> her şeyi çözdü.</p>

<p>Tailscale, cihazların arasında şifreli bir VPN ağı oluşturuyor. MacBook, iPhone, iPad, başka bilgisayar — hepsi sanki aynı ağdaymış gibi birbirine bağlanıyor.</p>

<p><strong>MagicDNS</strong> özelliğiyle IP adresi ezberlemek de tarihe karıştı. <code class="language-plaintext highlighter-rouge">http://macbook.tailnet.ts.net:8096</code> gibi anlamlı adreslerle tüm servislere ulaşabiliyorum.</p>

<p>Tailscale’in güzelliği: kurulum beş dakika, sonrasında sıfır bakım.</p>

<h2 id="neler-kurdum-kendi-ekosistemim">Neler Kurdum: Kendi Ekosistemim</h2>

<p>Bu süreçte kurduğum servislerin bir kısmı:</p>

<p><strong>Medya</strong></p>
<ul>
  <li><strong>Jellyfin</strong> → kişisel Netflix, video ve müzik</li>
  <li><strong>Navidrome</strong> → müzik sunucusu, iOS uygulamasıyla offline dinleme</li>
  <li><strong>Kavita</strong> → e-kitap okuyucu, EPUB ve PDF desteği</li>
</ul>

<p><strong>Üretkenlik</strong></p>
<ul>
  <li><strong>FreshRSS</strong> → RSS okuyucu, içerik takibi</li>
  <li><strong>Linkding</strong> → bookmark yöneticisi</li>
  <li><strong>Memos</strong> → hızlı not alma</li>
  <li><strong>Nextcloud</strong> → kişisel bulut depolama</li>
</ul>

<p><strong>Araçlar</strong></p>
<ul>
  <li><strong>Stirling PDF</strong> → PDF düzenleme</li>
  <li><strong>MeTube</strong> → YouTube indirici</li>
  <li><strong>LibreTranslate</strong> → çeviri servisi</li>
  <li><strong>SearXNG</strong> → gizlilik odaklı arama motoru</li>
</ul>

<p><strong>Dashboard</strong></p>
<ul>
  <li><strong>Homepage</strong> → tüm servislerin tek ekranda görüntülendiği başlangıç sayfası</li>
</ul>

<p>Her şey kendi container’ında, birbirinden izole, tek bir arayüzden yönetilebilir.</p>

<h2 id="geliştirme-ortamı-docker-ile-kod-yazmak">Geliştirme Ortamı: Docker ile Kod Yazmak</h2>

<p>Docker sadece hazır uygulamalar için değil, kendi projelerini geliştirmek için de ideal.</p>

<p>PHP + SQLite ile basit bir web uygulaması geliştirmek için yaptığım şey şuydu:</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">services</span><span class="pi">:</span>
  <span class="na">proje</span><span class="pi">:</span>
    <span class="na">image</span><span class="pi">:</span> <span class="s">php:8.2-apache</span>
    <span class="na">ports</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">8085:80</span>
    <span class="na">volumes</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">/Users/kullanici/Documents/www/proje:/var/www/html</span>
</code></pre></div></div>

<p><strong>Bind mount</strong> sayesinde Mac’te kod editöründe dosyayı kaydettiğimde, tarayıcıyı yenilediğimde değişiklik anında görünüyor. Yeniden build gerekmez, container’ı restart etmek gerekmez.</p>

<p>Birden fazla proje? Her biri farklı portta, birbirinden tamamen izole. PHP 8.2 kullanan bir proje, Python kullanan başka bir proje — hiç çakışma yok.</p>

<p><strong>Cron işleri</strong> için de container içine cron daemon kurarak kalıcı zamanlama işleri tanımladım. Container yeniden başlasa bile cron konfigürasyonu Dockerfile’da olduğu için kaybolmuyor.</p>

<h2 id="cloudflare-tunnel-dışarıya-açılmak">Cloudflare Tunnel: Dışarıya Açılmak</h2>

<p>Tailscale ile kişisel erişim çözüldü. Peki ya projeleri dünyaya açmak?</p>

<p><strong>Cloudflare Tunnel</strong> burada devreye girdi. Router ayarı yok, port açma yok, statik IP yok. Sadece bir Docker container çalıştırıyorsun ve Cloudflare kendi altyapısı üzerinden trafiği yönlendiriyor.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Kullanıcı → Cloudflare CDN → Tunnel → MacBook → Docker Container
</code></pre></div></div>

<p>Üstelik HTTPS otomatik geliyor. Sertifika yönetimi, SSL kurulumu — bunların hiçbiriyle uğraşmak yok.</p>

<p>Tek bir Cloudflare Tunnel container’ı ile birden fazla domain ve subdomain yönetilebiliyor. Yeni bir proje için sadece Cloudflare panelinden yeni bir “Public Hostname” ekliyorsun.</p>

<h2 id="zero-trust-ile-güvenlik-katmanı">Zero Trust ile Güvenlik Katmanı</h2>

<p>Cloudflare Zero Trust, servislerin önüne bir kimlik doğrulama katmanı ekliyor. Google hesabıyla giriş zorunluluğu, IP kısıtlamaları, oturum süreleri…</p>

<p>Bir test sitesini herkese açık tutmak yerine sadece belirli kişilerin erişebileceği şekilde kilitlemek birkaç tıkla mümkün. Şirket VPN’lerine alternatif, ev kullanıcısı için ise ekstra bir güvenlik kalkanı.</p>

<h2 id="öğrendiklerim">Öğrendiklerim</h2>

<p>Bu yolculukta teknik bilginin ötesinde bazı temel prensipler oturdu kafamda:</p>

<p><strong>Organizasyon her şeydir.</strong> İlk başta gelişigüzel kurulan container’lar zamanla kaosa döndü. Tek dizin, tutarlı isimlendirme ve her servis için ayrı klasör — bunlar sonradan düzeltilmesi zor alışkanlıklar.</p>

<p><strong>Basit başla, karmaşıklaştırma.</strong> Her şeyi bir anda kurmaya çalışmak yerine bir servisi tam anlamıyla anlamak, sonrakini daha hızlı kurmayı sağladı.</p>

<p><strong>Log okumayı öğren.</strong> Bir şey çalışmadığında <code class="language-plaintext highlighter-rouge">docker logs container_adı</code> komutu her zaman cevabı veriyor. Hata mesajını okumak, çözümün yarısı.</p>

<p><strong>Yedek alma alışkanlığı edin.</strong> Tüm config ve data tek bir dizinde olduğunda yedek almak tek komut: klasörü kopyala, bitti.</p>

<h2 id="sonuç">Sonuç</h2>

<p>Atıl bir MacBook, artık 7/24 çalışan kişisel bir sunucu. Medya sunucusu, müzik akışı, not alma, RSS okuyucu, kişisel bulut, geliştirme ortamı — hepsi tek bir makinede, tek bir ekosistemde.</p>

<p>Docker öğrenmek başlangıçta göz korkutucu görünüyor. Container nedir, image nedir, volume nedir… Ama bir kez oturunca, hiçbir şeyi eski yönteme dönüp kurmak istemiyorsun.</p>

<p>Eski bir MacBook varsa ve Docker merakın varsa: hemen başla. En kötü ihtimalle yeni bir şey öğrenirsin.</p>]]></content><author><name>Ahmet Çadırcı</name><email>info@ahmetcadirci.com</email></author><summary type="html"><![CDATA[Bir gün atıl kalan eski bir MacBook’a baktım ve şunu düşündüm: “Bu makine hâlâ çalışıyor, neden boşta beklesin?” İşte o andan itibaren başlayan ve beni beklenmedik bir öğrenme yolculuğuna sürükleyen süreç, bu yazının konusu.]]></summary></entry><entry><title type="html">Merhametin ve Şefkatin Kaynağı: Peygamber Ahlâkı</title><link href="https://ahmetcadirci.com/2026/peygamber-ahlaki/" rel="alternate" type="text/html" title="Merhametin ve Şefkatin Kaynağı: Peygamber Ahlâkı" /><published>2026-06-23T09:01:00+03:00</published><updated>2026-06-23T09:01:00+03:00</updated><id>https://ahmetcadirci.com/2026/peygamber-ahlaki</id><content type="html" xml:base="https://ahmetcadirci.com/2026/peygamber-ahlaki/"><![CDATA[<p>Mevlâna Celaleddin-i Rümi, çocukları ve fakirleri çok sever, ehl-i masiyete merhametle muamele eder. Onları, içinde bulunduklar ibtilâlardan halâs etmeğe çalışırdı. Sokakta giderken küçükler etrafına toplanır, elini öpmek için can atarlardı.</p>

<p>Hattâ birinde, bir çocukcağız bağırarak:</p>

<blockquote>
  <p>Ne olur Hüdavendigâr, işte oyunum bitiyor, biraz dur da ben de elini öpeyim.</p>
</blockquote>

<p>Mevlâna bekledi, çocuk oyunu ikmal edip geldi, elini öptü.</p>

<p>Peygamber efendimizin yüksek ahlâkı da böyle idi. Yolda çocuklara selâm verir, onlara hediyeler vererek gönüllerini alır, yetim ve fakir çocukları sevindirirdi. Onlarla lâtife eder, neşelendirirdi. Umeyr adında bir çocuk oynadığı bir serçe yavrusunu elinden kaçırıverdi. Onun müteessir olduğunu gören Resül-i Ekrem Efendimiz bir şeyler vererek teselli buyurdular.</p>

<p>Sonra o yavrucağızı Muhterem Peygamberimiz nerede görse:</p>

<blockquote>
  <p>Ya Umeyr; serçecik ne yaptı?</p>
</blockquote>

<p>diye iltifatta bulunurlardı.</p>

<p>Buradan şunu anlıyoruz ki: velilerin ahlâkı, Peygamberin ahläkından alınmadır. Her insan, Resůl-i zişan efendimizin edep ve ahlâkına ittiba kadar kâmildir.</p>

<p>Bu hikmete mebni, bir hadis-i şerifte:</p>

<blockquote>
  <p>Allah’ın ve Rasûlullahın ahläkı ile ahlâklanınız» buyurumuştur.</p>
</blockquote>

<p>Kaynak: Tahir Büyükkörükçü - Mevlana ve Mesnevi / Hakiki Vechesiyle</p>]]></content><author><name>Ahmet Çadırcı</name><email>info@ahmetcadirci.com</email></author><summary type="html"><![CDATA[Mevlâna Celaleddin-i Rümi, çocukları ve fakirleri çok sever, ehl-i masiyete merhametle muamele eder. Onları, içinde bulunduklar ibtilâlardan halâs etmeğe çalışırdı. Sokakta giderken küçükler etrafına toplanır, elini öpmek için can atarlardı.]]></summary></entry><entry><title type="html">Claude Code 101</title><link href="https://ahmetcadirci.com/2026/claude-code-101/" rel="alternate" type="text/html" title="Claude Code 101" /><published>2026-06-16T09:01:00+03:00</published><updated>2026-06-16T09:01:00+03:00</updated><id>https://ahmetcadirci.com/2026/claude-code-101</id><content type="html" xml:base="https://ahmetcadirci.com/2026/claude-code-101/"><![CDATA[<p>Claude Code 101; yazılım mühendisliğine yeni başlayan geliştiriciler veya yapay zekâ kodlama ajanlarını henüz keşfetmemiş deneyimli mühendisler için tasarlanmıştır. Kurulumdan gelişmiş özelleştirmelere kadar her konuda size rehberlik ederek Claude Code’u günlük iş akışınızda nasıl etkili bir şekilde kullanacağınızı öğretir.</p>

<ul>
  <li><a href="#claude-code-nedir">Claude Code Nedir?</a></li>
  <li><a href="#claude-code-nasıl-çalışır">Claude Code Nasıl Çalışır?</a></li>
  <li><a href="#claude-code-kurulumu">Claude Code Kurulumu</a></li>
  <li><a href="#i̇lk-i̇steminiz">İlk İsteminiz</a></li>
  <li><a href="#keşfet--planla--kodla--gönder-commit-i̇ş-akışı">Keşfet → Planla → Kodla → Gönder (Commit) İş Akışı</a></li>
  <li><a href="#bağlam-yönetimi">Bağlam Yönetimi</a></li>
  <li><a href="#kod-i̇nceleme-code-review">Kod İnceleme (Code Review)</a></li>
  <li><a href="#claudemd-dosyası">CLAUDE.md Dosyası</a></li>
  <li><a href="#alt-ajanlar-subagents">Alt Ajanlar (Subagents)</a></li>
  <li><a href="#yetenekler-skills">Yetenekler (Skills)</a></li>
  <li><a href="#mcp">MCP</a></li>
  <li><a href="#kancalar-hooks">Kancalar (Hooks)</a></li>
</ul>

<h2 id="claude-code-nedir">Claude Code Nedir?</h2>

<p>Claude Code; kod tabanınızı anlayan, dosyalarınızı düzenleyen, komutlar çalıştıran ve işlerinizi daha hızlı halletmenize yardımcı olmak için mevcut geliştirici araçlarınızla entegre olan yapay zekâ tabanlı (ajan nitelikli) bir kodlama aracıdır. Terminalinizde, Visual Studio Code’da, Claude Masaüstü uygulamasında, web üzerinde ve JetBrains IDE’lerinde kullanılabilir.</p>

<p><a href="https://www.youtube.com/watch?v=fl1DSmwQKKY"><img src="https://wsrv.nl/?output=webp&amp;url=markdown-videos-api.jorgenkh.no/youtube/fl1DSmwQKKY%3Fwidth%3D854%26height%3D480" alt="" /></a></p>

<h3 id="claude-codeu-claudedan-ayıran-nedir">Claude Code’u Claude’dan Ayıran Nedir?</h3>

<p>Daha önce Claude.ai kullandıysanız Claude Code’un farkının ne olduğunu merak ediyor olabilirsiniz. Claude.ai’ın aksine Claude Code; dosyalarınıza, terminalinize ve tüm kod tabanınıza doğrudan erişebilir. Kodu sürekli ileri geri kopyalayıp yapıştırmak yerine, doğrudan işin içine girer ve görevi kendisi halleder.</p>

<p>En önemli fark, Claude Code’un bir <strong>Yapay Zekâ Ajanı (AI Agent)</strong> olarak çalışmasıdır.</p>

<h3 id="ajan-agent-nedir">Ajan (Agent) Nedir?</h3>

<p>Yapay Zekâ Ajanı, çevresiyle etkileşime girebilen ve belirlenmiş bir hedefi tamamlamak için eylemler gerçekleştirebilen bir yazılımdır. Bu sistem, temelinde büyük bir dil modelinin gerçek zamanlı bir döngü içinde çalışmasıyla işler. Yapay zekâ ajanları, hedeflerine ulaşmak için araçlara, harici hizmetlere ve hatta diğer yapay zekâ ajanlarına erişim sağlayabilir.</p>

<h3 id="claude-code-gerçekte-ne-yapabilir">Claude Code Gerçekte Ne Yapabilir?</h3>

<p>Pratikte süreç şu şekilde işler:</p>

<ul>
  <li><strong>Kod tabanınızı okur ve anlar.</strong> Claude Code’dan bir özelliği açıklamasını veya kodunuzdaki bir hatanın izini sürmesini isteyebilirsiniz.</li>
  <li><strong>Projeniz genelindeki dosyaları düzenler.</strong> Claude Code bir fonksiyonu yeniden yapılandırabilir (refactor) ve ona referans veren her dosyayı güncelleyebilir.</li>
  <li><strong>Terminal komutlarını çalıştırır.</strong> Derleme (build) betiğinizi yürütebilir, testlerinizi çalıştırabilir, paketleri yükleyebilir ve bir sonraki adımda ne yapacağına karar vermek için bu çıktıları kullanabilir.</li>
  <li><strong>Web’de arama yapar.</strong> Dokümantasyona veya en güncel API referanslarına ihtiyaç duyduğunda bunları sizin için araştırabilir.</li>
</ul>

<h3 id="claude-codeu-etkili-kullanmak">Claude Code’u Etkili Kullanmak</h3>

<p>Claude Code’u etkili bir şekilde kullanmak için şu üç kavramı aklınızda bulundurun:</p>

<p><strong>Bağlam penceresi (Context window).</strong> Bunu Claude’un çalışma belleği gibi düşünün. Çok fazla bilgi barındırabilir ancak her şeyi aynı anda tutamaz. “Ajan” niteliği tam da bu noktada devreye girer; Claude, tüm kod tabanını bağlama yüklemek yerine, kodunuzun içindeki yanıtları bulmak için stratejik yollar geliştirir.</p>

<p><strong>İzin ister.</strong> Claude Code, varsayılan olarak komutları çalıştırmadan veya değişiklik yapmadan önce size sorar. İster sürece doğrudan dahil olmayı ister arkaya yaslanıp izlemeyi tercih edin, kontrol her zaman sizdedir.</p>

<p><strong>Hata yapabilir.</strong> Her araç gibi Claude Code da kusursuz değildir. Amacınızı yanlış anlayabilir, bir hataya (bug) yol açabilir veya bir çözümü gereğinden fazla karmaşıklaştırabilir (over-engineer). Sürecin içinde kalmanız, bunları erkenden yakalamanıza yardımcı olur.</p>

<h3 id="özet">Özet</h3>

<p>Claude Code, yapay zekâ tabanlı bir kodlama aracıdır. Kod tabanınızı okur, dosyalarınızı düzenler, komutlar çalıştırır ve daha hızlı ürün sunmanıza (ship) yardımcı olmak için harici araçlara bağlanır. Kendisini terminalinizde, VS Code’da, JetBrains’te ve Claude Masaüstü uygulamasında hemen bugün kullanmaya başlayabilirsiniz.</p>

<hr />

<h2 id="claude-code-nasıl-çalışır">Claude Code Nasıl Çalışır?</h2>

<p>Claude Code, tipik sohbet uygulamalarından farklıdır. Arka planda nasıl çalıştığını anlamak, onu daha etkili bir şekilde kullanmanıza yardımcı olacaktır.</p>

<p><a href="https://www.youtube.com/watch?v=6bs5b4FltCU"><img src="https://wsrv.nl/?output=webp&amp;url=markdown-videos-api.jorgenkh.no/youtube/6bs5b4FltCU%3Fwidth%3D854%26height%3D480" alt="" /></a></p>

<h3 id="ajan-döngüsü-the-agentic-loop">Ajan Döngüsü (The Agentic Loop)</h3>

<p>Claude Code’u açıklamanın en iyi yolu <strong>ajan döngüsü</strong> mantığıdır:</p>

<ol>
  <li>Claude Code’a bir istem (prompt) girersiniz.</li>
  <li>Claude, modelle etkileşime girerek ihtiyaç duyduğu bağlamı toplar; model, Claude Code’un yürütebileceği bir metin ya da araç çağrısı (tool call) döndürür.</li>
  <li>Eyleme geçer; örneğin bir dosyayı düzenler veya bir komut çalıştırır.</li>
  <li>Sonuçları doğrular ve bunların isteminizin hedeflediği amaca ulaşıp ulaşmadığını belirler.</li>
  <li>Amaca ulaşıldıysa Claude işlemi sonlandırır ve bir sonraki istemi bekler. Ulaşılmadıysa döngüye geri döner ve sonuçlar eksiksiz ve doğrulanabilir olana kadar tekrar dener.</li>
</ol>

<p>Bu döngü boyunca bağlam ekleyebilir, süreci kesebilir veya hedefinize ulaşması için modeli yönlendirebilirsiniz.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686365%2Fagenticloop.1775686365141.jpg" alt="Ajan döngüsü diyagramı: İsteminiz; Bağlam toplama, Eyleme geçme ve Sonuçları doğrulama döngüsüne akar; bu süreçte herhangi bir aşamada müdahale etme, yönlendirme veya bağlam ekleme imkânı sunulur" /></p>

<h3 id="bağlam-context">Bağlam (Context)</h3>

<p>Claude, konuşmanızın ne kadarını, dosya içeriklerini, komut çıktılarını ve daha fazlasını depolayabileceğini ve bunlara referans verebileceğini belirleyen bir <strong>bağlam penceresine (context window)</strong> sahiptir. Bu sınıra ulaştığınızda Claude Code konuşmanızı sıkıştırır; bağlam penceresini yeniden kullanılabilir bir boyuta getirmek için neleri kaldırabileceğini veya özetleyebileceğini otomatik olarak belirler.</p>

<h3 id="araçlar-tools">Araçlar (Tools)</h3>

<p>Araçlar, ajanların çalışma mantığının temelini oluşturur. Çoğu yapay zekâ asistanı yalnızca metin alır ve metin döndürür. Araçlar ise Claude Code’un bir görevi tamamlamaya yaklaşmak için <em>ne zaman</em> kod yürüteceğini belirlemesini sağlar. Bu; bir dosya okuma aracı, bir web arama aracı veya başka pek çok yetenek olabilir. Claude Code, bir aracı ne zaman çağıracağını ve çıktısını nasıl kullanacağını belirlemek için anlamsal kavrayıştan (semantic understanding) yararlanır.</p>

<h3 id="i̇zinler-permissions">İzinler (Permissions)</h3>

<p>Claude Code’un birkaç izin modu vardır:</p>

<ul>
  <li><strong>Varsayılan davranış:</strong> Claude, bir dosyayı düzenlemeden veya bir kabuk (shell) komutu çalıştırmadan önce açıkça izin ister.</li>
  <li><strong>Otomatik onay (Auto-accept):</strong> Dosyalar sorulmadan düzenlenir ancak komutlar hâlâ onay gerektirir.</li>
  <li><strong>Plan modu:</strong> Herhangi bir işe başlamadan önce bir eylem planı derlemek için salt okunur (read-only) araçları kullanır.</li>
</ul>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686376%2Fvideo2ask.1775686376586.jpg" alt="Claude Code, bir bash komutunu çalıştırmadan önce izin istiyor" /></p>

<p>Tüm bunlar ayar dosyanızdan yapılandırılabilir. İzinleri atlama konusunda temkinli olun; Claude Code’a komutları çalıştırması için tamamen serbestlik tanımak, olası bir hatayı gerçekleşmeden önce yakalamayı zorlaştırabilir.</p>

<h3 id="özet-1">Özet</h3>

<p>Claude Code; ajan döngüsü, yönetilen bir bağlam penceresi, araçlar ve yapılandırılabilir izinler gibi birkaç ajan tabanlı kavramı doğrudan terminalinizde bir araya getirir. Kod tabanınızı okuyabilir, eyleme geçebilir ve kendi işini doğrulayabilir. Onu bir sohbet penceresinden temel olarak farklı kılan da budur.</p>

<hr />

<h2 id="claude-code-kurulumu">Claude Code Kurulumu</h2>

<p>Claude Code; terminalinizde, web üzerinde veya IDE’nizde kullanmak istemenize bakılmaksızın kolayca kurulabilir.</p>

<p><a href="https://www.youtube.com/watch?v=0kILa02vKuI"><img src="https://wsrv.nl/?output=webp&amp;url=markdown-videos-api.jorgenkh.no/youtube/0kILa02vKuI%3Fwidth%3D854%26height%3D480" alt="" /></a></p>

<h3 id="terminal">Terminal</h3>

<p><strong>macOS, Linux veya WSL</strong> üzerinde, tek seferde kurmak için curl komutunu kullanın. Homebrew tercih ediyorsanız <code class="language-plaintext highlighter-rouge">brew install</code> komutundan da yararlanabilirsiniz; ancak bu yöntemin otomatik güncellemeleri desteklemediğini unutmayın.</p>

<p><strong>Windows</strong> için birkaç seçenek mevcuttur. PowerShell’de <code class="language-plaintext highlighter-rouge">Invoke-RestMethod</code> komutunu, CMD’de ise curl komutunu kullanın. Ayrıca bir winget komutu da mevcuttur; fakat bu da Homebrew gibi otomatik güncelleme yapmayacaktır.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686381%2Fvideo3terminalinstall.1775686380887.jpg" alt="curl aracılığıyla başarıyla kurulan Claude Code'u gösteren terminal" /></p>

<p>Kurulumdan sonra <code class="language-plaintext highlighter-rouge">claude</code> komutunu çalıştırabilmeniz gerekir. Çalıştıramıyorsanız terminalinizi yeniden başlatın. Proje dizininize gidin ve şu komutu yürütün:</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">claude</span>
</code></pre></div></div>

<p>Renk temanızı seçmek ve Claude hesabınızla (Pro, Max veya Enterprise) giriş yapmak ya da bir API anahtarı kullanmak gibi bazı ilk kurulum adımlarından geçeceksiniz. Kuruluşunuzun bir Claude Enterprise hesabı varsa bu seçeneği belirlediğinizden emin olun.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686379%2Fvideo3claudeinitaccounts.1775686379767.jpg" alt="Claude Code giriş yöntemi seçimi: abonelik, API veya üçüncü taraf platform" /></p>

<p><code class="language-plaintext highlighter-rouge">claude</code> komutunu hangi dizinde çalıştırırsanız çalıştırın, araç o dizine ve onun tüm alt klasörlerine erişim hakkına sahip olacaktır.</p>

<h3 id="visual-studio-code">Visual Studio Code</h3>

<p>Uzantılar (Extensions) panelini açın ve “Claude Code” araması yapın. Anthropic tarafından geliştirilen, mavi onay işaretli uzantıyı bulun ve yükle (install) butonuna basın.</p>

<p>Kurulumdan sonra VS Code’u yeniden başlatmanız gerekebilir. Çalışmaya başladığında, <code class="language-plaintext highlighter-rouge">Ctrl/Cmd + Shift + P</code> ile komut paletini açın ve “Claude Code Open in New Tab” araması yapın. Ayrıca yan çubuğunuzda görünüyorsa Claude logosuna da tıklayabilirsiniz.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686378%2Fvideo3claudecodevscode.1775686378631.jpg" alt="VS Code marketindeki Claude Code uzantı sayfası" /></p>

<p>VS Code uzantısı, terminale oldukça benzer bir deneyim sunar. Dilerseniz arayüzü (UI) devre dışı bırakıp doğrudan terminal deneyimini kullanmayı da ayarlarınızdan seçebilirsiniz.</p>

<h3 id="jetbrains">JetBrains</h3>

<p>JetBrains Marketplace üzerinden Claude Code eklentisini yükleyin. Kurulumun ardından IDE’nizi yeniden başlatın. Tekrar açtığınızda Claude logosunu göreceksiniz. Logoya tıkladığınızda, editörünüzle birlikte çalışan ve terminal deneyimi sunan bir panel açılacaktır.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686367%2Fclaudecodejetbrainsvideo3.1775686367876.jpg" alt="JetBrains Marketplace'teki Claude Code eklentisi" /></p>

<h3 id="masaüstü-desktop">Masaüstü (Desktop)</h3>

<p>Claude Desktop uygulamasını kurup giriş yaptıktan sonra, üst kısımda “Code” etiketli bir geçiş düğmesi göreceksiniz. Görünüm ve his olarak sohbet kısmına benzer olsa da belirli bir klasörde çalışmanıza, izinleri değiştirmenize ve hatta bir bulut ortamında faaliyet göstermenize olanak tanır.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686367%2Fclaudecodedesktopvideo3github.1775686366970.jpg" alt="Son proje klasörlerini gösteren Claude Desktop Code görünümü" /></p>

<h3 id="web">Web</h3>

<p>Web üzerinde Claude Code’a erişmek için <code class="language-plaintext highlighter-rouge">claude.ai/code</code> adresine gidin veya sohbet uygulamasının yan çubuğundaki “Code” etiketine tıklayın. Bu süreç masaüstü uygulamasına benzer şekilde işler ancak GitHub depoları (repositories) ile sınırlısınızdır.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686365%2Fclaudeaislashcodevideo3.1775686365598.jpg" alt="Depo seçimiyle birlikte claude.ai/code adresindeki web tabanlı Claude Code" /></p>

<h3 id="hangisini-kullanmalıyım">Hangisini Kullanmalıyım?</h3>

<p>Her zaman en güncel özellikleri ilk elden deneyimlemek istiyorsanız <strong>terminal</strong> en iyi tercihinizdir; yeni özellikler ilk olarak orada yayınlanır. Claude Code’un kod editörünüzle daha iç içe hissettirmesini istiyorsanız IDE entegrasyonları neredeyse aynı deneyimi sunar.</p>

<p>Siz diğer işlerinizi hallederken Claude’un arka planda çalışmasına izin vermek için <strong>Masaüstü</strong> uygulaması harikadır.</p>

<p>Projeleriniz üzerinde bir GitHub deposu aracılığıyla uzaktan çalışmak istiyorsanız <strong>web tabanlı Claude Code</strong> sağlam bir seçenektir.</p>

<p>Claude Code’u nasıl kullanmak istediğiniz tamamen size kalmış.</p>

<hr />

<h2 id="i̇lk-i̇steminiz">İlk İsteminiz</h2>

<p>Claude Code ile diğer yapay zekâ asistanlarında olduğu gibi konuşabilirsiniz. İstemlerinizi girerken hem güvenliğinizi sağlayacak hem de işinizi kolaylaştıracak bazı noktaları aşağıda bulabilirsiniz.</p>

<p><a href="https://www.youtube.com/watch?v=gbetp6D7J_Q"><img src="https://wsrv.nl/?output=webp&amp;url=markdown-videos-api.jorgenkh.no/youtube/gbetp6D7J_Q%3Fwidth%3D854%26height%3D480" alt="" /></a></p>

<h3 id="otomatik-onay-ve-manuel-onay-karşılaştırması">Otomatik Onay ve Manuel Onay Karşılaştırması</h3>

<p>Claude’un önerdiği her dosya değişikliğini otomatik olarak onaylamasını mı, yoksa her seferinde sizden açıkça izin istemesini mi tercih edeceğinizi seçebilirsiniz. Modlar arasında geçiş yapmak için <code class="language-plaintext highlighter-rouge">Shift + Tab</code> tuşlarına basın.</p>

<ul>
  <li><strong>Manuel onay modu (Approval mode):</strong> Claude, bir dosyayı düzenlemek veya bir komut çalıştırmak istediği her seferinde sizden izin ister.</li>
  <li><strong>Otomatik onay modu (Auto-accept mode):</strong> Dosya düzenlemeleri otomatik olarak onaylanır ancak komutlar hâlâ izninize tabi kalır.</li>
</ul>

<p>Burada doğru ya da yanlış bir seçenek yoktur; tamamen hangisinde kendinizi rahat hissettiğinizle ilgilidir.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686381%2Fvideo4autoaccept.1775686381332.jpg" alt="Otomatik onay modunda dosyaları okuyan ve bir görev üzerinde çalışan Claude Code" /></p>

<h3 id="plan-modu">Plan Modu</h3>

<p><code class="language-plaintext highlighter-rouge">Shift + Tab</code> menüsünün içinde <strong>Plan Modu (Plan Mode)</strong> yer alır. Plan modu, isteminizi alır ve kod tabanınızı analiz edip önerdiğiniz uygulamayı araştırmak için salt okunur (read-only) araçları kullanır. Süreç boyunca durumu netleştiren sorular sorar ve ardından yürütebileceği detaylı bir plan sunar.</p>

<p>Plan modu; karmaşık değişiklikleri planlamak veya güvenli bir kod incelemesi (code review) yapmak için harikadır. Çoğu zaman Claude’dan bir özelliğe yönelik çok adımlı uygulamaları üstlenmesini istersiniz; Plan Modu tam olarak bu noktada öne çıkar.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686384%2Fvideo4planmode.1775686383837.jpg" alt="Plan modu etkinken durum çubuğu göstergesini sergileyen Claude Code" /></p>

<h3 id="örnek-karanlık-mod-geçiş-düğmesi-ekleme">Örnek: Karanlık Mod Geçiş Düğmesi Ekleme</h3>

<p>Bir örnek üzerinden ilerleyelim. Karanlık mod (dark mode) geçiş düğmesine ihtiyaç duyan bir uygulamanız olduğunu varsayalım. Projenizin kök dizinini açın ve <code class="language-plaintext highlighter-rouge">claude</code> komutunu çalıştırın. Plan Modu’na girmek için <code class="language-plaintext highlighter-rouge">Shift + Tab</code> tuşlarına birkaç kez basın ve ardından şu şekilde bir istem yazın:</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">My</span> <span class="nx">app</span> <span class="nx">needs</span> <span class="nx">a</span> <span class="nx">dark</span> <span class="nx">mode</span> <span class="nx">implemented</span> <span class="nx">across</span> <span class="nx">the</span> <span class="nx">entire</span> <span class="nx">app</span><span class="p">.</span> <span class="nx">Can</span> <span class="nx">you</span> <span class="nx">create</span> <span class="nx">a</span> <span class="nx">toggle</span> <span class="k">switch</span> <span class="nx">on</span> <span class="nx">the</span> <span class="nx">header</span> <span class="nx">that</span> <span class="nx">allows</span> <span class="nx">a</span> <span class="nx">user</span> <span class="nx">to</span> <span class="nx">toggle</span> <span class="nx">between</span> <span class="nx">light</span> <span class="nx">mode</span> <span class="nx">and</span> <span class="nx">dark</span> <span class="nx">mode</span><span class="p">?</span> <span class="nx">I</span> <span class="nx">need</span> <span class="nx">you</span> <span class="nx">to</span> <span class="nx">find</span> <span class="nx">a</span> <span class="nx">good</span> <span class="nx">contrast</span> <span class="nx">color</span> <span class="nx">that</span> <span class="nx">works</span> <span class="nx">based</span> <span class="nx">on</span> <span class="nx">my</span> <span class="nx">existing</span> <span class="nx">light</span> <span class="nx">theme</span><span class="p">.</span>
</code></pre></div></div>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686383%2Fvideo4demoenteringpromptinplanmode.1775686382790.jpg" alt="Plan modu etkinken Claude Code'a karanlık mod isteminin girilmesi" /></p>

<p><em>(Uygulamamın tamamında karanlık modun uygulanması gerekiyor. Üst bilgi (header) kısmına, kullanıcının açık mod ile karanlık mod arasında geçiş yapmasını sağlayan bir anahtar düğme ekleyebilir misin? Mevcut açık temama göre işe yarayacak iyi bir kontrast renk bulmanı istiyorum.)</em></p>

<p>Bırakın planlamayı Claude yapsın. Planı inceledikten sonra her şey yolunda görünüyorsa onaylayın ve Claude’un her adımda sizden izin istemesine izin verin. İşlem bittiğinde, Claude’un tam olarak ne yaptığını ve bu sonuçlara nasıl ulaştığını net bir şekilde görebilirsiniz.</p>

<h3 id="özet-2">Özet</h3>

<p>Claude Code’u kullanırken isteminizde olabildiğince açıklayıcı olmaya çalışın. Her adımda sürecin içinde kalmak isterseniz bunu yapabilirsiniz. Herhangi bir kodu yürütmeye başlamadan önce Claude’un ulaşmak istediğiniz hedefin ayrıntılarına inmesini sağlamak için Plan Modu’nu kullanın.</p>

<hr />

<h2 id="keşfet--planla--kodla--gönder-commit-i̇ş-akışı">Keşfet → Planla → Kodla → Gönder (Commit) İş Akışı</h2>

<p>Bu eğitimden aklınızda tek bir şey kalacaksa, o da şu iş akışı olsun: <strong>Keşfet, Planla, Kodla ve Gönder</strong>. Bu akış olmadığında çoğu kişi doğrudan Claude’dan kod yazmasını ister; bu da daha sonra sürecin ortasında daha fazla düzeltme yapılması gerektiği anlamına gelir.</p>

<p><a href="https://www.youtube.com/watch?v=xJQuF02NAK8"><img src="https://wsrv.nl/?output=webp&amp;url=markdown-videos-api.jorgenkh.no/youtube/xJQuF02NAK8%3Fwidth%3D854%26height%3D480" alt="" /></a></p>

<h3 id="keşfet-ve-planla">Keşfet ve Planla</h3>

<p>Bu ilk iki adımı halletmenin en hızlı yolu <strong>Plan Modu (Plan Mode)</strong> kullanmaktır. Plan modunda Claude dosyaları düzenleyemez; uygulamayı nasıl ele alacağına dair bilgi toplamak için yalnızca dosyaları okur.</p>

<p>Plan moduna girmek için metin girişinin altında “Plan Mode” yazısını görene kadar <code class="language-plaintext highlighter-rouge">Shift + Tab</code> tuşlarına basın. Ardından şöyle bir istem yazın:</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686390%2Fvideo5planmodeshifttab.1775686390450.jpg" alt="Plan modunun açık olduğunu ve modlar arası geçiş için shift+tab işlevini gösteren Claude Code durum çubuğu" /></p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">I</span> <span class="nx">need</span> <span class="nx">to</span> <span class="nx">add</span> <span class="nx">WebP</span> <span class="nx">conversion</span> <span class="nx">to</span> <span class="nx">our</span> <span class="nx">image</span> <span class="nx">upload</span> <span class="nx">pipeline</span><span class="p">.</span> <span class="nx">Figure</span> <span class="nx">out</span> <span class="nx">where</span> <span class="k">in</span> <span class="nx">the</span> <span class="nx">pipeline</span> <span class="nx">it</span> <span class="nx">should</span> <span class="nx">happen</span><span class="p">,</span> <span class="nx">whether</span> <span class="nx">we</span> <span class="nx">need</span> <span class="k">new</span> <span class="nx">dependencies</span><span class="p">,</span> <span class="nx">and</span> <span class="nx">how</span> <span class="nx">to</span> <span class="nx">approach</span> <span class="nx">it</span><span class="p">.</span>
</code></pre></div></div>

<p><em>(Görsel yükleme işlem hattımıza (pipeline) WebP dönüştürme özelliği eklemem gerekiyor. Bu işlemin hattın neresinde gerçekleşmesi gerektiğini, yeni bağımlılıklara ihtiyacımız olup olmadığını ve konuya nasıl yaklaşılması gerektiğini belirle.)</em></p>

<p>Claude ilgili dosyaları okuyacak, bazı web aramaları yapacak ve size bir eylem planı sunacaktır. Planı inceleyin ve kriterlerinizi karşılayıp karşılamadığına karar verin. Karşılamıyorsa belirli alanları revize etmesini isteyin.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686389%2Fvideo5planmodereviseareas.1775686389692.jpg" alt="Onaylama, alanları revize etme veya soru sorma seçenekleriyle birlikte planı sunan Claude Code" /></p>

<p>Süreci düzeltmek için en iyi yer burasıdır çünkü henüz hiçbir kod yazılmamıştır. Sonrasında değişiklik yapma niyetiniz olmadan yalnızca kod tabanınızın genel bir özetini istiyorsanız, plan modunda olmadan da keşif alt ajanını (explore subagent) çalıştırabilirsiniz.</p>

<h3 id="kodla">Kodla</h3>

<p>Plan iyi göründüğünde, planı kabul etmek için “approve” (onayla) seçeneğini belirleyin ve Claude’un listedeki maddeler üzerinde çalışmasına izin verin. Claude’un dosya düzenlemelerini otomatik olarak mı onaylayacağını yoksa her seferinde size mi soracağını seçebilirsiniz.</p>

<p>Claude, planı “tamamlandı” olarak kabul etmeden önce sorunları gidermek için elinden geleni yapacaktır ancak zaman zaman sizin de devreye girmeniz gerekebilir. Plan Modu ile çalışmanın avantajı da budur; kod yürütüldükten sonra sonuçlara nasıl ulaştığınıza dair bağlama da sahip olursunuz, bu da Claude’un bir sonraki kararlarını yönlendirmenize yardımcı olur.</p>

<p>Kodlama aşamasını daha sorunsuz hale getirecek birkaç ipucu:</p>

<ul>
  <li><strong>Bir başarı kriteri tanımlayın.</strong> Claude’un sonuçlarından emin olabilmesi için “doğru” olanın neye benzediğini net bir şekilde bilmesi gerekir. Planınızı yazarken bunu açıkça belirtin.</li>
  <li><strong>Araçlar ekleyin.</strong> Claude’un hedeflerine ulaşmasına yardımcı olan araçlar, süreçteki birçok git-geli ortadan kaldırır. Örneğin, web arayüzleri (UI) geliştiriyorsanız, Claude Code’un bir tarayıcı sekmesini kontrol edebilmesi ve arayüzü doğrudan test edebilmesi için “Claude in Chrome” uzantısını yükleyin.</li>
</ul>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686387%2Fvideo5claudeinchromeextension.1775686387012.jpg" alt="Chrome Web Mağazası'ndaki Claude in Chrome uzantısı sayfası" /></p>

<ul>
  <li><strong>Bir test paketi dahil edin.</strong> Claude’a sürekli olarak doğrulama yapabileceği bir test paketi sunun. Claude sizin için testler bile yazabilir. Bu görevi ona devretmeden önce, hatalı pozitif sonuçlardan (false positives) kaçınmak için testlerin güvenilir bir bilgi kaynağı olduğundan emin olun.</li>
</ul>

<p><strong>Pratik ipucu:</strong> Claude’un sürekli aynı sorunlarla karşılaştığını fark ederseniz, çözüm yolunu CLAUDE.md dosyasına kaydetmesini isteyin.</p>

<h3 id="gönder-commit">Gönder (Commit)</h3>

<p>Değişiklikleri kendiniz test edip sonuçlardan memnun kaldıktan sonra, kodunuzu gönderme zamanı gelmiştir. Kodunuzu commit etmeden önce, çalışmanıza bakması için bir <strong>kod inceleme alt ajanı (subagent code reviewer)</strong> çalıştırın. Bir alt ajan kod tabanına yeni bir gözle bakar; ana ajanın oturum boyunca edindiği taraflılığı taşımaz.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686388%2Fvideo5claudesubagentcodereviewer.1775686387773.jpg" alt="Claude Code içinde çalışan, dosyaları okuyan ve son değişiklikleri inceleyen bir kod inceleme alt ajanı" /></p>

<p>Ardından Claude’un sizin tarzınızda bir commit mesajı oluşturmasını sağlayın. Sonrasında süreci baştan tekrarlayın.</p>

<h3 id="özet-3">Özet</h3>

<p>Claude Code ile etkili olmak için Keşfet, Planla, Kodla ve Gönder iş akışını takip edin:</p>

<ul>
  <li><strong>Keşfet</strong>, Claude’a projeniz için ihtiyaç duyduğu ilgili bağlamı sağlar.</li>
  <li><strong>Planla</strong>, Claude’un başarıyı ölçmek için kullanacağı bir eylem planı oluşturur.</li>
  <li><strong>Kodla</strong>, nihai sonuca varmadan önce siz ve Claude arasındaki karşılıklı fikir alışverişidir.</li>
  <li><strong>Gönder</strong>, kodunuzu incelemenize ve yüklemenize yardımcı olur, böylece bir sonraki özelliğiniz üzerinde çalışmaya başlayabilirsiniz.</li>
</ul>

<hr />

<h2 id="bağlam-yönetimi">Bağlam Yönetimi</h2>

<p>Bağlam (context), Claude’un çalışma belleğidir. Okuduğu her dosya, çalıştırdığı her komut, gönderdiğiniz her mesaj; tüm bunlar bağlam penceresinde yer kaplar.</p>

<p><a href="https://www.youtube.com/watch?v=eW3oTyfeWZ0"><img src="https://wsrv.nl/?output=webp&amp;url=markdown-videos-api.jorgenkh.no/youtube/eW3oTyfeWZ0%3Fwidth%3D854%26height%3D480" alt="" /></a></p>

<h3 id="bağlam-penceresi-nedir">Bağlam Penceresi Nedir?</h3>

<p>Bağlam penceresini, Claude’un belleğinde tutabileceği bilgi miktarı (alan) olarak düşünebilirsiniz. Ne zaman bir istem girseniz, Claude bir dosya okusa, bir araç çağrısı yürütse veya bir araç çağrısı sonucu alsa, bunların hepsi bağlam penceresine eklenir. Sınırlı bir alan söz konusu olduğundan, bu alanı nasıl kullandığınızı optimize etmek önem kazanır.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686395%2Fvideo6contextwindowdiagram.1775686395676.jpg" alt="Bağlam penceresini bir token ızgarası olarak gösteren diyagram; bazısı dolu, çoğu boş" /></p>

<h3 id="bağlam-dolduğunda-ne-olur">Bağlam Dolduğunda Ne Olur?</h3>

<p>Sınıra yaklaştığınızda, bağlam penceresi otomatik olarak <strong>sıkıştırılır (compacted)</strong>. Sıkıştırma işlemi, yer açmak için önemli ayrıntıları özetler ve gereksiz araç çağrısı sonuçlarını kaldırır. Bu sürecin potansiyel olarak bazı detayların kaybolmasına yol açabileceğini unutmayın.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686393%2Fvideo6compactingcontext.1775686393619.jpg" alt="Claude Code, bağlamı özetlerken 'Compacting conversation...' uyarısını gösteriyor" /></p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686394%2Fvideo6compactingsummary.1775686394575.jpg" alt="Claude Code; temel teknik kavramları ve dosyaları içeren, önceki konuşmanın sıkıştırılmış bir özetini görüntülüyor" /></p>

<h3 id="komutlar">Komutlar</h3>

<p>Sıkıştırma işlemini <code class="language-plaintext highlighter-rouge">/compact</code> komutuyla manuel olarak da çalıştırabilirsiniz. Bu komut, o ana kadar olan her şeyi sıkıştırır. Önceki çalışmalarınızın hafızasını korurken, bağlam alanında yer açmak istediğinizde oldukça kullanışlıdır.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686393%2Fvideo6compactcommand.1775686392964.jpg" alt="Claude Code'un otomatik tamamlama menüsündeki /compact komutu" /></p>

<p>Önceki oturuma dair hiçbir hafıza kalmadan tamamen sıfırdan başlamak istiyorsanız <code class="language-plaintext highlighter-rouge">/clear</code> komutunu çalıştırın. Bu, her şeyi temizler.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686392%2Fvideo6clearcommand.1775686392379.jpg" alt="Yeni bir oturum başlatmak için Claude Code içinde /clear komutunun çalıştırılması" /></p>

<p>Bağlamınızın durumunu kontrol etmek için <code class="language-plaintext highlighter-rouge">/context</code> komutunu yürütün. Bağlam boyutunuza, en çok yer kaplayan kategorilere dair genel bir bakış ve dökümü gösteren görsel bir grafik elde edersiniz.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686364%2FVideo_2_01_01_11_11.1775686364258.jpg" alt="Görsel bir grafik çubuğuyla bağlam kullanımı dökümünü gösteren /context komutu çıktısı" /></p>

<h3 id="hangisi-ne-zaman-kullanılmalı">Hangisi Ne Zaman Kullanılmalı?</h3>

<p>Genel bir kural olarak:</p>

<ul>
  <li><strong>Belirli bir özellik üzerinde çalışırken</strong> ve bağlam sınırına dayanmanıza rağmen devam etmeniz gerekiyorsa <code class="language-plaintext highlighter-rouge">/compact</code> komutunu kullanın. Bağlamı mevcut özelliğinizle ilgili tutmak önemlidir.</li>
  <li><strong>Yeni bir özelliğe başlamak istediğinizde</strong> <code class="language-plaintext highlighter-rouge">/clear</code> komutunu kullanın. Önceki konuşmanın yeni bir işe taraflılık getirmesini istemezsiniz. Claude’un oturumlar arasında hatırlamasını istediğiniz şeyler için bunları CLAUDE.md dosyanıza ekleyin; böylece her şeyi sıfırdan keşfetmek zorunda kalmaz.</li>
</ul>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686391%2Fvideo6claudemdfile.1775686391669.jpg" alt="Komutlar, önemli notlar ve mimari bölümleri içeren bir CLAUDE.md dosyası" /></p>

<h3 id="bağlam-alanından-tasarruf-etmek-i̇çin-i̇puçları">Bağlam Alanından Tasarruf Etmek İçin İpuçları</h3>

<p><strong>Spesifik olun.</strong> Belirsiz bir istem ilk başta daha kısa görünebilir ancak uzun vadede aslında daha fazla bağlama mal olur. Net talimatlar olmadığında Claude, kod tabanınızı daha fazla keşfetmek ve kendi kendine akıl yürütmek zorunda kalır; bu da detaylı bir istemin kaplayacağından çok daha fazla bağlam alanı tüketir.</p>

<p><strong>MCP sunucularınızı yönetin.</strong> MCP sunucuları, siz onları kullanmasanız bile varsayılan olarak mevcut tüm araçlarını bağlama yükler. Mevcut projeyle ilgisi olmayan şeyler için yapılandırılmış sunucularınız varsa bunları kapatmayı düşünün. Ayrıca MCP sunucularına benzer şekilde çalışan ancak her şeyi önceden bağlama yüklemeyen “Yetenekler” (Skills) özelliğini de deneyebilirsiniz.</p>

<p><strong>Alt ajanları (subagents) kullanın.</strong> Alt ajanlar, ana ajanınızla paralel olarak çalışır ancak tamamen ayrı bir bağlam penceresine sahiptir. Yalnızca cevaba ihtiyaç duyduğunuz görevler için (örneğin “kimlik doğrulama uç noktaları nerede bulunuyor?”) bir alt ajan işi üstlenir ve ana ajanınıza sadece bir özet döndürür; böylece birincil bağlamınız temiz kalır.</p>

<h3 id="özet-4">Özet</h3>

<p>Claude Code içinde bağlamı yönetmek kritik öneme sahiptir. Uzun oturumları özetlemek için <code class="language-plaintext highlighter-rouge">/compact</code> komutunu, temiz bir sayfa açmak içinse <code class="language-plaintext highlighter-rouge">/clear</code> komutunu kullanın. Bağlam pencerenizi etkili bir şekilde kullanmak için: istemlerinizde spesifik olun, mevcut bağlamınızı nelerin tükettiğini kontrol edin ve yalnızca sonuca ihtiyaç duyduğunuz görevleri devretmek için alt ajanlardan yararlanın.</p>

<hr />

<h2 id="kod-i̇nceleme-code-review">Kod İnceleme (Code Review)</h2>

<p>Claude Code, git iş akışınızı hızlandıran birkaç yerleşik özelliğe sahiptir. Şimdi bunları inceleyelim.</p>

<p><a href="https://www.youtube.com/watch?v=RKsADl0ZC3Y"><img src="https://wsrv.nl/?output=webp&amp;url=markdown-videos-api.jorgenkh.no/youtube/RKsADl0ZC3Y%3Fwidth%3D854%26height%3D480" alt="" /></a></p>

<h3 id="bir-alt-ajan-ile-i̇nceleme">Bir Alt Ajan ile İnceleme</h3>

<p>Bir PR (Pull Request) göndermeden önce, Claude’dan değişikliklerinizi incelemesi için bir <strong>alt ajan (subagent)</strong> kullanmasını isteyin. Alt ajan, tamamen yeni bir gözle ve kendi bağlam penceresinde çalışır; oturum boyunca kodu yazan ana ajanın taşıyabileceği taraflılığı barındırmaz.</p>

<p>Bir kod inceleme alt ajanı oluştururken, onu yalnızca salt okunur (read-only) araçlarla sınırlandırın. Bir incelemecinin görevi dosyaları düzenlemek değil, sorunları işaretlemektir. Tüm ekibinizin aynı incelemeciyi kullanması için alt ajan yapılandırmasını deponuza (repo) kaydedin.</p>

<h3 id="commit-push-pr-yeteneği-skill">/commit-push-pr Yeteneği (Skill)</h3>

<p><code class="language-plaintext highlighter-rouge">/commit-push-pr</code> yeteneği; commit, push ve PR oluşturma işlemlerini tek bir adımda halleder. Bunların her birini manuel olarak yapmak yerine, sadece bu yeteneği çalıştırın ve gerisini Claude’a bırakın.</p>

<p>CLAUDE.md dosyanızda listelenen kanallarla yapılandırılmış bir Slack MCP sunucunuz varsa, PR bağlantısı ekibinizin kanalında otomatik olarak paylaşılacaktır.</p>

<h3 id="from-pr-ile-oturum-bağlama">–from-pr ile Oturum Bağlama</h3>

<p>Claude, <code class="language-plaintext highlighter-rouge">gh pr create</code> aracılığıyla bir PR oluşturduğunda, oturum otomatik olarak o PR ile ilişkilendirilir. Daha sonra bu PR’a geri dönmeniz gerekirse (örneğin inceleme yorumlarını yanıtlamak veya başarısız olan bir derlemeyi düzeltmek için) şu komutu çalıştırın:</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">claude</span> <span class="o">--</span><span class="k">from</span><span class="o">-</span><span class="nx">pr</span> <span class="o">&lt;</span><span class="nx">PR_NUMBER</span><span class="o">&gt;</span>
</code></pre></div></div>

<p>Bu komut, tam olarak kaldığınız yerden devam etmenizi sağlar.</p>

<h3 id="özet-5">Özet</h3>

<p>Kodunuzu göndermeden önce tarafsız bir kod incelemesi için bir alt ajan kullanın. Commit işleminden PR aşamasına kadar olan tüm akışı tek adımda yönetmek için <code class="language-plaintext highlighter-rouge">/commit-push-pr</code> komutundan yararlanın. Bir PR üzerindeki çalışmanıza daha sonra devam etmek için ise <code class="language-plaintext highlighter-rouge">--from-pr</code> ifadesini kullanın. Bunlar küçük özellikler gibi görünse de günlük iş akışınızdaki birçok pürüzü ortadan kaldırır.</p>

<hr />

<h2 id="claudemd-dosyası">CLAUDE.md Dosyası</h2>

<p>Claude Code’daki en yararlı özelliklerden biri CLAUDE.md dosyasıdır. Bu dosya, Claude Code’a projeniz hakkında kalıcı bir hafıza kazandırır.</p>

<p><a href="https://www.youtube.com/watch?v=O0FGCxkHM-U"><img src="https://wsrv.nl/?output=webp&amp;url=markdown-videos-api.jorgenkh.no/youtube/O0FGCxkHM-U%3Fwidth%3D854%26height%3D480" alt="" /></a></p>

<h3 id="çözdüğü-sorun">Çözdüğü Sorun</h3>

<p>Bir CLAUDE.md dosyası olmadan Claude Code’u açtığınızda, her seferinde sıfırdan başlar. Kod tabanınızı yeniden keşfetmek, hangi bağımlılıklara ihtiyaç duyulduğunu çözmek ve hangi özelliklerin hâlihazırda uygulandığını anlamak zorunda kalır. Bazen bazı varsayımlarda bulunur, bu da Claude’u doğru yöne sevk etmeyi zorlaştırır.</p>

<p>CLAUDE.md bu sorunu çözer. Projenizin kök dizinine eklediğiniz bu Markdown dosyası, bir oturum başlattığınız her seferde Claude Code tarafından otomatik olarak okunur. Bunu kod tabanınız için bir işe alım/uyum sağlama (onboarding) senaryosu gibi düşünebilirsiniz. CLAUDE.md dosyasının içeriği, isteminizin (prompt) sonuna eklenir.</p>

<h3 id="bir-örnek">Bir Örnek</h3>

<p>Tipik bir CLAUDE.md dosyası şu şekildedir:</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">#</span> <span class="nx">Project</span>

<span class="nx">This</span> <span class="nx">is</span> <span class="nx">a</span> <span class="nx">Next</span><span class="p">.</span><span class="nx">js</span> <span class="mi">15</span> <span class="nx">app</span> <span class="nx">using</span> <span class="nx">the</span> <span class="nx">App</span> <span class="nx">Router</span><span class="p">,</span> <span class="nx">Tailwind</span><span class="p">,</span> <span class="nx">and</span> <span class="nx">Drizzle</span> <span class="nx">ORM</span><span class="p">.</span>

<span class="err">#</span> <span class="nx">Commands</span>
<span class="o">-</span> <span class="nx">Dev</span> <span class="nx">server</span><span class="p">:</span> <span class="s2">`pnpm dev`</span>
<span class="o">-</span> <span class="nx">Run</span> <span class="nx">tests</span><span class="p">:</span> <span class="s2">`pnpm test`</span>
<span class="o">-</span> <span class="nx">Lint</span><span class="p">:</span> <span class="s2">`pnpm lint`</span>

<span class="err">#</span> <span class="nx">Code</span> <span class="nx">Style</span>
<span class="o">-</span> <span class="nx">Use</span> <span class="mi">2</span><span class="o">-</span><span class="nx">space</span> <span class="nx">indentation</span>
<span class="o">-</span> <span class="nx">Prefer</span> <span class="nx">named</span> <span class="nx">exports</span>
<span class="o">-</span> <span class="nx">All</span> <span class="nx">API</span> <span class="nx">routes</span> <span class="nx">go</span> <span class="k">in</span> <span class="nx">app</span><span class="o">/</span><span class="nx">api</span><span class="o">/</span>
<span class="o">-</span> <span class="nx">Use</span> <span class="nx">server</span> <span class="nx">actions</span> <span class="nx">instead</span> <span class="k">of</span> <span class="nx">API</span> <span class="nx">routes</span> <span class="nx">where</span> <span class="nx">possible</span>
</code></pre></div></div>

<p>Gördüğünüz gibi oldukça sade. Artık Claude Code’dan bir React bileşeni oluşturmasını istediğinizde, stil için Tailwind kullanması ve kodlama kurallarınıza uyması gerektiğini zaten biliyor olacaktır.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686400%2Fvideo8claudemdexample.1775686400069.jpg" alt="Proje bilgilerini, komutları ve kod stili kurallarını gösteren, VS Code'da açık bir CLAUDE.md dosyası" /></p>

<h3 id="claudemd-ekipler-i̇çindir">CLAUDE.md Ekipler İçindir</h3>

<p>Ekibinizin de faydalanabilmesi için CLAUDE.md dosyanızı sürüm kontrol sistemine (git) gönderebilirsiniz (ve göndermelisiniz). Aslında kimin için olduklarına bağlı olarak bir hafıza dosyası hiyerarşisi mevcuttur:</p>

<ul>
  <li><strong>Proje düzeyinde CLAUDE.md</strong> projenizin kök dizininde yer alır. Ekiple paylaşılır.</li>
  <li><strong>Kullanıcı düzeyinde CLAUDE.md</strong> yapılandırma (configuration) klasörünüzde yer alır. Bu sadece size özeldir ve tüm projelerinizde geçerli olur. Kişisel tercihlerinizi buraya ekleyebilirsiniz.</li>
</ul>

<h3 id="i̇puçları">İpuçları</h3>

<p><strong>Düzeltmeleri hafızaya kaydedin.</strong> Kendinizi Claude’u tekrar tekrar düzeltirken bulursanız (örneğin ona API rotaları yerine her zaman sunucu eylemlerini — server actions — kullanmasını söylemek gibi), Claude’dan bu kuralı açıkça hafızaya kaydetmesini isteyin. Projeyi bir sonraki açışınızda bunu biliyor olacaktır.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686399%2Fvideo8Askingclaudetoputinmemory.1775686399417.jpg" alt="Claude'dan bir kuralı CLAUDE.md dosyasına kaydetmesini isteme — API rotaları yerine her zaman sunucu eylemlerini kullan" /></p>

<p><strong>Proje dokümanlarına referans verin.</strong> Projenizde Claude’un referans almasını istediğiniz bir dokümantasyon varsa, dosya yoluyla birlikte <code class="language-plaintext highlighter-rouge">@</code> sembolünü kullanın:</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">###</span> <span class="nx">README</span><span class="p">.</span><span class="nx">md</span>

<span class="nx">Please</span> <span class="nx">read</span> <span class="k">if</span> <span class="nx">you</span> <span class="nx">need</span> <span class="nx">more</span> <span class="nx">info</span><span class="p">:</span> <span class="p">@</span><span class="nd">README</span><span class="p">.</span><span class="nx">md</span>
</code></pre></div></div>

<p><strong>Dosya olmadan başlayın.</strong> Modeli nerede sürekli düzeltmek zorunda kaldığınızı görebilmeniz için bir projeye önce CLAUDE.md dosyası olmadan başlamanızı öneririz. Bu, CLAUDE.md dosyanızın kompakt kalmasını ve yalnızca gerekli bilgilere odaklanmasını sağlar. Hazır olduğunuzda, Claude’un sizin için bir tane oluşturması için <code class="language-plaintext highlighter-rouge">/init</code> komutunu çalıştırın.</p>

<h3 id="özet-6">Özet</h3>

<p>Sıkıcı bir Claude Code oturumu ile verimli bir oturum arasındaki fark genellikle bağlama (context) dayanır; CLAUDE.md dosyası da bu bağlamı sağlamanın yoludur. Kullandığınız teknoloji yığını (stack), tercihleriniz ve komutlarınızla başlayın, ardından ilerledikçe bunun üzerine inşa edin.</p>

<hr />

<h2 id="alt-ajanlar-subagents">Alt Ajanlar (Subagents)</h2>

<p>Claude, görevleri kendi aralarında bölen ve bileşen görevleri paralel olarak yürüten alt ajanlara devredebilir; bu da bağlam yönetiminizi iyileştirir. Her bir alt ajan, kendi yalıtılmış bağlam penceresinde faaliyet gösterir.</p>

<p><a href="https://www.youtube.com/watch?v=jKErNxuxPXg"><img src="https://wsrv.nl/?output=webp&amp;url=markdown-videos-api.jorgenkh.no/youtube/jKErNxuxPXg%3Fwidth%3D854%26height%3D480" alt="" /></a></p>

<h3 id="nasıl-çalışır">Nasıl Çalışır?</h3>

<p>Claude Code içinde bağlamı yönetmek önemlidir. Kod tabanınızı keşfeden araç çağrıları veya araştırma için yapılan web aramaları gibi işlemler, bağlam penceresinin büyük bir kısmını tüketir. Claude’un bu keşif sırasında ulaştığı her bilgi, geliştirmekte olduğunuz ana özellik ile her zaman doğrudan ilgili olmayabilir.</p>

<p>Alt ajanlar tam da bu noktada devreye girer. Claude, “bu kod tabanını benim için keşfet” gibi bir görevi yerine getirmesi için bir alt ajan başlatır. Alt ajan, kendi bağlam penceresiyle paralel olarak çalışır, tüm keşif işini üstlenir ve tamamlandığında bulgularını özetleyerek bu özeti Claude’a geri döndürür.</p>

<p>Sonuç olarak: Oraya ulaşmak için geçilen tüm yollar ana bağlamınızı karmaşıklaştırmadan, tam olarak aradığınız cevaba ulaşmış olursunuz.</p>

<h3 id="kendi-alt-ajanınızı-oluşturma">Kendi Alt Ajanınızı Oluşturma</h3>

<p>Alt ajanlar, YAML ön bilgisi (frontmatter) içeren Markdown dosyalarında tanımlanır. Başlamanın en kolay yolu, Claude’un sizin için bir tane oluşturmasına izin vermektir. Şu komutu çalıştırın:</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">/</span><span class="nx">agents</span>
</code></pre></div></div>

<p>Ardından “Create new agent” (Yeni ajan oluştur) seçeneğini belirleyin. Ajanın kapsamını seçmek, amacını tanımlamak, erişebileceği araçları seçmek ve hatta onun için bir renk belirlemek gibi adımlardan geçeceksiniz.</p>

<p>Claude, alt ajan için bir isim, açıklama ve istem (prompt) oluşturacaktır. Bu sayede Claude, verdiğiniz istemlere bağlı olarak alt ajanı ne zaman çağıracağını da öğrenmiş olur.</p>

<h3 id="daha-fazla-özelleştirme">Daha Fazla Özelleştirme</h3>

<p>Alt ajanlar daha da özelleştirilebilir. İşte öne çıkan bazı noktalar:</p>

<ul>
  <li><strong>Kalıcı hafıza (Persistent memory)</strong>, alt ajanınızın konuşmalar boyunca hafızasını korumasını sağlar. Onu aynı projelerde sürekli olarak kullanıyorsanız bu harika bir özelliktir.</li>
  <li><code class="language-plaintext highlighter-rouge">skill</code> anahtarını ekleyip yetenekleri isimlerine göre listeleyerek alt ajanlara <strong>yetenekleri önceden yükleyebilirsiniz (Preload skills)</strong>. Ana konuşmanızdaki yeteneklerin aksine, burada yeteneğin tamamının bağlama yüklendiğini unutmayın.</li>
</ul>

<h3 id="özet-7">Özet</h3>

<p>Bağlam pencerenizi temiz tutmak, Claude Code ile üretken kalmanın en iyi yollarından biridir. Alt ajanlar sayesinde, arka planda ağır işleri üstlenecek bir ajan çalıştırabilir ve ana bağlam pencerenize yalnızca sonucun dönmesini sağlayabilirsiniz.</p>

<p><strong>Daha derinlemesine incelemek ister misiniz?</strong> Özel olarak hazırladığımız kursumuza göz atın: <a href="https://anthropic.skilljar.com/introduction-to-subagents">Introduction to subagents</a></p>

<hr />

<h2 id="yetenekler-skills">Yetenekler (Skills)</h2>

<p>Bu video, Claude Code’a belirli görevleri otomatik olarak nasıl yerine getireceğini öğreten, yeniden kullanılabilir markdown dosyaları olan “yetenekleri” (skills) tanıtmaktadır. Claude’dan bir PR’ı incelemesini veya bir commit mesajı yazmasını her istediğinizde talimatları tekrarlamak yerine, bir yeteneği bir kez yazarsınız ve Claude, ilgili görev her ortaya çıktığında bunu uygular. Video; yeteneklerin ne olduğunu, nerede barındıklarını ve diğer Claude Code özelleştirme seçenekleriyle nasıl karşılaştırıldıklarını kapsamaktadır.</p>

<p><a href="https://www.youtube.com/watch?v=bjdBVZa66oU"><img src="https://wsrv.nl/?output=webp&amp;url=markdown-videos-api.jorgenkh.no/youtube/bjdBVZa66oU%3Fwidth%3D854%26height%3D480" alt="" /></a></p>

<hr />

<h2 id="mcp">MCP</h2>

<p>Model Bağlam Protokolü (Model Context Protocol - MCP); Claude Code’un harici araçlara ve veri kaynaklarına bağlanmasını sağlayan açık bir standarttır. Bir soru sorduğunuzda Claude, sorgunuzu daha iyi yönetmek için bu araçları ne zaman kullanması gerektiğini otomatik olarak anlar.</p>

<p>Bağlamınızın büyük bir kısmı (veritabanlarında, üretkenlik uygulamalarında veya genel depolarda) kod tabanınızın dışında yer alır. MCP bu boşluğu doldurur.</p>

<h3 id="bununla-ne-yapabilirsiniz">Bununla Ne Yapabilirsiniz?</h3>

<p>İlk olarak, ajan tabanlı yapay zekadaki (agentic AI) “araçlar” (tools) kavramını anlamak önemlidir. Araçlar; Claude Code gibi ajanlara, görevleri daha etkili bir şekilde tamamlamalarına yardımcı olacak eylemleri gerçekleştirme yeteneği kazandırır. Bu durum, yalnızca metin tabanlı bir yanıt aldığınız tipik yapay zekadan farklıdır.</p>

<p>Örneğin, ekibiniz proje yönetimi için Linear kullanıyorsa, kendinize özel işlerin (issues) ayrıntılarını içeri aktarmak için bir Linear MCP sunucusu ekleyebilirsiniz. Bir bağımlılık (dependency) için güncel dokümantasyona ihtiyacınız varsa, Context7 gibi bir dokümantasyon MCP sunucusu bunu Claude Code’a sağlayabilir.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686373%2Fvideo10linearmcp.1775686373076.jpg" alt="Claude Code, MEN-12 bileti için iş ayrıntılarını almak üzere bir Linear MCP sunucusunu sorguluyor" /></p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686372%2Fvideo10context7mcp.1775686371940.jpg" alt="Claude Code, en son shadcn/ui dokümantasyonuna bakmak için Context7 MCP sunucusunu kullanıyor" /></p>

<h3 id="bir-mcp-sunucusu-ekleme">Bir MCP Sunucusu Ekleme</h3>

<p><code class="language-plaintext highlighter-rouge">claude mcp add</code> komutuyla MCP sunucuları ekleyebilirsiniz. İki ana tür vardır:</p>

<p><a href="https://www.youtube.com/watch?v=kkBFmwkDzdo"><img src="https://wsrv.nl/?output=webp&amp;url=markdown-videos-api.jorgenkh.no/youtube/kkBFmwkDzdo%3Fwidth%3D854%26height%3D480" alt="" /></a></p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686371%2Fvideo10claudemcpaddcommand.1775686370957.jpg" alt="Terminalden bir HTTP Linear MCP sunucusu eklemek için claude mcp add komutunun çalıştırılması" /></p>

<ul>
  <li><strong>HTTP sunucuları</strong> uzaktaki hizmetler içindir. Bunlar hizmet sağlayıcı tarafından barındırılır ve ağ üzerinden bağlanır.</li>
  <li><strong>Stdio sunucuları</strong> makinenizde çalışan yerel işlemler içindir.</li>
</ul>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686374%2Fvideo10stdioservers.1775686374586.jpg" alt="Bir Python betiği ile yerel bir stdio MCP sunucusu eklemek için claude mcp add komutunun çalıştırılması" /></p>

<p>Nelerin bağlı olduğunu görmek, durumu kontrol etmek ve ihtiyacınız olmayan sunucuları devre dışı bırakmak için bir Claude Code oturumu içinde <code class="language-plaintext highlighter-rouge">/mcp</code> komutuyla sunucularınızı yönetebilirsiniz.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686374%2Fvideo10slashmcpcommand.1775686373865.jpg" alt="Bağlı MCP sunucularını ve durumlarını gösteren /mcp komutu" /></p>

<h3 id="sunucuları-kapsamlandırma-scoping">Sunucuları Kapsamlandırma (Scoping)</h3>

<p>MCP sunucuları üç şekilde kapsamlandırılabilir:</p>

<ol>
  <li><strong>Yerel (Local)</strong> — yalnızca mevcut projede ve sadece sizin için kullanılabilir.</li>
  <li><strong>Kullanıcı (User)</strong> — tüm projelerinizde kullanılabilir.</li>
  <li><strong>Proje (Project)</strong> — sürüm kontrol sistemine (git) eklediğiniz bir <code class="language-plaintext highlighter-rouge">.mcp.json</code> dosyası kullanır; böylece kod tabanında çalışan herkes aynı sunuculara otomatik olarak erişebilir.</li>
</ol>

<h3 id="bağlam-maliyetleri">Bağlam Maliyetleri</h3>

<p>MCP sunucuları, siz onları aktif olarak kullanmasanız bile araç tanımlarını bağlam pencerenize ekler. Çok fazla sunucu yapılandırdıysanız, bu durum kullanılabilir bağlam alanınızı tüketir. Nelerin bağlı olduğunu görmek ve aktif olarak kullanmadıklarınızı devre dışı bırakmak için <code class="language-plaintext highlighter-rouge">/mcp</code> komutunu çalıştırın.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686372%2Fvideo10disablingmcpservers.1775686372522.jpg" alt="Araçları görüntüleme, yeniden bağlanma veya bir sunucuyu devre dışı bırakma seçeneklerini içeren /mcp sunucu detay görünümü" /></p>

<p>Bir aracın CLI (Komut Satırı Arayüzü) karşılığı varsa (GitHub için <code class="language-plaintext highlighter-rouge">gh</code> veya AWS için <code class="language-plaintext highlighter-rouge">aws</code> gibi), CLI kullanımı bağlam açısından daha verimlidir çünkü kalıcı araç tanımları eklemez.</p>

<p>Alternatif olarak bir <strong>Yetenek (Skill)</strong> kullanmaktan da faydalanabilirsiniz. Bir yeteneğin yalnızca adı ve açıklaması bağlama yüklenir; Claude, yetenek içeriğinin tamamını yalnızca onu kullanması gerektiğine karar verdiğinde yükler.</p>

<p>MCP araçlarınız bağlam pencerenizin %10’unu aşarsa, Claude Code otomatik olarak araç arama moduna (tool search mode) geçer; bu mod doğru araçları talep üzerine keşfeder ancak o kadar kararlı çalışmayabilir.</p>

<h3 id="özet-8">Özet</h3>

<p>MCP; Claude Code’u harici araçlarınıza ve veri kaynaklarınıza bağlar. <code class="language-plaintext highlighter-rouge">claude mcp add</code> komutuyla sunucular ekleyin. Ekibinizin bunlara otomatik olarak erişebilmesi için <code class="language-plaintext highlighter-rouge">.mcp.json</code> dosyası ile sunucuları projenizle kapsamlandırın. Aktif olarak kullanmadığınız sunucuları devre dışı bırakarak bağlam kullanımını göz önünde bulundurun.</p>

<hr />

<h2 id="kancalar-hooks">Kancalar (Hooks)</h2>

<p>Kancalar (hooks), Claude Code’un yaşam döngüsündeki belirli noktalarda komutlar çalıştırmanızı sağlar. Kancalar ile bu eğitimde ele alınan diğer her şey arasındaki temel fark, kancaların <strong>belirleyici (deterministic)</strong> olmasıdır; yani her zaman çalışırlar.</p>

<p><a href="https://www.youtube.com/watch?v=IkaPHiMDazM"><img src="https://wsrv.nl/?output=webp&amp;url=markdown-videos-api.jorgenkh.no/youtube/IkaPHiMDazM%3Fwidth%3D854%26height%3D480" alt="" /></a></p>

<h3 id="neden-kancalar-kullanılmalı">Neden Kancalar Kullanılmalı?</h3>

<p>CLAUDE.md dosyanızda Claude’a her dosya düzenlemesinden sonra Prettier’ı çalıştırmasını söyleyebilirsiniz. Çoğu zaman bunu yapacaktır. Ancak bazen yapmayabilir. Bir kanca ise istisnasız her seferinde bunun gerçekleşmesini sağlar.</p>

<p>Sık karşılaşılan kullanım senaryoları şunlardır:</p>

<ul>
  <li>Dosya düzenlemelerinden sonra otomatik biçimlendirme (auto-formatting)</li>
  <li>Uyumluluk için yürütülen tüm komutların günlüğe kaydedilmesi (logging)</li>
  <li>Canlı ortam (production) dosyalarını değiştirmek gibi tehlikeli işlemlerin engellenmesi</li>
  <li>Claude bir görevi tamamladığında kendinize bildirim gönderilmesi</li>
</ul>

<h3 id="nasıl-çalışırlar">Nasıl Çalışırlar?</h3>

<p>Kancalar <code class="language-plaintext highlighter-rouge">settings.json</code> dosyanızda yapılandırılır. Bir etkinlik (event) seçer, isteğe bağlı olarak bunun hangi araçlar için geçerli olacağını belirten bir eşleştirici (matcher) ayarlar ve çalıştırılacak bir komut girersiniz. Kullanılabilir etkinlikler şunlardır:</p>

<ul>
  <li><strong>PreToolUse</strong> — bir araç çağrısından önce çalışır</li>
  <li><strong>PostToolUse</strong> — bir araç çağrısı tamamlandıktan sonra çalışır</li>
  <li><strong>UserPromptSubmit</strong> — siz bir istem gönderdiğinizde, Claude bunu işlemeden önce çalışır</li>
  <li><strong>Stop</strong> — Claude yanıt vermeyi bitirdiğinde çalışır</li>
  <li><strong>Notification</strong> — Claude bir bildirim gönderdiğinde çalışır</li>
</ul>

<p>Bunları Claude Code oturumu içindeki <code class="language-plaintext highlighter-rouge">/hooks</code> komutu aracılığıyla veya doğrudan <code class="language-plaintext highlighter-rouge">settings.json</code> dosyasını düzenleyerek yapılandırabilirsiniz.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686375%2Fvideo11settingsjsonfile.1775686375582.jpg" alt="Kancalar yapılandırmasını içeren, .claude dizini içindeki settings.json dosyası" /></p>

<h3 id="pratik-bir-örnek">Pratik Bir Örnek</h3>

<p>En yaygın kanca kullanımı: düzenlemelerden sonra otomatik biçimlendirmedir. Claude bir dosyayı her değiştirdiğinde tetiklenmesi için eşleştiricisi <code class="language-plaintext highlighter-rouge">"Edit|MultiEdit|Write"</code> olan bir <strong>PostToolUse</strong> kancası ayarlayın. Komut, dosya uzantısını kontrol eder ve uygun biçimlendiriciyi çalıştırır; TypeScript için Prettier, Go için gofmt veya projeniz ne kullanıyorsa o.</p>

<h3 id="pretooluse-ile-engelleme">PreToolUse ile Engelleme</h3>

<p>PreToolUse kancaları, araç çağrılarını yürütülmeden önce <strong>engelleyebilir (block)</strong>. Kancanız, araç adını ve girdisini standart girdi (stdin) üzerinden JSON olarak alır. Çıkış kodu (exit code) davranış biçimini belirler:</p>

<ul>
  <li><strong>Çıkış kodu 0</strong> — normal şekilde devam et.</li>
  <li><strong>Çıkış kodu 2</strong> — eylemi engelle. Standart hata (stderr) mesajı, engellenme nedenini bilmesi ve kendini ayarlayabilmesi için Claude’a geri bildirim olarak iletilir.</li>
  <li><strong>Diğer herhangi bir çıkış kodu</strong> — size gösterilen ancak hiçbir şeyi durdurmayan, engelleyici olmayan bir hatadır.</li>
</ul>

<p>Katı kuralları bu şekilde uygularsınız. Canlı ortam yapılandırma dizinine yazma işlemlerini engelleyin. <code class="language-plaintext highlighter-rouge">rm -rf</code> içeren bash komutlarını engelleyin. Ana dala (main) commit atmayı engelleyin. Ekibinizin öneri olarak kalmasını değil, <em>garanti altına alınmasını</em> istediği her ne varsa buraya ekleyin.</p>

<p><img src="https://wsrv.nl/?output=webp&amp;w=1024&amp;url=everpath-course-content.s3-accelerate.amazonaws.com/instructor%2F8lsy243ftffjjy1cx9lm3o2bw%2Fpublic%2F1775686375%2Fvideo11hooksblock.1775686375002.jpg" alt="Eşleştiriciler ve komutlarla birlikte PreToolUse ve PostToolUse kancalarını gösteren bir settings.json dosyası" /></p>

<h3 id="kancaları-ekibinizle-paylaşma">Kancaları Ekibinizle Paylaşma</h3>

<p><code class="language-plaintext highlighter-rouge">.claude/settings.json</code> içinde yapılandırılan kancalar proje düzeyindedir ve deponuza (repo) gönderilebilir. Bu, tüm ekibinizin aynı kancalara otomatik olarak sahip olacağı anlamına gelir. Komutlarınızda projenizde saklanan betiklere referans vermek için <code class="language-plaintext highlighter-rouge">CLAUDE_PROJECT_DIR</code> ortam değişkenini kullanın; böylece Claude’un mevcut çalışma dizini ne olursa olsun bu betikler sorunsuz çalışacaktır.</p>

<h3 id="özet-9">Özet</h3>

<p>Kancalar, Claude Code’un davranışı üzerinde size kesin ve belirleyici bir kontrol sunar. Otomatik biçimlendirme ve günlük kaydı için PostToolUse kullanın. Tehlikeli işlemleri engellemek için PreToolUse kullanın. Bunları <code class="language-plaintext highlighter-rouge">/hooks</code> komutuyla veya <code class="language-plaintext highlighter-rouge">settings.json</code> içinde yapılandırın. Ekibinizin de bunlardan yararlanabilmesi için deponuza kaydedin.</p>

<p>Bir şeyin her seferinde hatasız bir şekilde gerçekleşmesi gerekiyorsa, bunu bir istemin içine yazmayın. Bir kancaya yerleştirin.</p>]]></content><author><name>Ahmet Çadırcı</name><email>info@ahmetcadirci.com</email></author><summary type="html"><![CDATA[Claude Code 101; yazılım mühendisliğine yeni başlayan geliştiriciler veya yapay zekâ kodlama ajanlarını henüz keşfetmemiş deneyimli mühendisler için tasarlanmıştır. Kurulumdan gelişmiş özelleştirmelere kadar her konuda size rehberlik ederek Claude Code’u günlük iş akışınızda nasıl etkili bir şekilde kullanacağınızı öğretir.]]></summary></entry><entry><title type="html">Aşkın Sırrı: Sevgi, İnanç ve Fedakârlık</title><link href="https://ahmetcadirci.com/2026/askin-sirri/" rel="alternate" type="text/html" title="Aşkın Sırrı: Sevgi, İnanç ve Fedakârlık" /><published>2026-06-09T19:01:00+03:00</published><updated>2026-06-09T19:01:00+03:00</updated><id>https://ahmetcadirci.com/2026/askin-sirri</id><content type="html" xml:base="https://ahmetcadirci.com/2026/askin-sirri/"><![CDATA[<p>Eskiler diyor ki;</p>

<blockquote>
  <p>Sağlığın sıkıntısı hastalık, aşkın sıkıntısı şehvettir.</p>
</blockquote>

<p>Yine buyuruyor:</p>

<blockquote>
  <p>Şehvet haz olarak aşka yakındır fakat aşk değildir.</p>
</blockquote>

<p>Yine buyuruyor ki:</p>

<blockquote>
  <p>Sevginin gösterisi fedakarlıktır.</p>
</blockquote>

<p>Yine buyuruyor ki:</p>

<blockquote>
  <p>Kalp inançla tatmin oluyor.</p>
</blockquote>]]></content><author><name>Ahmet Çadırcı</name><email>info@ahmetcadirci.com</email></author><summary type="html"><![CDATA[Eskiler diyor ki;]]></summary></entry><entry><title type="html">Bütün İlimlerin Özü</title><link href="https://ahmetcadirci.com/2026/ilimlerin-ozu/" rel="alternate" type="text/html" title="Bütün İlimlerin Özü" /><published>2026-06-08T08:46:00+03:00</published><updated>2026-06-08T08:46:00+03:00</updated><id>https://ahmetcadirci.com/2026/ilimlerin-ozu</id><content type="html" xml:base="https://ahmetcadirci.com/2026/ilimlerin-ozu/"><![CDATA[<p>Bütün ilimlerin özü şudur:</p>

<blockquote>
  <p>Mahşer gününde ben kimim? O gün ne hâle geleceğim? demek ve bunu bilmek.</p>
</blockquote>

<p>Hz. Mevlânâ</p>]]></content><author><name>Ahmet Çadırcı</name><email>info@ahmetcadirci.com</email></author><summary type="html"><![CDATA[Bütün ilimlerin özü şudur:]]></summary></entry><entry><title type="html">Haklı Çıkmak Değil, Hakkın Ortaya Çıkması: İmam Şâfiî’nin İhlâsı</title><link href="https://ahmetcadirci.com/2026/hakli-cikmak-degil/" rel="alternate" type="text/html" title="Haklı Çıkmak Değil, Hakkın Ortaya Çıkması: İmam Şâfiî’nin İhlâsı" /><published>2026-06-05T08:14:00+03:00</published><updated>2026-06-05T08:14:00+03:00</updated><id>https://ahmetcadirci.com/2026/hakli-cikmak-degil</id><content type="html" xml:base="https://ahmetcadirci.com/2026/hakli-cikmak-degil/"><![CDATA[<p>İlmin ve ilim ile ün almanın âfetlerini bildiğine ve yalnız Allah rızâsını niyet ederek kalbinde bu gibi ün almaya aslâ iltifât etmediğine bak.</p>

<p>İmâm Şâfiî diyor ki;</p>

<blockquote>
  <p>“Münâzara ettiğim hiç bir kimsenin hatâya düşmesini aslâ istemedim.”</p>
</blockquote>

<p>Yine buyuruyor:</p>

<blockquote>
  <p>“Her kim ile konuştumsa onun muvaffak olmasını, kuvvetlenmesini, yardım görmesini ve Allâhu Tâlâ’nın onu koruyup muhâfaza etmesini istedim.”</p>
</blockquote>

<p>Yine buyuruyor ki:</p>

<blockquote>
  <p>“İnsanlar ile münâkaşamda, hakkın benim veya onların lisânından çıkmasını hiç nazar-ı itibara almadım.” (Yâni hak bulunsun da, ister hasmın ağzından çıksın, ister benim ağzımdan.)</p>
</blockquote>

<p>Yine buyuruyor ki:</p>

<blockquote>
  <p>“Ortaya koyduğum gerçekleri kabul eden kimseye karşı saygı ve sevgiden başka bir şey düşünmedim, buna karşı gerçeği kuvvetlendiren delillerimi kabul etmeyip mükâbere (bilerek inatla kibredenler) edenler de gözümden düştü ve onları kalbimden sildim.”</p>
</blockquote>

<p>Bütün bunlar İmâm Şâfiî’nin fikıh ilmindeki münâzaralarında gâyesinin Allah rızâsı olduğunu açıkça göstermektedir.</p>

<p>Not: Büyük insanlar böyle oluyor, kendi kalbimi yokladığımda böyle haller ben de yok.</p>]]></content><author><name>Ahmet Çadırcı</name><email>info@ahmetcadirci.com</email></author><summary type="html"><![CDATA[İlmin ve ilim ile ün almanın âfetlerini bildiğine ve yalnız Allah rızâsını niyet ederek kalbinde bu gibi ün almaya aslâ iltifât etmediğine bak.]]></summary></entry><entry><title type="html">İnsan Ne Zaman Alim Olur?</title><link href="https://ahmetcadirci.com/2026/insan-alim/" rel="alternate" type="text/html" title="İnsan Ne Zaman Alim Olur?" /><published>2026-06-05T07:59:00+03:00</published><updated>2026-06-05T07:59:00+03:00</updated><id>https://ahmetcadirci.com/2026/insan-alim</id><content type="html" xml:base="https://ahmetcadirci.com/2026/insan-alim/"><![CDATA[<p>İmâm Şâfiî’ye radıyallahu anh “İnsan ne zaman âlim olabilir?” diye sormuşlar.</p>

<blockquote>
  <p>Okuduğu her fenni iyice anladıktan sonra, diğerine geçmek ve orada da eksiklerini tamamlamak sûretiyle.</p>
</blockquote>]]></content><author><name>Ahmet Çadırcı</name><email>info@ahmetcadirci.com</email></author><summary type="html"><![CDATA[İmâm Şâfiî’ye radıyallahu anh “İnsan ne zaman âlim olabilir?” diye sormuşlar.]]></summary></entry><entry><title type="html">Koca Mehmetçik: Dünya Çevreleyen Bir Türk Askerinin Hikayesi</title><link href="https://ahmetcadirci.com/2026/turk-askeri/" rel="alternate" type="text/html" title="Koca Mehmetçik: Dünya Çevreleyen Bir Türk Askerinin Hikayesi" /><published>2026-06-04T08:09:00+03:00</published><updated>2026-06-04T08:09:00+03:00</updated><id>https://ahmetcadirci.com/2026/turk-askeri</id><content type="html" xml:base="https://ahmetcadirci.com/2026/turk-askeri/"><![CDATA[<p>Sarıkamış Muharebesi’nde esir alınan Edirneli asker Mehmet Onbaşı’nın, Sibirya, Çin, Japonya, Hindiçin ve Hindistan esir kamplarından kaçarak başlattığı inanılmaz macerası ve sonunda Cemal Paşa ile karşılaşmasının hikayesi.</p>

<blockquote>
  <p>Kâbil’de bir gün Polis Müdürü yani Emirülasas Cemal Paşa’ya geldi. Efendim, dedi, hapishanede bir deli var, sizin burada olduğunuzu nasılsa duymuş, ben Cemal Paşa’yı göreceğim, beni onun yanına götürün diye bağırıp duruyor. Kaç gündür, ne kadar dövdükse, ettikse para etmiyor. Bu adamla başımız derde girdi.</p>
</blockquote>

<p>Cemal Paşa sordu:</p>

<blockquote>
  <p>Kim imiş bu adam?</p>

  <p>Bilmiyoruz ki. Türk’üm diyor, Hindistan’dan bizim hududu geçerken yakaladık. Elinde hiçbir vesikası yok. Türküm, Cemal Paşa’yı göreceğim, diye bağırmaktan başka bir şey dediği yok.</p>
</blockquote>

<p>Cemal Paşa:</p>

<blockquote>
  <p>Getirin onu buraya, dedi.</p>
</blockquote>

<p>Ve biraz sonra perişan kıyafetli bir adam Cemal Paşa’nın karşısında mükemmel bir talim ve terbiye görmüş bir asker gibi dimdik selam durdu.</p>

<p>Paşa sordu:</p>

<blockquote>
  <p>Adın ne senin?</p>

  <p>Mehmet</p>

  <p>Türk müsün sen?</p>

  <p>Evet, Paşam Türküm!</p>

  <p>Nerelisin？</p>

  <p>Edirneli</p>

  <p>Burada ne arıyorsun?</p>

  <p>Bilmem kaçıncı topçu alayının nalbant obaşısı Mehmet, o zaman Paşa’ya başından geçenleri anlattı.</p>
</blockquote>

<p>Bu zavallı Türk neferinin başından geçen macerayı hep hayret ve teessürle dinledik. Meger Mehmet Onbaşı Sarıkamış’ta esir olduktan sonra Sibirya’dan kaçmış Çin’e gitmiş. Oradan Japonya’ya giderken Japonlar yakalamışlar bir yolunu bularak oradan da kaçmış. Bu sefer Hindiçini’de Fransızların eline geçmiş. Bu yeni mahbesinden de kaçarken İngilizlerin eline düşmüş, Hindistan’da bir müddet mahpus kalmış, nihayet oradan da kurtulmuş ve bu defa Afganistan’a geçerken yine yakalanmış…</p>

<p>Haritayı gözünüzün önüne getiriniz. Edirne neresi ve buraları neresi…</p>

<p>Cemal Paşa gözleri yaşararak Mehmet Obaşı’yı okşadı ve onu derhal serbest bıraktırarak süvari alayına nalbant onbaşısı yaptı.</p>]]></content><author><name>Ahmet Çadırcı</name><email>info@ahmetcadirci.com</email></author><summary type="html"><![CDATA[Sarıkamış Muharebesi’nde esir alınan Edirneli asker Mehmet Onbaşı’nın, Sibirya, Çin, Japonya, Hindiçin ve Hindistan esir kamplarından kaçarak başlattığı inanılmaz macerası ve sonunda Cemal Paşa ile karşılaşmasının hikayesi.]]></summary></entry><entry><title type="html">Lüzumsuz Sözlerden Kulağınızı Koruyun</title><link href="https://ahmetcadirci.com/2026/luzumsuz-soz/" rel="alternate" type="text/html" title="Lüzumsuz Sözlerden Kulağınızı Koruyun" /><published>2026-06-03T08:09:00+03:00</published><updated>2026-06-03T08:09:00+03:00</updated><id>https://ahmetcadirci.com/2026/luzumsuz-soz</id><content type="html" xml:base="https://ahmetcadirci.com/2026/luzumsuz-soz/"><![CDATA[<blockquote>
  <p>Lüzumsuz sözlerden dilinizi koruduğunuz gibi, kulağınızı da koruyun.</p>
</blockquote>]]></content><author><name>Ahmet Çadırcı</name><email>info@ahmetcadirci.com</email></author><summary type="html"><![CDATA[Lüzumsuz sözlerden dilinizi koruduğunuz gibi, kulağınızı da koruyun.]]></summary></entry><entry><title type="html">Vibe Coding ile Kodlama Sürecinde Doğru Planlama ve Proje Yönetimi Nasıl Yapılır?</title><link href="https://ahmetcadirci.com/2026/vibe-coding/" rel="alternate" type="text/html" title="Vibe Coding ile Kodlama Sürecinde Doğru Planlama ve Proje Yönetimi Nasıl Yapılır?" /><published>2026-05-27T21:23:00+03:00</published><updated>2026-05-27T21:23:00+03:00</updated><id>https://ahmetcadirci.com/2026/vibe-coding</id><content type="html" xml:base="https://ahmetcadirci.com/2026/vibe-coding/"><![CDATA[<p>Vibe coding sürecinde öğrendiğim bazı şeyleri paylaşmak istiyorum. Öncelikle AGENTS.md ve TODO.md listelerini çok iyi hazırlamak gerekiyor. Bunları doğru şekilde hazırladığınızda, kod üretim süreci daha düzenli ilerliyor ve hatalar azalıyor.</p>

<p>İlk olarak Claude ile sohbet ederek fikrimi net bir şekilde açıklıyorum. Bu fikir kısa ya da uzun olabilir, önemli olan temel çerçevenin anlaşılır olmasıdır.</p>

<p>Sonrasında bu fikri yapay zekâ ile birlikte sürekli derinleştiriyorum. Neler yapılabilir ve neler yapılamaz gibi konuları tartışıyorum. Bu süreç bazen çok sayıda mesajlaşma içerebilir.</p>

<p>Daha sonra bu sohbetlerin çıktısını zihnimde özetliyorum. Sistemin sonunda hangi özelliklere sahip olacağını netleştiriyorum. Yani yapılacaklar listesini ve genel yapıyı belirliyorum.</p>

<p>Burada en önemli nokta, projenin başından sonuna kadar fikrin net olmasıdır. Örneğin bir <a href="https://github.com/ahmetcadirci25/depo-stok-yonetimi">depo stok sistemi</a> yapacaksanız, veritabanı yapısı, yayınlama ortamı ve sistemin teknik sınırları en baştan düşünülmelidir.</p>

<p>Projeye sadece “bir depo sistemi yapacağım” diyerek başlamak doğru değildir. Bunun yerine sistemin tüm aşamalarını önceden düşünerek ilerlemek gerekir.</p>

<p>Aksi durumda, sonradan yazılan kodlar sistem mimarisiyle uyumsuz olabilir ve yapılan işin büyük kısmı boşa gidebilir.</p>

<p>Sonraki aşamada AGENTS.md  dosyası hazırlanır. Ardından TODO.md dosyası oluşturulur ve proje fazlara ayrılır. Bu fazlar tek seferde planlanmalı, ancak uygulama sırasında ayrı ayrı ele alınmalıdır.</p>

<p>Önce faz 1 ayrı bir dosyada detaylı şekilde yazdırılır. Ardından faz 2 ve faz 3 için de aynı şekilde ayrı dosyalar oluşturulur.</p>

<p>Tüm bu parçalar daha sonra TODO.md dosyasında birleştirilir. Bunun amacı, planın daha okunabilir ve tutarlı hale gelmesini sağlamaktır. Aksi halde tek dosyada kısa ve yüzeysel açıklamalar oluşabilir.</p>

<p>Örneğin TODO.md dosyası bazen çok uzun, hatta binlerce satırlık bir proje planına dönüşebilir. Bu sayede projenin genel yönü daha net görülür.</p>

<p>Son aşamada bir proje klasörü oluşturun ve hazırlanan dosyalar bu klasöre yerleştirin. Ardından Claude, Codex, Gemini, Antigravity veya OpenCode farketmeksiniz projeyi başlatın.</p>

<p>Daha sonra sürece faz faz ilerlenir. Önce faz 1.1 tamamlayın ve sürekli commit atmayı unutmayın. Ardından faz 1.2 yaptırın ve yine commit atın. Bu şekilde proje adım adım ilerleyin. Göreceksiniz ki sağlıklı bir şekilde ilerlemiş olacaksınız.</p>]]></content><author><name>Ahmet Çadırcı</name><email>info@ahmetcadirci.com</email></author><summary type="html"><![CDATA[Vibe coding sürecinde öğrendiğim bazı şeyleri paylaşmak istiyorum. Öncelikle AGENTS.md ve TODO.md listelerini çok iyi hazırlamak gerekiyor. Bunları doğru şekilde hazırladığınızda, kod üretim süreci daha düzenli ilerliyor ve hatalar azalıyor.]]></summary></entry></feed>