git-commit skill
scriptsGenerate conventional commit messages from diffs and execute git commits.
- GitHub stars
- 8
- Files
- 4
- Last commit
- Oct 28, 2026
- License
- MIT
- Allowed tools
- —
What does the git-commit skill do?
git-commit generates conventional commit messages from diffs and execute git commits.
Summary generated from the skill's SKILL.md.
About the git-commit skill
Automating the creation of standardized commit messages and executing git commits is what this skill enables for developers working in terminal-based environments. When an agent needs to stage changes or finalize a code modification, it loads this tool to analyze staged or unstaged diffs. It produces conventional commit messages following the conventionalcommits.org specification, ensuring that every entry includes a type, an optional scope, and an imperative description.
The process relies on reading git status and git diff to ensure the message accurately reflects the actual code changes rather than making assumptions. It includes a pre-commit linting mechanism that automatically detects and runs project-specific linters like npm, ruff, flake8, or golangci-lint to block commits that fail quality checks. This tool is specifically designed for standard development commits and should not be used for generating release commits or managing branch-finish workflows.
What an agent can do with it
- 1Generate conventional commit messagesAn AI agent can write a structured commit message based on the specific changes found in a code diff.
- 2Handle breaking changes correctlyDevelopers can use the tool to automatically format breaking changes with the required exclamation mark and footer.
- 3Organize mixed changes into commitsThe agent can identify when a diff contains unrelated concerns and suggest splitting them into separate commits.
Written from the skill's SKILL.md. Every use case is checked against a quote from it.
How to install the git-commit skill
Each command copies the skill folder into the client's skills directory. Restart the client or start a new session to load it.Install the git-commit skill in Plugin
/plugin marketplace add mgiovani/cc-arsenal /plugin install cc-arsenal@cc-arsenal-marketplace
Install the git-commit skill in Claude Code
~/.claude/skills/git-commit/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-commit ~/.claude/skills/git-commitInstall the git-commit skill in Claude Code (project)
.claude/skills/git-commit/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-commit .claude/skills/git-commitInstall the git-commit skill in Codex
~/.agents/skills/git-commit/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-commit ~/.agents/skills/git-commitInstall the git-commit skill in Gemini CLI
~/.gemini/skills/git-commit/SKILL.md
$ npx degit mgiovani/cc-arsenal/skills/git-commit ~/.gemini/skills/git-commitInstall the git-commit skill in Claude.ai
npx degit mgiovani/cc-arsenal/skills/git-commit git-commit && zip -r git-commit.zip git-commit # claude.ai → Customize → Skills → + → Create skill → Upload a skill → git-commit.zip
SKILL.md
View on GitHubGit Commit
Generate a conventional commit message and create the commit.
Quality Guidelines
Base the message only on what the diff actually shows, not assumptions:
- Read
git statusandgit diff --staged(orgit diffif nothing is staged yet) before writing anything. - Check which files/modules changed before setting scope.
- Look for removed exports, changed signatures, deleted functions to catch breaking changes.
- If the purpose of a change is unclear, ask the user rather than guess.
Pre-commit Linting
In Claude Code, a PreToolUse hook runs before every git commit: it detects the project's
linter (Node's npm/bun/pnpm/yarn run lint, Python's ruff/flake8, make lint, rubocop,
golangci-lint) and blocks the commit if it fails. No linter configured means the commit
proceeds unblocked. Outside Claude Code (no hook support), run the project's lint command
yourself before committing. Never bypass a failing lint with --no-verify: fix the errors
and re-run the commit instead.
Workflow
- Run
git statusandgit diff --stagedto see what actually changed. - If the diff mixes unrelated concerns (e.g. a feature plus an unrelated fix plus docs),
split into separate commits by staging each group with
git add <files>and committing them one at a time. Otherwise, one commit is enough, don't force a split. - For each commit, pick the type:
feat: new featurefix: bug fixdocs: documentation onlystyle: formatting, no code meaning changerefactor: neither fixes a bug nor adds a featureperf: performance improvementtest: adding or correcting testsbuild: build system or dependency changesci: CI configuration/scriptschore: everything else that doesn't touch src or testsrevert: reverts a previous commit
- Format as
type(scope): description, scope optional, description imperative mood ("add" not "added"), max ~50 characters. Skip the body for a typo fix or a single dependency bump; add a wrapped body (why, not how) once the change alters behavior or touches multiple files. For breaking changes, append!after the scope and add aBREAKING CHANGE: ...footer.
Example formats
feat(auth): add OAuth2 login support
fix(api): resolve null pointer in user endpoint
docs: update installation instructions
chore(deps): bump lodash to 4.17.21
feat(shopping-cart)!: remove deprecated calculate method
BREAKING CHANGE: calculate has been removed, use computeTotal instead
Ask for confirmation before committing if the changes are complex or span multiple concerns; otherwise just commit.
Files in this skill
4git-commit skill questions
How do I install the git-commit skill in Claude Code?
Run npx degit mgiovani/cc-arsenal/skills/git-commit ~/.claude/skills/git-commit. Claude Code loads skills from ~/.claude/skills (all projects) or .claude/skills (one project) and uses a skill when its description matches the task.
Which clients can use the git-commit skill?
Any client that reads the Agent Skills format: Claude Code, Codex, Gemini CLI and claude.ai (upload as a ZIP). Scripts in the skill run only where the client allows code execution.
What happens if the project has a linter configured?
A PreToolUse hook runs before the commit to detect the project's linter and will block the commit if the linting fails.
How should I handle a diff that contains multiple unrelated changes?
You should split the changes into separate commits by staging each group of changes individually with git add <files> and committing them one at a time.
What is the format for a breaking change commit?
For breaking changes, you should append an exclamation mark after the scope and include a 'BREAKING CHANGE: ...' footer.