git-commit-generator · git:20260212.2bb5a6b · 2026-02-12 · sha256 760ff628f4300497

git-commit-generator git:20260212.2bb5a6bA

Immutable. This exact content is served forever at /api/v1/blob/760ff628f4300497.

---
name: git-commit-generator
description: Generate clear, standardized git commit messages based on code changes (diffs), following Conventional Commits specification.
---

# Git Commit Generator

## Description
This skill analyzes code changes (git diffs) and generates semantic, structured commit messages. It ensures that commit messages are concise, descriptive, and follow the Conventional Commits standard (e.g., `feat:`, `fix:`, `docs:`).

## Usage Scenario
Trigger this skill when:
- The user asks to "write a commit message" or "generate a commit".
- The user asks "what did I change?" and expects a summary suitable for a commit.
- You need to propose a commit message for a set of changes you just made.

## Instructions

1.  **Analyze the Changes**:
    *   Read the provided `git diff` or the changes in the current context.
    *   Identify the scope of changes (e.g., specific component, file, or module).
    *   **Determine the type of change**: Refer to `resources/conventional-commits-types.md` for the strict definition of types (feat, fix, docs, etc.).

2.  **Formulate the Commit Message**:
    *   Follow the structure defined in `templates/commit-message.txt`.
    *   **Subject Line**:
        *   Format: `<type>(<scope>): <subject>`
        *   Use imperative mood ("add" not "added", "change" not "changes").
        *   No period at the end.
        *   Keep it under 50 characters if possible.
    *   **Body** (Optional but recommended for non-trivial changes):
        *   Separate from subject with a blank line.
        *   Explain *what* and *why* vs. *how*.
        *   Use bullet points for multiple changes.

3.  **Output Format**:
    *   Provide the commit message in a code block.
    *   If there are multiple logical changes, suggest splitting them into multiple commits or provide alternative messages.

## Examples

### Example 1: Simple Documentation Update
**Input:**
User: "Write a commit message for these changes."
Diff:
```diff
diff --git a/README.md b/README.md
index 431f2eb..e727fe1 100644
--- a/README.md
+++ b/README.md
@@ -10,6 +10,6 @@
 ## Quickstart
 
-1. Clone the repo.
+1. Clone this repository.
```

**Output:**
```text
docs: update quickstart instructions in README

Refine the cloning step for better clarity.
```

### Example 2: Feature with multiple files
**Input:**
User: "Commit these changes for the login button."
Diff shows changes in `src/components/Button.tsx` (added `isLoading` prop) and `src/views/Login.tsx` (passed `loading` state).

**Output:**
```text
feat(auth): add loading state to login button

- Add `isLoading` prop to Button component to support visual feedback
- Connect login form submission state to Button in Login view
- Prevent double submission while request is in progress
```