İçeriğe geç
ceaksan

Living Architecture: AI Coding Agent'lar İçin Yapılandırılmış Mimari Dokümantasyon

README.md kullanıcıya, CLAUDE.md agent'a talimat verir, ADR'ler kararları kaydeder. Peki projenin gerçek yapısını kim anlatır? architecture.md bu boşluğu dolduran, proje büyüklüğüne göre ölçeklenen açık kaynak bir template.

3 Mar 2026 7 dk okuma
TL;DR

AI coding agent'lar (Claude Code, Gemini CLI, Cursor) her oturumda projeyi sıfırdan tarayarak token harcıyor ve yanlış çıkarımlar yapıyor. README.md kullanıcıya, CLAUDE.md agent'a talimat verir, ADR'ler kararları kaydeder, ama hiçbiri projenin gerçek yapısını anlatmaz. Living Architecture, bu boşluğu dolduran proje agnostik bir architecture.md template'i: 10 temel bölüm, 11 opsiyonel modül, 3 derinlik seviyesi (L1/L2/L3). Küçük statik siteden büyük monorepo'ya kadar ölçekleniyor. Açık kaynak.

Problem: Eksik Olan Katman

AI coding agent’larla çalışırken her araç bir sorunu çözüyor:

DokümanNe YaparNe Yapmaz
README.mdKullanıcıya projeyi tanıtırTeknik yapıyı anlatmaz
CLAUDE.md / AGENTS.mdAgent’a talimat verir (kurallar, komutlar, sınırlar)Projenin yapısını anlatmaz
ADR’lerKararları ve gerekçelerini kaydederGüncel durumu anlatmaz
KodGerçeğin kendisiYüzlerce dosyaya dağılmış, taranması pahalı

Agent her oturumda projeyi sıfırdan taramak zorunda kalıyor. Glob, grep, dosya okuma. Context window tool output’larıyla doluyor. Yüzeysel tarama yanlış çıkarımlara neden oluyor: iki farklı modüldeki benzer isimleri karıştırmak, kullanılmayan eski kodu aktif sanmak, altyapı detaylarını tahmin etmek.

Bu problemi kendi projelerimde yaşadım. 992 dosyalık bir monorepo’da agent’ın Inngest proxy worker yapısını araştırması ~20 dakika sürüyordu: SSH denemeleri, API endpoint tahminleri, port taramaları. Cevap aslında basit: container adı, portlar, tunnel route’ları, env var’lar. Ama bu bilgi hiçbir yerde yapılandırılmış halde yoktu. Bu kısmen benim sorunum; aklıma gelmemiş, gelmişse de göz ardı etmiş olabileceğim bir durum, katlıyorum. Ancak, bu durumu projedeki tüm servisler, yapılandırma kararları, vb. için düşünüldüğünde her bir parçayı hatırlamak ya da iş akışı içerisinde durum o konu için paralel bir düzenleme yapmak pek de olası değil. Haliyle, vakit kaybettiren, karar akışını sekteye uğratan ve/veya yanlış kararları temel alan bu durumu çözmek için statik olmayan (olabildiğince) bir yol bulmak gerkeliydi.

architecture.md bu boşluğu dolduruyor: projenin gerçek yapısını, tek bir dosyada, yapılandırılmış formatta anlatan “yaşayan” bir doküman.

Araştırma Temeli

Living Architecture’ı bir template olarak formalize etmeden önce, AI agent’lar için dokümantasyon konusunda kapsamlı bir araştırma yürüttüm. GPT-4o, Kimi K2.5 ve Gemini Deep Research ile paralel araştırmalar, akademik makaleler ve endüstri pratikleri.

Codified Context Yaklaşımı

108.000 satırlık bir C# projesinde test edilen üç katmanlı sistem1 denk geldiğim temel bulgulardan biriydi:

  1. Hot Memory: Convention’lar, retrieval hook’ları, orkestrasyon protokolleri. Pratikte CLAUDE.md veya AGENTS.md dosyası
  2. Domain Expert Agent’lar: Proje bazlı uzman agent’lar. Her biri belirli bir alanın kurallarını ve pattern’lerini biliyor
  3. Cold Memory: On-demand spesifikasyon dokümanları. Agent sadece ilgili olanı çekiyor

Kritik bulgu: dokümantasyon altyapıdır. Kod gibi sürekli bakımı gereken, agent’ların doğru çıktı üretmesi için zorunlu olan bir yapı.

AGENTS.md Ekosistemi ve Altı Temel Alan

Agentic AI Foundation tarafından standartlaştırılan AGENTS.md, farklı AI araçları için farklı dosyalar (CLAUDE.md, .cursorrules, SPEC.md) ama aynı amaca hizmet ediyor: agent’a yapılandırılmış bağlam vermek.

2.500’den fazla başarılı agent config dosyasının analizinden çıkarılan altı zorunlu alan2:

  1. Komutlar: Tam çalıştırılabilir string’ler (install, build, test, lint)
  2. Test: Framework, coverage beklentileri, mocking pattern’leri
  3. Proje Yapısı: Üst seviye dizin ağacı haritası
  4. Kod Stili: “Göster, Anlat” kod snippet’leri
  5. Git Workflow: Branch isimlendirme, commit formatı, PR checklist
  6. Sınırlar: Do/Don’t listeleri, operasyonel limitler

Bu altı alan CLAUDE.md veya AGENTS.md’nin kapsamı. Ancak projenin mimari yapısı, modüller arası ilişkiler, veri akışı, altyapı topolojisi, teknik borç gibi bilgiler bu alanlara sığmıyor. architecture.md’nin varoluş sebebi bu.

Hybrid Yaklaşım Konsensüsü

Tüm araştırma kaynakları aynı noktada birleşiyor:

KatmanİçerikYöntem
Auto-generateSchema, tipler, dependency graph, API imzalarıRepomix/CI hook ile kod değiştiğinde güncelle
Human-writeTasarım kararları, kısıtlamalar, trade-off’larADR formatı, “Kernel of Truth” workflow
Staleness detectDoküman güncelliği takibiGit hook veya CI check

“What” otomatik üretilir, “why” insan yazar. İkisi birlikte agent’a tam resmi veriyor.

C4 Model ve Mermaid.js

C4 modeli (Context, Containers, Components, Code) AI agent’lar için ideal bir hiyerarşi sunuyor. Mermaid.js ile text-based diyagramlar olarak uygulandığında: version-control edilebilir, token-verimli, agent tarafından okunabilir ve düzenlenebilir.

Progressive Disclosure

200K token context window bile fazla bilgiyle doldurulduğunda performans düşüyor3. Çözüm: bilgiyi tümüyle yüklemek yerine, sadece ihtiyaç anında açmak.

TeknikMekanizmaFayda
Jump-to pointer’larDosyalara path ile referans, içerik değilToken tasarrufu
Çalıştırılabilir aramaAGENTS.md’de rg/grep komutlarıJust-in-time keşif
Nested override’larModül bazlı yerel AGENTS.mdSadece ilgili kurallar yüklenir

Bu araştırma bulguları, Living Architecture template’inin tasarım kararlarını doğrudan şekillendirdi.

Living Architecture: Tasarım Kararları

Araştırma bulgularını bir template’e dönüştürürken birkaç temel karar aldım.

Tek Dosya, Yapılandırılmış Bölümler

Mimari bilgiyi birden fazla dosyaya dağıtmak yerine tek bir architecture.md dosyasında toplamayı tercih ettim. Sebebi: agent oturum başında tek dosyayı referans olarak yükleyebiliyor. Birden fazla dosya arasında navigasyon, context window’da ek maliyet yaratıyor. Başlık hiyerarşisi sayesinde agent ihtiyacı olan bölüme atlayabiliyor.

Bölüm Bazlı Derinlik

Tüm projeye tek bir derinlik seviyesi atamak yerine, bölüm bazlı derinlik belirleme yaklaşımını benimsedim. 50 dosyalık bir projede Stack bölümü L1 yeterli olabilir ama 15 veritabanı tablosu varsa Data Model bölümü L2’ye çıkmalı.

Opsiyonel Modüller

Her projenin monorepo yapısı, background job’ları veya i18n desteği yok. 11 opsiyonel modülü “tetikleyici koşullar” ile tanımladım: pnpm-workspace.yaml varsa Monorepo Structure modülünü ekle, yoksa sil. Bu, template’in şişmesini önlüyor.

Gerçek Projelerden Türetme

Template’i soyut olarak tasarlayıp sonra uygulamak yerine, üç gerçek üretim projesini (50, 180, 1200+ dosya) belgeleyerek pattern’leri çıkardım. Her bölümün gerekçesi somut bir ihtiyaçtan doğdu.

Template Yapısı

10 Temel Bölüm

Her proje, büyüklüğünden bağımsız olarak bu 10 bölümü içerir:

#BölümNe Anlatır
1Stack & DependenciesPaketler, versiyonlar, hangi katmanda ne kullanılıyor
2Module MapDizin yapısı, dosya sorumlulukları
3Data FlowVerinin sistemde nasıl aktığı
4Route / API StructureEndpoint’ler, sayfalar, middleware
5Data ModelTablolar, sütunlar, ilişkiler
6Configuration & EnvironmentEnv var’lar, secret’lar, deploy config
7SecurityValidation kuralları, auth akışı, header’lar
8Constraints & Trade-offsMimarinin neden bu şekilde olduğu
9Known Tech DebtNeyin düzeltilmesi gerektiği, öncelik sırasıyla
10Code HotspotsEn çok değişen, en yüksek riskli dosyalar

11 Opsiyonel Modül

Sadece projeye uyan modüller eklenir, geri kalanı silinir:

ModülNe Zaman Ekle
Monorepo Structure2+ paket/workspace
Background JobsInngest, BullMQ, cron, kuyruklar
i18nÇok dilli içerik veya UI
Membership / Access ControlTier veya role bazlı erişim
Webhook ProcessingDış servis webhook’ları
Caching StrategyKV, Redis, CDN, Cache API
SearchPagefind, Algolia, Meilisearch
Content CollectionsCMS, MDX, Astro collections
Design SystemTanımlı görsel dil, token’lar
Infrastructure TopologyÇoklu servis deployment’ları
Dependency GraphKarmaşık iç bağımlılıklar

3 Derinlik Seviyesi

Her bölüm L1, L2 veya L3 derinlikte yazılır. Aynı projede farklı bölümler farklı derinliklerde olabilir.

SeviyeNe ZamanÖrnek
L1< 30 kaynak dosyaDüz tablolar, tek satır açıklamalar, tek diyagram
L230-200 dosyaKatman gruplandırması, akış bazlı diyagramlar, sütun detayları
L3> 200 dosyaDosya seviyesi detay, edge case’ler, metrikler, sorgu pattern’leri

Bölüm bazlı override’lar varsayılanı yükseltir, asla düşürmez:

KoşulBölümMinimum
DB tabloları > 10Data ModelL2
DB tabloları > 30Data ModelL3
API endpoint’leri > 20Route / API StructureL2
Env var’lar > 15ConfigurationL2
Background job’lar > 5Background JobsL2
Component’ler > 30Module MapL2

Örneklerle Uygulama

Template’i üç farklı boyutta kurgusal ama gerçekçi projelerle örnekledim:

L1: Küçük Statik Site (Bella’s Kitchen)

Astro ile geliştirilmiş bir kurumsal web sitesi. ~50 kaynak dosya, Cloudflare Pages’ta host ediliyor. architecture.md ~180 satır.

Stack bölümü düz tablo:

| Package             | Version  | Purpose                   |
| ------------------- | -------- | ------------------------- |
| astro               | ^5.16.11 | Framework (static output) |
| @astrojs/cloudflare | ^12.6.12 | Cloudflare Pages adapter  |
| tailwindcss         | ^4.1.18  | CSS framework             |

Module Map tek seviye dizin ağacı. Data Flow tek bir ASCII diyagram. Bu kadar yeterli.

L2: Orta Boy Membership (LearnHub)

Next.js + Stripe + Neon ile 3 tier’lı kurs platformu. ~180 dosya. architecture.md ~450 satır.

Stack bölümü katman gruplandırmalı (Runtime, Infrastructure, Dev Dependencies). Data Flow auth, ödeme ve içerik erişimi için ayrı diyagramlar. Data Model sütun detayları ve foreign key’lerle.

L3: Büyük Monorepo (Bazaar)

pnpm monorepo, NestJS + Kafka + BullMQ + AWS. ~1200 dosya. architecture.md ~500 satır (yoğunlaştırılmış).

Monorepo Structure, Background Jobs, Infrastructure Topology opsiyonel modülleri aktif. Dosya seviyesi sorumluluklar, edge case’ler, metrikler.

Güncel Tutma Stratejileri

architecture.md ancak güncelliğini korursa değerli. Üç strateji:

1. Değişiklik Anında Güncelleme

Yeni bir dependency, route veya tablo eklediğinizde ilgili bölümü güncelleyin. 2 dakika sürüyor. En basit ve en etkili yöntem.

2. PR Check (GitHub Action)

Değişen dosyaları glob pattern’lerle architecture.md bölümlerine eşleştiren bir GitHub Action. PR’a bilgilendirme yorumu bırakıyor:

## architecture.md Staleness Check

The following sections may be outdated based on changed files:

- **Stack & Dependencies** - package.json modified
- **Route / API Structure** - 2 files added in src/pages/

Run `/architecture --section "Stack & Dependencies"` to update.

Blocker değil, advisory. Geliştirici karar veriyor. ADR oluştururken paralelde ele alınabilir.

3. Daily Review Entegrasyonu

daily-code-review gibi araçlar architecture.md’yi review context’i olarak kullanabiliyor. Review bulguları Tech Debt ve Hotspots bölümlerine geri besleniyor. Geri bildirim döngüsü.

Context Engineering Ekosistemindeki Yeri

Living Architecture, tek başına çalışan bir araç olmaktan çok daha geniş bir ekosistemin temel taşı. Context engineering ekosistemi yazısında anlattığım dört katmanlı yapıda architecture.md birinci katmanın yarısını oluşturuyor:

Katman 1: Statik referanslar  → CLAUDE.md + architecture.md
Katman 2: JIT arama           → mcp-code-search + dnomia-knowledge
Katman 3: Karar yönetişimi    → /court + ADR'ler
Katman 4: Öğrenme döngüsü    → forge retro

CLAUDE.md agent’a “nasıl çalış” diyor. architecture.md “neyle çalışıyorsun” diyor. İkisi birlikte agent’ın ilk saniyeden itibaren doğru bağlamla başlamasını sağlıyor.

İlişkili Araçlar

Projeİlişki
decision-gate/court kararları ADR olarak kaydedilir, architecture.md Constraints bölümünü besler
daily-code-reviewarchitecture.md’yi review context’i olarak kullanır, bulgular Tech Debt’e döner
forgeRetro adımı architecture.md’yi günceller
mcp-code-searcharchitecture.md’deki jump-to pointer’larla tamamlayıcı

İlişkili Yazılar

Kendi Projelerimde Uygulama

Template’i formalize etmeden önce kendi projelerimde architecture.md yazıyordum. 992 dosyalık ana projem için ~3.600 satırlık bir architecture.md var. Bu dosyadan önce agent’ın altyapı sorularına cevap bulması deneme-yanılma süreciydi. Dosyadan sonra agent doğrudan ilgili bölümü okuyor.

“Neden Neon’a geçtik?” sorusuna eskiden 155 ADR’yi taramak gerekiyordu. Şimdi architecture.md’deki Mimari Kararlar bölümünde ADR-127 referansıyla özet var. Agent özetten başlıyor, gerekirse ADR dosyasını açıyor.

Template, bu deneyimlerin genelleştirilmiş hali. Kendi projelerime özgü detayları çıkardım, farklı boyut ve karmaşıklıktaki projelere uygulanabilir bir yapı bıraktım.

Başlarken

Derinlik seviyeleri, örnekler ve SSS için proje sayfasına bakın: lab.ceaksan.com/architecture. Template’i doğrudan indirmek için:

curl -sL https://raw.githubusercontent.com/ceaksan/living-architecture/main/TEMPLATE.md -o architecture.md
  1. DEPTH_GUIDE.md’ye bakarak her bölümün derinliğini belirleyin
  2. Projenize uymayan opsiyonel modülleri silin
  3. Her bölümü doldurun. AI aracınız yardımcı olabilir: kod tabanını tarayıp modül haritası çıkarabilir, package.json’dan stack tablosu oluşturabilir
  4. AI tool config’inizde architecture.md’ye referans verin

Proje açık kaynak olarak GitHub’da yayınlandı4.

Footnotes

  1. “Codified Context: Infrastructure for AI Agents in a Complex Codebase” (arxiv.org/html/2602.20478v1). 108.000 satırlık bir C# projesinde test edilen üç katmanlı sistem.
  2. AGENTS.md Standard (aihero.dev). Agentic AI Foundation tarafından standartlaştırılan, 2.500+ agent config dosyasının analizine dayanan içerik alanları.
  3. “Lost in the Middle: How Language Models Use Long Contexts” (Liu et al., 2023). Context window doluluk oranı arttıkça model performansının düştüğünü belgeleyen çalışma.
  4. Living Architecture GitHub deposu
Versiyon Bilgisi
Changelog
v1.0.02026-03-12GitHub Action (architecture-check), self-exclude desteği
v0.1.02026-03-03İlk sürüm: 10 temel bölüm, 11 opsiyonel modül, 3 derinlik seviyesi
Önemli Noktalar
  • 01 architecture.md, projenin gerçek yapısını anlatır: modül haritası, veri akışı, kısıtlamalar, teknik borç. CLAUDE.md veya AGENTS.md'nin işi bu değil.
  • 02 Derinlik seviyesi proje boyutuna göre bölüm bazlı belirlenir. 50 dosyalık bir site için L1, 1200 dosyalık monorepo için L3.
  • 03 11 opsiyonel modül (monorepo, background jobs, i18n, membership, webhook, cache, search, content collections, design system, infra topology, dependency graph) sadece gerektiğinde eklenir.
  • 04 Template, gerçek üretim projelerinden türetildi. Üç farklı boyutta (50, 180, 1200 dosya) uygulandı ve doğrulandı.
Sık Sorulan Sorular (FAQ)
+ Living Architecture nedir?

AI coding agent'lar için proje agnostik bir architecture.md template'i. 10 temel bölüm (stack, modül haritası, veri akışı, API yapısı, veri modeli, konfigürasyon, güvenlik, kısıtlamalar, teknik borç, kod hotspot'ları) ve 11 opsiyonel modül içerir. Proje büyüklüğüne göre L1, L2 veya L3 derinlikte yazılır.

+ CLAUDE.md veya AGENTS.md varken neden architecture.md gerekli?

CLAUDE.md agent'a talimat verir: 'barrel import kullanma', 'testleri böyle çalıştır'. architecture.md projenin gerçekliğini anlatır: hangi modül nerede, veri nasıl akıyor, hangi kararlar neden alındı. Biri 'nasıl çalış', diğeri 'neyle çalışıyorsun'. İkisi farklı amaçlara hizmet eder ve birbirinin yerine geçemez.

+ Derinlik seviyelerini nasıl belirliyorum?

Kaynak dosya sayısına göre varsayılan belirlenir: 30'dan az L1, 30-200 arası L2, 200'den fazla L3. Bölüm bazlı override'lar var: 10'dan fazla veritabanı tablosu varsa Data Model en az L2, 20'den fazla API endpoint varsa Route yapısı en az L2. Override'lar sadece yukarı yönlü çalışır, asla düşürmez.

+ architecture.md güncelliğini nasıl koruyacağım?

Üç strateji: (1) Değişiklik anında, yeni bir dependency, route veya tablo eklediğinizde ilgili bölümü güncelleyin (2 dakika). (2) PR check ile değişen dosyaları architecture.md bölümlerine eşleştiren GitHub Action (advisory, blocker değil). (3) daily-code-review gibi araçlarla architecture.md'yi review context'i olarak kullanarak geri bildirim döngüsü.

+ Template'i nasıl kullanmaya başlıyorum?

curl ile TEMPLATE.md'yi projenize indirin, DEPTH_GUIDE.md'ye bakarak her bölümün derinliğini belirleyin, doldurun. AI tool config'inizde (CLAUDE.md, .cursorrules) architecture.md'ye referans verin. Projenize uymayan opsiyonel modülleri silin.