@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.
- package/README.md +83 -0
- package/bin/cli.js +52 -0
- package/package.json +27 -0
- package/src/index.js +151 -0
- package/templates/.agents/skills/analyze/SKILL.md +328 -0
- package/templates/.agents/skills/commit/SKILL.md +257 -0
- package/templates/.agents/skills/document/SKILL.md +322 -0
- package/templates/.agents/skills/performance-check/SKILL.md +250 -0
- package/templates/.agents/skills/refactor/SKILL.md +240 -0
- package/templates/.agents/skills/security-scan/SKILL.md +319 -0
- package/templates/.agents/skills/write-tests/SKILL.md +389 -0
- package/templates/AGENTS.md +823 -0
|
@@ -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)
|