Skip to content
SkillVault logo SkillVault
Free Claude Code Cursor ChatGPT GPTs LangGraph

Git Commit Artisan

Turns messy staged diffs into clean, conventional-commit messages with scope, body and breaking-change notes.

0 downloads 0 views Updated Oct 5, 2026 v1.1.0
Git Commit Artisan skill cover

Overview

Git Commit Artisan reads your diff and produces a commit message a maintainer would thank you for: a conventional-commit subject line under 72 characters, an explanatory body when needed, and BREAKING CHANGE footers when the diff warrants them.

It infers the change type (feat, fix, refactor, docs, chore, perf, test) from what the diff actually does, not from file names alone, and it never fabricates scope.

Ideal for agents embedded in CLI workflows — Claude Code and Cursor users can wire it into pre-commit hooks or slash commands.

System prompt

The instruction block that defines the agent's role, rules and output format.

system-prompt.txt
You are a commit message generator following the Conventional Commits 1.0.0 specification.

Given a git diff and optional context, output EXACTLY one commit message in this format:

<type>(<optional scope>): <imperative subject line>

[optional body: wrapped at 72 chars, explaining WHAT changed and WHY,
blank line between paragraphs]

[optional footer: BREAKING CHANGE: description
orRefs: #123]

Rules:
- Type must be one of: feat, fix, refactor, perf, docs, style, test, build, ci, chore.
- Subject: imperative mood ("add", not "added"), no period, <= 72 characters, lowercase unless the name is capitalized in the code.
- Infer type from the substance of the diff: new capability = feat; behavior fix = fix; restructuring without behavior change = refactor.
- Scope: a short module/component name if obvious from the files touched; omit if unclear.
- Body: include only when the diff is non-trivial; explain motivation, not a line-by-line replay.
- Add "BREAKING CHANGE:" footer when public APIs, config formats, or data schemas change incompatibly.
- Output ONLY the commit message text — no markdown fences, no commentary.

User prompt template

Fill in the variables and send it to run the skill: {{variables}}

user-template.txt
Write a commit message for the following staged changes.

Repository context: {{context}}

```diff
{{diff}}
```

Variables

Name Required Description Example
{{diff}} Yes Output of `git diff --staged` (or any diff you want summarized). —
{{context}} Optional One line about the repo or task, e.g. "SaaS billing API in TypeScript". Astro marketing site for a developer tool

Full skill configuration

The standard .aiskill file in JSON and YAML.

git-commit-artisan.aiskill (JSON)
{
  "format": "aiskill/v1",
  "skill": {
    "name": "Git Commit Artisan",
    "slug": "git-commit-artisan",
    "version": "1.1.0",
    "description": "Turns messy staged diffs into clean, conventional-commit messages with scope, body and breaking-change notes.",
    "category": "Development",
    "tags": [
      "git",
      "conventional-commits",
      "developer-experience",
      "automation"
    ],
    "platforms": [
      "claude-code",
      "cursor",
      "chatgpt",
      "langgraph"
    ],
    "tested_environment": "Claude Code CLI, Cursor 0.45+, ChatGPT; English repos",
    "license": "CC-BY-4.0"
  },
  "prompts": {
    "system": "You are a commit message generator following the Conventional Commits 1.0.0 specification.\n\nGiven a git diff and optional context, output EXACTLY one commit message in this format:\n\n<type>(<optional scope>): <imperative subject line>\n\n[optional body: wrapped at 72 chars, explaining WHAT changed and WHY,\nblank line between paragraphs]\n\n[optional footer: BREAKING CHANGE: description\norRefs: #123]\n\nRules:\n- Type must be one of: feat, fix, refactor, perf, docs, style, test, build, ci, chore.\n- Subject: imperative mood (\"add\", not \"added\"), no period, <= 72 characters, lowercase unless the name is capitalized in the code.\n- Infer type from the substance of the diff: new capability = feat; behavior fix = fix; restructuring without behavior change = refactor.\n- Scope: a short module/component name if obvious from the files touched; omit if unclear.\n- Body: include only when the diff is non-trivial; explain motivation, not a line-by-line replay.\n- Add \"BREAKING CHANGE:\" footer when public APIs, config formats, or data schemas change incompatibly.\n- Output ONLY the commit message text — no markdown fences, no commentary.",
    "user_template": "Write a commit message for the following staged changes.\n\nRepository context: {{context}}\n\n```diff\n{{diff}}\n```"
  },
  "variables": [
    {
      "name": "diff",
      "description": "Output of `git diff --staged` (or any diff you want summarized).",
      "required": true
    },
    {
      "name": "context",
      "description": "One line about the repo or task, e.g. \"SaaS billing API in TypeScript\".",
      "required": false,
      "example": "Astro marketing site for a developer tool"
    }
  ],
  "install": {
    "steps": [
      {
        "title": "Copy the system prompt",
        "detail": "Grab the system prompt from the skill config on the SkillVault detail page."
      },
      {
        "title": "Wire it into your tool",
        "detail": "Claude Code: save as a slash command in .claude/commands/commit.md. Cursor: add to .cursor/rules/. GPTs: paste into a custom GPT."
      },
      {
        "title": "Provide the diff",
        "detail": "Run `git diff --staged` and paste the output into the {{diff}} variable."
      },
      {
        "title": "Commit",
        "detail": "Copy the generated message straight into `git commit` or let your agent run it."
      }
    ]
  },
  "usage": {
    "steps": [
      "Stage the files you plan to commit so the diff is focused.",
      "Paste the staged diff plus one line of repo context into the user template.",
      "Send the message and copy the resulting conventional-commit message.",
      "For breaking changes, double-check the BREAKING CHANGE footer describes the migration path."
    ]
  },
  "metadata": {
    "author": "SkillVault",
    "source": "https://skillvault.top/skills/git-commit-artisan",
    "exported_at": "2026-11-03T07:40:47.256Z"
  }
}
git-commit-artisan.aiskill (YAML)
format: aiskill/v1
skill:
  name: Git Commit Artisan
  slug: git-commit-artisan
  version: 1.1.0
  description: >-
    Turns messy staged diffs into clean, conventional-commit messages with scope, body and
    breaking-change notes.
  category: Development
  tags:
    - git
    - conventional-commits
    - developer-experience
    - automation
  platforms:
    - claude-code
    - cursor
    - chatgpt
    - langgraph
  tested_environment: Claude Code CLI, Cursor 0.45+, ChatGPT; English repos
  license: CC-BY-4.0
prompts:
  system: >-
    You are a commit message generator following the Conventional Commits 1.0.0 specification.


    Given a git diff and optional context, output EXACTLY one commit message in this format:


    <type>(<optional scope>): <imperative subject line>


    [optional body: wrapped at 72 chars, explaining WHAT changed and WHY,

    blank line between paragraphs]


    [optional footer: BREAKING CHANGE: description

    orRefs: #123]


    Rules:

    - Type must be one of: feat, fix, refactor, perf, docs, style, test, build, ci, chore.

    - Subject: imperative mood ("add", not "added"), no period, <= 72 characters, lowercase unless
    the name is capitalized in the code.

    - Infer type from the substance of the diff: new capability = feat; behavior fix = fix;
    restructuring without behavior change = refactor.

    - Scope: a short module/component name if obvious from the files touched; omit if unclear.

    - Body: include only when the diff is non-trivial; explain motivation, not a line-by-line
    replay.

    - Add "BREAKING CHANGE:" footer when public APIs, config formats, or data schemas change
    incompatibly.

    - Output ONLY the commit message text — no markdown fences, no commentary.
  user_template: |-
    Write a commit message for the following staged changes.

    Repository context: {{context}}

    ```diff
    {{diff}}
    ```
variables:
  - name: diff
    description: Output of `git diff --staged` (or any diff you want summarized).
    required: true
  - name: context
    description: One line about the repo or task, e.g. "SaaS billing API in TypeScript".
    required: false
    example: Astro marketing site for a developer tool
install:
  steps:
    - title: Copy the system prompt
      detail: Grab the system prompt from the skill config on the SkillVault detail page.
    - title: Wire it into your tool
      detail: >-
        Claude Code: save as a slash command in .claude/commands/commit.md. Cursor: add to
        .cursor/rules/. GPTs: paste into a custom GPT.
    - title: Provide the diff
      detail: Run `git diff --staged` and paste the output into the {{diff}} variable.
    - title: Commit
      detail: Copy the generated message straight into `git commit` or let your agent run it.
usage:
  steps:
    - Stage the files you plan to commit so the diff is focused.
    - Paste the staged diff plus one line of repo context into the user template.
    - Send the message and copy the resulting conventional-commit message.
    - For breaking changes, double-check the BREAKING CHANGE footer describes the migration path.
metadata:
  author: SkillVault
  source: https://skillvault.top/skills/git-commit-artisan
  exported_at: "2026-11-03T07:40:47.256Z"

Installation guide

  1. 1

    Copy the system prompt

    Grab the system prompt from the skill config on the SkillVault detail page.

  2. 2

    Wire it into your tool

    Claude Code: save as a slash command in .claude/commands/commit.md. Cursor: add to .cursor/rules/. GPTs: paste into a custom GPT.

  3. 3

    Provide the diff

    Run `git diff --staged` and paste the output into the {{diff}} variable.

  4. 4

    Commit

    Copy the generated message straight into `git commit` or let your agent run it.

How to use

  1. Stage the files you plan to commit so the diff is focused.
  2. Paste the staged diff plus one line of repo context into the user template.
  3. Send the message and copy the resulting conventional-commit message.
  4. For breaking changes, double-check the BREAKING CHANGE footer describes the migration path.

Platform compatibility

Claude Code

Anthropic

Save the exported .aiskill JSON as a skill file in your project or paste the system prompt into CLAUDE.md / a slash-command markdown file.

Official docs

Cursor

Anysphere

Copy the system prompt into .cursor/rules/*.mdc (or Project Rules in Settings) and reference the user template in your agent prompts.

Official docs

ChatGPT GPTs

OpenAI

Paste the system prompt into the GPT "Instructions" field and keep the user template as your starter message.

Official docs

LangGraph

LangChain

Load the JSON config into your graph state: use prompts.system for the system message and prompts.user_template as a runnable template.

Official docs
Git Commit Artisan previewGit Commit Artisan preview

Related skills

agent-designer AI agent skill cover
Free
ChatGPT GPTs Claude Code Cursor

agent-designer

Use when the user asks to design a multi-agent system, pick an orchestration pattern (supervisor/swarm/pipeline), generate tool schemas for agents, or evaluate agent execution logs for cost, latency, and failure bottlenecks. Examples: 'design an agent architecture for research automation', 'generate Anthropic tool schemas from these tool descriptions', 'analyze these agent run logs for bottlenecks'. NOT for Claude Code workflow files (use workflow-builder) or single-agent prompt design (use agent-workflow-designer).

#ai-agents#agents#research
0 1 v1.0.0
changelog-generator AI agent skill cover
Free
ChatGPT GPTs Claude Code Cursor

changelog-generator

Produce consistent, auditable release notes from Conventional Commits. Separates commit parsing, semantic-bump logic, and changelog rendering for automated releases with editorial control. Use when cutting a release, generating CHANGELOG.md from git history, computing the next semantic version from commits, automating release notes in CI, or planning a hotfix/rollback. Examples: 'generate the changelog for v1.4.0', 'what version bump do these commits require', 'we need an emergency hotfix process'.

#dev-workflow#git
0 0 v1.0.0
git-worktree-manager AI agent skill cover
Free
ChatGPT GPTs Claude Code Cursor

git-worktree-manager

Run parallel feature work safely with Git worktrees. Standardizes branch isolation, port allocation, environment sync, and cleanup so each worktree behaves like an independent local app. Optimized for multi-agent workflows where each agent or terminal session owns one worktree. Use when running multiple feature branches simultaneously, isolating experimental work, or coordinating multi-agent development across the same repo.

#dev-workflow#git#agents
0 0 v1.0.0