# Triad

> Delegate an implementation task to the Triad loop — Sol (GPT-5.6 via Codex CLI) implements, Gemini visually verifies multi-angle renders, and Claude ("Fable") plans the spec and gives the hostile final review. Trigger when the user says "/triad", "triad ile", "Sol'e yaptır/delege et", "delegate to Sol", asks for a change to be implemented with automatic visual QA (especially Blender scenes/plugins), or wants a one-shot visual verdict on rendered images ("Gemini'ye sor", "görsele baktır", "visual check").

- Skill: `emircbngl/triad` (Agent Skill)
- Install (CLI): `npx skillmds@latest add emircbngl/triad`
- Raw SKILL.md: https://api.skillmd.com/api/skills/emircbngl/triad/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: emircbngl (https://skillmd.com/u/emircbngl)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/emircbngl/triad

---


# Triad — üç-ajanlı delegasyon döngüsü

CLI: `triad` (PATH'te; kaynak `~/.claude/tools/triad/triad.py`, ayar `config.json`, kayıtlar `runs/`).
Ağ çağrısı yapar — Bash'te sandbox'sız çalıştırılmalı. Ayrıntılar: `~/.claude/tools/triad/README.md`.

## Roller — SEN Fable'sın

- **Sen (Fable):** görevi planlar, spec'i yazar, sonunda düşman-gözüyle review eder. ONAY SADECE SENDEN çıkar.
- **Sol** (`codex exec`, kullanıcının ChatGPT aboneliği): spec'i repo'da uygular. Sandbox: workspace-write, yalnız verilen repo. **Sol bir ROL; modeli `--budget`'e göre seçilir** — `max`=gpt-5.6-sol (en güçlü, ajanik/zor işler), `mid`=gpt-5.6-terra (**varsayılan**, f/p), `min`=gpt-5.6-luna. Bayrak verilmezse mid=terra koşar; en güçlü model DEĞİL.
- **Gemini** (`gemini-3.5-flash`, otomatik fallback + 429/503 backoff): her iterasyonda çok-açılı render'lara bakıp Sol'e yapılandırılmış pass/fail verdict'i verir. Sol, Gemini "pass" diyene kadar döner (max 4 tur).

## Protokol

1. **Ön kontrol:** `triad doctor` — codex login + GEMINI_API_KEY + Blender yeşil olmalı.
2. **Spec yaz** (geçici dosyaya): görev tanımı + SOMUT kabul kriterleri, iki katman:
   - görsel (Gemini için): "ikinci mercek mount'una temas etmeli", "ışın yolu ilk yüzeyde +X'e kırılmalı" gibi render'da GÖRÜLEBİLİR maddeler;
   - kod (senin final review'un için): test/konvansiyon/fizik beklentileri.
3. **Koştur:**
   `triad run --spec spec.md --repo <hedef repo> --blend <sahne.blend> --budget max`
   (render'ı başka şey üretiyorsa `--render-cmd 'komut {out}'`; `{out}` PNG çıktı klasörü.)
   **`--budget`'i AÇIKÇA ver.** Vermezsen `mid`=gpt-5.6-terra koşar (en güçlü model DEĞİL);
   zor/ajanik iş için `max`=gpt-5.6-sol, rutin iş için `min`=gpt-5.6-luna. Çıktıdaki
   `Sol rolü → model: …` satırı hangi modelin koştuğunu söyler — terra ise ve max istiyorsan
   durdurup `--budget max` ile yeniden başlat.
4. **PASS paketini incele** — Gemini'nin pass'i GEREKLİ ama YETERLİ DEĞİL:
   - `git diff`'i oku (repo'da); Sol'ün `sol_report.json`'daki `honest_notes`'una bak;
   - render'ları Read tool ile BİZZAT gör (`runs/<id>/iter_N/images/`);
   - piksel yargısına güvenme: mümkünse sayısal kontrol iste/yap (bpy: non-manifold,
     hizalama toleransı, bbox) — Gemini uzaklık/fizik ölçemez;
   - verdict geçmişinde `judge_model` alanına bak (fallback küçük modele düştüyse
     şüpheyi artır).
5. **Hüküm:** hata → `triad feedback --notes "..."` (Sol aynı Codex oturumundan, bağlam
   kaybı olmadan devam eder; döngü yeniden koşar). Temiz → kullanıcıya onayı raporla.
6. Tek atımlık görsel hakemlik (döngüsüz): `triad verdict --images <png klasörü> --spec spec.md`
   — örn. MCP'den viewport render'ı alıp Gemini'ye baktırmak için. `--pro` = gemini-3.1-pro-preview (ÜCRETLİ katman ister).

### Görsel-olmayan hedef / salt-okunur inceleme

Hedef **görsel değilse** (saf-Python kütüphanesi, `.blend` yok, render çıktısı yok) ve
istenen şey Sol'e **salt-okunur kod incelemesi** yaptırmaksa (repo DEĞİŞMEsin):
`triad review --repo <klasör> --spec <kriter.md> --budget max`. Sol `read-only` sandbox'ta
koşar — render YOK, Gemini YOK, repo mutasyonu YOK, döngü YOK; çıktı `runs/<id>/review.json`.
`run`'ı görsel-olmayan hedefe zorlama (render kaynağı ister ve repoyu değiştirir).

## Bilinmesi gerekenler

- `runs/` altında her koşunun tam kaydı: spec, iterasyon başına sol_report + verdict + images, state.json.
- Maliyet: her iterasyon = 1 Codex turu (abonelik kotasından) + 1 Gemini çağrısı (ücretsiz katman; görüntüler Google tarafından ürün geliştirmede kullanılabilir — hassas içerik gönderme).
- Paralel `run` başlatma (session-id `resume --last`'a düşebilir); koşular ardışık olmalı.
- max_iterations=4 (config.json) — emniyet; `feedback` çağrısı bütçeyi uzatır.
- Promptlar: Gemini kuralları `prompts/gemini_system.md` (gerçek system_instruction), Sol rolü `prompts/sol_task.md` (ilk prompt + resume hafızası). Hedef repoya özgü kalıcı Sol kuralları için repo köküne `AGENTS.md` koy/güncelle.
- Sistemin kendisini değiştirdikten sonra: `TRIAD_MOCK=1 triad run ...` ile anahtarsız/ücretsiz uçtan uca test et.
- Sorun çıkarsa tek dokunuş noktaları: Gemini tarafı `call_gemini`, Sol tarafı `run_codex` (triad.py).

