DinoCommitz
Your friendly dino that writes commit messages so you don't have to.
Pick a tag, jot a quick note, hit Generate. The dino reads your changes and spits out a clean commit message ready to drop into Source Control.
First time setup
- Grab a free Gemini API key from https://aistudio.google.com/apikey
- Open the Command Palette with
Ctrl+Shift+P (or Cmd+Shift+P on Mac).
- Run DinoCommitz: Set Gemini API Key.
- Paste your key. Done.
Your key is stashed safely in VSCode's secret storage. The dino won't leak it.
How to use it
- Stage your changes with git (or the Source Control panel).
- Click the dino icon in the activity bar on the left.
- Pick a tag like
[FIX] or [IMP].
- Type a quick hint about what you changed.
- Hit Generate. Wait a blink.
- Hit Insert into SCM. Your message lands in the Source Control box.
- Commit like normal. Roar.
Commands
Open the Command Palette and type "DinoCommitz" to find these:
| Command |
Shortcut |
What it does |
| DinoCommitz: Open Commit Builder |
Ctrl+Alt+P / Cmd+Alt+P |
Opens the main dino panel. |
| DinoCommitz: Pick Commit Tag |
Ctrl+Alt+T / Cmd+Alt+T |
Quick tag picker. |
| DinoCommitz: Generate & Insert into SCM |
|
Opens the panel ready to generate. |
| DinoCommitz: Set Gemini API Key |
|
Save your key. |
| DinoCommitz: Clear Gemini API Key |
|
Delete your saved key. |
| DinoCommitz: Clear Form |
|
Wipe the current draft. |
Settings
Open VSCode Settings and search "DinoCommitz" to tweak these:
| Setting |
Default |
What it does |
dinoCommits.model |
gemini-2.5-flash |
Pick your flavor of Gemini. |
dinoCommits.tagPreset |
odoo |
Odoo, Conventional, or your own. |
dinoCommits.customTags |
empty |
Your own tag list when preset is custom. |
dinoCommits.titleFormat |
{tag} [{module}: ]{title} |
How the final title looks. |
dinoCommits.showModuleField |
on |
Show or hide the module input. |
dinoCommits.maxTitleLength |
80 |
Keeps titles short and sweet. |
dinoCommits.guidelineMode |
default |
Bundled Odoo rules or your own. |
dinoCommits.customGuideline |
empty |
Paste your own rules. |
dinoCommits.customInstructions |
empty |
Extra hints for the dino. |
dinoCommits.insertChapterFooter |
off |
Adds a Chapter #n line. |
dinoCommits.appendSignOff |
off |
Adds Signed-off-by from your git config. |
dinoCommits.includeStagedDiffInPrompt |
off |
Feed your actual diff to the dino every time. |
dinoCommits.detectOdooManifest |
on |
Auto-fill the Odoo module name. |
dinoCommits.detectTicketRef |
on |
Pull JIRA-123 or #456 from your branch name. |
Tag presets
Three packs come baked in:
- Odoo:
[FIX], [IMP], [ADD], [REF], and friends.
- Conventional:
feat, fix, chore, docs, and friends.
- Custom: bring your own.
Drop this into your settings.json:
"dinoCommits.tagPreset": "custom",
"dinoCommits.customTags": [
{ "tag": "[BUG]", "label": "BUG", "description": "Bug fix" },
{ "tag": "[FEAT]", "label": "FEAT", "description": "New feature" },
{ "tag": "[CHORE]", "label": "CHORE", "description": "Misc cleanup" }
],
"dinoCommits.titleFormat": "{tag} {title}",
"dinoCommits.showModuleField": false
The template controls what your final commit title looks like. Anything inside [...] disappears when the value is empty, so you never end up with weird leftovers like feat(): my title.
| Preset |
Template |
Example |
| Odoo |
{tag} [{module}: ]{title} |
[FIX] website_sale: stop checkout crash on empty cart |
| Conventional |
{tag}[({module})]: {title} |
feat(api): add reply-to header for thread tracking |
| Custom |
up to you |
up to you |
Tips
- Stage your changes first. The dino reads them for better context.
- Keep your hint short. One line is plenty.
- Don't love the result? Tweak the hint and hit Generate again.
- Turn on Include Staged Diff In Prompt if you want sharper messages.
License
MIT. Happy hunting.