@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,257 @@
1
+ # /commit — Akıllı Commit Skill'i
2
+
3
+ > **Tetikleyici:** `/commit`
4
+ > **Amaç:** Mevcut değişiklikleri analiz ederek uygun, anlamlı bir commit mesajı önermek ve kullanıcı onayıyla commit oluşturmak.
5
+ > **Çıktı:** Commit mesaj önerisi → Onay → Commit
6
+
7
+ ---
8
+
9
+ ## Temel İlkeler
10
+
11
+ - **Commit mesajı her zaman İngilizce olmalı** (proje kurallarında farklı bir dil belirtilmediği sürece).
12
+ - **Proje kuralları öncelikli.** `project-rules.md` dosyasında Git/commit kuralları varsa onlara uy.
13
+ - **Conventional Commits formatı varsayılan.** Proje kurallarında farklı bir format belirtilmediği sürece.
14
+ - **Asla otomatik commit yapma.** Önce öneri sun, onay al, sonra commit et.
15
+
16
+ ---
17
+
18
+ ## Uygulama Adımları
19
+
20
+ ### Adım 1: Proje Commit Convention Tespiti
21
+
22
+ Önce projedeki mevcut commit kurallarını tespit et:
23
+
24
+ ```
25
+ Kontrol sırası:
26
+ 1. project-rules.md → "Git Kuralları" bölümü var mı?
27
+ 2. .commitlintrc / commitlint.config.js → Commitlint kuralları var mı?
28
+ 3. .czrc / .cz.json / package.json "config.commitizen" → Commitizen config var mı?
29
+ 4. Son 10-15 commit mesajını incele (git log --oneline -15) → Mevcut pattern ne?
30
+ 5. CONTRIBUTING.md → Commit format rehberi var mı?
31
+ 6. Husky / lint-staged → Pre-commit hook'lar var mı?
32
+ ```
33
+
34
+ **Tespit sonuçlarını not al:**
35
+ - Commit format: [Conventional Commits / Gitmoji / Serbest / Özel format]
36
+ - Dil: [İngilizce / Türkçe / Karma]
37
+ - Scope zorunlu mu: [Evet / Hayır]
38
+ - Body/footer convention: [var/yok]
39
+ - Breaking change formatı: [var/yok]
40
+ - Issue/ticket referansı: [var/yok, format: #123 / JIRA-123 / LINEAR-123]
41
+
42
+ ### Adım 2: Değişiklikleri Analiz Et
43
+
44
+ Aşağıdaki git komutlarını çalıştır:
45
+
46
+ ```bash
47
+ # Staged ve unstaged değişiklikleri gör
48
+ git status
49
+
50
+ # Staged değişikliklerin detayı
51
+ git diff --cached
52
+
53
+ # Unstaged değişikliklerin detayı (staged yoksa)
54
+ git diff
55
+
56
+ # Yeni eklenen dosyalar
57
+ git ls-files --others --exclude-standard
58
+ ```
59
+
60
+ **Değişiklik analizi:**
61
+ - Hangi dosyalar değişmiş?
62
+ - Değişiklik tipi ne? (yeni özellik, bug fix, refactor, stil, test, docs, chore)
63
+ - Kaç dosya etkilenmiş?
64
+ - Breaking change var mı?
65
+ - Birden fazla bağımsız değişiklik var mı? (ayrı commit önerisi gerekebilir)
66
+
67
+ ### Adım 3: Commit Mesajı Oluştur
68
+
69
+ #### Conventional Commits Formatı (Varsayılan)
70
+
71
+ ```
72
+ <type>(<scope>): <description>
73
+
74
+ [optional body]
75
+
76
+ [optional footer(s)]
77
+ ```
78
+
79
+ **Type seçimi:**
80
+
81
+ | Type | Kullanım |
82
+ |------|----------|
83
+ | `feat` | Yeni özellik ekleme |
84
+ | `fix` | Bug düzeltme |
85
+ | `refactor` | Kod yapısı değişikliği (davranış değişmez) |
86
+ | `style` | Formatlama, boşluk, noktalama (kod değişmez) |
87
+ | `docs` | Dokümantasyon değişikliği |
88
+ | `test` | Test ekleme/düzeltme |
89
+ | `chore` | Build, CI, dependency, config değişiklikleri |
90
+ | `perf` | Performans iyileştirmesi |
91
+ | `ci` | CI/CD pipeline değişiklikleri |
92
+ | `build` | Build sistemi veya bağımlılık değişiklikleri |
93
+ | `revert` | Önceki commit'i geri alma |
94
+
95
+ **Scope belirleme:**
96
+ - Değişiklik tek bir modül/feature'a aitse: `feat(auth): add login form validation`
97
+ - Değişiklik genel ise: `fix: resolve memory leak in event listeners`
98
+ - Proje scope convention'ı varsa ona uy
99
+
100
+ **Description kuralları:**
101
+ - İngilizce, küçük harfle başla
102
+ - Imperative mood kullan ("add" not "added", "fix" not "fixed")
103
+ - 50 karakteri geçme (type ve scope dahil ~72 karakter)
104
+ - Nokta ile bitirme
105
+ - "Ne" yapıldığını değil "neden" yapıldığını vurgula (mümkünse)
106
+
107
+ **Body kuralları (opsiyonel):**
108
+ - Description yeterli değilse detay ekle
109
+ - "Ne" ve "neden" sorusuna cevap ver
110
+ - 72 karakter satır limiti
111
+ - Boş satırla description'dan ayır
112
+
113
+ **Footer kuralları (opsiyonel):**
114
+ - Breaking change: `BREAKING CHANGE: <açıklama>`
115
+ - Issue referansı: `Closes #123`, `Fixes #456`, `Refs JIRA-789`
116
+
117
+ ### Adım 4: Öneriyi Sun
118
+
119
+ Kullanıcıya şu formatta sun:
120
+
121
+ ```
122
+ 📋 Değişiklik Özeti:
123
+ - [N] dosya değişti
124
+ - [kısa açıklama]
125
+
126
+ 💬 Commit Mesajı Önerisi:
127
+
128
+ feat(auth): add email validation to login form
129
+
130
+ Add Zod schema validation for email and password fields.
131
+ Display inline error messages on invalid input.
132
+
133
+ Closes #42
134
+
135
+ ---
136
+ Bu mesajı kullanmak ister misiniz?
137
+ (E) Onayla | (D) Düzenle | (İ) İptal
138
+ ```
139
+
140
+ **Birden fazla bağımsız değişiklik varsa:**
141
+
142
+ ```
143
+ ⚠️ Birden fazla bağımsız değişiklik tespit ettim.
144
+ Bunları ayrı commit'lere ayırmayı öneriyorum:
145
+
146
+ Commit 1: feat(auth): add email validation to login form
147
+ Dosyalar: src/features/auth/LoginForm.tsx, src/schemas/auth.ts
148
+
149
+ Commit 2: fix(ui): resolve button hover state on mobile
150
+ Dosyalar: src/components/Button.tsx
151
+
152
+ Ayrı commit'ler olarak mı, tek commit mi oluşturalım?
153
+ ```
154
+
155
+ ### Adım 5: Commit Oluştur
156
+
157
+ Kullanıcı onayladıktan sonra:
158
+
159
+ ```bash
160
+ # Değişiklikleri stage'le (henüz staged değilse)
161
+ git add <ilgili dosyalar>
162
+
163
+ # Commit oluştur
164
+ git commit -m "<onaylanan mesaj>"
165
+ ```
166
+
167
+ **Dikkat:**
168
+ - `git add .` veya `git add -A` kullanma — sadece ilgili dosyaları stage'le
169
+ - Sensitive dosyaları (.env, credentials) commit'leme, uyar
170
+ - Pre-commit hook varsa ve başarısız olursa, sorunu düzelt ve YENİ commit oluştur (amend yapma)
171
+
172
+ ---
173
+
174
+ ## Özel Durumlar
175
+
176
+ ### Gitmoji Projesi
177
+
178
+ Projede gitmoji kullanılıyorsa:
179
+
180
+ ```
181
+ 🎨 :art: — Kod yapısı/formatı iyileştirme
182
+ ⚡ :zap: — Performans iyileştirme
183
+ 🔥 :fire: — Kod/dosya silme
184
+ 🐛 :bug: — Bug düzeltme
185
+ ✨ :sparkles: — Yeni özellik
186
+ 📝 :memo: — Dokümantasyon
187
+ 🚀 :rocket: — Deploy
188
+ 💄 :lipstick: — UI/stil güncelleme
189
+ 🎉 :tada: — İlk commit
190
+ ✅ :white_check_mark: — Test ekleme/düzeltme
191
+ 🔒 :lock: — Güvenlik düzeltme
192
+ ♻️ :recycle: — Refactor
193
+ ➕ :heavy_plus_sign: — Dependency ekleme
194
+ ➖ :heavy_minus_sign: — Dependency silme
195
+ 🔧 :wrench: — Config değişikliği
196
+ ```
197
+
198
+ ### Monorepo Projeleri
199
+
200
+ Scope olarak paket/app adını kullan:
201
+
202
+ ```
203
+ feat(web): add dark mode toggle
204
+ fix(ui-kit): resolve button focus ring color
205
+ chore(shared): update zod to v4
206
+ ```
207
+
208
+ ### Boş Değişiklik
209
+
210
+ Stage'de veya working tree'de değişiklik yoksa:
211
+
212
+ ```
213
+ ℹ️ Commit edilecek değişiklik bulunamadı.
214
+ Tüm değişiklikler zaten commit edilmiş görünüyor.
215
+ ```
216
+
217
+ ### Merge Conflict Sonrası
218
+
219
+ ```
220
+ ⚠️ Merge sonrası commit tespit ettim.
221
+ Varsayılan merge commit mesajını kullanmanızı öneriyorum:
222
+
223
+ Merge branch 'feature/auth' into develop
224
+
225
+ Özelleştirmek ister misiniz?
226
+ ```
227
+
228
+ ---
229
+
230
+ ## Kötü vs İyi Commit Mesajları
231
+
232
+ ```
233
+ ❌ Kötü:
234
+ - "fix bug"
235
+ - "update code"
236
+ - "changes"
237
+ - "wip"
238
+ - "asdfgh"
239
+ - "fix: fixed the thing that was broken"
240
+
241
+ ✅ İyi:
242
+ - "fix(cart): prevent duplicate items on rapid add-to-cart clicks"
243
+ - "feat(search): add debounced search with 300ms delay"
244
+ - "refactor(api): extract auth middleware into separate module"
245
+ - "chore(deps): upgrade next.js from 14.2 to 15.0"
246
+ - "docs(readme): add environment setup instructions"
247
+ ```
248
+
249
+ ---
250
+
251
+ ## Çıktı Formatı
252
+
253
+ 1. **Proje convention tespiti** — Mevcut commit formatı ne?
254
+ 2. **Değişiklik özeti** — Hangi dosyalar, ne tip değişiklik
255
+ 3. **Commit mesaj önerisi** — Convention'a uygun, anlamlı mesaj
256
+ 4. **Kullanıcı onayı** — Onayla / Düzenle / İptal
257
+ 5. **Commit oluşturma** — Onay sonrası git commit
@@ -0,0 +1,322 @@
1
+ # /document — Dokümantasyon Skill'i
2
+
3
+ > **Tetikleyici:** `/document [dosya/modül/proje]`
4
+ > **Amaç:** JSDoc/TSDoc comment'leri, README veya API dokümantasyonu üretmek.
5
+ > **Çıktı:** Mevcut dokümantasyon stiline uygun, kapsamlı dokümantasyon
6
+
7
+ ---
8
+
9
+ ## Temel İlkeler
10
+
11
+ - **Mevcut dokümantasyon stiline uy.** Projede JSDoc varsa JSDoc, TSDoc varsa TSDoc devam et.
12
+ - **Gereksiz yorum yazma.** Kodu açıklayan değil, "neden"i açıklayan yorumlar yaz.
13
+ - **Güncel tut.** Kod değiştiğinde dokümantasyonun da güncellenmesi gerektiğini belirt.
14
+ - **Tutarlılık.** Tüm dokümantasyon aynı formatta ve dilde olsun.
15
+
16
+ ---
17
+
18
+ ## Kullanım Formatları
19
+
20
+ ```
21
+ /document src/components/Button.tsx ← Dosya seviyesi JSDoc/TSDoc
22
+ /document src/hooks/ ← Klasör seviyesi (tüm dosyalar)
23
+ /document src/services/api.ts ← API service dokümantasyonu
24
+ /document project ← Proje README oluştur
25
+ /document api ← API endpoint dokümantasyonu
26
+ /document UserService ← Modül adı ile
27
+ ```
28
+
29
+ ---
30
+
31
+ ## Uygulama Adımları
32
+
33
+ ### Adım 1: Hedef Analizi
34
+
35
+ ```
36
+ 📋 Dokümantasyon Hedefi:
37
+ ├── Hedef: [dosya / klasör / proje / API]
38
+ ├── Mevcut dokümantasyon: [var/yok, format]
39
+ ├── Dokümantasyon dili: [Türkçe / İngilizce — projeden tespit et]
40
+ ├── Mevcut JSDoc/TSDoc stili: [format örneği]
41
+ └── Hedef kitle: [Geliştirici / Son kullanıcı / Her ikisi]
42
+ ```
43
+
44
+ ### Adım 2: Dokümantasyon Tipi Belirleme
45
+
46
+ Hedefe göre uygun dokümantasyon tipini seç:
47
+
48
+ | Hedef | Dokümantasyon Tipi |
49
+ |-------|-------------------|
50
+ | Tekil dosya (component/hook/util) | JSDoc/TSDoc inline comment'leri |
51
+ | Service/API katmanı | API dokümantasyonu + JSDoc |
52
+ | Tüm proje | README.md + CONTRIBUTING.md |
53
+ | Kütüphane/paket | API reference + kullanım örnekleri |
54
+ | Klasör | Her dosya için JSDoc + klasör INDEX.md |
55
+
56
+ ---
57
+
58
+ ## Dosya Seviyesi Dokümantasyon (JSDoc/TSDoc)
59
+
60
+ ### Component Dokümantasyonu
61
+
62
+ ```typescript
63
+ /**
64
+ * Kullanıcı profil kartını görüntüler.
65
+ *
66
+ * Avatar, isim, rol bilgisi ve aksiyonları içerir.
67
+ * Responsive tasarıma sahiptir ve mobilde stack layout'a geçer.
68
+ *
69
+ * @example
70
+ * ```tsx
71
+ * <UserCard
72
+ * user={userData}
73
+ * onEdit={handleEdit}
74
+ * variant="compact"
75
+ * />
76
+ * ```
77
+ *
78
+ * @see {@link UserCardProps} — Props detayları
79
+ * @see {@link useUser} — İlgili hook
80
+ */
81
+ ```
82
+
83
+ ### Props/Interface Dokümantasyonu
84
+
85
+ ```typescript
86
+ /**
87
+ * UserCard component'inin prop tanımları.
88
+ */
89
+ interface UserCardProps {
90
+ /** Görüntülenecek kullanıcı verisi */
91
+ user: User;
92
+
93
+ /** Kart görünüm varyantı
94
+ * - `default`: Tam genişlik, tüm bilgiler
95
+ * - `compact`: Küçük boyut, sadece temel bilgiler
96
+ * - `minimal`: Sadece avatar ve isim
97
+ * @default 'default'
98
+ */
99
+ variant?: 'default' | 'compact' | 'minimal';
100
+
101
+ /** Düzenleme butonuna tıklandığında çağrılır */
102
+ onEdit?: (userId: string) => void;
103
+
104
+ /** Kartın yüklenme durumunu gösterir
105
+ * @default false
106
+ */
107
+ isLoading?: boolean;
108
+ }
109
+ ```
110
+
111
+ ### Hook Dokümantasyonu
112
+
113
+ ```typescript
114
+ /**
115
+ * Kullanıcı kimlik doğrulama state'ini ve işlemlerini yönetir.
116
+ *
117
+ * Login, logout, token yenileme ve kullanıcı bilgisi sorgulama
118
+ * işlemlerini tek bir hook altında toplar.
119
+ *
120
+ * @example
121
+ * ```tsx
122
+ * function LoginPage() {
123
+ * const { user, login, logout, isAuthenticated } = useAuth();
124
+ *
125
+ * if (isAuthenticated) {
126
+ * return <Dashboard user={user} onLogout={logout} />;
127
+ * }
128
+ * return <LoginForm onSubmit={login} />;
129
+ * }
130
+ * ```
131
+ *
132
+ * @returns Auth state ve işlemleri
133
+ * @throws {AuthError} Token geçersiz olduğunda
134
+ *
135
+ * @see {@link AuthProvider} — Gerekli context provider
136
+ * @see {@link usePermissions} — İlgili yetki hook'u
137
+ */
138
+ ```
139
+
140
+ ### Utility/Service Dokümantasyonu
141
+
142
+ ```typescript
143
+ /**
144
+ * Tarih değerini kullanıcı dostu formata dönüştürür.
145
+ *
146
+ * Locale-aware formatlama yapar ve relative time desteği sunar.
147
+ *
148
+ * @param date - Formatlanacak tarih (Date, string veya timestamp)
149
+ * @param options - Formatlama seçenekleri
150
+ * @param options.format - Çıktı formatı ('short' | 'long' | 'relative')
151
+ * @param options.locale - Hedef locale (varsayılan: 'tr-TR')
152
+ * @returns Formatlanmış tarih string'i
153
+ *
154
+ * @example
155
+ * ```ts
156
+ * formatDate(new Date()) // "17 Şubat 2026"
157
+ * formatDate('2026-01-01', { format: 'relative' }) // "47 gün önce"
158
+ * formatDate(1708128000, { format: 'short' }) // "17.02.2026"
159
+ * ```
160
+ *
161
+ * @throws {TypeError} Geçersiz tarih değeri verildiğinde
162
+ */
163
+ ```
164
+
165
+ ---
166
+
167
+ ## Proje Seviyesi Dokümantasyon
168
+
169
+ ### README.md Şablonu
170
+
171
+ ```markdown
172
+ # Proje Adı
173
+
174
+ Kısa açıklama — projenin ne yaptığı, 1-2 cümle.
175
+
176
+ ## Özellikler
177
+
178
+ - Özellik 1
179
+ - Özellik 2
180
+ - Özellik 3
181
+
182
+ ## Teknolojiler
183
+
184
+ | Kategori | Teknoloji |
185
+ |----------|-----------|
186
+ | Framework | Next.js 15 |
187
+ | Styling | Tailwind CSS 4 |
188
+ | State | Zustand |
189
+ | Test | Vitest + Testing Library |
190
+
191
+ ## Başlangıç
192
+
193
+ ### Gereksinimler
194
+
195
+ - Node.js >= 20
196
+ - pnpm >= 9
197
+
198
+ ### Kurulum
199
+
200
+ \```bash
201
+ pnpm install
202
+ cp .env.example .env.local
203
+ pnpm dev
204
+ \```
205
+
206
+ ### Ortam Değişkenleri
207
+
208
+ | Değişken | Açıklama | Zorunlu |
209
+ |----------|----------|---------|
210
+ | `DATABASE_URL` | PostgreSQL bağlantı URL'i | Evet |
211
+ | `NEXT_PUBLIC_API_URL` | API base URL | Evet |
212
+
213
+ ## Proje Yapısı
214
+
215
+ \```
216
+ src/
217
+ ├── app/ → Next.js App Router sayfaları
218
+ ├── components/ → Paylaşılan UI component'leri
219
+ ├── features/ → Feature-based modüller
220
+ ├── hooks/ → Custom React hook'ları
221
+ ├── lib/ → Utility ve helper fonksiyonlar
222
+ ├── services/ → API service katmanı
223
+ ├── store/ → Global state yönetimi
224
+ └── types/ → TypeScript tip tanımları
225
+ \```
226
+
227
+ ## Script'ler
228
+
229
+ | Komut | Açıklama |
230
+ |-------|----------|
231
+ | `pnpm dev` | Development server başlat |
232
+ | `pnpm build` | Production build oluştur |
233
+ | `pnpm test` | Test'leri çalıştır |
234
+ | `pnpm lint` | Linting kontrolü |
235
+
236
+ ## Katkıda Bulunma
237
+
238
+ [CONTRIBUTING.md](./CONTRIBUTING.md) dosyasına bakın.
239
+ ```
240
+
241
+ ### API Dokümantasyonu Şablonu
242
+
243
+ ```markdown
244
+ # API Dokümantasyonu
245
+
246
+ ## Base URL
247
+ \`\`\`
248
+ Development: http://localhost:3000/api
249
+ Production: https://api.example.com
250
+ \`\`\`
251
+
252
+ ## Endpoints
253
+
254
+ ### Users
255
+
256
+ #### GET /api/users
257
+ Tüm kullanıcıları listeler.
258
+
259
+ **Query Parameters:**
260
+ | Parametre | Tip | Zorunlu | Açıklama |
261
+ |-----------|-----|---------|----------|
262
+ | page | number | Hayır | Sayfa numarası (varsayılan: 1) |
263
+ | limit | number | Hayır | Sayfa başına kayıt (varsayılan: 20) |
264
+ | search | string | Hayır | İsim veya email ile arama |
265
+
266
+ **Response (200):**
267
+ \`\`\`json
268
+ {
269
+ "data": [{ "id": "1", "name": "John", "email": "john@example.com" }],
270
+ "meta": { "total": 100, "page": 1, "limit": 20 }
271
+ }
272
+ \`\`\`
273
+
274
+ **Error Responses:**
275
+ | Status | Code | Açıklama |
276
+ |--------|------|----------|
277
+ | 401 | UNAUTHORIZED | Token eksik veya geçersiz |
278
+ | 500 | INTERNAL_ERROR | Sunucu hatası |
279
+ ```
280
+
281
+ ---
282
+
283
+ ## Dokümantasyon Kalite Kuralları
284
+
285
+ ### YAPILACAKLAR
286
+ - Her public fonksiyon/component'e `@example` ekle
287
+ - Parametre ve return tiplerini açıkla
288
+ - Side effect'leri belirt (`@throws`, `@fires`, `@emits`)
289
+ - İlgili dosyalara cross-reference ver (`@see`)
290
+ - Deprecation uyarılarını ekle (`@deprecated`)
291
+
292
+ ### YAPILMAYACAKLAR
293
+ - Kodun ne yaptığını tekrar etme (kodu oku zaten anlarsın)
294
+ - Getter/setter gibi trivial fonksiyonları dokümante etme
295
+ - Private/internal fonksiyonları aşırı dokümante etme
296
+ - Tarihi bilgi ekleme ("Bu fonksiyon v2.0'da eklendi" gibi — git log var)
297
+
298
+ ### İyi vs Kötü Dokümantasyon
299
+
300
+ ```typescript
301
+ // ❌ Kötü — kodu tekrar ediyor
302
+ /** Kullanıcı ID'sini döndürür */
303
+ function getUserId(): string { ... }
304
+
305
+ // ✅ İyi — "neden" ve "ne zaman" açıklıyor
306
+ /**
307
+ * Oturum açmış kullanıcının ID'sini döndürür.
308
+ * Auth context'ten okur; context dışında kullanılırsa hata fırlatır.
309
+ * @throws {AuthError} AuthProvider dışında çağrıldığında
310
+ */
311
+ function getUserId(): string { ... }
312
+ ```
313
+
314
+ ---
315
+
316
+ ## Çıktı Formatı
317
+
318
+ 1. **Dokümantasyon planı** — Ne dokümante edilecek, hangi formatta
319
+ 2. **Mevcut stil analizi** — Projedeki dokümantasyon convention'ı
320
+ 3. **Kullanıcı onayı** — Plan uygun mu?
321
+ 4. **Dokümantasyon üretimi** — İnline JSDoc veya ayrı dosya
322
+ 5. **Gözden geçirme** — Eksik/tutarsız yer var mı kontrolü