| name | github |
| description | Manages all git operations (commit, push, branch management, PR creation) in a standardized, safe, and consistent way. Automatically runs the code-review skill before any commit. Enforces Conventional Commits standard. Handles the full lifecycle: branch → review → commit → push → PR.
|
GitHub Skill
Temel Kural
Hiçbir commit code-review skill çalıştırılmadan atılmaz.
Bu kural ihlal edilemez. "Küçük değişiklik" veya "sadece bir satır" istisnası yoktur.
Commit Standardı — Conventional Commits
Format
<type>(<scope>): <subject>
[body — opsiyonel]
[footer — opsiyonel]
Type Listesi
| Type | Ne Zaman Kullanılır |
|---|
feat | Yeni özellik |
fix | Bug düzeltmesi |
refactor | Davranış değişmeden kod düzenlemesi |
style | Formatlama, boşluk (işlevsel değişiklik yok) |
test | Test ekleme veya düzenleme |
docs | Dokümantasyon değişikliği |
chore | Build, dependency, config güncellemesi |
perf | Performans iyileştirmesi |
ci | CI/CD pipeline değişikliği |
revert | Önceki commit'i geri alma |
Scope (Opsiyonel ama Önerilir)
Etkilenen modül, komponent veya katman:
feat(auth): add refresh token rotation
fix(userService): handle null email in validation
refactor(Button): extract loading state to hook
chore(deps): upgrade react to 19.2.0
Subject Kuralları
- İmperative mood kullan (Türkçe: emir kipi): "add" not "added", "fix" not "fixed"
- Küçük harf ile başla
- Nokta ile bitirme
- 72 karakter sınırı
- Ne değiştiğini yaz, neden body'de açıkla
Body (Neden Değişti?)
feat(auth): add refresh token rotation
Statik refresh token'lar çalınırsa süresiz erişim sağlar.
Rotation ile her kullanımda yeni token üretilir, eskisi geçersiz kılınır.
RFC 6749 güvenlik önerisi doğrultusunda implement edildi.
Breaking Change
feat(api)!: change user ID format from integer to UUID
BREAKING CHANGE: Tüm /api/users/:id endpoint'leri artık UUID string
bekliyor. Integer ID kullanan client'lar güncellenmeli.
Migration guide: docs/migrations/integer-to-uuid.md
Tam İş Akışı
1. Branch Oluştur
git checkout -b feat/user-registration
git checkout -b fix/token-refresh-null-check
git checkout -b refactor/button-loading-state
Branch isimlendirme kuralları:
- Lowercase, kebab-case
- Type ile başlar (
feat/, fix/, refactor/, hotfix/)
main veya master'a direkt commit atılmaz
2. Code Review Çalıştır
Commit atmadan önce code-review skill'ini aç ve MOD A'yı uygula.
git status
git diff --staged
Code review checklist tamamlanmadan 3. adıma geçilmez.
3. Stage ve Commit
git add src/services/userService.ts src/services/userService.test.ts
git commit -m "feat(userService): add createUser with password hashing
Yeni kullanıcı kaydı için service katmanı eklendi.
bcrypt ile password hash'leniyor (saltRounds: 12).
Duplicate email durumunda DuplicateEmailError fırlatılıyor.
Testler: userService.test.ts — 8 test, hepsi geçiyor"
Atomik commit'ler:
- Bir commit, bir mantıksal değişiklik
- Migration + model + service = 3 ayrı commit
- "misc fixes" veya "wip" commit'leri yasak
4. Her Commit Sonrası Kontrol
git log --oneline -5
git show HEAD
Commit mesajı yanlışsa hemen düzelt (push öncesinde):
git commit --amend -m "fix(auth): handle null refresh token in rotation"
5. Push
git push -u origin feat/user-registration
git push
Push öncesi:
npm test
git fetch origin
git rebase origin/main
6. Pull Request Oluştur
GitHub CLI ile (PR şablonu inline — .github/PR_TEMPLATE.md yoksa aşağıdakini kullan):
gh pr create \
--title "feat(auth): user registration with email verification" \
--base main \
--label "feature" \
--body "## Ne Değişti?
<2-3 cümle: ne yapıldı, neden>
## Nasıl Test Edildi?
- [ ] Unit testler: \`npm test\` — X/X geçiyor
- [ ] Integration test: manuel doğrulandı
- [ ] Edge case'ler test edildi
## Checklist
- [ ] Code review (MOD A) tamamlandı
- [ ] Testler geçiyor
- [ ] Breaking change varsa CHANGELOG güncellendi
- [ ] Yeni env variable varsa \`.env.example\`'a eklendi
- [ ] \`documentation-sync\` skill çalıştırıldı (API değişikliği varsa)
## İlgili
- Closes #İSSUE_NUMARASI"
Not: Ekip .github/PR_TEMPLATE.md oluşturursa, body kısmını --body "$(cat .github/PR_TEMPLATE.md)" ile değiştir.
7. CHANGELOG Güncelle
Her PR için CHANGELOG.md'nin [Unreleased] bölümüne ekle:
## [Unreleased]
### Added
- User registration endpoint (POST /api/auth/register) with email verification
### Fixed
- Null refresh token causing 500 error on token rotation
### Changed
- User ID format migrated from integer to UUID (breaking)
Özel Durumlar
Hotfix (Production Emergency)
git checkout -b hotfix/null-pointer-login main
git commit -m "fix(auth): prevent null pointer when user session expires"
git checkout main && git merge hotfix/null-pointer-login
git checkout develop && git merge hotfix/null-pointer-login
Commit Geri Alma (Push Öncesi)
git reset HEAD~1 --soft
Tag ve Release
git tag -a v1.2.0 -m "Release v1.2.0 — user registration feature"
git push origin v1.2.0
Yasaklar
git push --force (force push) — sadece personal branch'te, hiçbir zaman main'e
git commit -m "fix" — anlamsız commit mesajı
git add . — staging kontrol edilmeden hepsini ekleme
git commit --no-verify — pre-commit hook'ları atlama
- Direkt
main'e push — pull request olmadan
Hızlı Referans
git checkout -b feat/my-feature
git add <ilgili dosyalar>
git commit -m "feat(scope): description"
git push -u origin feat/my-feature
gh pr create --title "..." --body "..."