From personal-assistant
Commit oncesi kalite kontrol + teslimat secenekleri (commit, push, PR, branch).
How this skill is triggered — by the user, by Claude, or both
Slash command
/personal-assistant:commitWhen to use
Trigger — "commit", "commit at", "push et", "PR olustur", "branch ac", "degisiklikleri kaydet", "kodu gonder", "/commit". Her kod teslimat/kaydetme isteginde tetiklenir.
This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Kod değişikliklerini commit etmeden önce **toplu analiz** yapar, soruları biriktirir, tek seferde kullanıcıya sunar, onay sonrası teslim eder.
Kod değişikliklerini commit etmeden önce toplu analiz yapar, soruları biriktirir, tek seferde kullanıcıya sunar, onay sonrası teslim eder.
Kullanıcıyı az kes. Her hata için ayrı soru sorma. Önce tüm analizi yap, bulguları biriktir, sonunda tek bir AskUserQuestion bloğunda topla.
git status --porcelain
Boşsa: "Commit edecek bir şey yok." deyip çık. Skill sonlanır.
CURRENT_BRANCH=$(git branch --show-current)
DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo "main")
IS_MAIN=$([ "$CURRENT_BRANCH" = "$DEFAULT_BRANCH" ] && echo true || echo false)
IS_WORKTREE=$([ -f .git ] && echo true || echo false)
Bu bilgiyi son adımdaki teslimat seçenekleri için kullan.
Her adımda bulguları belleğe topla, bitince hepsini birden sun.
git diff --stat
git diff --cached --stat # staged varsa
git diff
Kural kesin: git diff --stat çıktısında herhangi bir kod dosyası (.py, .js, .ts, .tsx, .jsx, .go, .rs, .java, .kt, .swift, .dart, .rb, .php, .c, .cpp, .cs, .sh, .vue, .svelte) değişmişse review mutlaka çalıştırılır.
.md, .json, .yml, .txt, asset'ler) değişmişse atlanabilir.Review built-in /code-review skill'i ile çalıştırılır — code-review skill'ini effort seviyesiyle çağır (örn. /code-review high; effort seçimi aşağıda "Effort Seçimi"). Skill'in tüm akışını ve verdiği bulguları olduğu gibi al; kendi workflow/subagent kurma.
Kod bir kere review edilir, bir daha edilmeyecek. Bu yüzden review dürüst, eksiksiz ve kolaya kaçmadan yapılmalı. Bulunan hiçbir bulgu görmezden gelinemez veya atlanması gerekli görülemez.
Yasaklar:
Pozitif gereklilikler:
question metnine şiddet + dosya:satır + kısa açıklama ile dahil edilir.high effort'la verdiği "uncertain" bulgular bile listelenir — kullanıcı false positive olduğuna karar verebilir, sen değil.Effort, yapılan işin karmaşıklığına göre seçilir — gereksiz yüksek effort verme (zaman/token israfı), karmaşık işte düşük effort'a kaçma (kaçan bug). git diff --stat + diff içeriğine bakıp karar ver, code-review skill'ini seçtiğin seviyeyle çağır:
| Effort | Ne zaman |
|---|---|
low | Tek-birkaç satırlık trivial değişiklik: typo, rename, sabit/string güncelleme, import düzeltme |
medium (varsayılan) | Sıradan feature/fix: birkaç dosya, sınırlı mantık değişikliği |
high | Karmaşık mantık, çok dosyaya yayılan değişiklik, güvenlik-kritik kod, data-mutating işlem (migration, ödeme, silme), concurrency/race riski |
xhigh/max | Sadece kullanıcı açıkça isterse — skill kendi inisiyatifiyle seçmez |
code-review skill'ini çalıştır; effort'u yukarıdaki tabloya göre geçir (örn. /code-review high). Belirli bir dizine/dosyaya odaklanılması gerekiyorsa skill'e bunu belirt. Skill'in döndürdüğü bulguların hepsini ham haliyle Soru 1'e taşı.
*.test.*, *_test.*, tests/, __tests__/)~/.claude/rules/ altındaki tüm dosyaları + proje CLAUDE.md ve CLAUDE.local.md'sini dinamik tara:
ls ~/.claude/rules/*.md
[ -f CLAUDE.md ] && echo CLAUDE.md # projeye özgü kamuya açık kurallar
[ -f CLAUDE.local.md ] && echo CLAUDE.local.md # projeye özgü private kurallar
Her dosyayı oku, değişen kodla alakalı kuralları bul. Sabit liste tutma — yeni rule eklendiğinde otomatik kapsansın. Proje CLAUDE.md ve CLAUDE.local.md'sindeki kurallar da bağlayıcıdır (örn. versiyon bump, projeye özgü senkron kuralları, frontmatter konvansiyonları) — bu yüzden global rules'a gömülemeyecek proje-spesifik commit kuralları burada yakalanır. Örnek alaka eşlemeleri:
coding.md, ask-first.md, dil-spesifik (python.md, django.md).po dosyası → django.md (F7 çeviri)cli-tools.md, soloterm.mdbrowser-testing.mdobsidian.md, learnings.mdinit.mdworkflow.mdproduction.md, b2c-booking-log.mdbefore-commit.md (zaten bu skill'in kapsamı)İhlal varsa bulgu olarak topla. Alakasız rule dosyası varsa atla.
CLAUDE.local.md'de Vikunja proje ID varsa:
vikunja-cli task list --filter "done = false" --json ile aktif görevleri getir
Yapılan değişikliklerle uyuşan bir görev var mı tespit et:
CLAUDE.local.md'de Obsidian Folder varsa bu commit'te kaydedilmesi kayda değer bir şey var mı tespit et (dar kriter — kanonik tanım: agents/obsidian-writer.md append guard):
Repo/CLAUDE.md/vault'ta zaten yazılı bilgi veya genel oturum özeti kayda değer sayılmaz; şüphedeysen önerme.
Varsa bulgu olarak işaretle. Yoksa sessiz geç.
Temel Kural: Tüm bulgular + teslimat seçimi önceden toplu sorulur. Kesik kesik soru yasak. Max 4 soru/blok; 4'ten fazla soru varsa art arda (2. faz) blok.
Commit mesajı otomatik türetilir — SORULMAZ. Conventional commit format (feat:, fix:, chore:, docs:, refactor:, test:) tercih edilir. Diff özeti + branch ismi + değişen dosyalardan türet.
Aktif olanları (koşul sağlanan) sıraya koy, ilk 4'ünü tek blokta sor:
S1 — Tespit Edilen Sorunlar (varsa)
S2 — Test Eksikse (3c bulgusu varsa)
S3 — Vikunja (proje ID varsa)
S4 — Teslimat (branch'e göre değişir)
Ana branch'te (main/master):
git push (risky)Feature branch'te:
git pushFaz 1'de yer kalmayan veya koşullu sorular:
S5 — Obsidian (3f bulgusu varsa)
Task ile obsidian-writer MODE: append çağır.S6 — Worktree (worktree'deyse)
worktree skill'i çalıştırayım mı (PR + merge + cleanup)?"Kural: Faz 2 sadece gerçekten ek soru varsa tetiklenir. Yoksa Faz 1 sonrası direkt commit + teslimat.
Sorunlar düzeltildikten sonra son bir analiz yap: "Atladığım bir şey var mı?" Yeni bulgu varsa tek ek blok ile sor.
git add <ilgili-dosyalar> # asla `git add -A` veya `git add .` kullanma (sensitive dosya riski)
git commit -m "$(cat <<'EOF'
<commit mesajı>
Co-Authored-By: Claude Fable 5 <[email protected]>
EOF
)"
Co-Authored-By her zaman eklenir.
Asla --no-verify kullanma.
Teslimat seçimi Faz 1 S4'te alındı. Commit sonrası seçime göre uygula:
git pushYeni branch açma seçildiğinde:
feat/<kebab-case-konu> veya fix/, chore/, docs/ prefix'leriyleBRANCH_NAME="feat/$(echo "$CONU" | tr '[:upper:]' '[:lower:]' | tr -s ' _' '-' | sed 's/[^a-z0-9-]//g')"
git checkout -b "$BRANCH_NAME"
gh pr create --title "<commit subject>" --body "$(cat <<'EOF'
## Summary
<1-3 madde>
## Test plan
- [ ] <test maddeleri>
🤖 Generated with [Claude Code](https://claude.com/claude-code)
EOF
)"
Soru 3'te "Evet kapat" seçildiyse (--done değer zorunlu: true/false):
vikunja-cli --json task update <id> --done true
Görev yoksa ve "Evet" seçildiyse (create pozisyonel argüman alır, --done flag'i YOK — önce create, sonra update):
vikunja-cli --json task create <pid> "<özet>" --description "<detay>"
vikunja-cli --json task update <yeni-id> --done true
git add -A veya git add . — dosyaları tek tek seç--no-verify — hook fail ise düzelt--amend — yeni commit oluştur (önceki yanlış olabilir)git push --force ana branch'e (uyar)~/.claude/rules/before-commit.md — bu skill'in temel kuralları~/.claude/rules/coding.md — kod kalite kuralları~/.claude/rules/ask-first.md — AskUserQuestion kullanım kurallarıworktree skill (varsa) — worktree teslim akışıGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub omert11/personal-assistant --plugin personal-assistant