Generate descriptive commit messages by analyzing git diffs, very fast and context-pollution safe. Use when the user asks to commit staged changes or needs a conventional-commits message generated from the current diff.
Analyze these staged changes and generate commit message, then commit the changes:
!uv run prek run >/dev/null 2>&1 || git add -u
!git --no-pager status || true
!git --no-pager diff --cached || true
!git --no-pager diff --cached --stat || true
<user_notes> $ARGUMENTS </user_notes>
Follow conventional commits format (no footer, except for breaking change footer):
<type>(<scope>): <description>
[optional body]
Feature commit:
feat(auth): add JWT authentication
Implement JWT-based authentication system with:
- Login endpoint with token generation
- Token validation middleware
- Refresh token support
Bug fix:
fix(api): handle null values in user profile
Prevent crashes when user profile fields are null.
Add null checks before accessing nested properties.
Refactor:
refactor(database): simplify query builder
Extract common query patterns into reusable functions.
Reduce code duplication in database layer.
DO:
DON'T:
When committing multiple related changes:
refactor(core): restructure authentication module
- Move auth logic from controllers to service layer
- Extract validation into separate validators
- Update tests to use new structure
- Add integration tests for auth flow
Breaking change: Auth service now requires config object
Scope MUST identify WHERE in the codebase, NOT what type of change.
The scope is a module, component, or directory name - never a description of the change itself.
Single module/directory: Use that module name
src/auth/*.py → authplugins/gitlab-skill/ → gitlab-skillMultiple files in same area: Use the common parent
skills/python3-dev/assets/*.py → assets or python3-devCross-cutting changes: Use the primary affected area OR omit scope
feat(auth): add OAuth supportchore: update dependencies across modulesRoot config files: Use the config type
pyproject.toml linting rules → lint or ruffpyproject.toml dependencies → deps.github/workflows/ → ciNEVER use these as scopes - they describe WHAT, not WHERE:
| ❌ Wrong | ✅ Correct | Why |
| ---------- | ------------------------------ | --------------------------------------- |
| docs | readme, api-docs, skills | "docs" is a change type, not a location |
| tests | auth-tests, api | Be specific about what's being tested |
| types | models, api | Types belong to a module |
| refactor | (use as type, not scope) | "refactor" is a type, not a location |
| bugfix | (use fix as type) | "bugfix" is a type, not a location |
By domain:
feat(auth): add JWT authenticationfix(payments): handle currency conversionrefactor(users): extract validation logicBy layer:
feat(api): add user profile endpointfix(db): resolve connection pool leakchore(ci): update Node version to 20By plugin/skill:
feat(gitlab-skill): add MR approval supportfix(python3-dev): correct shebang detectiondocs(commit-staged): clarify scope selectionIndicate breaking changes clearly:
feat(api)!: restructure API response format
BREAKING CHANGE: All API responses now follow JSON:API spec
Previous format:
{ "data": {...}, "status": "ok" }
New format:
{ "data": {...}, "meta": {...} }
Migration guide: Update client code to handle new response structure
git diff --stagedUse git add -p for selective staging:
# Stage changes interactively
git add -p
# Review what's staged
git diff --staged
# Commit with message
git commit -m "type(scope): description"
Fix the last commit message:
# Amend commit message only
git commit --amend
# Amend and add more changes
git add forgotten-file.js
git commit --amend --no-edit
docs, tests, types, refactor, bugfixFinally, you will commit the changes with the generated commit message, without using --no-verify:
git commit -m "<commit-message>"
If you are blocked by a pre-commit or prek hook, you should stop, and announce your intended commit message, and that it was blocked, and requires a linting-agent to be run against the issues found.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer