Uygulamayı aç
Moonborn — Developers

Persona'ları Git ile senkronize et

Çalışma alanını bir Git deposuna bağla, persona'ları YAML + Markdown olarak sürümle, pull / push / iki yönlü senkronizasyonla mühendislik akışına entegre et.

Persona'larını Git'te tutmak iki dünyayı birbirine bağlar: Moonborn arayüzünde ürettiğin karakterler aynı zamanda kod tabanının bir parçası olur. Her refine bir commit'tir, her varyant bir çekme isteği (pull request), her çalışma alanı bir daldır (branch). Tasarım ekibi arayüzde çalışır, mühendislik PR'da inceler (review), geçmiş Git'te kalır.

Bu rehber bir GitHub / GitLab / Bitbucket deposunu çalışma alanına bağlar, persona'ları YAML başlığı + Markdown gövde olarak yazar ve pull / push / bidirectional (iki yönlü) senkronizasyon stratejilerinden birini etkinleştirir.

Bu rehberi bitirdiğinde

  • Üç senkronizasyon modunun (pull, push, bidirectional) hangisinin senin ekibe uyduğuna karar verebileceksin.
  • Bir Git sağlayıcısını çalışma alanına yapılandırma maddeleriyle bağlayabileceksin.
  • Persona'nın diske inerken aldığı YAML + Markdown dosya düzenini okuyabileceksin.
  • İlk push'u tetikleyip Git geçmişinde commit'leri görebileceksin.
  • İki yönlü senkronizasyon için çakışma çözümleme stratejilerini seçebileceksin.
  • Persona değişikliklerinin denetim kaydına değil Git geçmişine indiğini anlayabileceksin.

Ön koşul: API anahtarı, çalışma alanı kimliği, Team veya üzeri plan. Persona modelinin temelini bilmiyorsan önce Persona katmanları kavramına bak.

1. Senkronizasyon modunu seç

Üç mod arasındaki temel fark kanonik kaynağın nerede olduğudur.

Git kanonik kaynaktır. Çalışma alanı depoyu
yansıtır (mirror). Düzenleme Git'te yapılır;
PR birleştirildiğinde (merge) çalışma alanı
güncellenir. Arayüz salt-okunurdur.

2. Sağlayıcı bağlantısını yapılandır

Dört yapılandırma maddesi bağlantıyı tam tanımlar:

await client.config.setItem({
  key: 'integrations.git.provider',
  value: 'github',
  scope: 'workspace',
  scopeId: 'ws_...',
});
 
await client.config.setItem({
  key: 'integrations.git.repo_url',
  value: 'https://github.com/your-org/persona-bible',
  scope: 'workspace',
  scopeId: 'ws_...',
});
 
await client.config.setItem({
  key: 'integrations.git.base_path',
  value: 'personas/',
  scope: 'workspace',
  scopeId: 'ws_...',
});
 
await client.config.setItem({
  key: 'integrations.git.sync_direction',
  value: 'push',
  scope: 'workspace',
  scopeId: 'ws_...',
});

Desteklenen integrations.git.provider değerleri:

SağlayıcıKimlik doğrulama yöntemiTeam+ bayrağı
githubGitHub Appintegrations.git.providers.github.enabled
gitlabProje erişim token'ıintegrations.git.providers.gitlab.enabled
bitbucketUygulama parolasıintegrations.git.providers.bitbucket.enabled

Her sağlayıcı bağımsız olarak plan kapısıyla kontrol edilir.

3. Dosya düzenini gör

Her persona, yapılandırdığın base_path altında tek bir .md dosya olur. YAML başlık (frontmatter) yapısal katmanları (Soul, Self, Mask, Surface), Markdown gövde anlatı temellendirmesini taşır.

---
id: per_01H...
name: Mert Aksoy
version: 4
created_at: 2026-05-17T10:00:00Z
soul:
  desire: dünyanın görmezden gelemeyeceği bir şey inşa etmek
  fear: sıradan görünmek
  wound: sevgiyi başarıyla ölçen bir ebeveyn
  growth_arc: onay arayan → kendine güven
self:
  traits: [tetikte, disiplinli, merhametli]
  values: [hız, dürüstlük, güven]
mask:
  voice: kısa, doğrudan, az duygu
  signature_phrases:
    - "Hızlıca toparlayalım"
    - "Şu an için yeter"
surface:
  age: 34
  location: İstanbul, TR
  occupation: startup founder
audit:
  score: 4.3
  passed: true
voice_fingerprint_id: vfp_01H...
---
 
Mert yirmili yaşlarını İstanbul tech sahnesinde geçirdi. İlk şirketi bir
Türk telekoma satıldı — hâlâ "fena değil" diye anlattığı sessiz bir çıkış.
İkinci girişimde her yatırımcı toplantısında kahve içtiğini saymaya başladı,
sayı altıyı aşınca beni terapiye yollayan o oldu.

Serileştirici (serializer) push'ta bu kesin şekli yayar; ayrıştırıcı (parser) pull'da geri okur. YAML formatı stabildir — sürüm değişiklikleri şema geçişi (schema migration) ile yönetilir.

4. İlk push'u tetikle

Önizleme aşamasında push doğrudan paket entegrasyonu üzerinden tetiklenir:

import { PushPersonasToGitUseCase } from '@moonborn/integration-git/application';
 
const useCase = container.resolve(PushPersonasToGitUseCase);
const result = await useCase.execute({ workspaceId: 'ws_...' });
 
console.log('pushed:', result.commits);

Üretim HTTP uç noktası geldiğinde (sonraki yayında) bu şuna döner:

curl -X POST https://api.moonborn.co/v1/integrations/git/push \
  -H "Authorization: Bearer $MOONBORN_API_KEY" \
  -d '{"workspaceId": "ws_..."}'

Beklenen: depo'da personas/ altında her çalışma alanı persona'sı için bir .md dosyası ve çalışma alanının eklendiği zamana göre tarihlenmiş commit'ler.

5. İki yönlü senkronizasyonda çakışma stratejisi

İki tarafta da düzenleme açık olduğunda aynı persona iki yerde de değiştirilebilir. Moonborn çakışmayı Git blob SHA uyuşmazlığı ile tespit eder — üç-yönlü birleştirme (three-way merge) yok, CRDT yok.

integrations.git.conflict_resolution üç değerden birini alır:

Pull sırasında çakışma → Git'teki değişiklik
çalışma alanını ezer. Arayüzdeki değişiklik
geri alınır.

6. Denetim, commit mesajları ve geçmiş

Persona değişiklikleri Moonborn denetim kaydına değil Git geçmişine iner. Bu bilinçlidir — Git zaten sürümleme, suçlama (blame), geri alma (revert), dallanma (branch) yapıyor; aynı veriyi iki yerde tutmak kazanç vermez.

Commit mesajı şablonu engine.pipeline.audit.commit_message_template ile özelleştirilebilir. Varsayılan:

feat(persona): {{name}} v{{version}}

Commit stratejisi iki seçenek:

integrations.git.commit_strategyDavranış
per_changeHer persona değişikliği ayrı bir commit. PR farkını okumak kolay.
batchedSenkronizasyon koşumu başına tek commit. Depo daha temiz, ama atomik inceleme zor.

Plan gereksinimi

Team ve üzeri. Her sağlayıcı (github, gitlab, bitbucket) bağımsız özellik bayrağıdır (feature flag) — çalışma alanı yapılandırmasında sadece istediklerini etkinleştirebilirsin.

Başardın (önizleme kapsamında)

integrations.git.* yapılandırma maddelerini ayarladıysan, doğrudan paket entegrasyonu üzerinden bir push tetiklediysen ve depoda personas/ altında dosyaların commit'lendiğini gördüysen rehber bitti — senkronizasyon canlıdır.

HTTP API'ye geçince aynı akış POST /v1/integrations/git/push çağrısına dönecek; yapılandırma maddeleri aynı kalır.

Sonraki adım

Kod olarak persona — kullanım senaryosu

Persona'ları Git'te tutmanın ürün ekibine getirdiği iş akışı kazanımları.

Open →
Git senkronizasyonu entegrasyonu

Sağlayıcı detayları, kimlik doğrulama desenleri, dal stratejisi.

Open →
Persona katmanları kavramı

YAML başlığında gördüğün Soul/Self/Mask/Surface katmanlarının yapısı.

Open →
Audit + provocation testleri

Persona değişikliği Git'e indiğinde denetimin nasıl yeniden çalıştığı.

Open →