$npx -y skills add vibeeval/vibecosystem --skill autonomous-prOtonom PR yasam dongusu. PR olustur, CI bekle, hata varsa duzelt, review feedback'i uygula, merge'e hazirla. Budget ve zaman limiti ile kontrol altinda tutulan tam otonom PR pipeline'i.
| 1 | # Autonomous PR Lifecycle |
| 2 | |
| 3 | PR'i olusturmaktan merge'e kadar tum sureci otonom yonet. CI basarisiz olursa duzelt, review feedback gelirse uygula, butce asarsa dur. |
| 4 | |
| 5 | ## PR Pipeline |
| 6 | |
| 7 | ``` |
| 8 | 1. BRANCH → Feature branch olustur |
| 9 | 2. IMPLEMENT → Kodu yaz (kraken/spark) |
| 10 | 3. VERIFY → Lokal test + lint + build |
| 11 | 4. PR CREATE → gh pr create |
| 12 | 5. CI WAIT → CI pipeline'i bekle |
| 13 | 6. CI FIX → Basarisizsa duzelt, tekrar push (max 3) |
| 14 | 7. REVIEW → Review feedback bekle |
| 15 | 8. APPLY → Feedback'i uygula |
| 16 | 9. READY → Merge'e hazir bildir |
| 17 | ``` |
| 18 | |
| 19 | ## Kullanim |
| 20 | |
| 21 | ### Basit: Tek PR |
| 22 | |
| 23 | ```bash |
| 24 | # Claude'a otonom PR olusturttir |
| 25 | claude -p " |
| 26 | Feature: kullanici profil sayfasi ekle |
| 27 | Branch: feat/user-profile |
| 28 | PR target: main |
| 29 | |
| 30 | Pipeline: |
| 31 | 1. Branch olustur |
| 32 | 2. Implement et |
| 33 | 3. Test yaz |
| 34 | 4. PR olustur |
| 35 | 5. CI bekle ve fix et |
| 36 | 6. Hazir olunca bildir |
| 37 | " |
| 38 | ``` |
| 39 | |
| 40 | ### Gelismis: Budget ve Zaman Limiti |
| 41 | |
| 42 | ```bash |
| 43 | claude -p " |
| 44 | Feature: auth middleware refactor |
| 45 | Branch: refactor/auth-middleware |
| 46 | PR target: main |
| 47 | |
| 48 | Limitler: |
| 49 | --budget 500K tokens # Max token harcama |
| 50 | --max-duration 30m # Max sure |
| 51 | --max-ci-retries 3 # Max CI fix denemesi |
| 52 | --auto-merge false # Merge'i ben onaylayacagim |
| 53 | |
| 54 | Basarisiz olursa: |
| 55 | Draft PR olarak birak, ne yaptigini acikla |
| 56 | " |
| 57 | ``` |
| 58 | |
| 59 | ## CI Fix Dongusu |
| 60 | |
| 61 | ``` |
| 62 | CI BASARISIZ |
| 63 | │ |
| 64 | ├─ Build hatasi? |
| 65 | │ └─ build-error-resolver agent cagir |
| 66 | │ └─ Fix → Push → CI tekrar bekle |
| 67 | │ |
| 68 | ├─ Test basarisiz? |
| 69 | │ └─ Hata mesajini oku |
| 70 | │ ├─ Test kodu hatali → Test'i duzelt |
| 71 | │ └─ Implementation hatali → Kodu duzelt |
| 72 | │ └─ Push → CI tekrar bekle |
| 73 | │ |
| 74 | ├─ Lint hatasi? |
| 75 | │ └─ Otomatik fix (prettier, eslint --fix) |
| 76 | │ └─ Push → CI tekrar bekle |
| 77 | │ |
| 78 | ├─ Type hatasi? |
| 79 | │ └─ Type fix uygula |
| 80 | │ └─ Push → CI tekrar bekle |
| 81 | │ |
| 82 | └─ 3. deneme basarisiz? |
| 83 | └─ DURR → Draft PR olarak birak |
| 84 | └─ PR body'ye aciklama yaz |
| 85 | ``` |
| 86 | |
| 87 | ### CI Fix Script |
| 88 | |
| 89 | ```bash |
| 90 | #!/bin/bash |
| 91 | # scripts/ci-fix-loop.sh |
| 92 | |
| 93 | MAX_RETRIES=3 |
| 94 | RETRY=0 |
| 95 | |
| 96 | while [ $RETRY -lt $MAX_RETRIES ]; do |
| 97 | echo "=== CI Check (attempt $((RETRY + 1))/$MAX_RETRIES) ===" |
| 98 | |
| 99 | # CI durumunu kontrol et |
| 100 | STATUS=$(gh pr checks --json state -q '.[].state' | sort -u) |
| 101 | |
| 102 | if echo "$STATUS" | grep -q "SUCCESS"; then |
| 103 | echo "CI PASSED" |
| 104 | exit 0 |
| 105 | fi |
| 106 | |
| 107 | if echo "$STATUS" | grep -q "PENDING"; then |
| 108 | echo "CI bekliyor..." |
| 109 | sleep 30 |
| 110 | continue |
| 111 | fi |
| 112 | |
| 113 | # Basarisiz -- fix dene |
| 114 | RETRY=$((RETRY + 1)) |
| 115 | echo "CI FAILED (attempt $RETRY)" |
| 116 | |
| 117 | # Hata detayini al |
| 118 | FAILED=$(gh pr checks --json name,state -q '.[] | select(.state=="FAILURE") | .name') |
| 119 | |
| 120 | for check in $FAILED; do |
| 121 | echo "Fixing: $check" |
| 122 | # Claude'a fix ettir |
| 123 | claude -p "CI check '$check' failed. Read the error, fix it, commit." --no-input |
| 124 | done |
| 125 | |
| 126 | git push |
| 127 | sleep 60 # CI'in yeniden baslamasini bekle |
| 128 | done |
| 129 | |
| 130 | echo "CI FIX BASARISIZ ($MAX_RETRIES deneme)" |
| 131 | exit 1 |
| 132 | ``` |
| 133 | |
| 134 | ## Review Feedback Dongusu |
| 135 | |
| 136 | ``` |
| 137 | REVIEW GELDI |
| 138 | │ |
| 139 | ├─ Approval? |
| 140 | │ └─ MERGE'E HAZIR |
| 141 | │ |
| 142 | ├─ Changes requested? |
| 143 | │ └─ Her yorumu oku |
| 144 | │ ├─ Kod degisikligi isteniyor → Uygula |
| 145 | │ ├─ Soru soruluyor → Cevapla (PR comment) |
| 146 | │ └─ Mimari itiraz → DURDUR, kullaniciya bildir |
| 147 | │ └─ Degisiklikleri push et |
| 148 | │ └─ Re-review iste |
| 149 | │ |
| 150 | └─ Comment only? |
| 151 | └─ Cevaplanmasi gereken varsa cevapla |
| 152 | ``` |
| 153 | |
| 154 | ### Review Feedback Uygulama |
| 155 | |
| 156 | ```bash |
| 157 | # PR review comment'lerini oku |
| 158 | gh pr view <PR_NUMBER> --comments --json comments |
| 159 | |
| 160 | # Her comment icin fix uygula |
| 161 | claude -p " |
| 162 | PR #<NUMBER> icin su review feedback geldi: |
| 163 | |
| 164 | $(gh api repos/OWNER/REPO/pulls/<NUMBER>/comments | jq -r '.[] | "File: \(.path):\(.line)\nComment: \(.body)\n---"') |
| 165 | |
| 166 | Her feedback'i uygula, commit et. |
| 167 | " |
| 168 | |
| 169 | git push |
| 170 | gh pr review <PR_NUMBER> --comment --body "Review feedback uygulandı, tekrar bakabilir misiniz?" |
| 171 | ``` |
| 172 | |
| 173 | ## Budget Kontrol |
| 174 | |
| 175 | ### Token Sayaci |
| 176 | |
| 177 | ```bash |
| 178 | # Session token kullanimi takibi |
| 179 | # Her agent cagrisinda tahmini token sayisini artir |
| 180 | TOKEN_USED=0 |
| 181 | TOKEN_BUDGET=500000 # 500K limit |
| 182 | |
| 183 | check_budget() { |
| 184 | if [ $TOKEN_USED -gt $TOKEN_BUDGET ]; then |
| 185 | echo "BUDGET ASILDI: $TOKEN_USED / $TOKEN_BUDGET tokens" |
| 186 | echo "Otonom islem durduruluyor." |
| 187 | # Draft PR olarak birak |
| 188 | gh pr ready --undo 2>/dev/null |
| 189 | exit 1 |
| 190 | fi |
| 191 | } |
| 192 | ``` |
| 193 | |
| 194 | ### Zaman Kontrol |
| 195 | |
| 196 | ```bash |
| 197 | START_TIME=$(date +%s) |
| 198 | MAX_DURATION=1800 # 30 dakika |
| 199 | |
| 200 | check_time() { |
| 201 | ELAPSED=$(($(date +%s) - START_TIME)) |
| 202 | if [ $ELAPSED -gt $MAX_DURATION ]; then |
| 203 | echo "ZAMAN LIMITI: ${ELAPSED}s / ${MAX_DURATION}s" |
| 204 | echo "Mevcut durumu kaydet ve dur." |
| 205 | git add -A && git commit -m "WIP: zaman limiti asildi" || true |
| 206 | gh pr create --draft --title "WIP: $FEATURE" --body "Zaman limiti nedeniyle duraklatildi." 2>/dev/null |
| 207 | exit 1 |
| 208 | fi |
| 209 | } |
| 210 | ``` |
| 211 | |
| 212 | ## Guvenlik Kurallari |
| 213 | |
| 214 | ``` |
| 215 | 1. ASLA --force push yapma |
| 216 | 2. ASLA main/master'a direkt push yapma |
| 217 | 3. ASLA review olmadan merge yapma (auto-merge false default) |
| 218 | 4. Secret/credential com |