name: commit description: Create a conventional commit and push to the current branch. Ensures commit messages follow the Conventional Commits spec for automatic versioning with release-please. argument-hint: [optional commit description]
Conventional Commit
Create a git commit following the Conventional Commits specification. This is required for release-please to auto-determine version bumps.
Steps
Check the current state — run
git status(no-uallflag) andgit diff --stagedto understand what's being committed. If nothing is staged, stage the relevant files (prefer specific files overgit add .).Determine the commit type from the changes:
Type When to use Version bump featNew feature or capability minor (0.x.0) fixBug fix patch (0.0.x) docsDocumentation only no release styleFormatting, whitespace, semicolons (no logic change) no release refactorCode restructuring (no feature/fix) no release perfPerformance improvement patch (0.0.x) testAdding or fixing tests no release buildBuild system, dependencies, CI no release choreMaintenance, tooling, configs no release ciCI/CD pipeline changes no release revertReverting a previous commit depends on reverted type Format the commit message strictly as:
type(scope): short description Optional longer body explaining the "why" (not the "what"). BREAKING CHANGE: description (if applicable)Rules:
- type is required, lowercase
- scope is optional but encouraged — use the affected area (e.g.,
composer,sync,settings,db,ui,ai,calendar,auth,search,shortcuts,tray,notifications,labels,filters,queue,imap,attachments) - description starts lowercase, no period at end, imperative mood ("add" not "added")
- BREAKING CHANGE footer triggers a major version bump — use sparingly
- Keep the first line under 72 characters
Examples:
feat(composer): add scheduled send with date picker fix(sync): handle expired Gmail history token gracefully refactor(db): consolidate migration helpers docs: update keyboard shortcuts table in CLAUDE.md chore(ci): add release-please workflow perf(search): use FTS5 trigram index for faster lookups feat(ai)!: switch to streaming responses BREAKING CHANGE: AI provider interface now requires stream() methodCreate the commit using a HEREDOC for proper formatting:
git commit -m "$(cat <<'EOF' type(scope): description EOF )"Push to the current branch with
git push. If the branch has no upstream, usegit push -u origin HEAD.
User hint
$ARGUMENTS