Generates commit messages by inspecting staged changes and repo history. Matches existing conventions (Conventional Commits or plain English), leads with intent, and appends the Quest co-author trailer. Use when the user asks for a commit message, help with git commit, or when reviewing staged changes for commit.
Scanned 9/4/2026
Install to Claude Code
npx -y skills add KjellKod/quest --skill git-commit-assistant --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Git Commit Assistant?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/kjellkod-git-commit-assistant-bdd57258)More formats (shields.io, HTML) on the badges page.
---
name: git-commit-assistant
description: Generates commit messages by inspecting staged changes and repo history. Matches existing conventions (Conventional Commits or plain English), leads with intent, and appends the Quest co-author trailer. Use when the user asks for a commit message, help with git commit, or when reviewing staged changes for commit.
---
# Git Commit Assistant
Generate a single commit message from the current staged diff. Output only the final commit message (no markdown, no emojis).
---
## Before Writing
1. Run `git diff --cached` to see what actually changed.
2. Run `git log --oneline` (or `git log --oneline -20`) to see existing commit style and conventions.
---
## Rules
### Match the room
- If the repo uses Conventional Commits (`feat:`, `fix:`, `docs:`, etc.), follow that.
- If it uses plain English, use plain English.
- Never impose a new convention on the repository.
### Categorize honestly
- **add** = something new
- **update** = enhancement to existing behavior
- **fix** = broken behavior is now correct
- **refactor** = behavior unchanged
- Do not inflate scope. A typo fix is not a feature.
### Lead with intent, not mechanics
- The diff shows *what* changed.
- The commit message should explain *why*.
- Prefer intent-focused subjects (e.g. "Fix race condition in session cleanup") over implementation details.
### Subject line
- Imperative mood
- ~50–72 characters
- Clear, specific, and accurate
### Body
- Optional. Use only if the intent is not obvious from the subject.
- Explain motivation, constraints, or tradeoffs.
- Wrap lines at ~72 characters.
- Do not speculate or invent context.
### Truthfulness
- Do not fabricate broader motivation.
- If intent is unclear, describe only what is visible in the diff.
- Precise but narrow beats confident but wrong.
---
## Formatting
1. Subject line
2. Blank line (if body exists)
3. Body (optional)
4. Blank line
5. Trailer
### Trailer (required)
Always append a trailer in this format:
```
Quest/Co-Authored by
<model lines — one per model that participated>
in collaboration with <human author identity>
```
Each model line uses standard `Co-Authored-By:` format:
```
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Codex <noreply@openai.com>
```
Rules:
- **Only include models that actually participated** in the work being committed. Do not list a model that was not involved.
- If model participation is unclear, do not ask by default. Include only the current model when it clearly participated, and omit any other model you cannot verify.
- If the work was done through Quest, check quest artifacts first to identify participating models.
- If generating a squash commit for a PR, you may also check PR comments for clearly attributable model participation.
- Do not require PR metadata in non-PR contexts. If attribution remains uncertain after available checks, omit the unverified model.
- Use the specific model label (e.g., "Claude Opus 4.6", "Codex mini") when known from the session or quest artifacts.
- Known model email mappings:
- Claude → `noreply@anthropic.com`
- Codex / OpenAI → `noreply@openai.com`
- OpenCode → `noreply@opencode.ai`
- Resolve `<human author identity>` from local git config when available:
- Prefer `git config user.name` + `git config user.email` and format as `Name <email>`
- If only a GitHub username can be inferred from git config or the remote URL, use that username
- If no human identity can be verified, use `the repository author`
- The `in collaboration with` line is always present and always last.
Never omit the trailer.
---
## Approval
Always show the intended commit message to the user and wait for explicit approval before executing `git commit`. Do not commit automatically. Present the message as a plain text block and ask the user to confirm.
---
## Output
Output only the final commit message. Do not use markdown. Do not use emojis.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!