git-committer
Discovers the current git diff, groups related changes into logically separate commits, and writes Conventional Commits-formatted messages in plain…
Skill by MisterIcy
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/mistericy-git-committer
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/git-committer
Tools it pre-approves 11
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Bash(gitstatus:*)diff:*)log:*)add:*)apply:*)commit:*)push:*)rev-parse:*)ReadWrite
What's inside
- Skill name
git-committer- Description
- Discovers the current git diff, groups related changes into logically separate commits, and writes Conventional Commits-formatted messages in plain developer-readable language (personalized to the project author's style if git-committer-setup has been run). Use when the user asks to commit changes, split their working tree into commits, or write commit messages.
- License
- Apache-2.0
- Allowed tools
- Bash(git, status:*), Bash(git, diff:*), Bash(git, log:*), Bash(git, add:*), Bash(git, apply:*), Bash(git, commit:*), Bash(git, push:*), Bash(git, rev-parse:*), Read, Write
- Instructions
- 43 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves some shell commands
Files (3)
- SKILL.md
- conventional-commits.md · references/
- style-voice-guidelines.md · references/
SKILL.md (first lines)
# git-committer
Turns the current working tree into one or more well-formed commits. Two subagents do the analysis and writing; you (the invoking agent) orchestrate them and are the only one who actually touches git state. Committing and pushing are each independently configurable via the `git_committer_auto_commit` and `git_committer_auto_push` plugin options — but that's not just a rule you're expected to follow: `hooks/scripts/guard-git-commit.sh` and `hooks/scripts/guard-git-push.sh` are registered as `PreToolUse` hooks on `git commit`/`git push` and force a real approval prompt whenever the relevant option is off (or hand back `allow` to skip it when the option is on), regardless of the session's permission mode. So the plan-presentation steps below are about giving the user useful context before that prompt fires, not about you deciding whether to ask.
## Workflow
1. **Check for changes.** Run `git status --porcelain=v1`. If there's nothing staged, unstaged, or untracked, say so and stop.
2. **Check for a style profile.** Look for `${CLAUDE_PROJECT_DIR}/.claude/git-committer-style.md`.
- If present, note it exists and pass its path along to the message writer later.
- If absent, mention once that running `/provenance:git-committer-setup` will personalize commit voice for this project, then continue using `references/style-voice-guidelines.md` as the default voice.
3. **Group the changes.** Invoke the `provenance:commit-change-grouper` subagent (via the Agent tool) with the current git status output and, if the user gave `$ARGUMENTS`, that as a focus hint (e.g. "prioritize keeping changes under src/auth together"). It returns a numbered grouping plan (files/hunks, rationale, diff excerpt per group) — see `agents/commit-change-grouper.md` for its exact contract. Don't re-derive the grouping yourself; if its plan looks wrong, send it back with what's wrong rather than overriding it silently.
4. **Write one message per group.** For each group in the plan, invoke the `provenance:commit-message-writer` subagent (haiku) with: that group's diff excerpt and rationale, the path `${CLAUDE_SKILL_DIR}/references/conventional-commits.md`, and the path to the style profile if one exists (otherwise `${CLAUDE_SKILL_DIR}/references/style-voice-guidelines.md`). Use the absolute `${CLAUDE_SKILL_DIR}`-rooted paths, not bare relative ones — the subagent resolves paths against the session, not this skill's directory, and once the plugin is installed elsewhere a relative `references/...` path won't exist. Collect the returned message for each group.
5. **Present the full plan.** Show the user, for every group: which files/hunks, and the exact commit message that will be used, then proceed to step 6 — `guard-git-commit.sh` is what actually decides whether `git commit` needs a real approval prompt from here, not this step.
6. **Execute, one group at a time:**
- Stage exactly that group's files. If a file needs a hunk-level split (the grouper will have flagged this), build a patch covering only the group's hunks and apply it with `git apply --cached` — `git add -p` is interactive and can't be driven through the Bash tool, so treat the patch approach as primary, not a fallback.
- Write the writer's exact message (verbatim, including wrapping/footers) to a temp file with `Write`, then commit with `git commit -F <path-to-that-file>`. Don't retype the message by hand, and don't try to pipe or heredoc it into `git commit` — the message only exists as the subagent's returned text, so it has to go through a file. If `git_committer_auto_commit` is off, this call surfaces the guard hook's approval prompt; if the user declines it, stop and report that rather than retrying.
- Move to the next group only after the commit succeeds.
7. **Push.** Run `git push` (or, if the branch has no upstream yet — check with `git rev-parse --abbrev-ref --symbolic-full-name @{u}` failing — `git push -u origin HEAD`). Just like the commit step, `guard-git-push.sh` decides whether this needs a real approval prompt (gated on `git_committer_auto_push`, independent of `git_committer_auto_commit`); if the user declines it, stop and report that rather than retrying.
8. **Report the result.** Show `git log --oneline -n <number of commits made>` and `git status` (and, if you pushed, confirm the push succeeded) so the user can see the final state.
## Edge cases
- **Mixed staged + unstaged changes**: treat both as candidates for grouping; the grouper should account for what's already staged rather than ignoring it.
- **Untracked files**: include them in the grouping only if they're clearly part of the pending work (new source files, not build artifacts/junk) — flag anything that looks like it shouldn't be committed (secrets, local config, build output) instead of silently including it.
- **Binary files / renames**: pass them through to the grouper as-is; `git diff` handles renames and binary markers, the grouper just needs to place them in a sensible group.
- **No git user configured**: `git commit` will fail — tell the user to run `git config user.name`/`user.email` rather than guessing values.
- **Merge/rebase in progress**: don't attempt to commit; tell the user to resolve or abort the in-progress operation first.
- **User's `$ARGUMENTS` conflicts with a sensible split**: prefer correctness over the hint — tell the user why you deviated.
## References
- `references/conventional-commits.md` — the commit format both subagents must follow
- `references/style-voice-guidelines.md` — default tone/voice when no learned profile exists
- `agents/commit-change-grouper.md`, `agents/commit-message-writer.md` — the two subagents this skill drivesFrom MisterIcy/provenance, Apache-2.0.
More from MisterIcy/provenance
- 0.529score
vitest
MisterIcy
Vitest knowledge for writing, running, debugging, and reviewing TypeScript/JavaScript unit and integration tests — test structure (describe/it/test), hooks…
SkillBFreshness: BClaude Code +9 - 0.529score
reconciler
MisterIcy
Reconciles a GitHub stacked pull-request chain or a numerically-suffixed branch train (e.g.
SkillBFreshness: BClaude Code - 0.529score
skill-creator
Alexandros Koutroulis
Scaffolds and reviews Agent Skills (SKILL.md packages) following the open agentskills.io standard, with extra guidance for Claude Code.
SkillBFreshness: BClaude Code +9 - 0.529score
subagent-creator
Alexandros Koutroulis
Scaffolds and reviews Claude Code subagents (Markdown files with YAML frontmatter under agents/ directories) — specialized helpers with their own system…
SkillBFreshness: BClaude Code +9 - 0.529score
ddd-engineer
MisterIcy
Domain-Driven-Design engineering orchestrator.
SkillBFreshness: BClaude Code - 0.529score
git-committer-setup
MisterIcy
One-time (or refresh) setup for the git-committer skill — ingests the N most recent commits by the current git author and writes a personalized commit-message…
SkillBFreshness: BClaude Code +9 - 0.529score
phpunit
MisterIcy
PHPUnit knowledge for writing, running, debugging, and improving tests — writing tests, the CLI test runner, fixtures/setup-teardown, test organization…
SkillBFreshness: BClaude Code +9 - 0.525score
mariadb-sql
MisterIcy
MariaDB-specific SQL dialect knowledge — correctness pitfalls (NULL/GROUP BY/collation semantics), performance (optimizer, indexes, EXPLAIN reading)…
SkillBFreshness: BClaude Code +9 - 0.524score
ddd-squad-coordination
MisterIcy
How the ddd-engineer build squad coordinates — the artifact-type-to-writer routing table, using ListAgents/SendMessage to align lanes without collisions, and…
SkillBFreshness: BClaude Code +9 - 0.524score
pr-description-sync
MisterIcy
Checks whether the current branch's open GitHub PR title/description still accurately reflects its actual changes, and updates it via `gh pr edit` if it has…
SkillBFreshness: BClaude Code +9 - 0.520score
ddd-squad-charter
MisterIcy
Shared charter for the ddd-engineer pipeline's agents — the roster and each agent's role, the collaborative-vs-adversarial split and why adversaries stay…
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Aug 30, 2026 (1 month ago)
- Last release
- Sep 9, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/MisterIcy/provenance
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from MisterIcy
- 0.529score
ddd-engineer
MisterIcy
Domain-Driven-Design engineering orchestrator.
SkillBFreshness: BClaude Code - 0.529score
git-committer-setup
MisterIcy
One-time (or refresh) setup for the git-committer skill — ingests the N most recent commits by the current git author and writes a personalized commit-message…
SkillBFreshness: BClaude Code +9 - 0.529score
phpunit
MisterIcy
PHPUnit knowledge for writing, running, debugging, and improving tests — writing tests, the CLI test runner, fixtures/setup-teardown, test organization…
SkillBFreshness: BClaude Code +9 - 0.529score
reconciler
MisterIcy
Reconciles a GitHub stacked pull-request chain or a numerically-suffixed branch train (e.g.
SkillBFreshness: BClaude Code - 0.529score
vitest
MisterIcy
Vitest knowledge for writing, running, debugging, and reviewing TypeScript/JavaScript unit and integration tests — test structure (describe/it/test), hooks…
SkillBFreshness: BClaude Code +9 - 0.525score
mariadb-sql
MisterIcy
MariaDB-specific SQL dialect knowledge — correctness pitfalls (NULL/GROUP BY/collation semantics), performance (optimizer, indexes, EXPLAIN reading)…
SkillBFreshness: BClaude Code +9
Cite this page
git-committer skill. Agent Mart. https://agentmart.dev/skills/mistericy-git-committer (last updated 2026-10-24)