AGENTS.md - AI kodlama ajanları için açık format
(agents.md)- AGENTS.md, README'yi tamamlayıcı bir rol üstlenir ve AI kodlama ajanlarının projede çalışırken ihtiyaç duyduğu bağlamı ve yönergeleri içeren özel bir dosyadır
- 20.000'den fazla açık kaynak proje tarafından kullanılıyor; derleme/test/kod stili gibi insanlar için gereksiz ama ajanlar için önemli bilgileri düzenler
- Ajanlara özel yönergeleri net ve öngörülebilir bir konumda sunarak README'yi sade tutarken işbirliği verimliliğini artırır
- Tek bir AGENTS.md ile çeşitli ajanlar ve araçlarla uyumludur; büyük monorepo'larda alt projelere özel ayrı AGENTS.md dosyaları kullanılabilir
- OpenAI Codex, Cursor, Google Jules gibi birçok ekosistemin işbirliğiyle oluşturulmuş açık bir standarttır
Why AGENTS.md?
- README.md insanlar için hazırlanmış bir dokümandır; hızlı başlangıç, proje açıklaması ve katkı yönergeleri sunar
- AGENTS.md, ajanlar için yardımcı bir dokümandır; derleme/test/kod kuralları gibi ayrıntılı bağlamı içererek README'yi karmaşık hale getirmez
- Ayrı bir dosya olmasının nedenleri
- Ajanların başvuracağı öngörülebilir bir yönerge konumu sağlar
- README, insan katkıcıları merkeze alarak sade kalır
- Mevcut dokümanları tamamlayan daha hassas, ajana özel yönergeler sunar
- Sahipli bir format yerine herkesin kullanabileceği açık standart adlandırması benimsenmiştir
- Tek bir AGENTS.md ile birden fazla AI kodlama ajanı ve araçla uyumluluk sağlanabilir
How to use AGENTS.md?
- 1. AGENTS.md dosyasını oluşturun
- Depo köküne yerleştirin (birçok ajan otomatik oluşturmayı destekler)
- 2. Temel bölümleri yazın
- Proje özeti
- Derleme ve test komutları
- Kod stili yönergeleri
- Test yöntemi
- Güvenlik değerlendirmeleri
- 3. Ek yönergeler ekleyin
- Commit/PR kuralları, güvenlik uyarıları, büyük veri kümeleri, dağıtım adımları gibi ekip üyelerine iletilmek istenen içerikler
- 4. Monorepo desteği
- Her paket için ayrı AGENTS.md yerleştirilebilir
- Ajanlar en yakın dosyayı okuyarak ilgili alt projeye uygun yönergeleri izler
- Örnek: OpenAI deposunda 88 adet AGENTS.md bulunuyor
FAQ
- Zorunlu alanlar: Yok; genel Markdown biçimi serbestçe kullanılabilir
- Çakışma durumunda: En yakın AGENTS.md önceliklidir, kullanıcı tarafından açıkça verilen prompt son olarak uygulanır
- Otomatik çalıştırma: Dosyada belirtilen test komutları ajan tarafından çalıştırılarak hataları düzeltme girişiminde bulunulabilir
- Güncellenebilirlik: İstenildiği zaman değiştirilebilir, canlı bir doküman olarak yönetilir
- Mevcut dokümanların taşınması: Dosya adı değiştirildikten sonra sembolik bağlantıyla uyumluluk korunabilir
mv AGENT.md AGENTS.md && ln -s AGENTS.md AGENT.md
1 yorum
Hacker News görüşü
Küçük projelerde tek bir
.mddosyası yeterli olsa da, karmaşık projelerde hiyerarşik klasör yapısı veindex.mdçok daha etkili oluyorindex.mdve onun altındaauth.md,performance.mdgibi dosyalardan oluşan yapı hem bakım açısından kolay, hem de LLM ya da ajanların gereksiz token harcamadan yalnızca ilgili bağlamı çekebilmesini sağlıyor.docsdosyaları hem insanlar hem de LLM’ler için uygun hale geliyor veindex.mdiçinde her dosya için kısa yönlendirmelerle organizasyon rehberi de yer alabiliyorYalnız,
".agents"yerine.codebotsveya.contextgibi daha sezgisel bir isim daha iyi olurduÖnemli dosya ve dizinleri özellikle gizlemeye gerek olmadığını düşünüyorum
Özellikle dokümantasyon gizlenince daha da opak hale geliyor; gelenekten geliyor olabilir ama bu iyi bir kalıp değil
robot_docsgibi bir isim nasıl olur diye düşünüyorumAslında bu tür bilgiler, katkıda bulunanların merak ettiği şeylerle çakıştığı için, esasen
CONTRIBUTING.mdiçinde yer almalı diye düşünüyorumBu yapı, hem insanlar hem de robotlar için yazılmış bir yazılım tasarımı/kodlama stili rehberi dokümanı gibi duruyor
Ben bu tür
.mddosyalarınıdocs/klasörüne koyuyorum;Claude Codeda bunu doğrudan yazıyorAGENTS.mdveCLAUDE.mdsadece robotlara yönelik olmalı; ister tek büyük dosyadah2başlıklarla bölümlere ayırın, ister birden çok dosyaya bölün, ikisinin de artıları ve eksileri varArc42gibi ikisini de destekleyen mimari dokümantasyon formatları da varBüyük bir Markdown içinde belirli bir bölüme referans vermek yerine, bunu ayrı dosya yapıp
@ile anmak daha kolay ve hata olasılığını azaltıyorBelirli bir bölüme odaklanmak gerektiğinde küçük dosyalara bölmek kod ajanları için de daha iyi
Küçük dosyalar
diff/PRincelemesinde de daha kullanışlıKod tabanının içinde birden fazla
AGENTS.mddosyası da bulundurabilirsinizTooling, mevcut dizindeki ve kök dizindeki
AGENTS.mddosyalarını birlikte okuyacak şekilde tasarlanırsa, bilgi kodun yakınında kalabilir ve bu da istenen yaklaşımla birlikte kullanılabilirBen de benzer bir yapı kullanıyorum;
index.mdiçine her dosya için kısa açıklamalar ekleyerek oldukça iyi sonuçlar aldımAyrıca
rules.mdgibi, dizin bazında istenen davranış kurallarını tanımlayan dosya yöntemini de deniyorumÖrneğin
realtime-service.tsvequeue-service.tsgibi farklı servislerin bulunduğu bir dizinde yanına birrules.mdkoymak gibiPrompt içinde bu kural dosyasını belirterek yeni şeyler üretmek kolaylaşıyor; ama isim konusu hâlâ biraz daha düşünülmeli
Şu an, ajanların kod tabanını anlayabilmesi için, insanların ihtiyaç duyduğundan daha fazla özel rehber yazmak zorunda kaldığımız bir geçiş dönemindeyiz
Yakında buna gerek kalmayacağını düşünüyorum
Proje dokümantasyonumuz baştan yeterince dolu ve düzgün olsaydı,
AGENTS.mdiçindeki her şey zaten onun içinde yer alabilirdiHer zaman insanlar için doküman yazmalıyız; LLM’lerin avantajı da insanların yazdığı metni okuyabilmeleri
Bence tasarım da bu bakış açısıyla yapılmalı
Bu sadece kod tabanını anlamakla ilgili değil; belirli stilleri zorunlu kılmak için de çok işe yarıyor (örneğin testlerde hangi
assertkütüphanesinin kullanılacağı, yorum yazmama kuralı, yapısal logging kullanımı vb.)Hatta neredeyse hiç kodu olmayan yeni projelerde daha da faydalı olabilir
Makinenin okuyabildiği kuralların toplumun birçok alanında daha yaygın hale geleceğini tahmin ediyorum
Örneğin otonom sürüş ve trafik kuralları: insanların bile bağlamı anlamakta zorlandığı tabelalar var (
"Kırmızı ışıkta sağa dönüş yasaktır, eğitim döneminde 7-9 arası"gibi); makineler için bu daha da zorSonunda kamu kurumları ya daha az bağlam gerektiren kurallara geçecek ya da makine tarafından okunabilirlik (QR kod vb.) içeren sinyallere yönelecek
Böyle bir değişim olmazsa makineler kuralları daha sık ihlal edecek
İş mantığı gibi alanlarda ise, ajanlar için özel yönlendirmelerin gelecekte de kesinlikle gerekli olacağını düşünüyorum
Ne inşa edildiği, niyetin ne olduğu, projenin nihai amacı gibi şeyleri insanlar açıkça anlatmadıkça makineler anlayamaz
Mimari gibi konularda da herkesin ölçütü farklı; zihinde bir yapı olması, gerçek değişikliklere bakarken anlamayı kolaylaştırıyor, yani gerçek darboğaz aslında burada
Genel olarak katılıyorum ama bazı bilgileri (örneğin her seferinde bağlama mutlaka eklemek istediklerimizi) ayrı bir dosya olarak zorla dahil etme isteği de doğabiliyor
Zımnen düşündüğümüz kuralları ve varsayımları dokümante etmezsek LLM bunları bilemez
Koddan bir kısmını çıkarım yoluyla anlayabilir belki ama %100 mümkün değil; bu yüzden gereksinimleri açıkça yazmak önemli
AGENTS.md, sonuçtaREADME.mdile aynı rolü oynarken biraz da hype yarattığı için, insanların gerçekten içini dolduruyor olması ilginçİnsanlar başkaları için doküman yazmaya üşeniyor ama robotlar için gayet hevesle yazıyorlar; bu ilginç
Bu durum, başta azınlık için ergonomik düşünülüp sonunda herkes için daha iyi hale gelen bir sap tasarımına benziyor
Aslında tam tersi: insanlar doküman okumadığı için kimsenin yazma motivasyonu oluşmuyordu
Ajanlar için yazılan
CLAUDE.md, bir kez yazıldığında kısa süre içinde 1000 ajan tarafından okunacak; bu da yazma isteği doğuruyorSonuçta
README.mdiçine minimum gerekeni yazmak yeterli değil mi diye düşünüyorumGerçekte ajanların kendisi bile bu dokümanları okumuyor ya da birkaç talimat daha verilince her şeyi unutuyor olacak
Şu anki durum, insanların insan geliştiricileri (kendileri dahil) geliştirme sürecinden aktif biçimde çıkarmaya çalışması ve bu yüzden ajanların mutlaka uygun yönlendirmelere ihtiyaç duyması
Çünkü insanların yazılım geliştirmeye katılımını tamamen kaldırma arzusu güçlenmiş durumda
Güncel atmosferin zaten
vibe codingolduğu yönünde şaka yapıyorBotlar için doküman yazmanın sonuçta iyi yazılmış dokümandan pek farklı olmadığı görüşü de daha önce dile getirilmişti sanırım
Sonuçta his şu:
"AGENTS.md dosyası oluşturun ve içine sihri doldurun"deyip asıl olarak bir siteye link vermişlerBenim durumumda, 5.000’den fazla repo yöneten bir kodlama ajanı geliştiriyorum
Ajanın durumu gizli
.agentdizininde tutuluyor; her ajan rolü için yapılandırma klasörleri ve rol bazlı açık talimatlar içeriyorProje klasöründe
agentsadlı bir klasör tutup, çeşitli dosyaları rollere göre ayırarak<Rol> <talimat>biçiminde yönetiyorumAjan yalnızca rolü tanımlı dosyaları okuyor, durum ise
dot<coding agent name>klasöründe saklanıyorBaşlatma
/initile yapılıyor ve tüm repo kodunu basitçe indekslemek yerine, tüm mimariyi ve mantığı özetleyen bir high-level summary üretiliyorBu özet, editör içinde açılıp kapatılabilen
ghost commentsolarak sunuluyor ve gerçek koda commit edilmeyen metadata niteliğindeGelişmiş bir eşleme sistemi sayesinde her özet ilgili kod satırlarıyla tam olarak bağlanıyor
Başta RAG’i doğrudan koda uyguladığımda istediğim sonucu alamadım; bu yüzden şu anki yapıya geçtim
Şu anda AST tabanlı hızlı sözdizimsel arama ile, özetlere dayalı anlamsal keşfi (RAG) birleştiren hibrit bir arama modeli kullanıyorum
Örneğin
"Bu uygulamadaki kimlik doğrulama nasıl çalışıyor?"diye sorulduğunda, sözdizimsel arama yalnızcalogingibi kelimeler içeren fonksiyonları bulurken, anlamsal arama özetler üzerinden tüm kimlik doğrulama akışını anlatısal biçimde kavrayıp farklı dosyalara dağılmış parçaları birbirine bağladığı için adeta sihir gibi çalışıyorBuna ek olarak, özetlerin hiyerarşik bir yapısını (B-tree veya genel ağaç biçiminde) kurabilirsiniz
Yani yöntem/sınıf/modül başına bir summary olur ve her katman daha alt katmanlara işaret eder
RAG, anlamsal sorguya göre gerektiği kadar derine inebilir; her aşama alt katmanı özetleyerek bilgi miktarını azaltır ama gerekli anlamı korur
Bu yaklaşım, kodun soyutlamasının iyi yapıldığı durumlarda özellikle etkili
Örneğin
add(n1, n2)gibi adı zaten yeterince anlam taşıyan bir fonksiyonda gerçek implementasyonu bilmek gerekmez; ama gerçek dünyadaki fonksiyonlar logging veya cache gibi birden fazla işleve sahip olduğundan, bağlama göre gerçek kodu da eklemek gerekebilirBunun daha ayrıntılı açıklamasını duymak isterim
Sanki insanlar yavaş yavaş proje dokümantasyonunu düzgün yazmaya şartlandırılıyor
Şaka gibi ama aslında bunu ekibe anlatıyorum
LLM’ler gerçekten üretkenliği dramatik biçimde artırmasa bile, sonuçta çok daha iyi dokümantasyon yapmamıza yol açıyor
"Mission. Fucking. Accomplished."xkcd 810README.mdileAGENTS.mddosyalarını gerçekten ayırmak gerekip gerekmediğinden hâlâ emin değilimİlgili derleme’ye göre,
ayırma nedenleri şunlar:
ayırmama nedeniyse
README.mdartık biraz pazarlama/landing page gibi;AGENTS.mdveCLAUDE.mdise kod, mimari ve kullanım gibi gerçek içeriğe gidilen yerler gibi hissettiriyorÖrnekleri okurken ben de aynı şeyi düşündüm; aslında her şeyi kapsayan iyi bir
README.mdyeterli olmaz mı diye aklımdan geçtiREADMEinsanlar içindir,AGENTS.mdvb. ise LLM’ler içinKullanım/kurulum yöntemi
readme’de, derleme/test yöntemi, mimari kararlar, kodlama standartları, repo yapısı gibi konular ise ajan dokümanlarında yer alıyorLLM’de context olarak kullanılan kapasite sorununu da düşünmek gerekiyor
README.mduzun olduğu için tamamını context’e koymak zorAGENT.mdiçinde LLM’in gerçekten ihtiyaç duyduğu testler, build komutları gibi temel komutlar kısa ve öz tutuluyorREADME ile örtüşen kısımlar olabilir ama gereksiz içeriğin context’e tekrar tekrar gönderilmesini istemiyorum
Yapay zekanın vaadi, bizim ille de kesin bir formata takılmadan istediğimiz gibi yazıp makinenin bunu kendi başına uyarlaması değil miydi?
Aslında doğru seçim, yalnızca dosya adını standartlaştırıp içeriği herhangi bir biçime zorlamamak olmuş
AGENTS.mdstandart Markdown olduğu için istediğiniz başlıkları kullanabilirsiniz ve ajan metni parse ederYine de belli ölçüde yapı ve biçim önemli
Tabii bunu tam anlamıyla kod sözdizimi düzeyinde söylemiyorum
Sonuçta varılan yer, içeriğin açık biçimde yazılması gerektiği
Doküman uzadıkça yapısal yaklaşım, insanlar açısından bakım için daha avantajlı oluyor
Kullanılan her ajan (
Claude Code,Gemini,Aider) için dosya adı farklıStandartlaşsa iyi olurdu ama şimdilik
rulerile birden fazla formatı otomatik üretme zahmetine katlanıyorumÖzellikle ajanların MCP yapılandırma dosyalarını tüketme biçimleri de farklı olduğu için, standartlaşmanın hemen gerçekleşeceğini sanmıyorum
rulerBiraz sinik bakarsak bunun nedeninin vendor lock-in yaratma eğilimi olduğunu düşünüyorum
Standartlaşma emtialaşmaya yol açabileceği için şirketler bundan kaçınıyor olabilir
Jules,AGENTS.mdkullanıyor; bu da Google’ın bu standarda katıldığını gösteriyorGemini Code Assistvarlığını sürdürürse muhtemelenAGENTS.mddesteği de eklerAiderdokümanlarında belirli bir dosya adına rastlamadım; elinde link varsa paylaşmanı isterimGörünen o ki standart dosya adını henüz desteklemeyen tek şirket
Anthropicrulergibi bir araca gerçekten ihtiyaç duyulması biraz üzücüTuhaf hissettiren bir web sitesi
OpenAItarafından yapılmış olabileceğini, ziyaretçi çekme ve pazarlama konumlandırması amacı taşıyıp taşımadığını düşündümGerçekte ise bir format tanımlamıyor, sadece dosya adını belirliyor
Anthropic/Claude’un eksik olması da dikkat çekici;CLAUDE.md’yiAGENTS.md’ye sembolik link ile bağlamak gibi bir yöntem de mümkünAslında bunu
sourcegraphyaptı ve mayıstan beri vardıDaha önce
agent.mdidi, şimdiagents.md’ye 301 yönlendirmesi yapılıyorEski bağlantı
Açıklama yazısı da var
Görünüşe göre yakın zamanda
OpenAIile ortaklık yapmışlarİlginç olan, başlangıçta
agent.mdiken şimdiagents.mdolmuş olmasıClaude’un listede olmamasının nedeni, yalnızcaClaude’un hâlâ standart dosya adı kuralını desteklememesi