Skip to main content

git-commit

Create commits with conventional messages and issue references. Use when user says "commit", "save changes", or "stage and commit". Local commits only — see git-push for remote.

Source facts

Repository
laurigates/claude-plugins
Last source activity
September 24, 2026 at 08:31
Detected SKILL.md language
English
Stars
60
Forks
6

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
2 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
created
2026-01-21T00:00:00.000Z
modified
2026-09-23T00:00:00.000Z
reviewed
2026-09-02T00:00:00.000Z
name
git-commit
description
Create commits with conventional messages and issue references. Use when user says "commit", "save changes", or "stage and commit". Local commits only — see git-push for remote.
user-invocable
false
allowed-tools
Bash(git status *), Bash(git diff *), Bash(git log *), Bash(git add *), Bash(git commit *), Bash(git restore *), Bash(pre-commit *), Bash(gh issue *), Read, Grep, Glob, TodoWrite
# Git Commit ## When to Use This Skill | Use this skill when... | Use the alternative when... | |---|---| | Creating a local commit with conventional message and pre-commit hooks | Use `git-push` afterwards to send the commit to remote | | Auto-detecting related GitHub issues and inserting `Fixes #N` references | Use `github-issue-autodetect` to study the detection patterns themselves | | Staging and committing without pushing or opening a PR | Use `git-commit-push-pr` to chain commit + push + PR creation in one step | | Applying repo conventions (humble tone, logical grouping) to a single commit | Use `git-commit-workflow` for the broader staging + message convention guidance | Create local commits with proper conventional messages and issue references. ## When to Use **Trigger phrases:** - "commit" / "commit locally" / "commit these changes" - "save changes" / "save my work" - "stage and commit" - "create a commit" **Context signals:** - User has made code changes - `git status` shows modified/untracked files - No mention of "push", "remote", or "PR" ## Workflow ### 1. Assess State ```bash # Check branch and status git branch --show-current git status --porcelain=v2 --branch # View changes git diff --stat # Unstaged git diff --cached --stat # Already staged ``` ### 2. Stage Changes **Explicit staging** (preferred): ```bash git add src/feature.ts git add tests/feature.test.ts git status --porcelain # Verify ``` **Modified tracked files**: ```bash git add -u # Stage all modified tracked files ``` ### 3. Run Pre-commit Hooks If `.pre-commit-config.yaml` exists: ```bash pre-commit run --all-files # If hooks modify files (formatters), re-stage: git add -u pre-commit run --all-files # Should pass now ``` ### 4. Detect Related Issues Scan open issues for matches (see **github-issue-autodetect** skill): ```bash gh issue list --state open --json number,title,labels --limit 30 ``` **Match staged changes to issues** by: - File paths mentioned in issue body (high confidence) - Error messages or function names (high confidence) - Directory/component matches (medium confidence) ### 5. Create Commit **IMPORTANT:** Use HEREDOC directly in the git commit command. ```bash git commit -m "$(cat <<'EOF' type(scope): concise description Optional body explaining the change. Fixes #123 Refs #456 Co-Authored-By: Claude <model name> <noreply@anthropic.com> EOF )" ``` **The scope is required.** Write `type(scope): …` — `docs(readme): update install steps`, never a bare `docs: update install steps`. The Conventional Commits spec lets you omit the scope; this house convention does not (`.claude/rules/conventional-commits.md`). Take it from the component or plugin the change touches. Use the exact `Co-Authored-By` line the harness provides for the current session — do not copy a model name from this example. **Inside a quoted heredoc (`<<'EOF'`), backticks, `$`, and `\` are already literal — never backslash-escape them.** A reflexive `\`` produces a literal backslash in the commit message that survives into `git log` and needs an `--amend` to clean up. For trailer conventions (Co-authored-by, Signed-off-by, BREAKING CHANGE, Release-As), see **git-commit-trailers** skill. ### Conventional Commit Types | Type | Use Case | Version Bump | |------|----------|--------------| | `feat` | New feature | Minor | | `fix` | Bug fix | Patch | | `perf` | Performance improvement | Patch | | `refactor` | Code restructuring | None | | `docs` | Documentation | None | | `test` | Adding tests | None | | `chore` | Maintenance, deps | None | | `ci` | CI/CD config | None | | `build` | Build system, deps | None | See [Conventional Commits Standards](../../.claude/rules/conventional-commits.md) for complete reference. ### Issue References | Keyword | Effect | |---------|--------| | `Fixes #N` | Closes issue on merge (bug fixes) | | `Closes #N` | Closes issue on merge (features) | | `Refs #N` | Links without closing (partial work) | ## Output On success, report: ``` Created commit: abc1234 Message: feat(auth): add OAuth2 support Fixes #123 Refs #456 Ready for: push to remote, create PR, or continue working ``` ## Composability This skill creates **local commits only**. For remote operations: - **git-push** skill: Push commits to remote - **git-pr** skill: Create pull request Common compositions: - "commit" → git-commit only - "commit and push" → git-commit → git-push - "commit and create PR" → git-commit → git-push → git-pr **Before building further on an existing PR branch** (an additional in-session request continuing earlier work), invoke `/git:pr-sync-check` first. If the verdict is anything other than `in_sync` / `no_pr` / `no_remote` — e.g. `pr_merged` or `behind` — stop and reconcile (branch off the updated default, or `git pull --rebase`) before committing. See `.claude/rules/pr-branch-sync.md`. ## Error Handling **No changes to commit:** ``` Nothing to commit. Working tree clean. ``` **Pre-commit hook fails:** ```bash # Fix the issue, then: git add -u pre-commit run --all-files # Then commit ``` **Merge conflict markers:** ``` Cannot commit: unresolved merge conflicts in <file> ``` ## Best Practices 1. **One logical change per commit** - Easier to review and revert 2. **Always reference issues** - Maintains traceability 3. **Run pre-commit before staging** - Avoids re-staging formatter changes 4. **Keep subject under 72 chars** - Better display in git log 5. **Use imperative mood** - "Add feature" not "Added feature" 6. **Add appropriate trailers** - Co-authored-by for pair/AI work, Signed-off-by for DCO projects, BREAKING CHANGE for major versions (see git-commit-trailers)
View on GitHub