@untools/commitgen 0.1.1 → 0.2.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 +378 -21
- package/dist/index.js +119 -19
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/utils/commit-history.d.ts +35 -0
- package/dist/utils/commit-history.js +165 -0
- package/dist/utils/commit-history.js.map +1 -0
- package/dist/utils/issue-tracker.d.ts +43 -0
- package/dist/utils/issue-tracker.js +207 -0
- package/dist/utils/issue-tracker.js.map +1 -0
- package/dist/utils/multi-commit.d.ts +40 -0
- package/dist/utils/multi-commit.js +274 -0
- package/dist/utils/multi-commit.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -19,6 +19,12 @@
|
|
|
19
19
|
- 🔜 Google Direct
|
|
20
20
|
- 🔜 Local LLMs (Ollama, LM Studio, etc.)
|
|
21
21
|
|
|
22
|
+
📜 **Commit History Learning**: Analyzes your past commits to personalize suggestions in your style.
|
|
23
|
+
|
|
24
|
+
🔄 **Multi-Commit Mode**: Intelligently splits staged changes into multiple atomic commits.
|
|
25
|
+
|
|
26
|
+
🎫 **Issue Tracker Integration**: Auto-links commits to Jira, GitHub, Linear, and GitLab issues from your branch name.
|
|
27
|
+
|
|
22
28
|
🎨 **Beautiful CLI**: Colorized output with interactive prompts using Inquirer
|
|
23
29
|
|
|
24
30
|
📊 **Smart Analysis**: Analyzes file patterns, additions/deletions, and git diffs
|
|
@@ -33,23 +39,27 @@ npm install -g @untools/commitgen
|
|
|
33
39
|
|
|
34
40
|
# Or use with npx
|
|
35
41
|
npx @untools/commitgen
|
|
36
|
-
|
|
42
|
+
````
|
|
37
43
|
|
|
38
44
|
## Quick Start
|
|
39
45
|
|
|
40
46
|
1. **Stage your changes**:
|
|
41
47
|
|
|
48
|
+
<!-- end list -->
|
|
49
|
+
|
|
42
50
|
```bash
|
|
43
51
|
git add .
|
|
44
52
|
```
|
|
45
53
|
|
|
46
54
|
2. **Generate commit message**:
|
|
47
55
|
|
|
56
|
+
<!-- end list -->
|
|
57
|
+
|
|
48
58
|
```bash
|
|
49
59
|
commitgen
|
|
50
60
|
```
|
|
51
61
|
|
|
52
|
-
That's it
|
|
62
|
+
That's it\! If it's your first time, CommitGen will automatically prompt you to configure your API key. The tool will then analyze your changes and suggest commit messages.
|
|
53
63
|
|
|
54
64
|
### First-Time Setup
|
|
55
65
|
|
|
@@ -67,7 +77,7 @@ Choose "Yes" to set up your configuration, or run `commitgen config` manually an
|
|
|
67
77
|
### Basic Commands
|
|
68
78
|
|
|
69
79
|
```bash
|
|
70
|
-
# Generate commit message (interactive)
|
|
80
|
+
# Generate commit message (interactive, all features enabled)
|
|
71
81
|
commitgen
|
|
72
82
|
|
|
73
83
|
# Commit and push in one command
|
|
@@ -89,9 +99,28 @@ commitgen --help
|
|
|
89
99
|
commitgen --version
|
|
90
100
|
```
|
|
91
101
|
|
|
102
|
+
### Command-Line Overrides
|
|
103
|
+
|
|
104
|
+
You can temporarily disable new features using flags:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Disable history learning for a single commit
|
|
108
|
+
commitgen --no-history
|
|
109
|
+
|
|
110
|
+
# Force or disable multi-commit mode
|
|
111
|
+
commitgen --multi-commit
|
|
112
|
+
commitgen --no-multi-commit
|
|
113
|
+
|
|
114
|
+
# Disable issue linking for a single commit
|
|
115
|
+
commitgen --no-issues
|
|
116
|
+
|
|
117
|
+
# Quick commit without any enhancements
|
|
118
|
+
commitgen --no-history --no-multi-commit --no-issues
|
|
119
|
+
```
|
|
120
|
+
|
|
92
121
|
### Configuration
|
|
93
122
|
|
|
94
|
-
The configuration file is stored at `~/.commitgenrc.json
|
|
123
|
+
The configuration file is stored at `~/.commitgenrc.json`. It stores both your provider settings and your preferences for new features.
|
|
95
124
|
|
|
96
125
|
```json
|
|
97
126
|
{
|
|
@@ -99,10 +128,17 @@ The configuration file is stored at `~/.commitgenrc.json`:
|
|
|
99
128
|
"provider": "vercel-google",
|
|
100
129
|
"model": "gemini-2.5-flash",
|
|
101
130
|
"apiKey": "optional-if-using-env-var"
|
|
131
|
+
},
|
|
132
|
+
"features": {
|
|
133
|
+
"historyLearning": true,
|
|
134
|
+
"multiCommit": true,
|
|
135
|
+
"issueTracking": true
|
|
102
136
|
}
|
|
103
137
|
}
|
|
104
138
|
```
|
|
105
139
|
|
|
140
|
+
You can disable features globally by setting them to `false` in this file.
|
|
141
|
+
|
|
106
142
|
### Environment Variables
|
|
107
143
|
|
|
108
144
|
You can use environment variables instead of storing API keys in the config:
|
|
@@ -145,26 +181,248 @@ Uses the [Vercel AI SDK](https://sdk.vercel.ai/) with Google's Gemini models.
|
|
|
145
181
|
## How It Works
|
|
146
182
|
|
|
147
183
|
1. **Analysis**: Scans your staged git changes
|
|
184
|
+
- File patterns (tests, docs, configs, components)
|
|
185
|
+
- Addition/deletion statistics
|
|
186
|
+
- Git diff content
|
|
187
|
+
2. **AI Generation**: Sends analysis to your configured AI provider
|
|
188
|
+
- Uses a specialized prompt for commit message generation
|
|
189
|
+
- Follows Conventional Commits specification
|
|
190
|
+
- Returns 3-5 contextual suggestions
|
|
191
|
+
3. **Selection**: Interactive prompt to choose or customize
|
|
192
|
+
- Select from AI-generated suggestions
|
|
193
|
+
- Write a custom message
|
|
194
|
+
- Confirm before committing
|
|
195
|
+
4. **Commit**: Executes git commit with your chosen message
|
|
196
|
+
- Optional: Push to remote with `--push` flag
|
|
197
|
+
- Optional: Skip hooks with `--noverify` flag
|
|
148
198
|
|
|
149
|
-
|
|
150
|
-
- Addition/deletion statistics
|
|
151
|
-
- Git diff content
|
|
199
|
+
## Core Features in Detail
|
|
152
200
|
|
|
153
|
-
|
|
201
|
+
### 📜 Commit History Learning
|
|
154
202
|
|
|
155
|
-
|
|
156
|
-
- Follows Conventional Commits specification
|
|
157
|
-
- Returns 3-5 contextual suggestions
|
|
203
|
+
CommitGen now analyzes your past commits to personalize suggestions in your style.
|
|
158
204
|
|
|
159
|
-
|
|
205
|
+
**How It Works**
|
|
160
206
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
207
|
+
- **Automatic Analysis**: Analyzes your last 50 commits to understand your patterns
|
|
208
|
+
- **Smart Caching**: Results cached for 5 minutes to maintain performance
|
|
209
|
+
- **Pattern Recognition**: Identifies your preferred:
|
|
210
|
+
- Commit types (feat, fix, chore, etc.)
|
|
211
|
+
- Scopes and naming conventions
|
|
212
|
+
- Subject length preferences
|
|
213
|
+
- Style preferences (capitalization, emojis, periods)
|
|
164
214
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
215
|
+
**Usage**
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
# Enabled by default
|
|
219
|
+
commitgen
|
|
220
|
+
|
|
221
|
+
# Disable for a single commit
|
|
222
|
+
commitgen --no-history
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**What Gets Personalized**
|
|
226
|
+
|
|
227
|
+
- **Type Selection**: Favors your most-used commit types
|
|
228
|
+
- **Subject Length**: Matches your typical message length
|
|
229
|
+
- **Capitalization**: Follows your capitalization style
|
|
230
|
+
- **Punctuation**: Respects your period usage preferences
|
|
231
|
+
|
|
232
|
+
**Example**
|
|
233
|
+
|
|
234
|
+
If your history shows:
|
|
235
|
+
|
|
236
|
+
- 60% of commits are `feat` type
|
|
237
|
+
- Average subject length: 45 characters
|
|
238
|
+
- 90% capitalize first letter
|
|
239
|
+
- 10% use periods
|
|
240
|
+
|
|
241
|
+
Then suggestions will be adjusted to match this style.
|
|
242
|
+
|
|
243
|
+
### 🔄 Multi-Commit Mode
|
|
244
|
+
|
|
245
|
+
Intelligently splits staged changes into multiple atomic commits for better git history.
|
|
246
|
+
|
|
247
|
+
**How It Works**
|
|
248
|
+
|
|
249
|
+
- **Automatic Detection**: Analyzes staged files for distinct concerns
|
|
250
|
+
- **Smart Grouping**: Groups files by:
|
|
251
|
+
- File type (tests, docs, configs, types)
|
|
252
|
+
- Directory structure
|
|
253
|
+
- Functional concerns (API, components, utils)
|
|
254
|
+
- **Logical Ordering**: Commits in the right order (types → config → features → tests → docs)
|
|
255
|
+
|
|
256
|
+
**Usage**
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
# Let CommitGen suggest splitting
|
|
260
|
+
commitgen
|
|
261
|
+
|
|
262
|
+
# Force multi-commit mode
|
|
263
|
+
commitgen --multi-commit
|
|
264
|
+
|
|
265
|
+
# Disable multi-commit mode
|
|
266
|
+
commitgen --no-multi-commit
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
**When It Triggers**
|
|
270
|
+
|
|
271
|
+
Multi-commit mode is suggested when:
|
|
272
|
+
|
|
273
|
+
- You have 4+ files changed
|
|
274
|
+
- Files belong to 2+ distinct concerns
|
|
275
|
+
|
|
276
|
+
**Example**
|
|
277
|
+
|
|
278
|
+
Staged Changes:
|
|
279
|
+
|
|
280
|
+
- `src/types.ts`
|
|
281
|
+
- `src/config.ts`
|
|
282
|
+
- `src/components/Button.tsx`
|
|
283
|
+
- `src/components/Button.test.tsx`
|
|
284
|
+
- `README.md`
|
|
285
|
+
|
|
286
|
+
Suggested Commits:
|
|
287
|
+
|
|
288
|
+
1. Type definition updates (1 file)
|
|
289
|
+
- `src/types.ts`
|
|
290
|
+
2. Configuration changes (1 file)
|
|
291
|
+
- `src/config.ts`
|
|
292
|
+
3. Component updates (1 file)
|
|
293
|
+
- `src/components/Button.tsx`
|
|
294
|
+
4. Test additions/updates (1 file)
|
|
295
|
+
- `src/components/Button.test.tsx`
|
|
296
|
+
5. Documentation updates (1 file)
|
|
297
|
+
- `README.md`
|
|
298
|
+
|
|
299
|
+
**Benefits**
|
|
300
|
+
|
|
301
|
+
- **Cleaner History**: Each commit has a single responsibility
|
|
302
|
+
- **Better Rollbacks**: Can revert specific changes without affecting others
|
|
303
|
+
- **Easier Reviews**: Smaller, focused commits are easier to review
|
|
304
|
+
- **Semantic Versioning**: Clear separation of features, fixes, and chores
|
|
305
|
+
|
|
306
|
+
### 🎫 Issue Tracker Integration
|
|
307
|
+
|
|
308
|
+
Auto-links commits to Jira/GitHub/Linear/GitLab issues from branch names.
|
|
309
|
+
|
|
310
|
+
**Supported Platforms**
|
|
311
|
+
|
|
312
|
+
- **Jira**
|
|
313
|
+
- Pattern: `PROJ-123` or `feature/PROJ-123-description`
|
|
314
|
+
- Format: `[PROJ-123]` in subject + footer
|
|
315
|
+
- **GitHub**
|
|
316
|
+
- Pattern: `#123`, `issue-123`, or `123-description`
|
|
317
|
+
- Format: `Closes #123` in footer (auto-closes issues)
|
|
318
|
+
- **Linear**
|
|
319
|
+
- Pattern: `TEAM-123` or `team/TEAM-123-description`
|
|
320
|
+
- Format: `[TEAM-123]` in subject
|
|
321
|
+
- **GitLab**
|
|
322
|
+
- Pattern: Same as GitHub
|
|
323
|
+
- Format: `Closes #123` in footer (auto-closes issues)
|
|
324
|
+
|
|
325
|
+
**How It Works**
|
|
326
|
+
|
|
327
|
+
- **Branch Detection**: Extracts issue ID from current branch name
|
|
328
|
+
- **Type Inference**: Suggests commit type based on branch prefix
|
|
329
|
+
- `feature/` → `feat`
|
|
330
|
+
- `fix/` or `bugfix/` → `fix`
|
|
331
|
+
- `hotfix/` → `fix`
|
|
332
|
+
- `docs/` → `docs`
|
|
333
|
+
- **Auto-Linking**: Adds proper references to commit message
|
|
334
|
+
|
|
335
|
+
**Usage**
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
# Enabled by default
|
|
339
|
+
commitgen
|
|
340
|
+
|
|
341
|
+
# Disable for a single commit
|
|
342
|
+
commitgen --no-issues
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
**Examples**
|
|
346
|
+
|
|
347
|
+
- **Jira Integration**
|
|
348
|
+
- Branch: `feature/AUTH-456-oauth-login`
|
|
349
|
+
- Result:
|
|
350
|
+
|
|
351
|
+
```
|
|
352
|
+
feat(auth): add OAuth2 authentication [AUTH-456]
|
|
353
|
+
|
|
354
|
+
Implemented OAuth2 flow with Google provider
|
|
355
|
+
|
|
356
|
+
Jira: AUTH-456
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
- **GitHub Integration**
|
|
360
|
+
- Branch: `fix/123-navigation-bug`
|
|
361
|
+
- Result:
|
|
362
|
+
|
|
363
|
+
```
|
|
364
|
+
fix(navigation): resolve routing issue
|
|
365
|
+
|
|
366
|
+
Fixed navigation bug causing incorrect redirects
|
|
367
|
+
|
|
368
|
+
Closes #123
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
- **Linear Integration**
|
|
372
|
+
- Branch: `ENG-789-refactor-api`
|
|
373
|
+
- Result:
|
|
374
|
+
|
|
375
|
+
```
|
|
376
|
+
refactor(api): simplify endpoint structure [ENG-789]
|
|
377
|
+
|
|
378
|
+
Restructured API endpoints for better organization
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
**Branch Naming Best Practices**
|
|
382
|
+
|
|
383
|
+
For best results, use conventional branch names:
|
|
384
|
+
|
|
385
|
+
```
|
|
386
|
+
# Jira
|
|
387
|
+
feature/PROJ-123-short-description
|
|
388
|
+
fix/PROJ-456-bug-description
|
|
389
|
+
hotfix/PROJ-789-critical-fix
|
|
390
|
+
|
|
391
|
+
# GitHub/GitLab
|
|
392
|
+
feature/123-new-feature
|
|
393
|
+
fix/456-bug-fix
|
|
394
|
+
docs/789-update-readme
|
|
395
|
+
|
|
396
|
+
# Linear
|
|
397
|
+
feature/TEAM-123-description
|
|
398
|
+
refactor/TEAM-456-cleanup
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
### Performance Optimizations
|
|
402
|
+
|
|
403
|
+
All new features are designed with performance in mind:
|
|
404
|
+
|
|
405
|
+
- **Commit History Learning**
|
|
406
|
+
- ✅ Cached Results: 5-minute TTL cache
|
|
407
|
+
- ✅ Limited Analysis: Only last 50 commits
|
|
408
|
+
- ✅ Async Processing: Non-blocking analysis
|
|
409
|
+
- ⚡ Impact: \<50ms overhead
|
|
410
|
+
- **Multi-Commit Mode**
|
|
411
|
+
- ✅ Lazy Evaluation: Only triggers when needed
|
|
412
|
+
- ✅ Pattern Matching: Fast regex-based detection
|
|
413
|
+
- ✅ Incremental Git Ops: Efficient file-specific diffs
|
|
414
|
+
- ⚡ Impact: \~100ms for large changesets
|
|
415
|
+
- **Issue Tracker Integration**
|
|
416
|
+
- ✅ Single Git Call: One branch name fetch
|
|
417
|
+
- ✅ Regex Parsing: No external API calls
|
|
418
|
+
- ✅ Result Caching: Cached per session
|
|
419
|
+
- ⚡ Impact: \<10ms overhead
|
|
420
|
+
|
|
421
|
+
**Combined Overhead**
|
|
422
|
+
|
|
423
|
+
- Typical usage: **+150ms total**
|
|
424
|
+
- Large projects: **+250ms total**
|
|
425
|
+
- All features disabled: **0ms overhead**
|
|
168
426
|
|
|
169
427
|
## Examples
|
|
170
428
|
|
|
@@ -259,6 +517,71 @@ Added JWT token management and refresh logic.
|
|
|
259
517
|
BREAKING CHANGE: Authentication API has changed
|
|
260
518
|
```
|
|
261
519
|
|
|
520
|
+
## Migration Guide
|
|
521
|
+
|
|
522
|
+
### From v0.0.x to v0.1.x
|
|
523
|
+
|
|
524
|
+
- **Breaking Changes**: None
|
|
525
|
+
- **New Features**: All new features (History Learning, Multi-Commit, Issue Tracking) are **enabled by default**.
|
|
526
|
+
- **Recommended Steps**:
|
|
527
|
+
1. Update package: `npm install -g @untools/commitgen@latest`
|
|
528
|
+
2. Test new features: `commitgen` (uses all features)
|
|
529
|
+
3. Configure preferences in `~/.commitgenrc.json` if you wish to disable any features globally.
|
|
530
|
+
4. Update CI/CD workflows to use new flags (e.g., `--no-history`) if desired.
|
|
531
|
+
|
|
532
|
+
### Backward Compatibility
|
|
533
|
+
|
|
534
|
+
All existing commands work exactly as before:
|
|
535
|
+
|
|
536
|
+
```bash
|
|
537
|
+
# These still work identically
|
|
538
|
+
commitgen
|
|
539
|
+
commitgen --push
|
|
540
|
+
commitgen --noverify
|
|
541
|
+
commitgen --no-ai
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
## API for Advanced Users
|
|
545
|
+
|
|
546
|
+
### Programmatic Usage
|
|
547
|
+
|
|
548
|
+
```javascript
|
|
549
|
+
import { CommitGen } from '@untools/commitgen';
|
|
550
|
+
|
|
551
|
+
const commitGen = new CommitGen();
|
|
552
|
+
|
|
553
|
+
await commitGen.run({
|
|
554
|
+
push: false,
|
|
555
|
+
noverify: false,
|
|
556
|
+
useAi: true,
|
|
557
|
+
multiCommit: true,
|
|
558
|
+
learnFromHistory: true,
|
|
559
|
+
linkIssues: true
|
|
560
|
+
});
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
### Custom History Analyzer
|
|
564
|
+
|
|
565
|
+
```javascript
|
|
566
|
+
import { CommitHistoryAnalyzer } from '@untools/commitgen/utils/commit-history';
|
|
567
|
+
|
|
568
|
+
const analyzer = new CommitHistoryAnalyzer();
|
|
569
|
+
const pattern = await analyzer.getCommitPattern();
|
|
570
|
+
|
|
571
|
+
console.log(pattern.commonTypes); // { feat: 30, fix: 15, ... }
|
|
572
|
+
console.log(pattern.avgSubjectLength); // 45
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
### Custom Multi-Commit Logic
|
|
576
|
+
|
|
577
|
+
```javascript
|
|
578
|
+
import { MultiCommitAnalyzer } from '@untools/commitgen/utils/multi-commit';
|
|
579
|
+
|
|
580
|
+
const analyzer = new MultiCommitAnalyzer();
|
|
581
|
+
const shouldSplit = analyzer.shouldSplit(analysis);
|
|
582
|
+
const groups = analyzer.groupFiles(analysis);
|
|
583
|
+
```
|
|
584
|
+
|
|
262
585
|
## Troubleshooting
|
|
263
586
|
|
|
264
587
|
### "No staged changes found"
|
|
@@ -282,11 +605,43 @@ Set your API key either:
|
|
|
282
605
|
|
|
283
606
|
The tool will automatically fall back to rule-based suggestions if AI generation fails. You can also force rule-based mode with `--no-ai`.
|
|
284
607
|
|
|
608
|
+
### History Learning Not Working
|
|
609
|
+
|
|
610
|
+
- **Issue**: "No personalization detected"
|
|
611
|
+
- **Solutions**:
|
|
612
|
+
- Ensure you have at least 5 commits in your repository
|
|
613
|
+
- Check that commits follow conventional commit format
|
|
614
|
+
- Wait 5 minutes for cache to refresh
|
|
615
|
+
|
|
616
|
+
### Multi-Commit Mode Not Triggering
|
|
617
|
+
|
|
618
|
+
- **Issue**: Single commit despite multiple concerns
|
|
619
|
+
- **Solutions**:
|
|
620
|
+
- Ensure you have 4+ files staged
|
|
621
|
+
- Use `--multi-commit` flag to force
|
|
622
|
+
- Check that files have distinct purposes
|
|
623
|
+
|
|
624
|
+
### Issue Reference Not Detected
|
|
625
|
+
|
|
626
|
+
- **Issue**: Branch issue not linked
|
|
627
|
+
- **Solutions**:
|
|
628
|
+
- Check branch naming follows conventions
|
|
629
|
+
- Verify issue ID format matches platform
|
|
630
|
+
- Use `git branch --show-current` to check branch name
|
|
631
|
+
|
|
632
|
+
### Performance Issues
|
|
633
|
+
|
|
634
|
+
- **Issue**: CommitGen feels slow
|
|
635
|
+
- **Solutions**:
|
|
636
|
+
- Disable features individually to identify bottleneck (`--no-history`, etc.)
|
|
637
|
+
- Check git repository size (very large repos may be slower)
|
|
638
|
+
- Clear cache with `rm -rf ~/.commitgen-cache` (if implemented)
|
|
639
|
+
|
|
285
640
|
## Development
|
|
286
641
|
|
|
287
642
|
```bash
|
|
288
643
|
# Clone the repository
|
|
289
|
-
git clone https://github.com/aevrHQ/untools-commitgen.git
|
|
644
|
+
git clone [https://github.com/aevrHQ/untools-commitgen.git](https://github.com/aevrHQ/untools-commitgen.git)
|
|
290
645
|
cd untools-commitgen
|
|
291
646
|
|
|
292
647
|
# Install dependencies
|
|
@@ -316,7 +671,7 @@ commitgen
|
|
|
316
671
|
|
|
317
672
|
## Contributing
|
|
318
673
|
|
|
319
|
-
Contributions are welcome
|
|
674
|
+
Contributions are welcome\! Please feel free to submit a Pull Request.
|
|
320
675
|
|
|
321
676
|
## License
|
|
322
677
|
|
|
@@ -328,6 +683,8 @@ MIT © Miracle Onyenma
|
|
|
328
683
|
- [npm Package](https://www.npmjs.com/package/@untools/commitgen)
|
|
329
684
|
- [Issue Tracker](https://github.com/aevrHQ/untools-commitgen/issues)
|
|
330
685
|
|
|
331
|
-
|
|
686
|
+
-----
|
|
332
687
|
|
|
333
688
|
Made with ❤️ by [Miracle Onyenma](https://github.com/miracleonyenma)
|
|
689
|
+
|
|
690
|
+
```
|