Açık kaynak bir üründe senin adınla bir değişiklik.
Başkasının ürününde kurallar senden önce yazılmış ve değişikliğini kabul edip etmemeye ürünün sahibi karar verir. Claude Code'a eklenen açık kaynak bir plugin olan TeamHandbook'ta, ilk katkı için açılmış on görevden birini yapay zeka ajanınla yapıyorsun. Her adımda ne göreceğin aşağıda yazılı.
Kimler için
- 2 saatte canlı uygulamayı bitirdiysen
Aynı akışı bu sefer başkasının kodunda yürütüyorsun. Başarısız kalan bir testi gevşetmeyi ya da silmeyi rehber yasaklıyor, ajan sorunu ya çözer ya durup sana getirir. Henüz yapmadıysan önce 2 saatte canlı uygulama.
- Kod yazıyorsan ve ajanla çalışınca kontrolü kaybediyorsan
Ajan hangi dosyaya dokunabileceğini repo'daki rehberden öğreniyor. Nerede durup sana sorduğunu izle.
- Analist ya da QA mühendisiysen
Basamak 1 görevleri sana göre, çünkü hiçbirinde kod değişmez. Birinde bir dokümanı koda bakarak düzeltiyorsun, öbür ikisinde bir cümlenin doğru komutu tetikleyip tetiklemediğini ölçen bir eval case'i yazıyorsun.
Üç basamak
- 01
Basamak 1'de kod değişmiyor
Bir dokümandaki yanlışı düzeltiyorsun ya da yeni bir eval case'i ekliyorsun. Yine de
npm testkoşuyor, çünkü testlerden biri README'deki komut tablosunu plugin'in gerçek komutlarıyla karşılaştırıyor.Görevler: #2, #3, #5 · Issue'daki tahmin: 30-45 dakika
- 02
Basamak 2'de güvenlik koduna dokunmayan küçük bir değişiklik
Bir modüldeki hatayı düzeltiyorsun ya da bir komutun talimat metnini değiştiriyorsun. Rehberin trust boundary dediği modüller, yani secret tarayan ya da dışarı bir şey gönderenler, bu basamakta yasak. Kod değişecekse test değişiklikten önce yazılıyor ve kırmızı yanmalı.
Rehberin dosya kuralına göre bu üç görevin dosyaları Basamak 3'te. Diff'e bakıp Basamak 2'ye koydum, çünkü değişen yer trust boundary'ye değmiyor. Bu not issue'larda da yazılı.
Görevler: #4, #7, #9 · Issue'daki tahmin: 25-45 dakika
- 03
Basamak 3'te yeni bir özellik ya da güvenlik kodunda değişiklik
Yeni bir komut ya da flag ekliyorsun, ya da Basamak 2'de yasak olan bir dosyayı değiştiriyorsun. İşe başlamadan ne yapılacağında anlaşmak gerekiyor ama bu dört issue'da o kısım hazır. Değişiklik SECURITY.md'deki bir sözü bozuyorsa SECURITY.md aynı PR'da güncelleniyor.
Görevler: #6, #8, #10, #11 · Issue'daki tahmin: 40-110 dakika, en uzunu #10
On görev
good first agent task etiketiyle açık. Her issue'da bağlam, acceptance criteria, dokunulacak dosyalar ve doğrulama komutu yazılı. Issue'lar İngilizce. Gerekirse ajandan Türkçe özet iste.- #2Basamak 1
Tek bir dosyanın geçmişini soran sıradan bir Türkçe cümleyle yeni bir eval case'i yazıyorsun. Cümle
/handbook:mine'ı tetiklememeli. Tetiklerse de o çıktı PR'a olduğu gibi giriyor. - #3Basamak 1
Oturumda yeni biten bir işin yapılışını sonraki sefer için saklamak
/handbook:learn'ün işi, ama bu durumu ölçen bir case yok. O case'i öncesindeki konuşmayla birlikte ekliyorsun. - #5Basamak 1
SECURITY.md,
/handbook:share'in neyi okuduğunu anlatırken iki yerde kodun gerisinde kalmış. Kod, MCP server'ınargsalanını da tarıyor ve slash command klasörlerini de okuyor. Bu ikisini SECURITY.md'ye ekliyorsun. - #4Basamak 2
commands/review.md'nin giriş paragrafı ve tür listesi, git geçmişinden ve demodan gelen taslakları hiç anmıyor. Yalnız bu iki yeri düzeltiyorsun. - #7Basamak 2
Symlink ile eklenmiş slash command'lar paylaşım ekranında görünmüyor. Önce bunu yakalayan testi yazıp sonra listeleyen fonksiyonu symlink'i takip edecek hale getiriyorsun.
- #9Basamak 2
Yolunda
changeloggeçen her dosya doküman sayıldığı için Liquibase migration'ları ölçümden düşüyor. İki regex'i yalnız gerçek changelog dosyasını yakalayacak kadar daraltıyorsun. - #6Basamak 3
İki farklı secret taşıyan bir MCP server reddedilirken ekran birinin türünü öbürünün yeriyle birlikte söylüyor. Tür ile yerin aynı secret'tan gelmesini sağlıyorsun.
- #8Basamak 3
Review ekranı secret bulduğu dosyanın adını veriyor ama satırını vermiyor. Paylaşım ekranındaki gibi
dosya:satıryazdırıyorsun. - #10Basamak 3
Skill taslağının doğrulama bölümü repo'nun kendi test komutunu bilmiyor. Repo'daki build dosyalarına bakıp test komutunu çıkaran ve onu modele giden bilgiye ekleyen kodu yazıyorsun. SECURITY.md'ye de bunu söyleyen bir cümle giriyor.
- #11Basamak 3
Kaynak projesi silinmiş bir ders adayı, review hangi klasörden koşulduysa o projeye yazılıyor. Bu durumda eklemeyi reddeden kontrolü yazıyorsun.
Başlamadan önce
- GitHub hesabı
TeamHandbook'u kendi hesabına fork'layıp değişikliği oraya gönderiyorsun. PR oradan açılıyor.
- git'te adın ve e-postan tanımlı
git config user.namevegit config user.emailboş dönmemeli, çünkü bazı testler gerçekten commit atıyor. İkisi boşsa altı test dosyası birden kırmızı yanıyor. - Node 22 ya da üstü ve npm
npm Node'la birlikte geliyor.
- GitHub CLI (gh)
Ajan branch'i fork'una gönderip PR'ı bununla açıyor ama ikisinden önce sana soruyor. Kurduktan sonra terminalde
gh auth loginyaz. - Claude Code
Kurulu ve giriş yapılmış olmalı. Ücretini senin ödediğin bir Claude aboneliği ya da Anthropic API key'i gerekiyor. Basamak 1'de eval case'ini bir kez koşmak bir dolardan az tutuyor ve ajan koşmadan önce onayını istiyor.
Fork'unu klonladığın klasörde bu dört komutu sırayla koş. Ortamın hazır olup olmadığını son satırlar söylüyor.
npm installSonunda
4 vulnerabilities (2 moderate, 2 critical)gibi bir audit özeti çıkıyor. Ona dokunma venpm audit fixkoşturma, çünkü sabitlenmiş versiyonları değiştiriyor.npm run buildBuild çıktısını
dist/'e yazıyor. Ardındangit status --porcelainboş dönmeli.npm run typecheckHata yoksa yalnız
> tsc --noEmitsatırı çıkıyor.npm testEn uzun süren komut bu. Özette
Test Files N passed (N)veTests N passed (N)çıkmalı.failedhiçbir yerde geçmiyorsa ortam hazır.
Issue'dan merge'e
Görevi sen seçiyorsun
Basamak 1'deki üç issue'dan biriyle başlamak en kolayı.
Ekranda issue sayfası. Başında basamağı ve tahmini süresi, altında acceptance criteria var.
Adım adım
- 01
Repo'yu fork'la ve kur
TeamHandbook'un GitHub sayfasında Fork'a bas. Fork'unu klonladıktan sonra klasörde yukarıdaki dört komutu sırayla koş.
npm testaltı dosyada birden kırmızı yanarsa başka bir şeye dokunmadangit configayarına bak.Ekranda
npm testözetindeTest Files N passed (N). - 02
Ajana görevi ver
Klasörde
claudeyaz ve ilk cümlen "AI_CONTRIBUTING.md'yi oku, sonra #5'i yap" olsun. Numarayı kendi görevinle değiştir. Repo'da arama yaparkenevals/tutma/klasörünü dışarıda bırakmasını söyle, çünkü eval suite'inin saklı yarısı orada ve okunduktan sonra geri alınamıyor.Ekranda ajanın sırayla açtığı dosyalar, ardından açtığı branch.
- 03
Önce hatayı gör
Kod değişiyorsa ajan önce testi yazıp koşuyor ve test kırmızı yanıyor. #7'de bu komut
npx vitest run src/lib/commands.test.ts -t "symbolic link". #4 ve #5'te kod değişmediği için issue'dakigrepbugün eski cümleyi buluyor ve değişiklikten sonra boş dönmeli.Ekranda kırmızı test satırı ya da bugünkü satırı gösteren
grepçıktısı. - 04
Ajan değişikliği yapıyor
src/değiştiyse ajannpm run buildkoşup yenidist/'i de commit'e koyuyor. Ardındannpm testvenpm run typecheckkoşuyor. Tek hataTimeout calling "onTaskUpdate"olursa makine meşgul demektir ve biraz bekleyip tekrar koşman yeterli.Ekranda
Tests N passed (N)ile biten vefailedgeçmeyen bir özet. - 05
PR'ı ajan açıyor
Branch'i fork'una göndermeden ve PR'ı açmadan önce sana soruyor. Doğrulama çıktısını kendi gözünle görmeden ona PR açtırma. Commit mesajı da PR açıklaması da İngilizce.
Ekranda PR açıklamasının sonunda "Agent-assisted contribution (optional)" başlıklı üç satır.
- 06
Review ve mergeben basarım
PR'ını ben okuyorum. Fork'tan gelen ilk PR'da CI'ın her koşusunu benim onaylamam gerekiyor, o yüzden kontroller bir süre boş görünürse bekle. Bir şey istersem PR'a yazıyorum ve ajan düzeltmeyi senin onayınla aynı branch'e gönderiyor.
Ekranda önce boş, sonra yeşil kontroller, en sonda PR'ın üstünde "Merged".
Paylaşacağın link
master branch'inde senin adınla duran commit'i ve neyi değiştirdiğini satır satır görüyor. Ajanla nasıl çalıştığın konuşulduğunda açıp gösterebileceğin, başkasının ürününde merge edilmiş bir iş.PR merge edilince linkini buraya yapıştır.
Bundan sonra
- TeamHandbook'u kendi ekibinde kur
Katkı verdiğin plugin'i kendi Claude Code'una kur ve sorduğunda user scope'u seç. Ekibinin skill repo'sunu
TeamHandbook/handbook:initile aç. - Ekibin için bir oturum
Ekibinin aynı akışı kendi kodunda denemesini istiyorsan Birlikte çalışalım sayfasına geç.
Birlikte çalışalım
Sözlük19 terim
- issue
- : GitHub'da bir repo'ya açılan iş kaydı. Buradaki her issue'da bağlam, acceptance criteria, dokunulacak dosyalar ve doğrulama komutu yazılı.
- fork
- : Başkasının repo'sunun kendi GitHub hesabındaki kopyası. Değişikliği oraya gönderip asıl repo'ya PR açıyorsun.
- master
- : TeamHandbook'un ana branch'i, learn sayfasındaki main'in buradaki adı. Kendi branch'ini buradan açıyorsun ve merge edilen PR buraya giriyor.
- branch
- :
master'a dokunmadan değişiklik yaptığın ayrı çalışma kolu. Ajan her görev içinmaster'dan yeni bir tane açıyor. - commit
- : Dosyaların o anki halinin kısa bir notla kaydı. TeamHandbook'ta bu not, neyin bozuk olduğunu ve nasıl düzeldiğini anlatan tek bir İngilizce cümle.
- PR
- : Pull request. Fork'undaki branch'ten TeamHandbook'a önerdiğin değişikliği gösteren GitHub sayfası.
- review
- : Bir değişikliği kabul etmeden önce okuyup kontrol etmek. Buradaki PR'ları ben review ediyorum.
- merge
- : PR'ı kabul etmek. Değişiklik
master'a girer. - CI
- : Her PR'da kontrolleri GitHub'ın sunucusunda koşan sistem. TeamHandbook'ta typecheck, test, build ve
dist/'in koda uyup uymadığına bakıyor. Fork'tan gelen ilk katkıda her koşuyu maintainer onaylıyor. - eval
- : Claude Code'a yazılan bir cümlenin doğru komutu tetikleyip tetiklemediğini ölçen case. Bazı case'lerde doğru sonuç hiçbir komutun tetiklenmemesi. Her case kendi klasöründe duruyor ve sonucu bir grader dosyası notluyor.
- maintainer
- : Repo'ya neyin gireceğine karar veren ve merge eden kişi. Rehberde ve issue'larda bu kelimeyle geçen kişi TeamHandbook'ta benim.
- plugin
- : Claude Code'a komut ve davranış ekleyen paket.
/handbook:ile başlayan komutlar TeamHandbook'tan geliyor. - skill
- : Claude Code'un belli bir işi nasıl yapacağını anlatan ve iş gelince okuduğu talimat dosyası.
- Node
- : TeamHandbook'un build'ini ve testlerini çalıştıran runtime. 22 ya da üstü bir versiyon gerekiyor.
- npm
- : Node'la gelen, paketleri indiren ve
npm testgibi proje komutlarını koşan araç. - gh
- : GitHub'ın komut satırı aracı. Ajan PR'ı onunla açıyor.
- typecheck
- : Kodu çalıştırmadan tiplerin birbirini tutup tutmadığına bakan kontrol,
npm run typecheck. - dist/
- : Plugin'in gerçekte çalıştırdığı kod.
src/'dennpm run buildile üretiliyor ve repo'ya commit'leniyor. - AI_CONTRIBUTING.md
- : TeamHandbook'ta ajanın ilk okuduğu rehber. Hangi basamakta hangi dosyaya dokunabileceğini ve işin ne zaman bitmiş sayılacağını oradan öğreniyor.