"Restoranda kimin ne kadar ödeyeceğini hesaplayan bir uygulama yap." İlk bakışta anlaşılır bir istek, ama ayrıntılara girince sorular başlıyor. Hesabı eşit mi bölüşeceğiz, yoksa herkes kendi yemeğinin ücretini mi ödeyecek? Bahşiş hesaba dahil mi? Tutar herkese eşit bölünmezse ne göstereceğiz?

Görev tanımını Claude Code ile birlikte oluşturalım: siz görevi açıklayıp kararları verirsiniz, ajan bunları bir dosyaya yazar, siz de kaydı kontrol edersiniz. Kısa bir istekle başlayıp üzerinde çalışabileceğiniz bir TASK_SPEC'e adım adım ulaşacağız.

"Düzgünce yap" bir görev tanımı değildir

Şöyle düşünün: hesabı hızlıca bölmek istediniz, ama ajan kayıt olma ve restoran geçmişi özellikleri ekledi. Fişleri saklamak için de bir sunucu gerekti. Siz tarayıcıda tek bir dosya açmayı beklerken şimdi uygulamayı nasıl çalıştıracağınızı çözmeniz ve fazlalıkları kaldırmanız gerekiyor. Her ekleme tek başına yararlı görünüyor, ama sonuç artık istediğiniz şeyden epey uzak.

Kodla çalışırken eksik bırakılan ayrıntılar gerçek dosya değişikliklerine dönüşebilir. Zincir şöyle ilerler:

  • Belirsiz istek
  • Ajan eksik koşulları tahminle doldurur
  • Gereksiz değişiklikler ortaya çıkar
  • Siz inceleyip yeniden düzenlersiniz

Şema, verilmeyen bir kararın nasıl ek işe dönüştüğünü gösteriyor. Ajan ek sorular sorabilir, ama belirsizliği değişikliklerden önce fark etmek daha iyidir. Daha ilk ifade bile yönü ve sınırları belirleyebilir:

Henüz belirsiz:
Restoranda kimin ne kadar ödeyeceğini hesaplayan bir uygulama yap.

Biraz daha açık:
Tek bir sayfa olsun: hesap tutarını ve kişi sayısını girip
herkesin ödeyeceği tutarı görelim. Eşit bölüşelim.
Kullanıcı hesapları, fiş geçmişi ve yemeklere göre bölüşme olmasın.

İkinci istek de henüz her soruyu yanıtlamıyor. Ama ilk istekten yola çıkarak yapılabilecek birkaç farklı ürünü şimdiden kapsam dışında bırakıyor. Kalan boşlukları bulup kararlarınızı kaydetmenize ajan yardımcı olacak.

Görev tek dosyada

TASK_SPEC, tek bir görevin koşullarını kaydeder: hangi sonuç gerekiyor, çalışma nerede bitiyor ve sonucu nasıl kontrol edeceksiniz. Genellikle proje klasöründe TASK_SPEC.md adlı bir Markdown dosyasında saklanır. Bu adın arkasında özel bir biçim ya da komut yoktur. Koşulları mesajla da iletebilirsiniz, ama dosyayı yeniden okumak ve güncellemek daha kolaydır.

TASK_SPEC'i elle yazmanız şart değil. Ajanla birlikte oluşturup kararlarınızı nasıl kaydettiğini kontrol etmek daha kolaydır. Görevi günlük dille anlatabilir, soruları yanıtlayabilir ve ifadeleri düzeltmesini isteyebilirsiniz. Dosyayı ajan güncel tutar, siz de içeriği kontrol edersiniz.

  1. ne elde etmek istediğinizi anlatır, belirsiz noktaları konuşursunuz;
  2. ajan seçenekler sunar, siz uygun olanı seçersiniz;
  3. ajan kararı TASK_SPEC'e yazar ve eklediği ya da değiştirdiği bölümü gösterir;
  4. bu bölümü dosyada okursunuz: anlam korunmuş mu, fazladan koşul eklenmiş mi, önceki kayıtlarla çelişiyor mu? Bir sorun varsa düzeltmesini ister, yeniden kontrol edersiniz.

Her karardan sonra yalnızca etkilenen satırları ve bağlantılı koşulları kontrol etmeniz yeterlidir. Uygulamaya geçmeden önce dosyanın tamamını yeniden okuyun: kayıtlar tek tek doğru görünebilir, ama birlikte birbiriyle uyuşmayan şeyler isteyebilir. "Spesifikasyonu güncelledim" mesajı, belgeye tam olarak ne yazıldığını henüz göstermez.

CLAUDE.md dosyasından farkı amacıdır. "Projede tüm etiketler Türkçe" genel bir proje kuralıdır. "Bu görevde bahşiş hesabı ekliyoruz" ise belirli bir çalışmanın koşuludur. İlki CLAUDE.md'ye, ikincisi TASK_SPEC'e uygundur.

Belgenin uzunluğu göreve bağlıdır. Tamamlanmış bir sayfadaki yazım hatasını düzeltmek için şöyle bir tanım yeterlidir:

Hesap bölüşme sayfasındaki düğme etiketini düzelt:
"Hesaplaa" → "Hesapla". Başka bir şeyi değiştirme.
Yeni etiketin göründüğünü ve düğmenin hesaplamaya devam ettiğini kontrol et.

Bu kısa bir TASK_SPEC'tir; bazen tiny spec denir. Burada konuşacak fazla bir şey yok. Yeni bir hesaplama uygulamasının davranışı içinse birkaç seçenek vardır, bu yüzden iki satır yetmez. Sonucu etkileyen kararları kaydetmek yararlıdır; başlık sayısının tek başına bir garantisi yoktur.

Sonuçla başlayın

Henüz bir proje olmadığını varsayalım. Bir arkadaş grubu tarayıcıda bir sayfa açıp hesap tutarını girmek ve herkesin ne kadar ödeyeceğini öğrenmek istiyor. Ajandan bir taslak hazırlamasını isteyelim:

Hesap bölüşme sayfası için TASK_SPEC.md oluştur.
Henüz proje yok. Hesap tutarını ve kişi sayısını giriyoruz,
"Hesapla" düğmesine basınca herkesin payını görüyoruz.
Çıktı, kurulum gerektirmeden tarayıcıda açılan index.html olmalı.
Üzerinde anlaştığımız koşulları yaz, bilinmeyenleri soru olarak işaretle.
Yazdığın metni göster. Sayfanın kodunu henüz yazma.

Dosyanın ilk bölümüne dair örnek bir taslak şöyle olabilir:

## BAĞLAM
Restorandaki grup ortak hesabı hızlıca bölüşmek istiyor.
Henüz proje yok, çalışma klasörü boş.

## İSTENEN DAVRANIŞ
Kullanıcı hesap tutarını ve kişi sayısını girer.
"Hesapla" düğmesine bastıktan sonra herkesin ödeyeceği tutarı görür.
Çalışmanın sonucu: kurulum gerektirmeden tarayıcıda
açılabilen bir index.html sayfası.

TASK_SPEC.md dosyasını editörde açıp kaydı isteğinizle karşılaştırın: iki alan, eylem ve herkes için sonuç var. Ajan ad girişi ya da zorunlu kayıt eklediyse bunlar üzerinde anlaşılmamış koşullardır. Dosyadan kaldırmasını isteyin ve düzeltmeyi kontrol edin.

Artık sayfayı kimin kullanacağı ve ne alacağı belli. Bu arada artifact, yani ajanın çalışmasının somut sonucu da tanımlandı: sayfa dosyası. Başka bir görevde bu, hata analizi ya da kod içermeyen bir değişiklik planı olabilir. Bunu açıkça söylemek daha iyi.

Dikkat edin, henüz JavaScript işlevlerini seçmedik ve katılımcıların nasıl saklanacağını söylemedik. Bunlar uygulama ayrıntılarıdır. Görev tanımında kişinin göreceği şeyleri sabitlemek daha önemli: girdi, eylem ve sonuç.

Görev nerede biter?

Şimdi ilk sürümün nerede biteceğini belirleyelim. Ajandan üzerinde anlaştığımız sınırları yazmasını ve güncellenen bölümü göstermesini isteyelim:

## SCOPE
Tek sayfa: tutarı ve kişi sayısını girme,
toplamı eşit bölme, herkesin payını gösterme.

## NON-GOALS
Kullanıcı hesabı ve fiş geçmişi yok: verileri saklamamız gerekmiyor.
Yemeklere göre bölüşme yok: ilk sürümde eşit bölüşeceğiz.
Uygulama kısıtı: stiller ve betik tek HTML dosyasının içinde,
sunucu ve harici kütüphane yok.
Sayfa çift tıklamayla açılmalı.

Bu bölümde yalnızca yasakların yazılı olup olmadığını kontrol etmiyoruz: eşit bölüşme görevin kapsamına dahil kalmalı, yemeklere göre bölüşme ise kapsam dışında olmalı. Ajan bunları karıştırdıysa sayfa üzerinde çalışmaya başlamadan belgeyi düzeltin.

Scope, çalışmanın kapsamını açıklar. Buradaki gibi ekran ve senaryo üzerinden tanımlanabilir. Biliniyorsa tam yollar yardımcı olur, ama dosya listesiyle başlamak şart değil. Mevcut bir projeyi değiştiriyor ve aradığınız sayfanın nerede olduğunu bilmiyorsanız, Claude Code'dan önce hiçbir şeyi değiştirmeden sayfayı bulmasını ve neden o dosyayı seçtiğini açıklamasını isteyin. Ardından yolu görev tanımına ekleyin. Bilinmeyen kabul edilebilir, uydurulan bilgi değil.

Non-goals, bilerek kapsam dışında bıraktıklarınızdır. "Fiş geçmişi yok" sınırı, "gereksiz bir şey yapma" ifadesinden daha iyi açıklar. Kısa bir gerekçe size de yarar: bir hafta sonra verileri saklamayı düşünüp bundan vazgeçtiğiniz anlaşılır.

Uygulama kısıtları başka bir soruyu yanıtlar: hangi yöntemler bizim için uygun? Kullanıcı hesapları gereksiz bir özellik, sunucu ise çözümü kurmanın burada dışarıda bıraktığımız bir yoludur. Kısa bir belgede bu koşulları kısıt olduklarını açıkça belirterek aynı bölümde tutabilirsiniz.

Sınırlar, sonucu elde etmeye izin vermeli. İleride farklı cihazlarda geçmişi olan ortak kullanıcı hesapları gerekirse "tek bir yerel HTML dosyası" koşulunu yeniden değerlendirmek gerekir. Yeni bir özellik isterken onu imkânsız kılan bir yasağı aynı anda koruyamazsınız.

Unutulan kuruş

Şimdilik her şey yeterince net görünüyor. Kod yazılmadan önce görev tanımını sınayalım: üç kişilik bir grup, hesap 1000. Herkese hangi tutarı göstereceğiz?

333,33 + 333,33 + 333,33 = 999,99

Bir kuruş eksik. İlk kişiye ya da son kişiye ekleyebilir veya seçimi kullanıcıya bırakabilirsiniz. "Eşit bölüşelim" ifadesi bunu çözmüyor. Bu artık JavaScript bilginizle değil, sizin kararınızla ilgili.

Sayfamız için şu kuralı seçelim: paylar arasında en fazla bir kuruş fark olur; kalan tutar listedeki ilk kişilere birer kuruş olarak dağıtılır. Böylece 1000 üç kişiye bölündüğünde 333,34; 333,33; 333,33 elde ederiz. 1000,01 içinse dağıtılacak iki kuruş kalır: 333,34; 333,34; 333,33. Tüm para dağıtılır, payların toplamı hesap tutarına eşit olur.

Şimdi seçtiğimiz kararı belgeye aktarmasını ajandan isteyelim:

Yuvarlama kuralını TASK_SPEC.md dosyasındaki istenen davranışa yaz.
Değişen satırları göster. Koda henüz dokunma.

Dosyada şöyle bir kayıt oluştuğunu kontrol ediyoruz:

Payların toplamı genel toplama tam olarak eşittir.
Paylar arasındaki fark en fazla 0,01 olur.
Kalan kuruşlar listedeki ilk kişilere birer birer verilir;
sayfada bu kural açıklanır.

Özellikle "listedeki ilk kişilere birer birer" sözlerini dikkatlice okuyun. Ajan "kalanın tamamı ilk kişiye" yazdıysa kararı değiştirmiştir: dağıtılacak iki kuruş varsa ilk kişi diğerlerinden 0,02 daha fazla öder. Bu satırı düzeltmesini isteyin ve dosyayı yeniden kontrol edin. Önemli olan anlamdır; ifadelerin kelimesi kelimesine aynı olması gerekmez.

Görev tanımını somut sayılarla sınamanın yararı bu. Ajan kendi seçeneğini belirleyip kodunu yazmadan önce eksik kararı bulduk. Şimdilik yalnızca birkaç satırı değiştirdik.

Soruları Claude sorsun

Tüm boşlukları kendiniz fark edemeyebilirsiniz. Taslağı ajana verip özellikle görev tanımını gözden geçirmesini isteyin:

@TASK_SPEC.md dosyasını oku. Eksik koşulları bulmama yardım et.
Her seferinde bir soru sor ve her soru için bir yanıt öner.
Ben yanıt vermeden önerini kararlaştırılmış sayma.
Üzerinde anlaştığımız her karardan sonra TASK_SPEC.md dosyasını güncelle
ve kontrol edebilmem için değişen bölümü göster.
Henüz kod yazma.

Aşağıda böyle bir konuşma örneği var. Sizin oturumunuzdaki sorular farklı olabilir; burada önemli olan yanıtların belgeyi nasıl değiştirdiğini izlemek.

Claude: "Bahşiş hesap tutarına dahil mi, yoksa ayrıca mı ekleniyor? Varsayılanı 0 olan ayrı bir yüzde alanı öneriyorum."
Siz: "Ayrı. Yüzdeyi hesap tutarı üzerinden hesaplayıp üstüne ekleyelim ve hepsini birlikte bölüşelim. Sayfada bahşiş tutarıyla genel toplamı göster."

Claude: "Bahşiş tutarında kuruştan küçük bir kesir çıkarsa nasıl yuvarlayalım? En yakın kuruşa, tam yarım kuruşu da yukarı yuvarlamayı öneriyorum."
Siz: "Olur. Önce bahşiş tutarını yuvarlayalım, sonra hesaba ekleyelim. Ardından toplamı kuralımıza göre bölüşelim."

Claude: "Hangi değerleri kabul edelim? Nokta ya da virgülle yazılmış pozitif tutar, en az bir olan tam kişi sayısı ve negatif olmayan tam yüzde öneriyorum. Hata varsa alanın yanında bir ipucu gösterelim."
Siz: "Uygun. Tutarın ayırıcıdan sonra en fazla iki basamağı olsun, binlik gruplar arasında boşluk olmasın. Alan boşsa ya da değer geçersizse, daha önce hesap yapılmış olsa bile sonucu gizleyelim."

Yalnızca bahşiş konusunu netleştirmedik. Artık geçerli girdiler, yuvarlama sırası ve hata durumundaki davranış da belli. Yanıtları yazdıktan sonra dosyanın güncellenen bölümünü kontrol ediyoruz:

Bahşiş: başlangıç değeri 0 olan, 0 veya daha yüksek tam yüzde için ayrı alan.
Bahşiş tutarı hesap üzerinden hesaplanıp en yakın kuruşa yuvarlanır;
tam yarım kuruş yukarı yuvarlanır.
Yuvarlanmış bahşiş hesaba eklenir, sonra toplam bölüşülür.
Bahşiş tutarı, genel toplam ve herkesin payı gösterilir.
Değer boş ya da geçersizse sonuç gizlenir,
ilgili alanın yanında bir ipucu gösterilir.

Sırayı kontrol ediyoruz: önce bahşiş yuvarlanıyor, sonra hesaba ekleniyor, ardından toplam bölünüyor. Aynı sözcükler başka sırada olsaydı farklı bir koşul ortaya çıkardı. Ajandan scope'u da güncellemesini isteyin: ilk sürüme bahşiş alanı ve genel toplam hesabı eklendi. İki bölümü de gerçekten değiştirdiğini, bunu yalnızca sohbette onaylamadığını kontrol edin.

Henüz karar vermediyseniz

Ajandan bunu olduğu gibi yazmasını isteyin: "Bahşişin nasıl ele alınacağı henüz kararlaştırılmadı." Seçenekleri konuşabilir ya da bu özelliği ilk sürümün açıkça dışında bırakabilirsiniz. Ajanın önerisi seçim yapmanıza yardımcı olur, ama tek başına sizin gereksiniminiz haline gelmez.

Sonuç ve kontrol yöntemi

"Payların toplamı genel toplama eşittir" sonuçla ilgili bir koşuldur. "1000, üç kişi ve %0 bahşiş girin; düğmeye basın; 333,34, 333,33 ve 333,33 görün" ise bir kontroldür. Yapılacak eylemi ve beklenen gözlemi tanımlar.

Ajandan uygulamaya geçmeden önce dosyaya bu tür birkaç kontrol eklemesini isteyelim. Beklenen sayıları kendimiz doğrulayalım. Yoksa elde edilen sonucu kolayca kabul edip beklentileri fark etmeden hazır sayfaya göre değiştirebiliriz.

Ne girip ne yapıyoruz?Ne görmeliyiz?
1000; 3 kişi; %0. "Hesapla" düğmesine basıyoruztoplam 1000,00; paylar 333,34 / 333,33 / 333,33
Hesabı 1000,01 olarak değiştirip yeniden hesaplıyoruztoplam 1000,01; paylar 333,34 / 333,34 / 333,33
1000; 3 kişi; %10bahşiş 100,00; toplam 1100,00; paylar 366,67 / 366,67 / 366,66
10,05; 3 kişi; %10bahşiş 1,01; toplam 11,06; paylar 3,69 / 3,69 / 3,68
1000; 1 kişi; %0tek pay 1000,00
Başarılı hesaplamadan sonra tutarı silip yeniden hesaplıyoruz; ardından tutarı geri girip kişi sayısını 0 yapıyoruzher iki durumda da pay gösterilmez; geçersiz alanın yanında ipucu çıkar

10,05 satırı işlem sırasını kontrol eder: %10, 1,005 verir ve yuvarlayınca 1,01 olur. Başka bir adımda yuvarlama yapılırsa toplam farklı çıkabilir. Biçimi sınamak için bunu noktayla tekrarlayın: 10.05 aynı sonucu vermeli. Ayrıca negatif tutar, kesirli kişi sayısı, negatif ya da kesirli yüzde ve boş bahşiş alanını deneyin: hesaplama yapılmamalı.

Her önemli koşulun gözlemlenebilir bir karşılığı olmalı. "Sayfa açıldı" demek tutarların doğru olduğunu kanıtlamaz; tıpkı doğru bağlantı adresinin istenen sayfanın yüklendiğini kanıtlamaması gibi. Görevin asıl amacı olan davranışı kontrol edin.

TASK_SPEC'i bir araya getirelim

Ajan, konuşma ilerledikçe kararları dosyada topladı. Şimdi tamamını yeniden okuyalım: yanıtlar işlenmiş mi, kontroller gereksinimlerle uyuşuyor mu, eski koşullar kalmış mı? Örneğimizin son belgesi şöyle görünüyor. Altı dayanağı var: bağlam, istenen davranış, scope, non-goals, kontrol planı ve güvenli başlangıç. Başlıklar aradığınız bölümü bulmayı kolaylaştırıyor; içerikse görevi inceleyerek ortaya çıktı.

# TASK_SPEC.md

## BAĞLAM
Bir arkadaş grubu restoran hesabını bölüşmek istiyor.
Henüz yeni bir proje yok; çalışma klasöründe TASK_SPEC.md dışında dosya bulunmuyor.

## İSTENEN DAVRANIŞ
Çalışmanın çıktısı çift tıklamayla açılan bir index.html
ve kısa bir kontrol açıklamasıdır.
Sayfada üç alan ve "Hesapla" düğmesi bulunur:
- hesap tutarı 0'dan büyük, en fazla iki ondalık basamak;
  ayırıcı nokta veya virgül, binlik ayırıcı yok;
- kişi sayısı 1 veya daha yüksek bir tam sayı;
- bahşiş yüzdesi 0 veya daha yüksek bir tam sayı, başlangıç değeri 0.
Bahşiş hesap tutarı üzerinden hesaplanıp en yakın kuruşa yuvarlanır;
tam yarım kuruş yukarı yuvarlanır.
Yuvarlanmış bahşiş hesaba eklenir, sonra genel toplam bölüşülür.
Bahşiş, genel toplam ve numaralandırılmış kişi payları gösterilir.
Payların toplamı genel toplama eşittir, paylar arasındaki fark en fazla 0,01 olur.
Kalan tutar listedeki ilk kişilere birer kuruş olarak dağıtılır;
sayfada bu kural açıklanır.
Değer boş ya da geçersizse sonuç gizlenir,
geçersiz alanın yanında ipucu gösterilir.

## SCOPE
Tek sayfa: üç alan, hesaplama, ipuçları ve tutarların gösterimi.
Genel toplam, açıklanan kalan dağıtım kuralıyla eşit bölünür.

## NON-GOALS
Kullanıcı hesapları ve fiş geçmişi gerekmiyor: veri saklamıyoruz.
Yemeklere göre bölüşme yok: bu hesaplayıcının başka bir sürümü.
Kısıt: stiller ve betik index.html içinde,
dosyayı yerel olarak açabilmek için sunucu ve harici kütüphane yok.

## KONTROL PLANI
index.html dosyasını çift tıklayarak açın. "Hesapla" düğmesine basın:
- 1000 / 3 kişi / %0 → 333,34; 333,33; 333,33;
- 1000,01 / 3 / %0 → 333,34; 333,34; 333,33;
- 1000 / 3 / %10 → bahşiş 100,00, toplam 1100,00,
  paylar 366,67; 366,67; 366,66;
- 10,05 / 3 / %10 → bahşiş 1,01, toplam 11,06,
  paylar 3,69; 3,69; 3,68; 10.05 girildiğinde sonuç aynı;
- 1000 / 1 / %0 → tek pay 1000,00.
Her durumda payları toplayıp genel toplamla karşılaştırın.
Kişi sayısında sıfır ve kesirli sayı, negatif tutar,
negatif ve kesirli yüzde, tutarda ikiden fazla ondalık basamak
ve sırayla her alanı boş bırakma durumlarını kontrol edin:
alanın yanında ipucu, hesaplamadan sonra da sonuç gizli.
Payların numaralandırmasını ve kuruşların dağıtım açıklamasını kontrol edin.

## GÜVENLİ BAŞLANGIÇ
Görev tanımını okuyup çalışma klasörünün içeriğine bakın.
Orada proje dosyaları varsa durun ve görevi netleştirin;
mevcut dosyaların üzerine yazmayın veya onları silmeyin.
Önce kod içermeyen sorular ve plan, sonra onay bekleyin.
Uygulama için scope dışı değişiklik gerekiyorsa,
bu değişikliklerden önce görev tanımını netleştirin.

Belge, gerçekten gereken kararlarla büyüdü. İçinde JavaScript yazmak için adım adım bir tarif yok, ama bahşişin nasıl ele alınacağı ve kuruşların nasıl kontrol edileceği belli. Sizin görevinizde daha az ayrıntı yeterli olabilir.

Kendi görev tanımınızı hazırlarken şu kısa kontrol listesini gözden geçirmek işinize yarar:

DayanakKendinize ne sormalısınız?
BAĞLAMŞu anda ne oluyor ve bu görev neden gerekli?
İSTENEN DAVRANIŞNe çalışır hale gelecek ve sonunda ne elde edeceğiz?
SCOPEHangi senaryoyu ve projenin hangi bölümünü değiştiriyoruz?
NON-GOALSNeleri kapsam dışında bıraktık, hangi kısıtları korumalıyız?
KONTROL PLANINe yapacağız ve ne görmeliyiz?
GÜVENLİ BAŞLANGIÇDeğişikliklerden önce neyi öğrenip kararlaştıracağız?

Koşullar değişirse

Şimdi sizin için küçük bir kontrol. Kullanıcı görev tanımına bakıp şöyle diyor: "Yüzde pek kullanışlı değil. Bahşişi örneğin 100 gibi bir tutar olarak girmek istiyorum." TASK_SPEC'in hangi bölümlerini güncellemek gerekir? Açıklamayı okumadan önce bulmaya çalışın.

İstenen davranışta yüzde alanı, nokta ya da virgülle girilen ve en fazla iki ondalık basamak içeren negatif olmayan bahşiş tutarıyla değiştirilir. Başlangıç değeri yine 0'dır. Yüzde formülünü ve hesaplanan bahşişi yuvarlama adımını kaldırırız: girilen tutarı doğrudan hesaba ekleriz. Scope'ta hesaplama, kontrol planında ise girdi verileri ve geçersiz giriş durumları değişir. Genel toplamı bölüşme ve non-goals aynı kalır.

"Hesap 1000, bahşiş 100, üç kişi" kontrolü yine tanıdık 366,67; 366,67; 366,66 sonucunu verir. Ama yalnızca bu sayılara bakarak yeni sürümü %10 bahşişli eski sürümden ayıramayız. Başka bir hesap ekleyin: sabit 100 bahşişle 500, iki kişi. Her biri 300 ödemeli; önceki %10 kuralı kişi başına 275 verirdi. Kuralın değiştiğini yakalayan kontrol budur.

Ajandan istenen davranışı, scope'u ve kontrolleri güncellemesini, sonra da değişen tüm bölümleri göstermesini isteyin. Dosyayı açıp eski yüzde formülünün kaldırıldığını ve yeni kontrollerin tutar girişiyle uyuştuğunu doğrulayın. Eski formülle "artık tutar olarak" notunu birlikte bırakmayın: görev tanımı tek bir yanıt vermeli. Yukarıdaki ana örnekte yüzde seçeneğini koruduk; burada ona yönelik ayrı bir değişikliği ele aldık.

Claude Code ile birlikte nasıl işler?

Ayrı değişiklikleri kontrol ettikten sonra uygulamaya başlamadan önce TASK_SPEC'in tamamını yeniden okuyun. Hedefin, sınırların ve kontrollerin aynı görevi tarif ettiğinden emin olun. Ardından dosyayı açıkça ajana verin:

@TASK_SPEC.md dosyasını oku. Önce çelişki olup olmadığını
ve henüz netleştirilmesi gereken koşulları kontrol et.
Kısa bir plan ve oluşturacağın ya da değiştireceğin dosyaların listesini göster.
Plan onaylanana kadar kodu değiştirme.

Artık uygulamadan önce kontrol edebileceğiniz bir şey var. Planda fişleri saklamak için bir sunucu varsa yeniden düzenlemesini isteyin: geçmiş kapsam dışında ve sayfa yerel olarak açılmalı. Plan uygunsa uygulamaya onay verin. Ardından ortaya çıkan dosyayı açıp başarılı hesaplamadan sonraki geçersiz giriş dahil kaydettiğiniz senaryoları deneyin.

Non-goals metin olarak kalır, değişiklikleri teknik olarak engellemez. Bu nedenle hem planı incelemek hem de sonucu kontrol etmek önemlidir. Ajanın "tamamlandı" mesajı ne yaptığını anlamanıza yardımcı olur, ama sizin kontrol sayılarınızın yerini tutmaz.

Çalışma bittikten sonra TASK_SPEC'i projede tutuyorsanız görevi tamamlandı olarak işaretleyin. İş sürerken dosyadaki kararları güncel tutun. İfadeleri ve kaydı ajana bırakın, kararları belgenin kendisinden kontrol edin: görüşmeden sonra değişen bölümü, uygulamadan önce dosyanın tamamını.