commit skill
저장소 컨벤션과 pre-commit hook을 준수하여 변경 사항을 스테이징하고 형식에 맞는 커밋 메시지를 생성합니다.
- GitHub 스타
- 30
- 파일
- 1
- 마지막 커밋
- 2026년 11월 3일
- 라이선스
- MIT
- 허용된 도구
- 13
commit skill은 무엇을 하나요?
commit은(는) agent skill입니다. 저장소 컨벤션과 pre-commit hook을 준수하여 변경 사항을 스테이징하고 형식에 맞는 커밋 메시지를 생성합니다.
skill의 SKILL.md에서 생성된 요약입니다.
commit skill 정보
Pull Request 작업을 수행하는 개발자는 이 SKILL을 사용하여 특정 저장소 표준을 준수하면서 코드 변경 사항의 스테이징과 커밋을 자동화할 수 있습니다. 이 도구는 .git-workflow/config.yaml 또는 .claude/config.yaml과 같은 설정 파일을 읽어 필요한 커밋 형식, 허용되는 변경 타입 및 티켓 요구 사항을 결정함으로써 전체 git 워크플로우를 관리합니다. git status, diff, add 명령을 사용하여 파일을 준비하며, ESLint, Prettier, Black 또는 Ruff와 같은 린팅 및 포맷팅 도구를 실행하여 pre-commit hook 실패를 자동으로 해결하려고 시도합니다.
에이전트가 이 SKILL을 로드하면 사용자 상호작용을 통해 티켓 ID 및 변경 타입과 같은 필수 컨텍스트를 수집하는 전문 git 어시스턴트 역할을 수행합니다. [Fix] message (PROJ-1234)와 같이 형식이 지정된 커밋 메시지를 생성하며, 커밋 이력과 브랜치 정보를 추적하기 위해 로컬 pr-context.json 파일을 유지합니다. 이를 통해 수동 포맷팅 오류 없이 모든 커밋이 프로젝트 컨벤션을 일관되게 유지하도록 합니다.
agent가 수행할 수 있는 작업
- 1변경 사항 스테이징 및 커밋모든 수정된 파일을 스테이징하고 프로젝트 규칙에 따라 형식에 맞는 커밋 메시지를 생성합니다.
- 2Pull Request 컨텍스트 유지로컬 JSON 파일을 업데이트하여 커밋 해시와 타임스탬프를 기록하고 브랜치의 진행 상황을 추적합니다.
skill의 SKILL.md를 기반으로 작성되었습니다. 모든 사용 사례는 해당 문서의 인용구와 대조 확인되었습니다.
commit skill 설치 방법
각 명령은 skill 폴더를 클라이언트의 skills 디렉터리에 복사합니다. 클라이언트를 재시작하거나 새 세션을 시작하여 로드하세요.플러그인에 commit skill 설치
/plugin marketplace add rlajous/claude-code-commands /plugin install git-workflow@git-workflow-marketplace
Claude Code에 commit skill 설치
~/.claude/skills/commit/SKILL.md
$ npx degit rlajous/claude-code-commands/skills/commit ~/.claude/skills/commitClaude Code (project)에 commit skill 설치
.claude/skills/commit/SKILL.md
$ npx degit rlajous/claude-code-commands/skills/commit .claude/skills/commitCodex에 commit skill 설치
~/.agents/skills/commit/SKILL.md
$ npx degit rlajous/claude-code-commands/skills/commit ~/.agents/skills/commitGemini CLI에 commit skill 설치
~/.gemini/skills/commit/SKILL.md
$ npx degit rlajous/claude-code-commands/skills/commit ~/.gemini/skills/commitClaude.ai에 commit skill 설치
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에서 보기Cross-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)
이 스킬의 파일
1commit skill 질문
Claude Code에 commit skill을 어떻게 설치하나요?
npx degit rlajous/claude-code-commands/skills/commit ~/.claude/skills/commit를 실행합니다. Claude Code는 ~/.claude/skills(모든 프로젝트) 또는 .claude/skills(한 프로젝트)에서 skills를 로드하며, 설명이 작업과 일치할 때 skill을 사용합니다.
commit skill을 사용할 수 있는 클라이언트는 무엇인가요?
Agent Skills 형식을 읽는 모든 클라이언트(Claude Code, Codex, Gemini CLI, claude.ai(ZIP으로 업로드))가 사용할 수 있습니다. skill 내 스크립트는 클라이언트가 코드 실행을 허용하는 경우에만 실행됩니다.
커밋 메시지 형식을 사용자 정의할 수 있나요?
네, 설정 파일에서 커밋 형식, 허용되는 타입, 티켓 요구 사항 및 기여 설정 등을 구성할 수 있습니다.
AI 지원에 대한 기여 표시를 지원하나요?
네, 설정에서 활성화하면 커밋 본문에 AI의 도움으로 생성되었다는 문구를 추가할 수 있습니다.