real-time prompt scoring ·
auto token pop-up ·
chat içi toggle ·
Haiku LLM-judge (opt-in) ·
Türkçe
Claude Code için real-time prompt kalite kontrolü. Default-off — kurulur ama hiçbir şey yapmaz.
:lint onile açarsın, demolaman bittikten sonra:lint offile kapatırsın. Hayatına engel olmaz.
Önceki v2'de kurulum yapan herkes filter sürekli açıktı, "ne yapsam" gibi meta-soruları bile bloke ediyordu. v3'te bu düzeltildi: kurulum sonrası filter kapalı durur, sen :lint on yazınca açılır. Token pop-up ayrı bir mekanizma — o açık kalır, faydalı.
| Özellik | Ne yapar |
|---|---|
| Hibrit grader | Önce hızlı regex kuralları, sonra (opsiyonel) Haiku LLM-judge — ANTHROPIC_API_KEY varsa otomatik aktif, yoksa rules fallback |
| Otomatik token pop-up | Stop hook her Claude cevabından sonra ekrana token kutusu çizer (son turn + oturum + maliyet) |
| Chat içi toggle | :lint off / :lint on yazarak filtreyi anında aç/kapat — yeniden başlatma yok |
| 5 boyutlu rubric | spesifiklik, aksiyon, sınır, format, bağlam — ValidMind Clarity standardı |
> kodumu temizle
🚨 PROMPTLINT — Skor: 2/10 (📐 RULES)
Sorunlar:
• Çok kısa — daha çok detay verebilirsin
• Belirsiz fiil — hangi dosya? hangi pattern?
• Spesifik referans yok — dosya, fonksiyon ekle
Önerilen format:
→ DOSYA / KAPSAM (src/auth/login.ts:42-78)
→ AKSIYON (validatePassword'ı zod schema ile refactor et)
→ SINIRLAR (test dosyalarına dokunma)
→ ÇIKTI (sadece değişen satırları göster)
İpucu: filtreyi kapatmak istersen :lint off yaz
> react useEffect ekle
🟡 PROMPTLINT — Skor: 4/10 (🤖 LLM) · Claude netleştirici sorular soracak
↳ Spesifik referans yok; Format yok
[Claude bu turn doğrudan kod yazmaz, önce 3-4 soru sorar]
> src/auth/login.ts'deki validatePassword'ı zod ile refactor et. Test'lere dokunma.
[Hiçbir uyarı yok, Claude direkt işe girişir]
┌─ 📊 PROMPTLINT · TOKEN ───────────────────────────────────────┐
│ son turn · in 29 out 1.2k cw 45k cr 120k $ 0.0234
│ oturum · top 166k (opus) $ 3.4804
└───────────────────────────────────────────────────────────────┘
> :lint on
🔔 promptlint AÇILDI. Kapatmak için: :lint off
> :lint off
🔕 promptlint kapatıldı (sessiz mod). Açmak için: :lint on
> :lint status
ℹ️ promptlint durumu: kapalı (varsayılan)
Default davranış: KAPALI. Kurulum yaptıktan sonra hook çalışır ama hiçbir prompt'u bloke etmez. Demo etmek için :lint on, sonra :lint off.
| Skor | Davranış |
|---|---|
| 7-10 | Silent pass — promptlint sessizdir |
| 4-6 | Pass + visible warning + Claude'a coach note |
| 0-3 | BLOK — kullanıcıya geri döner, yeniden yazdırır |
git clone https://github.com/selmakcby/promptlint.git
cd promptlint
./install.shinstall.sh:
prompt-checker.pyvetoken-reporter.pyhooklarını~/.claude/hooks/altına kopyalarprompt-coachskill'ini~/.claude/skills/altına kopyalartoken-counter.pystandalone CLI'yı~/bin/altına kopyalaranthropicSDK var mı kontrol eder (yoksa rules fallback)- Sana
~/.claude/settings.json'a eklenecek JSON'u verir
Manuel adım — ~/.claude/settings.json'a iki hook ekle (root level hooks objesi içine):
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "python3 ~/.claude/hooks/prompt-checker.py"
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "python3 ~/.claude/hooks/token-reporter.py"
}
]
}
]
}
}Daha akıllı puanlama için Haiku 4.5 ile değerlendirme:
pip install anthropic
export ANTHROPIC_API_KEY=sk-ant-...Hook otomatik tespit eder. Yoksa regex fallback'e düşer (yine çalışır).
Maliyet: ~$0.0001/prompt. Ayda 1000 prompt için ~$0.10.
Devre dışı bırakma:
export PROMPTLINT_LLM=0 # rules-only zorlaChat'in dışında, ayrı terminal'de canlı dashboard:
python3 ~/bin/token-counter.py # mevcut session'ı izle
python3 ~/bin/token-counter.py --new # sadece bu komuttan sonra başlayan session (video için)
python3 ~/bin/token-counter.py --session <path> # belirli JSONL dosyasıGösterir:
- Context window doluluk (% kaç)
- Session toplamları (input / output / cache write / cache read)
- Tahmini maliyet (Opus / Sonnet / Haiku auto-detect)
- Live spinner + ● LIVE indikatörü
~/.claude/hooks/prompt-checker.py üst kısmında:
PASS_THRESHOLD = 7 # >= → silent pass
BLOCK_THRESHOLD = 4 # < → block
VAGUE_VERBS = [...] # belirsiz fiil regex listesi
ULTRA_LAZY = [...] # tek kelime komutlar
REFERENCE_PATTERNS = [...] # dosya/fonksiyon regex'leri
SCOPE_KEYWORDS = [...] # "dokunma", "sadece"
FORMAT_KEYWORDS = [...] # "tablo", "liste"Kuralları kendi diline / projene göre düzenleyebilirsin.
| Boyut | Etki |
|---|---|
| char_count < 8 OR word_count == 1 | -7 |
| char_count < 15 OR word_count == 2 | -5 |
| char_count < 40 | -2 |
| Ultra-lazy ("yap", "yapsana", "hadi") | -5 |
| Belirsiz fiil var | -3 |
| Spesifik referans yok | -2 |
| Kapsam (dokunma/sadece) yok | -1 |
| Format (tablo/liste) yok | -1 |
Başlangıç skoru: 10. Conversation continuation kelimeleri (evet, tamam, devam, vs.) silent pass.
promptlint/
├── install.sh
├── README.md
├── LICENSE # MIT
├── .claude/
│ ├── settings.example.json
│ ├── hooks/
│ │ ├── prompt-checker.py # ANA BEYİN — UserPromptSubmit
│ │ └── token-reporter.py # OTOMATİK POP-UP — Stop
│ └── skills/
│ └── prompt-coach/
│ └── SKILL.md
├── tools/
│ └── token-counter.py # standalone CLI
├── assets/
│ └── cover.svg # README kapağı
└── examples/
├── 01-developer-prompts.md
├── 02-daily-prompts.md
└── 03-formula.md
Prompt yazmak bir beceri. Diğer beceriler gibi geri-bildirimle gelişir. promptlint sana anlık geri-bildirim verir; her prompttan öğrenirsin.
Token counter ise iddiayı kanıta çevirir:
"İyi prompt yaz" → boş laf "İyi prompt yaz, bak ölçüyorum" → kanıt
MIT — bkz. LICENSE.
Issue aç, PR gönder, fork at. Vague prompt regex'lerine yenilerini eklemek özellikle değerli — kendi dilindeki "lazy verb" kalıplarını PR olarak gönder.