Autonomous Git Commit

VerifiedCaution

Analyzes changes, groups files into logical commits, and creates messages following the Commitizen convention.

Sby Skills Guide Bot
DevelopmentIntermediate
7/26/2026
Claude Code
#git#commits#commitizen#automation#version-control

Recommended for

Automated summary

This skill autonomously analyzes working tree changes, groups files into logical coherent commits, and creates commits following the Commitizen convention.

Strengths

  • Automatically groups related changes into coherent commits (feature code + tests + migration, dependencies, docs, config) and orders them by dependency
  • Strictly follows the Commitizen format with type, scope, body and footer passed through a HEREDOC
  • Five safety hooks block git add ., sensitive files, debug artifacts, large files and merge conflict markers
  • Runs without user interaction and ends with a report after verifying each commit via git log

Limitations

  • Allowed tools are limited to git add/commit/status/diff/log — no push, interactive rebase or file edits
  • Grouping is heuristic-based, so ambiguous or intertwined changes may be split in debatable ways
  • Requires the hook scripts to exist under ./hooks and does not support partial hunk staging (git add -p)
When to use it

Use it when a working tree holds many uncommitted changes that should be split into clean, distinct conventional commits.

When not to use it

Avoid it when you need manual control over individual hunks, history rewriting, pushing to a remote, or when the required safety hooks are not installed.

Security analysis

Caution
Quality score88/100

The skill uses Bash only for git add/commit/status/diff/log, which is legitimate but powerful. It does not include destructive or exfiltrating commands, and guardrails prevent staging sensitive, large, or conflicted files. However, the referenced hook scripts are external and unreviewed, and autonomous commits alter repository state, warranting caution.

Findings
  • •The skill executes local Python hook scripts (e.g., block-git-add-all.py) that are not included in the reviewed SKILL.md; their contents are unvetted.
  • •Automated commit creation modifies repository history without user confirmation, which could lead to unintended commits if grouping logic fails, though guardrails reduce this risk.
How this analysis is made

Examples

Split large changeset
Commit everything in my working tree — group related files into logical commits using the Commitizen convention.
Scoped commits
Create separate conventional commits for the current changes, using the scope 'auth' where relevant.
Dependencies first
I've updated dependencies and added a new feature with tests. Commit them in the right order with proper commit messages.

name: git-commit description: Autonomously analyzes working tree changes, groups files into logical coherent commits, and creates commits following the Commitizen convention argument-hint: [optional commit scope hint] disable-model-invocation: false user-invocable: true allowed-tools: Bash(git add:), Bash(git commit:), Bash(git status:), Bash(git diff:), Bash(git log:*) model: haiku context: fork agent: general-purpose hooks: PreToolUse: - matcher: "Bash" hooks: - type: command command: "./hooks/block-git-add-all.py" timeout: 10 async: false statusMessage: "Validating git command..." once: false - type: command command: "./hooks/block-sensitive-files.py" timeout: 10 async: false statusMessage: "Checking for sensitive files..." once: false - type: command command: "./hooks/block-debug-artifacts.py" timeout: 10 async: false statusMessage: "Checking for debug artifacts..." once: false - type: command command: "./hooks/block-large-files.py" timeout: 10 async: false statusMessage: "Checking for large files..." once: false - type: command command: "./hooks/block-merge-conflicts.py" timeout: 10 async: false statusMessage: "Checking for merge conflict markers..." once: false

Purpose

Fully autonomous skill that analyzes all working tree changes, groups files into logical coherent commits, stages them individually, and creates clean Commitizen-formatted commit messages — without any user interaction.

Context

echo "=== Git Status ==="
git status --short

echo -e "\n=== Unstaged Changes ==="
git diff --stat

echo -e "\n=== Staged Changes ==="
git diff --cached --stat

echo -e "\n=== Recent Commits ==="
git log --oneline -10

Instructions

Workflow

  1. Analyze all changes — review staged, unstaged, and untracked files from the context above
  2. Group files into logical coherent commits — related changes belong together:
    • Feature code + its tests + its migration → single commit
    • Dependency updates (lockfiles, package manifests) → separate commit
    • Documentation changes → separate commit
    • Config/tooling changes → separate commit
    • Unrelated bug fixes → separate commits
  3. For each group, in dependency order (deps first, then features, then docs):
    • Stage specific files: git add <file1> <file2> ... — never use git add ., git add -A, or git add --all
    • Craft a Commitizen-formatted commit message (see format below)
    • Execute commit using a HEREDOC:
      git commit -m "$(cat <<'EOF'
      <type>(<scope>): <subject>
      
      <body>
      
      <footer>
      EOF
      )"
      
    • Verify with git log --oneline -1
  4. Output the final report (see Report section)

If the user provided a scope hint argument, use it to guide scope selection across commits.

Commitizen Format

Types

| Type | When to use | |------------|--------------------------------------------------| | feat | A new feature | | fix | A bug fix | | docs | Documentation only changes | | style | Formatting, semicolons, etc. (no logic change) | | refactor | Code change that neither fixes nor adds | | perf | Performance improvement | | test | Adding or correcting tests | | build | Build system or external dependency changes | | ci | CI configuration changes | | chore | Other changes that don't modify src or test | | revert | Reverts a previous commit |

Message Rules

  • Subject line: imperative mood, lowercase, no period, ≤72 characters
  • Scope: the module, component, or area affected (e.g., auth, api, cli)
  • Body: explain what and why, not how — wrap at 80 characters
  • Footer: BREAKING CHANGE: <description> for breaking changes, Closes #N for issue references

Guardrails

| Condition | Action | |-----------|--------| | Sensitive files (.env*, *.pem, *.key, credentials*, *secret*) | Skip the file, warn in report | | Large binary files (>5MB) | Skip the file, warn in report | | Merge conflict markers (<<<<<<<, =======, >>>>>>>) in any file | Abort entirely, report conflicted files | | Debug artifacts (*.log, tmp_*, *.tmp, debug_*) | Skip the file, warn in report | | Grouping is ambiguous | Prefer smaller, atomic commits | | Purpose of a change is unclear | Use chore type | | Files are already staged | Respect the existing staging — commit staged files first as their own logical group | | No changes detected | Exit gracefully with message "Nothing to commit" |

Cookbook

IF: All changes belong to a single feature
THEN: Create one `feat(scope): ...` commit
EXAMPLE: New API endpoint + handler + test + migration → single feat commit

IF: Changes span multiple concerns (feature + dependency update + docs)
THEN: Split into separate commits in order: deps → feature → docs
EXAMPLE: package.json update → new component + test → README update

IF: Only test files changed
THEN: Use `test(scope): ...` type
EXAMPLE: test(auth): add unit tests for login flow

IF: A file contains merge conflict markers
THEN: Abort entirely and report the conflicted files
EXAMPLE: "Cannot commit: unresolved conflicts in src/auth.ts"

IF: Sensitive files detected in changes
THEN: Skip them, commit everything else, warn at end
EXAMPLE: ".env.local skipped — contains sensitive data"

IF: Only config or tooling files changed (linter, formatter, tsconfig, etc.)
THEN: Use `chore(scope): ...` type
EXAMPLE: chore(lint): update eslint configuration

IF: Already-staged files exist alongside unstaged changes
THEN: Commit the staged files first as their own group, then process remaining
EXAMPLE: Staged migration committed first → then unstaged feature code

Report

After all commits are created, output a summary:

  1. Commits created: total count
  2. Commit log: git log --oneline -N showing all new commits (where N = number of commits created)
  3. Skipped files: list each skipped file with the reason (sensitive, binary, debug artifact)
  4. Warnings: any additional notes (e.g., "1 sensitive file excluded", "large binary skipped")

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/autonomous-git-commit-ms1aw4x4/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/autonomous-git-commit-ms1aw4x4' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/autonomous-git-commit-ms1aw4x4/download' --output '.skill-downloads/autonomous-git-commit-ms1aw4x4/SKILL.md.part' && mv '.skill-downloads/autonomous-git-commit-ms1aw4x4/SKILL.md.part' '.skill-downloads/autonomous-git-commit-ms1aw4x4/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Tools declared by the author (check availability in your agent): Bash(git add:*), Bash(git commit:*), Bash(git status:*), Bash(git diff:*), Bash(git log:*)

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/autonomous-git-commit-ms1aw4x4/SKILL.md' && test -s '.skill-downloads/autonomous-git-commit-ms1aw4x4/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/git-commit' && cp -R '.skill-downloads/autonomous-git-commit-ms1aw4x4' '.claude/skills/git-commit'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/autonomous-git-commit-ms1aw4x4'

openskills read 'autonomous-git-commit-ms1aw4x4'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/autonomous-git-commit-ms1aw4x4/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills