Claude Code, bir Go projesinde terminalde claude komutuyla başlar ve proje kökündeki CLAUDE.md dosyasını okur. Go modülleri, tablo testleri, go test, gofmt ve go vet ile doğrudan çalıştığı için refactor, test yazımı ve hata ayıklama işlerini hızlandırır. En iyi sonucu, komutları ve Go kurallarını CLAUDE.md içinde açıkça tanımladığınızda alırsınız. Daha genel kurulum için Claude Code sayfasına bakabilirsiniz.
Neden Claude Code Go işlerine uygun?
Go’nun derleyici hızı ve açık hata yönetimi, ajanın hızlı geri bildirim almasını sağlar. Ajan go build ./... ve go test ./... çalıştırıp hatayı okuyabilir; bu, kapalı kutu tahmin yerine somut bir döngü kurar. Paket sınırları ve internal klasörleri net olduğunda Claude Code hangi dosyaya dokunacağını daha iyi seçer. Arayüzler genellikle küçük olduğu için mock ve tablo testi üretimi de tutarlıdır. Yine de ajanın en büyük avantajı, sizin verdiğiniz Go kurallarını her adımda uygulamasıdır; örneğin fmt.Errorf ile hata sarmalama, context.Context yayma ve t.Run kullanımı. Bu uyum, özellikle çok paketli projelerde kod tabanını bozmadan küçük iyileştirmeler yapmayı kolaylaştırır.
Go modülleri sayesinde bağımlılıklar zaten go.mod ve go.sum içinde tanımlıdır. Claude Code bu dosyaları okur, eksik modülleri go mod tidy ile çözebilir ve sürüm uyuşmazlıklarını test çıktısından yakalayabilir. Ayrıca go build önbelleği sayesinde ardışık çalıştırmalar hızlı olur; ajan aynı komutu tekrar çalıştırdığında değişmeyen paketleri yeniden derlemez. Bu hız, uzun bir refactor sırasında her küçük adımda doğrulama yapmayı pratik kılar. Yine de ajanın ürettiği kodu yalnızca derleyici geçti diye kabul etmeyin; go vet ve go test -race ek kalite kapılarıdır.
Projeyi Claude Code için hazırlama
Claude Code, proje klasörüne claude yazdığınızda CLAUDE.md dosyasını otomatik okur. Bu dosyaya Go’ya özgü komutlar ve kurallar koymak, ajanın her seferinde aynı doğrulamayı yapmasını sağlar. Kısa ve net tutun; uzun stil rehberi yerine ajanın karar anında uygulayacağı maddeler yazın. Örnek bir CLAUDE.md:
# CLAUDE.md
## Komutlar
- Build: `go build ./...`
- Test: `go test ./...`
- Tek paket: `go test ./internal/storage/...`
- Lint: `go vet ./...`
- Format: `gofmt -w .`
## Klasör kuralları
- `cmd/` yalnızca main paketleri.
- `internal/` dışa kapalı uygulama kodu.
- `pkg/` yeniden kullanılabilir kütüphaneler.
## Go kuralları
- Hataları sarmala: `fmt.Errorf("kullanıcı deposu: %w", err)`.
- Arayüzleri tüketen tarafta tanımla.
- Paylaşılan durumda mutex veya channel kullan; goroutine ömrünü `context.Context` ile yönet.
- Testleri tablo odaklı yaz; her senaryo için `t.Run` kullan.
- Test yardımcılarında `t.Helper()` çağır.
Bu dosya, ajanın go test ve go vet komutlarını kendiliğinden çalıştırmasını ve Go kurallarına uymasını sağlar. CLAUDE.md dosyasını ilk komuttan önce proje köküne koyun; ajan her yeni görevde bu kuralları referans alır. Başlangıç rehberi için Claude Code nasıl kullanılır? yazısına da göz atabilirsiniz.
CLAUDE.md içine go version veya go env gibi bilgileri yazmanıza gerek yoktur; ajan ortamı zaten görür. Ancak proje CGO_ENABLED=0 gibi özel bir ortam değişkeni gerektiriyorsa bunu belirtmek faydalıdır. Aynı şekilde -tags=integration gibi build tag’leri veya -race zorunluluğu varsa komut satırlarına ekleyin. Bu, ajanın testleri eksik çalıştırmasını engeller. Ayrıca go test -count=1 kullanarak test önbelleğini devre dışı bırakmasını isteyebilirsiniz; böylece ajan aynı testi arka arkaya çalıştırdığında gerçek sonucu alır.
Çalışma döngüsü ve örnek istekler
Claude Code ile Go projesinde verimli çalışmak için önce plan isteyin, sonra küçük bir değişiklik yaptırın, testleri çalıştırın ve diff’i inceleyin. Ajan tek seferde büyük bir paketi yeniden yazarsa hata ayıklamak zorlaşır; o yüzden her isteği tek sorumlulukla sınırlandırın. Şu döngüyü uygulayın:
- Ajan’dan mevcut ilgili kodu ve testleri incelemesini isteyin; neyin değişeceğini sözlü olarak planlatın.
- Tek dosya veya tek fonksiyon seviyesinde küçük bir değişiklik yaptırın.
- Ajanın
go test ./...,go vet ./...vegofmt -w .komutlarını çalıştırmasını sağlayın; hata varsa düzeltmesini isteyin. git diffile değişiklikleri inceleyin; yalnızca beklenen satırların değiştiğinden emin olun.- Bir sonraki küçük adıma geçin.
Şu istekler tipik Go işlerinde iyi başlangıçtır:
- “Bu HTTP handler paketini incele; context iptalini doğru şekilde yayan ve hataları sarmalayan bir yapı öner.”
- “internal/repo/dosya.go içindeki veri erişimini interface arkasına al ve PostgreSQL mock’u için tablo testi yaz.”
- “main.go’daki başlatma sırasını yalınlaştır;
go vet ./...vegofmt -w .komutlarını temiz geçmesini sağla.” - “Goroutine leak olabilecek yerleri tara; kapama işlevlerini
context.Contextile bağla.” - “Bu diff’i incele; nil kontrolü eksiklerini, hata sarmalama hatalarını ve test kapsamındaki boşlukları raporla.”
Her istekten sonra ajanın çalıştırdığı komutlara ve diff’e bakın. Uygulamalı kontrol listesi için Claude Code en iyi pratikler yazısı faydalı olur.
İyi olduğu işler ve dikkat edilecek yerler
Claude Code, Go projelerinde özellikle şu işlerde iyi çalışır: küçük arayüzler tanımlama, tablo testlerini genişletme, context yayma, hata sarmalama düzeltmeleri, go vet uyarılarını temizleme ve tekrarlayan CRUD kodlarını üretme. Buna karşılık ajanın her önerdiği soyutlamayı kabul etmeyin. Gereksiz interface katmanları paketler arası bağımlılığı artırabilir ve testleri karmaşıklaştırabilir. Ayrıca goroutine ve channel değişikliklerinde veri yarışı oluşabilir; mutlaka go test -race ./... çalıştırın. Ajan bazen yalnızca verdiğiniz komutları çalıştırır ve go.sum değişikliklerini ya da internal paket sınırlarını gözden kaçırabilir. Bu nedenle diff’i okumadan merge etmeyin.
Özellikle şu noktalarda ajanı yakından izleyin: sync.WaitGroup veya defer sıralaması değiştiğinde kaynak kapatma hataları oluşabilir. Ajan bazen error döndürmek yerine log.Fatal çağırmayı önerebilir; kütüphane kodunda bu büyük bir anti-patterndir. Arayüzü tüketen tarafta tanımlamak yerine üreten tarafta tanımlarsa paket bağımlılıkları bozulabilir. go.mod içindeki replace yönergelerini veya exclude kurallarını kaldırmak isteyebilir; bu, üretim dışı bağımlılıkları geri getirebilir. Tüm bu durumlarda ajanın önerisini kabul etmeden önce go list -m all çıktısını inceleyin.
Test ve doğrulama
Go projesinde ajanın ürettiği kodu doğrulamanın en kısa yolu, onu standart araçları çalıştırmaya zorlamaktır. İstek içinde net komutlar verin; yalnızca “testleri çalıştır” demek yerine go test -race ./... veya go vet ./... yazın. Aşağıdaki tablo, hangi doğrulamanın hangi istekle daha güvenilir olduğunu gösterir:
| Doğrulama | Ajan için net istek | Ne yakalar |
|---|---|---|
go test ./... | “Tüm paketleri test et, hataları düzelt” | Regresyon ve bozuk testler |
go test -race ./... | “Race testlerini çalıştır ve veri yarışlarını raporla” | Goroutine ve channel hataları |
go test -count=1 ./... | “Test önbelleğini atla, tüm testleri taze çalıştır” | Güncel olmayan test sonuçları |
go vet ./... | “Vet uyarılarını temizle” | Şüpheli yapılar, yanlış format argümanları |
gofmt -w . | “Biçimlendirmeyi uygula” | Kod formatı tutarlılığı |
Tablo testleri için ajana mevcut test dosyasını örnek gösterin; böylece aynı stili korur. Her doğrulama sonrası go test çıktısını birlikte inceleyin; ajan test hatasını yanlış yorumlayabilir ve gereksiz yere kodu değiştirebilir. Ayrıca ajanın test komutlarını çalıştırdığından emin olun; bazen yalnızca statik analiz yapıp testleri atlayabilir.
Ajanın test yazarken dikkat etmesi gereken Go detayları vardır: t.Run içinde t.Parallel() çağrısını dikkatli kullanın, çünkü paylaşılan durum testler arasında kaçaklara yol açabilir; mock’ları t.Cleanup ile kaydedin; httptest.NewServer gibi test sunucularını kapatmayı unutmayın; ve errors.Is/errors.As kullanarak sarmalanmış hataları kontrol edin. Bu konularda ajanı yönlendirmek, testlerin kalitesini artırır. Eğer proje standard library dışında bir mock kütüphanesi kullanmıyorsa, el yazımı mock’ların arayüzü tam karşıladığından emin olun; ajan bazen eksik metot bırakabilir.
Birden fazla ajanı Go projesinde çalıştırma
AgentVera, Claude Code gibi ajanların gerçek komut satırı araçlarını tek pencerede yan yana çalıştıran bir masaüstü uygulamasıdır. Go projelerinde asıl fark, her ajanın kendi git worktree’sinde çalışabilmesidir; böylece iki ajan aynı dosyayı ezmez ve paralel refactor yapılabilir. Ajanın turu bittiğinde ikinci modelin yaptığı otomatik kod incelemesi, hata sarmalama ve goroutine güvenliği gibi Go detaylarını yakalamaya yardımcı olur. Checkpoint’ler sayesinde riskli bir refactor adımı tek tıkla geri alınabilir; token bütçeleri de uzun test döngülerinde ajanın kontrolden çıkmasını engeller. Bu dört özellik, çok paketli Go projelerinde paralel çalışmayı güvenli ve denetlenebilir hale getirir. Kullanım detayları için AgentVera nasıl kullanılır sayfasına bakabilirsiniz.
Sonuç
Claude Code, Go projelerinde claude komutuyla, CLAUDE.md kuralları ve standart Go araçlarıyla birlikte güçlü bir yardımcıdır. Ona net komutlar, küçük adımlar ve doğrulama görevleri verin; go test, go vet ve gofmt çıktısını birlikte değerlendirin. Özellikle interface, goroutine ve hata yönetimi değişikliklerinde diff’i dikkatle inceleyin. Birden fazla ajanla paralel çalışacaksanız işleri ayrı worktree’lere bölmek en pratik yoldur.