@hd-agent-kit/cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,250 @@
1
+ # /performance-check — Performans Analiz Skill'i
2
+
3
+ > **Tetikleyici:** `/performance-check [dosya/modül]`
4
+ > **Amaç:** Bundle analizi, render performansı, Core Web Vitals ve genel performans değerlendirmesi sunmak.
5
+ > **Çıktı:** Lighthouse benzeri puanlı rapor + aksiyon önerileri
6
+
7
+ ---
8
+
9
+ ## Temel İlkeler
10
+
11
+ - **Ölçmeden optimize etme.** Önce darboğazı tespit et, sonra çöz.
12
+ - **Premature optimization is the root of all evil.** Gerçek sorunlara odaklan.
13
+ - **Core Web Vitals odaklı ol.** LCP, INP, CLS metrikleri öncelikli.
14
+ - **Bundle size'ı her zaman göz önünde bulundur.** Her KB önemli, özellikle mobilde.
15
+
16
+ ---
17
+
18
+ ## Kullanım Formatları
19
+
20
+ ```
21
+ /performance-check ← Tüm proje analizi
22
+ /performance-check src/pages/Home.tsx ← Belirli sayfa/component
23
+ /performance-check bundle ← Sadece bundle analizi
24
+ /performance-check render ← Sadece render performansı
25
+ ```
26
+
27
+ ---
28
+
29
+ ## Analiz Kategorileri
30
+
31
+ ### Kategori 1: Bundle Analizi
32
+
33
+ Projenin bundle yapısını incele:
34
+
35
+ ```
36
+ 📦 Bundle Analizi:
37
+
38
+ 1. package.json Dependency Taraması:
39
+ ├── Toplam dependency sayısı: [N]
40
+ ├── Büyük dependency'ler (>100KB gzipped):
41
+ │ ├── [kütüphane]: ~[boyut]KB
42
+ │ ├── [kütüphane]: ~[boyut]KB
43
+ │ └── ...
44
+ ├── Duplicate dependency riski: [var/yok]
45
+ ├── Tree-shakeable olmayan import'lar: [liste]
46
+ └── Daha hafif alternatifler:
47
+ ├── [mevcut] → [alternatif] (boyut kazancı: ~[N]KB)
48
+ └── ...
49
+
50
+ 2. Import Analizi:
51
+ ├── Barrel export sorunları: [var/yok]
52
+ ├── Dynamic import kullanımı: [var/yok, nerede]
53
+ ├── Side-effect import'lar: [liste]
54
+ └── Unused export'lar: [tespit edilebiliyorsa]
55
+
56
+ 3. Code Splitting:
57
+ ├── Route-based splitting: [var/yok]
58
+ ├── Component-based splitting (lazy): [var/yok]
59
+ ├── Vendor chunk ayrımı: [var/yok]
60
+ └── Önerilen split noktaları: [liste]
61
+ ```
62
+
63
+ **Kontrol Listesi:**
64
+
65
+ | # | Kontrol | Durum | Etki |
66
+ |---|---------|-------|------|
67
+ | 1 | Tree-shakeable import kullanılıyor mu? | ✅/❌ | Yüksek |
68
+ | 2 | Büyük kütüphaneler lazy load ediliyor mu? | ✅/❌ | Yüksek |
69
+ | 3 | Görseller optimize mi? (WebP/AVIF) | ✅/❌ | Yüksek |
70
+ | 4 | Font'lar optimize mi? (subset, swap) | ✅/❌ | Orta |
71
+ | 5 | CSS purge/tree-shake aktif mi? | ✅/❌ | Orta |
72
+ | 6 | Source map production'da kapalı mı? | ✅/❌ | Düşük |
73
+ | 7 | Gzip/Brotli compression aktif mi? | ✅/❌ | Yüksek |
74
+
75
+ ### Kategori 2: Render Performansı
76
+
77
+ Component render davranışını analiz et:
78
+
79
+ ```
80
+ 🔄 Render Performansı:
81
+
82
+ 1. Gereksiz Re-render Tespiti:
83
+ ├── [Component] → [sebep: parent re-render, context değişimi, prop referans değişimi]
84
+ ├── [Component] → [sebep]
85
+ └── ...
86
+
87
+ 2. Expensive Computation:
88
+ ├── [dosya:satır] → [hesaplama açıklaması] — useMemo önerisi: [Evet/Hayır]
89
+ └── ...
90
+
91
+ 3. State Yönetimi Sorunları:
92
+ ├── Gereksiz global state: [component-local olabilecek state'ler]
93
+ ├── Context granülarity: [çok geniş context → gereksiz re-render]
94
+ └── Derived state hesaplama: [hesaplanabilecek ama state'te tutulan değerler]
95
+
96
+ 4. Liste Performansı:
97
+ ├── Büyük listeler (>100 item): [var/yok]
98
+ ├── Virtualization kullanımı: [var/yok]
99
+ ├── Key prop uygunluğu: [index kullanılıyor mu?]
100
+ └── Öneriler: [virtualization, pagination, infinite scroll]
101
+ ```
102
+
103
+ **Kontrol Listesi:**
104
+
105
+ | # | Kontrol | Durum | Etki |
106
+ |---|---------|-------|------|
107
+ | 1 | Gereksiz re-render var mı? | ✅/❌ | Yüksek |
108
+ | 2 | React.memo gerekli yerlerde kullanılmış mı? | ✅/❌ | Orta |
109
+ | 3 | useMemo/useCallback gerekli yerlerde mi? | ✅/❌ | Orta |
110
+ | 4 | Büyük listeler virtualize ediliyor mu? | ✅/❌ | Yüksek |
111
+ | 5 | Key prop'ları stabil ve benzersiz mi? | ✅/❌ | Orta |
112
+ | 6 | Context değerleri memoize ediliyor mu? | ✅/❌ | Orta |
113
+ | 7 | Expensive hesaplamalar memoize mi? | ✅/❌ | Orta |
114
+
115
+ ### Kategori 3: Core Web Vitals
116
+
117
+ ```
118
+ 📊 Core Web Vitals Değerlendirmesi:
119
+
120
+ 1. LCP (Largest Contentful Paint) — Yükleme Hızı:
121
+ ├── Hero image/banner optimize mi?
122
+ ├── Critical CSS inline mı?
123
+ ├── Font loading stratejisi: [swap/block/optional]
124
+ ├── Preload kullanımı: [var/yok]
125
+ ├── Server-side rendering/static generation: [var/yok]
126
+ └── Öneri: [aksiyon listesi]
127
+
128
+ 2. INP (Interaction to Next Paint) — Etkileşim Hızı:
129
+ ├── Long task'lar var mı? (>50ms)
130
+ ├── Event handler'lar optimize mi?
131
+ ├── Heavy computation main thread'de mi?
132
+ ├── Debounce/throttle kullanımı: [var/yok]
133
+ └── Öneri: [aksiyon listesi]
134
+
135
+ 3. CLS (Cumulative Layout Shift) — Görsel Stabilite:
136
+ ├── Görsel boyutları belirtilmiş mi? (width/height)
137
+ ├── Font yüklenirken layout shift var mı?
138
+ ├── Dynamic content ekleme shift yaratıyor mu?
139
+ ├── Skeleton/placeholder kullanımı: [var/yok]
140
+ └── Öneri: [aksiyon listesi]
141
+ ```
142
+
143
+ ### Kategori 4: Network & Caching
144
+
145
+ ```
146
+ 🌐 Network & Caching:
147
+
148
+ 1. API Çağrıları:
149
+ ├── Gereksiz/duplicate API çağrıları: [var/yok]
150
+ ├── Waterfall request'ler: [var/yok — paralelize edilebilir mi?]
151
+ ├── Cache stratejisi: [TanStack Query staleTime, SWR revalidate vs.]
152
+ ├── Optimistic update: [kullanılıyor mu?]
153
+ └── Prefetching: [var/yok]
154
+
155
+ 2. Static Asset Caching:
156
+ ├── Cache-Control header'ları: [var/yok]
157
+ ├── Content hash (fingerprinting): [var/yok]
158
+ ├── CDN kullanımı: [var/yok]
159
+ └── Service Worker: [var/yok]
160
+
161
+ 3. Data Loading:
162
+ ├── Skeleton/loading state'leri: [var/yok]
163
+ ├── Progressive loading: [var/yok]
164
+ ├── Pagination vs infinite scroll: [hangi yaklaşım]
165
+ └── Server-side data fetching: [SSR/SSG/ISR]
166
+ ```
167
+
168
+ ### Kategori 5: Görsel & Asset Optimizasyonu
169
+
170
+ ```
171
+ 🖼️ Asset Optimizasyonu:
172
+
173
+ 1. Görseller:
174
+ ├── Format: [PNG/JPG/WebP/AVIF]
175
+ ├── Responsive images (srcset): [var/yok]
176
+ ├── Lazy loading: [var/yok]
177
+ ├── Next/Image veya benzeri optimizasyon: [var/yok]
178
+ ├── Placeholder (blur/LQIP): [var/yok]
179
+ └── Boyut optimizasyonu: [büyük görseller var mı?]
180
+
181
+ 2. Font'lar:
182
+ ├── Font format: [woff2 mi?]
183
+ ├── Subset kullanımı: [var/yok]
184
+ ├── font-display stratejisi: [swap/block/optional]
185
+ ├── Preload: [var/yok]
186
+ └── Variable font: [var/yok]
187
+
188
+ 3. SVG/İkon'lar:
189
+ ├── SVG sprite/inline: [hangi yaklaşım]
190
+ ├── İkon kütüphanesi tree-shakeable mi?
191
+ └── Gereksiz metadata temizlenmiş mi?
192
+ ```
193
+
194
+ ---
195
+
196
+ ## Puanlama Sistemi
197
+
198
+ Her kategori için 0-100 puan ver:
199
+
200
+ ```
201
+ 📊 Performans Raporu:
202
+
203
+ ┌──────────────────────┬───────┬──────────┐
204
+ │ Kategori │ Puan │ Seviye │
205
+ ├──────────────────────┼───────┼──────────┤
206
+ │ Bundle Size │ XX/100│ 🟢/🟡/🔴│
207
+ │ Render Performansı │ XX/100│ 🟢/🟡/🔴│
208
+ │ Core Web Vitals │ XX/100│ 🟢/🟡/🔴│
209
+ │ Network & Caching │ XX/100│ 🟢/🟡/🔴│
210
+ │ Asset Optimizasyonu │ XX/100│ 🟢/🟡/🔴│
211
+ ├──────────────────────┼───────┼──────────┤
212
+ │ GENEL │ XX/100│ 🟢/🟡/🔴│
213
+ └──────────────────────┴───────┴──────────┘
214
+
215
+ 🟢 90-100: Mükemmel
216
+ 🟡 60-89: İyileştirme alanı var
217
+ 🔴 0-59: Acil müdahale gerekli
218
+ ```
219
+
220
+ ---
221
+
222
+ ## Aksiyon Önerileri
223
+
224
+ Her sorun için öncelikli aksiyon planı sun:
225
+
226
+ ```
227
+ 🎯 Aksiyon Planı (Öncelik Sırasına Göre):
228
+
229
+ 🔴 Acil (Yüksek Etki + Düşük Efor):
230
+ 1. [Aksiyon] — Tahmini etki: [LCP -Xms, bundle -XKB vs.]
231
+ 2. [Aksiyon]
232
+
233
+ 🟡 Orta Vadeli (Yüksek Etki + Orta Efor):
234
+ 3. [Aksiyon]
235
+ 4. [Aksiyon]
236
+
237
+ 🟢 Uzun Vadeli (Orta Etki + Yüksek Efor):
238
+ 5. [Aksiyon]
239
+ 6. [Aksiyon]
240
+ ```
241
+
242
+ ---
243
+
244
+ ## Çıktı Formatı
245
+
246
+ 1. **Genel skor** — Hızlı bakış puanlama tablosu
247
+ 2. **Kategori detayları** — Her kategori için kontrol listesi sonuçları
248
+ 3. **Sorun listesi** — Öncelik sırasına göre bulunan sorunlar
249
+ 4. **Aksiyon planı** — Efor/etki matrisine göre sıralı öneriler
250
+ 5. **Quick wins** — Hemen uygulanabilecek iyileştirmeler
@@ -0,0 +1,240 @@
1
+ # /refactor — Refactoring Skill'i
2
+
3
+ > **Tetikleyici:** `/refactor [dosya/modül]`
4
+ > **Amaç:** Belirtilen dosya veya modül için detaylı, güvenli bir refactor planı oluşturmak ve kullanıcı onayı ile uygulamak.
5
+ > **Çıktı:** Etki analizi + adım adım uygulama planı → Onay sonrası kod değişiklikleri
6
+
7
+ ---
8
+
9
+ ## Temel İlkeler
10
+
11
+ - **Asla direkt uygulamaya geçme.** Önce plan sun, onay al, sonra uygula.
12
+ - **Her adım bağımsız çalışır (deployable) olmalı.** Yarım kalan refactor, bozuk kod demektir.
13
+ - **Boy Scout Rule:** Dokunduğun dosyayı bulduğundan biraz daha iyi bırak — ama sadece dokunduğun dosyayı.
14
+ - **Mevcut testler kırılmamalı.** Refactor sonrası tüm testler geçmeli.
15
+
16
+ ---
17
+
18
+ ## Kullanım Formatları
19
+
20
+ ```
21
+ /refactor src/components/UserProfile.tsx
22
+ /refactor src/hooks/useAuth.ts
23
+ /refactor src/features/auth/ ← Tüm klasör
24
+ /refactor UserService ← Modül adı ile (AI dosyayı bulur)
25
+ ```
26
+
27
+ ---
28
+
29
+ ## Uygulama Adımları
30
+
31
+ ### Adım 1: Kapsam Belirleme
32
+
33
+ Hedef dosya/modülü oku ve şunları tespit et:
34
+
35
+ ```
36
+ 📋 Kapsam Analizi:
37
+ ├── Hedef dosya/modül: [dosya yolu]
38
+ ├── Dosya boyutu: [satır sayısı]
39
+ ├── Bağımlı dosyalar (import edenler): [liste]
40
+ ├── Bağımlılıklar (import edilenler): [liste]
41
+ ├── Mevcut test coverage: [var/yok, dosya yolu]
42
+ ├── Son değişiklik tarihi: [git log'dan]
43
+ └── Dosyanın rolü: [component, hook, util, service vs.]
44
+ ```
45
+
46
+ ### Adım 2: Sorun Tespiti
47
+
48
+ Refactor gerektiren sorunları kategorize et:
49
+
50
+ ```
51
+ 🔍 Tespit Edilen Sorunlar:
52
+
53
+ 🔴 Kritik (mutlaka düzeltilmeli):
54
+ - [Güvenlik açığı, data loss riski, ciddi performans sorunu]
55
+
56
+ 🟡 Önemli (düzeltilmesi önerilen):
57
+ - [Kod tekrarı, karmaşık mantık, okunabilirlik sorunu, deprecated API kullanımı]
58
+
59
+ 🟢 Kozmetik (isteğe bağlı):
60
+ - [Adlandırma, import sırası, formatting tutarsızlığı]
61
+ ```
62
+
63
+ ### Adım 3: Risk Değerlendirmesi
64
+
65
+ Her değişiklik için risk seviyesi belirle:
66
+
67
+ ```
68
+ ⚠️ Risk Değerlendirmesi:
69
+
70
+ Yüksek Risk:
71
+ - Auth, ödeme, veri kaybı riski olan alanlar → Ekstra dikkat, mutlaka test ile doğrula
72
+ - Breaking change içeren değişiklikler → Tüm kullanım yerlerini güncelle
73
+
74
+ Orta Risk:
75
+ - Paylaşılan component'ler, hook'lar → Etki analizi zorunlu
76
+ - Public API değişiklikleri → Tüm consumer'ları kontrol et
77
+
78
+ Düşük Risk:
79
+ - Kozmetik, adlandırma, dosya taşıma → Güvenle uygula
80
+ - Internal/private fonksiyon değişiklikleri → Sadece birim testi yeterli
81
+ ```
82
+
83
+ ### Adım 4: Etki Analizi
84
+
85
+ ```
86
+ 💥 Etki Analizi:
87
+
88
+ Bu refactor [N] dosyayı etkiliyor:
89
+ 1. [dosya yolu] → [ne değişecek] (Risk: [Yüksek/Orta/Düşük])
90
+ 2. [dosya yolu] → [ne değişecek] (Risk: [Yüksek/Orta/Düşük])
91
+ 3. ...
92
+
93
+ Bağımlılık Grafiği:
94
+ [hedef dosya] ← [import eden 1] ← [import eden 2]
95
+ ← [import eden 3]
96
+ ```
97
+
98
+ ### Adım 5: Uygulama Planı Sunumu
99
+
100
+ ```
101
+ 📝 Refactor Planı:
102
+
103
+ Uygulama Sırası (inside-out):
104
+ 1. [İlk değişecek dosya] → [ne yapılacak]
105
+ Doğrulama: [test komutu veya kontrol adımı]
106
+
107
+ 2. [İkinci dosya] → [ne yapılacak]
108
+ Doğrulama: [test komutu veya kontrol adımı]
109
+
110
+ 3. ...
111
+
112
+ Tahmini Etkilenen Dosya Sayısı: [N]
113
+ Breaking Change: [Var/Yok]
114
+ Geriye Dönük Uyumluluk: [Korunuyor/Kırılıyor — detay]
115
+
116
+ Bu planı onaylıyor musunuz? (Evet / Hayır / Değişiklik öner)
117
+ ```
118
+
119
+ ### Adım 6: Onay Sonrası Uygulama
120
+
121
+ Kullanıcı onayladıktan sonra:
122
+
123
+ 1. **Types/interfaces** → En derin bağımlılıktan başla
124
+ 2. **Services/utils** → İş mantığı katmanı
125
+ 3. **Hooks** → State ve side-effect katmanı
126
+ 4. **Components** → UI katmanı
127
+ 5. **Tests** → Güncelle veya yeni test ekle
128
+
129
+ Her adım sonrası:
130
+ - Değişikliği göster (önce/sonra karşılaştırması)
131
+ - "Bu değişikliği uyguladıktan sonra devam edelim mi?" sor (büyük refactor'larda)
132
+
133
+ ---
134
+
135
+ ## Refactor Tipleri ve Stratejileri
136
+
137
+ ### Component Refactor
138
+ ```
139
+ Kontrol listesi:
140
+ □ Component 150 satırı aşıyor mu? → Parçala
141
+ □ Birden fazla sorumluluk var mı? → Single Responsibility uygula
142
+ □ Props 5'ten fazla mı? → Composition pattern veya compound component düşün
143
+ □ Aynı logic birden fazla component'te mi? → Custom hook'a taşı
144
+ □ Inline style veya magic number var mı? → Token/theme sistemine taşı
145
+ □ Erişilebilirlik eksik mi? → ARIA, semantik HTML ekle
146
+ ```
147
+
148
+ ### Hook Refactor
149
+ ```
150
+ Kontrol listesi:
151
+ □ Hook birden fazla concern yönetiyor mu? → Ayır
152
+ □ useEffect'te karmaşık logic var mı? → Custom hook'a taşı veya parçala
153
+ □ Cleanup fonksiyonu eksik mi? → Ekle
154
+ □ Dependency array doğru mu? → Kontrol et
155
+ □ Gereksiz re-render'a yol açıyor mu? → Optimize et
156
+ ```
157
+
158
+ ### State Refactor
159
+ ```
160
+ Kontrol listesi:
161
+ □ Prop drilling 3+ seviye mi? → Context veya state lib'e taşı
162
+ □ Server state client state ile karışmış mı? → Ayır (TanStack Query vs.)
163
+ □ Derived state hesaplanıyor mu? → useMemo veya selector kullan
164
+ □ Form state elle yönetiliyor mu? → Form library'ye taşı
165
+ □ URL'de olması gereken state local'de mi? → URL'e taşı
166
+ ```
167
+
168
+ ### Dosya/Modül Yapısı Refactor
169
+ ```
170
+ Kontrol listesi:
171
+ □ Feature-based yapıya geçiş gerekli mi?
172
+ □ Barrel export (index.ts) tree-shaking'i bozuyor mu?
173
+ □ Circular dependency var mı?
174
+ □ Dosya adlandırma convention'a uyuyor mu?
175
+ □ Co-location prensibi sağlanıyor mu?
176
+ ```
177
+
178
+ ---
179
+
180
+ ## Büyük Dosya Refactor Stratejisi
181
+
182
+ ### 150 satırdan kısa dosyalar
183
+ → Dosyanın tamamını yeniden yazabilirsin.
184
+
185
+ ### 150-500 satır arası dosyalar
186
+ → Sadece değişen bölümleri diff/patch formatında göster.
187
+ ```
188
+ 📄 [dosya yolu] (satır X-Y arası)
189
+ // Mevcut kod:
190
+ [mevcut kod bloğu]
191
+
192
+ // Önerilen değişiklik:
193
+ [yeni kod bloğu]
194
+
195
+ // Neden: [değişiklik sebebi]
196
+ ```
197
+
198
+ ### 500 satırdan uzun dosyalar
199
+ → Dosyayı bölümlere ayır, sadece ilgili bölümü göster.
200
+ → Asla tüm dosyayı yeniden yazmaya çalışma.
201
+ → Parçalama (extraction) stratejisi öner.
202
+
203
+ ---
204
+
205
+ ## İyileştirme Kapsamı Kuralları
206
+
207
+ ### Sessizce Yapılabilecekler (sormadan)
208
+ - Import sıralamasını düzelt
209
+ - Kullanılmayan import'ları kaldır
210
+ - Tip hatalarını düzelt (any → doğru tip)
211
+ - Basit adlandırma iyileştirmeleri
212
+
213
+ ### Sorarak Yapılacaklar (davranış değiştirebilir)
214
+ - Deprecated API kullanımını güncelle
215
+ - Basit performans iyileştirmeleri (gereksiz re-render düzeltme)
216
+ - Eksik error handling ekleme
217
+
218
+ ### Yapılmayacaklar (açıkça istenmediği sürece)
219
+ - State management yaklaşımını değiştirme
220
+ - Farklı bir kütüphaneye migration
221
+ - İlgisiz dosyalara dallanma
222
+ - Tüm proje yapısını değiştirme
223
+
224
+ ---
225
+
226
+ ## Çıktı Formatı
227
+
228
+ Refactor planı her zaman şu sırada sunulur:
229
+
230
+ 1. **Kapsam Özeti** — Ne refactor edilecek, neden
231
+ 2. **Sorun Listesi** — Kategorize edilmiş sorunlar
232
+ 3. **Etki Analizi** — Hangi dosyalar etkilenecek
233
+ 4. **Risk Değerlendirmesi** — Her değişikliğin risk seviyesi
234
+ 5. **Uygulama Planı** — Adım adım sıralı plan
235
+ 6. **Onay Talebi** — Kullanıcıdan onay bekle
236
+
237
+ Onay sonrası her adımda:
238
+ - Önce/sonra karşılaştırması
239
+ - Değişiklik sebebi açıklaması
240
+ - Sonraki adıma geçiş onayı (büyük refactor'larda)