Generate well-structured git commit messages following Conventional Commits specification. Use when the user asks to write a commit message, format a commit, describe changes as a commit, or generate a git commit. Always appends Assisted-by: AI-agent footer trailer. Supports types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert.
Use this skill when the user:
<type>(<scope>): <short summary>
[optional body]
[optional footers]
Assisted-by: AI-agent
authapidbciBREAKING CHANGE: must be included for breaking changesAssisted-by: AI-agent: ALWAYS the last line of the commit message, no exceptions| Type | When to use |
|---|---|
feat | A new feature (triggers MINOR in semver) |
fix | A bug fix (triggers PATCH in semver) |
docs | Documentation-only changes |
style | Formatting, whitespace, missing semicolons — no logic changes |
refactor | Code change that is neither a fix nor a feature |
perf | Code change that improves performance |
test | Adding or correcting tests |
build | Build system or external dependency changes (npm, nuget, etc.) |
ci | CI/CD configuration changes |
chore | Maintenance tasks that don't modify src or test files |
revert | Reverts a previous commit |
If the change is breaking, add ! after type/scope and include a BREAKING CHANGE: footer:
feat(api)!: remove deprecated /v1/users endpoint
BREAKING CHANGE: /v1/users has been removed. Use /v2/users instead.
Assisted-by: AI-agent
Analyze the input: Read the diff, change description, or user's explanation to understand what changed and why.
Choose the type: Pick the single most appropriate type from the table above. When in doubt between feat and refactor, ask yourself: does this add user-visible behavior? If yes → feat.
Determine the scope (optional but recommended): Identify the primary area affected. Use the module name, package name, or a short noun. Skip scope only if the change is truly global or cross-cutting.
Write the summary: One line, imperative mood, lowercase, no trailing period. Be specific — avoid vague summaries like "update stuff" or "fix bug".
Write the body (if the change is non-trivial): Maximum 3 lines. Only write the main points — the core motivation or the key decisions. Do not repeat what the diff already shows. If you cannot summarize in 3 lines, you are being too detailed.
Add footers: Include any relevant trailers such as Fixes #123, Closes #456, Co-authored-by:, BREAKING CHANGE:, etc. Always add Assisted-by: AI-agent as the final line.
Output the commit message in a fenced code block for easy copying:
git commit -m "..."
Or as a multi-line message:
```
feat(auth): add OAuth2 PKCE flow for SPA clients
Replace implicit flow with PKCE to improve security for browser-based
apps. Authorization code is now exchanged with a code verifier,
eliminating the risk of token interception.
Closes #87
Assisted-by: AI-agent
```
fix(parser): handle null token in expression evaluator
Assisted-by: AI-agent
refactor(queue): replace RabbitMQ client with NATS JetStream
RabbitMQ required a separate broker with no built-in persistence.
NATS JetStream provides at-least-once delivery and embeds directly
in our Docker Compose stack.
Assisted-by: AI-agent
feat(api)!: rename CreateUser response fields to camelCase
All response fields are now camelCase to match the rest of the API.
Clients relying on snake_case fields must update their deserializers.
BREAKING CHANGE: response field names changed from snake_case to camelCase.
Closes #210
Assisted-by: AI-agent
ci(github-actions): add dotnet format check to PR workflow
Assisted-by: AI-agent