commit skill
Değişiklikleri sahneye alır ve depo (repository) kuralları ile pre-commit hook yapılarına uygun, biçimlendirilmiş commit mesajları oluşturur.
- GitHub yıldızları
- 30
- Dosyalar
- 1
- Son commit
- 3 Kas 2026
- Lisans
- MIT
- İzin verilen araçlar
- 13
commit skill ne işe yarar?
commit bir agent skill'dir. Değişiklikleri sahneye alır ve depo (repository) kuralları ile pre-commit hook yapılarına uygun, biçimlendirilmiş commit mesajları oluşturur.
Özet, skill'in SKILL.md dosyasından oluşturuldu.
commit skilli hakkında
Pull request üzerinde çalışan geliştiriciler, belirli depo standartlarına bağlı kalarak kod değişikliklerinin sahneye alınması (staging) ve commit edilmesi süreçlerini otomatikleştirmek için bu SKILL'i kullanabilirler. Araç; gerekli commit formatlarını, izin verilen değişiklik türlerini ve bilet gereksinimlerini belirlemek için .git-workflow/config.yaml veya .claude/config.yaml gibi yapılandırma dosyalarını okuyarak tüm git iş akışını yönetir. Dosyaları hazırlamak için git status, diff ve add komutlarını kullanır; ayrıca ESLint, Prettier, Black veya Ruff gibi linting veya biçimlendirme araçlarını çalıştırarak pre-commit hook hatalarını otomatik olarak çözmeye çalışabilir.
Bir agent bu SKILL'i yüklediğinde, kullanıcı etkileşimi yoluyla bilet ID'leri ve değişiklik türleri gibi gerekli bağlamları toplayan uzman bir git asistanı gibi davranır. [Fix] mesajı (PROJ-1234) gibi düzgün biçimlendirilmiş commit mesajları üretir ve commit geçmişi ile dal (branch) bilgilerini takip etmek için yerel bir pr-context.json dosyası tutar. Bu sayede her commit'in, manuel biçimlendirme hataları olmaksızın proje kurallarıyla tutarlı kalması sağlanır.
Bir agent bununla neler yapabilir
- 1Değişiklikleri sahneye alma ve commit etmeTüm değiştirilmiş dosyaları sahneye alır ve proje kurallarına dayalı biçimlendirilmiş bir commit mesajı oluşturur.
- 2Pull request bağlamını korumaBir dal üzerindeki ilerlemeyi takip etmek için commit hash'lerini ve zaman damgalarını yerel bir JSON dosyasına günceller.
Skill'in SKILL.md dosyasından yazılmıştır. Her kullanım durumu oradaki bir alıntı ile kontrol edilir.
commit skill nasıl kurulur
Her komut, skill klasörünü istemcinin skills dizinine kopyalar. Yüklemek için istemciyi yeniden başlatın veya yeni bir oturum başlatın.commit skill'ini Eklenti uygulamasına kur
/plugin marketplace add rlajous/claude-code-commands /plugin install git-workflow@git-workflow-marketplace
commit skill'ini Claude Code uygulamasına kur
~/.claude/skills/commit/SKILL.md
$ npx degit rlajous/claude-code-commands/skills/commit ~/.claude/skills/commitcommit skill'ini Claude Code (project) uygulamasına kur
.claude/skills/commit/SKILL.md
$ npx degit rlajous/claude-code-commands/skills/commit .claude/skills/commitcommit skill'ini Codex uygulamasına kur
~/.agents/skills/commit/SKILL.md
$ npx degit rlajous/claude-code-commands/skills/commit ~/.agents/skills/commitcommit skill'ini Gemini CLI uygulamasına kur
~/.gemini/skills/commit/SKILL.md
$ npx degit rlajous/claude-code-commands/skills/commit ~/.gemini/skills/commitcommit skill'ini Claude.ai uygulamasına kur
npx degit rlajous/claude-code-commands/skills/commit commit && zip -r commit.zip commit # claude.ai → Customize → Skills → + → Create skill → Upload a skill → commit.zip
SKILL.md
GitHub'da görüntüleCross-runtime: follow runtime compatibility for invocation, delegation, configuration precedence, state paths, and permissions.
You are helping commit changes for a pull request. Your task is to stage changes, generate a properly formatted commit message following project conventions, and handle pre-commit hooks.
Step 1: Load Configuration
Check for configuration and context:
# Check for config and context files
if [ -f ".git-workflow/config.yaml" ]; then CONFIG_PATH=".git-workflow/config.yaml"; elif [ -f ".claude/config.yaml" ]; then CONFIG_PATH=".claude/config.yaml"; else CONFIG_PATH=""; fi
if [ -f ".git-workflow/pr-context.json" ]; then CONTEXT_PATH=".git-workflow/pr-context.json"; elif [ -f ".claude/.pr-context.json" ]; then CONTEXT_PATH=".claude/.pr-context.json"; else CONTEXT_PATH=""; fi
Load from the resolved CONFIG_PATH (canonical first, legacy read-only fallback):
commits:
format: "[{type}] {message} ({ticket})"
types: [Feature, Fix, Hotfix, Refactor, Docs, Test, Chore]
requireTicket: false
ticketPattern: "^[A-Z]+-\\d+$"
attribution:
enabled: false
format: ""
Load from the resolved CONTEXT_PATH (canonical first, legacy read-only fallback):
{
"ticket_id": "PROJ-1234",
"type": "fix",
"branch": "fix/proj-1234-description"
}
Default Values (when no config):
commits:
format: "[{type}] {message} ({ticket})"
types: [Feature, Fix, Hotfix, Refactor, Docs, Test, Chore]
requireTicket: false
attribution:
enabled: false
Step 2: Gather Context
If .pr-context.json doesn't exist or is incomplete, ask for missing information:
Missing Ticket ID
If commits.requireTicket: true or no ticket found in context:
Question: "What is the ticket ID for this commit?"
- Example:
PROJ-1234,ENG-456 - Allow skipping if
requireTicket: false
Missing Change Type
If type not found in context:
Question: "What type of change is this?"
Options: Feature, Fix, Hotfix, Refactor, Docs, Test, Chore
Step 3: Show Changed Files
Display what will be staged:
# Show git status
git status --short
# Show detailed diff stats
git diff --stat
git diff --cached --stat
Present to user:
Changes to be committed:
Staged:
M src/file1.ts
A src/file2.ts
Unstaged:
M src/file3.ts
M tests/file1.test.ts
Do you want to stage all changes, or select specific files?
Options:
- Stage all changes (default)
- Stage only unstaged changes
- Select specific files
- Review diff before staging
If user wants to review diff:
git diff
Step 4: Stage Files
Based on user's choice:
Stage All
git add -A
Stage Specific Files
git add {file1} {file2} ...
Confirmation
# Show what's staged
git diff --cached --name-only
Step 5: Generate Commit Message
Ask for Summary
Question: "What is the summary of your changes?"
Guidelines:
- Use imperative mood ("Add feature" not "Added feature")
- Be concise (50-72 characters)
- Focus on what and why, not how
Examples:
- "Add user authentication with OAuth2"
- "Fix memory leak in connection pool"
- "Update dependencies to latest versions"
Format Message
Apply commit format from config (default: [{type}] {message} ({ticket})):
| Variable | Source | Example |
|---|---|---|
{type} |
Context or user input | Fix |
{message} |
User-provided summary | Fix login timeout |
{ticket} |
Context or user input | PROJ-1234 |
Type Capitalization:
fix->Fixfeature->Featurehotfix->Hotfix
Result Examples:
[Fix] Standardize token_info schema (PROJ-1234)[Feature] Add holder analysis endpoint (ENG-456)[Chore] Update dependencies(no ticket)
Handle Missing Ticket
If no ticket and format includes ({ticket}):
- If
requireTicket: true: Prompt for ticket - If
requireTicket: false: Omit the({ticket})part
Without ticket: [Fix] Update dependencies
With ticket: [Fix] Update dependencies (PROJ-1234)
Step 6: Commit Changes
Create Commit
git commit -m "{formatted_commit_message}"
Important: Let pre-commit hooks run. Do NOT use --no-verify.
Handle Pre-commit Failures
If commit fails due to pre-commit hooks:
-
Identify the issue:
# Check hook output for errors # Common issues: linting, formatting, type errors -
Auto-fix if possible:
# For ESLint/Prettier npm run lint:fix 2>/dev/null || pnpm lint:fix 2>/dev/null || yarn lint:fix 2>/dev/null # For Python black . 2>/dev/null || ruff format . 2>/dev/null -
Re-stage fixed files:
git add -A -
Retry commit:
git commit -m "{formatted_commit_message}" -
If still failing:
- Show the error to the user
- Ask if they want to fix manually or skip hooks (not recommended)
Attribution (If Enabled)
If attribution.enabled: true in config, append the configured prose note to the commit body. The note must comply with repository commit rules and must not impersonate or add another commit author.
git commit -m "{message}
{attribution.format}"
Example:
[Fix] Update token schema (PROJ-1234)
This commit was created with assistance from an AI coding agent.
Note: Attribution is disabled by default.
Step 7: Update Context
Update .git-workflow/pr-context.json:
mkdir -p .git-workflow
{
"ticket_id": "PROJ-1234",
"ticket_url": "https://...",
"branch": "fix/proj-1234-description",
"type": "fix",
"description": "Short description",
"started_at": "2025-01-17T12:00:00Z",
"commits": [
{
"hash": "abc123",
"message": "[Fix] Summary (PROJ-1234)",
"timestamp": "2025-01-17T12:30:00Z"
}
],
"last_commit_at": "2025-01-17T12:30:00Z"
}
Step 8: Confirm
Output a confirmation message:
Staged: {N} files
Committed: {commit_hash_short}
Message: {commit_message}
Next step: Run /finish to create the pull request
If there were pre-commit fixes:
Pre-commit hooks auto-fixed some issues:
- Formatted 3 files with Prettier
- Fixed 2 ESLint warnings
Staged: 5 files
Committed: abc1234
Message: [Fix] Update token schema (PROJ-1234)
Configuration Reference
| Setting | Default | Description |
|---|---|---|
commits.format |
[{type}] {message} ({ticket}) |
Commit message format |
commits.types |
Feature, Fix, Hotfix... | Allowed commit types |
commits.requireTicket |
false |
Require ticket ID |
attribution.enabled |
false |
Add an AI assistance note |
attribution.format |
empty | Optional prose note |
Error Handling
| Scenario | Action |
|---|---|
| No changes to commit | Inform user, suggest checking git status |
| Pre-commit hook fails | Attempt auto-fix, show errors if still failing |
| Ticket required but missing | Prompt for ticket ID |
| Invalid commit type | Show allowed types, ask again |
| Context file missing | Proceed with user input, create new context |
| Git not in repo | Error with clear message |
Common Commit Formats
The command supports various commit format patterns:
Conventional Commits
commits:
format: "{type}: {message}"
# Result: fix: update token schema
With Scope
commits:
format: "{type}({scope}): {message}"
# Result: fix(api): update token schema
Ticket Prefix
commits:
format: "{ticket}: {message}"
# Result: PROJ-1234: Update token schema
Custom Format
commits:
format: "[{ticket}] {type} - {message}"
# Result: [PROJ-1234] Fix - Update token schema
Examples
Standard Flow
User: /commit
Agent: [Shows staged/unstaged files]
Agent: Stage all changes? -> Yes
Agent: What is the summary? -> "Fix login timeout issue"
Result: Committed abc1234
Message: [Fix] Fix login timeout issue (PROJ-1234)
With Auto-fix
User: /commit
Agent: [Stages files]
Agent: Summary? -> "Update API response"
[Pre-commit fails - ESLint errors]
Agent: Auto-fixing lint errors...
Agent: Fixed 3 files, retrying commit...
Result: Committed def5678
Message: [Fix] Update API response (PROJ-1234)
No Context File
User: /commit
Agent: No context found. What's the ticket ID? -> "ENG-789"
Agent: What type of change? -> "Feature"
Agent: Summary? -> "Add dark mode support"
Result: Committed ghi9012
Message: [Feature] Add dark mode support (ENG-789)
Bu becerideki dosyalar
1commit skill soruları
commit skill'ini Claude Code uygulamasına nasıl kurarım?
npx degit rlajous/claude-code-commands/skills/commit ~/.claude/skills/commit komutunu çalıştırın. Claude Code, skill'leri ~/.claude/skills (tüm projeler) veya .claude/skills (tek proje) konumundan yükler ve açıklaması görevle eşleştiğinde skill'i kullanır.
commit skill'ini hangi istemciler kullanabilir?
Agent Skills biçimini okuyan her istemci: Claude Code, Codex, Gemini CLI ve claude.ai (ZIP olarak yükleyin). Skill içindeki betikler yalnızca istemcinin kod çalıştırmaya izin verdiği yerlerde çalışır.
Commit mesajı formatını özelleştirebilir miyim?
Evet; commit formatını, izin verilen türleri, bilet (ticket) gereksinimlerini ve atıf ayarlarını bir yapılandırma dosyasında yapılandırabilirsiniz.
Bu SKILL yapay zeka desteği için atıf özelliğini destekliyor mu?
Evet, yapılandırmada etkinleştirilirse, commit gövdesine commit işleminin yapay zeka yardımıyla oluşturulduğunu belirten bir not ekleyebilir.