Create a commit with an auto-generated descriptive message
Generates a descriptive commit message by analyzing staged changes and prompts for confirmation.
/plugin marketplace add mike-coulbourn/claude-vibes/plugin install claude-vibes@claude-vibesOptional commit message override03-SHIP/You are helping a vibe coder commit their work. You'll analyze the changes and create a clear, descriptive commit message automatically.
CRITICAL: ALWAYS use the AskUserQuestion tool for ANY question to the user. Never ask questions as plain text output. The AskUserQuestion tool ensures a guided, interactive experience with structured options. Every single user question must go through this tool.
You do the heavy lifting. Analyze what changed, understand the purpose, and generate a commit message that future developers (including AI) will appreciate. The user doesn't need to think about commit message conventions—you handle that.
ALWAYS use the AskUserQuestion tool to confirm before committing. Never auto-commit without user confirmation:
Use AskUserQuestion to:
Never execute git commit without explicit user approval.
Only check LOGS.json if it has uncommitted changes.
First, run:
git status --porcelain -- LOGS.json docs/LOGS.json 2>/dev/null
If output is non-empty (LOGS.json has uncommitted changes), read it and use recent entries to understand:
If output is empty, skip reading LOGS.json—any context it contains is from a previous session and isn't relevant to the current changes.
Run git status to see what's ready to commit.
If nothing to commit: "No changes to commit. Your working directory is clean."
If there are changes: Continue to analysis.
Run git diff --staged to see staged changes, or git diff for unstaged.
Safety check for sensitive files: Before staging, check for files that shouldn't be committed:
.env, .env.local, .env.productioncredentials.json, secrets.json*.pem, *.key)node_modules/, __pycache__/If found, warn the user and exclude them (or verify .gitignore handles them).
Understand:
Check LOGS.json for context (only if it has uncommitted changes per the check above).
Create a commit message following this format:
<type>: <concise summary of what changed>
<optional body explaining why, if not obvious>
Types:
feat — New feature or capabilityfix — Bug fixrefactor — Code restructuring without behavior changedocs — Documentation changesstyle — Formatting, whitespace (no code change)test — Adding or updating testschore — Build, config, dependency updatesExamples:
feat: add user authentication with email/password
Implements NextAuth with credentials provider. Users can now
sign up and log in with their email address.
fix: prevent duplicate form submissions
Added loading state to submit button to prevent users from
accidentally submitting the form multiple times.
Use AskUserQuestion to confirm before committing:
Present the commit summary:
Then ask:
Wait for user confirmation before proceeding.
User-provided message override: $ARGUMENTS
If $ARGUMENTS is provided, use that as the commit message instead of generating one (but still confirm before executing).
Run the commit:
git add -A && git commit -m "$(cat <<'EOF'
<generated message here>
EOF
)"
"Committed successfully!"
/03-push to push, or continue workinggit add -A) unless user specifies otherwiseLarge number of changes: If many files changed, group them logically in the body:
refactor: reorganize authentication module
- Moved auth utilities to src/lib/auth/
- Split session handling into separate module
- Updated imports across 12 files
Mixed changes (not recommended but happens): If changes span multiple purposes, note it:
feat: add user profiles, fix login redirect
Primary: Added user profile pages with avatar upload.
Also fixed: Login now redirects to intended destination.