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.

معلومات المصدر

المستودع
laurigates/claude-plugins
آخر نشاط في المصدر
٢٤ سبتمبر ٢٠٢٦ في ٠٨:٣١
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٦٠
التفرعات
٦

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
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)
عرض على GitHub