MUST use this skill when user asks to commit, create commit, save work, or mentions "커밋". This skill OVERRIDES default git commit behavior. Creates commits following Conventional Commits format with emoji + type/scope/subject (✨ feat, 🐛 fix, ♻️ refactor, etc).
Creates commits using the Conventional Commits format with type, scope, and subject components.
# 1. Check project conventions
cat CLAUDE.md 2>/dev/null | head -30
# 2. Review staged changes
git diff --staged --stat
git diff --staged
# 3. Stage files if needed
git add <files>
# 4. Create commit with emoji
git commit -m "✨ feat(scope): add new feature"
Format: emoji type(scope): subject
| Component | Description | Example |
|-----------|-------------|---------|
| emoji | Visual indicator | ✨, 🐛, ♻️ |
| type | Change category | feat, fix, refactor |
| scope | Affected area (kebab-case) | auth, api-client |
| subject | What changed (imperative mood) | add login validation |
Rules:
| Emoji | Type | Purpose |
|-------|------|---------|
| ✨ | feat | New feature |
| 🐛 | fix | Bug fix |
| 📝 | docs | Documentation |
| 💄 | style | Formatting/style (no logic change) |
| ♻️ | refactor | Code refactoring |
| ⚡️ | perf | Performance improvement |
| ✅ | test | Add/update tests |
| 🔧 | chore | Tooling, config |
| 🚀 | ci | CI/CD improvements |
| ⏪️ | revert | Revert changes |
Features (feat): | Emoji | Usage | |-------|-------| | 🧵 | Multithreading/concurrency | | 🔍️ | SEO improvements | | 🏷️ | Add/update types | | 💬 | Text and literals | | 🌐 | Internationalization/localization | | 👔 | Business logic | | 📱 | Responsive design | | 🚸 | UX/usability improvements | | 📈 | Analytics/tracking | | 🚩 | Feature flags | | 💫 | Animations/transitions | | ♿️ | Accessibility | | 🦺 | Validation | | 🔊 | Add/update logs | | 🥚 | Easter eggs | | 💥 | Breaking changes | | ✈️ | Offline support |
Fixes (fix): | Emoji | Usage | |-------|-------| | 🚨 | Compiler/linter warnings | | 🔒️ | Security issues | | 🩹 | Simple fix for non-critical issue | | 🥅 | Catch errors | | 👽️ | External API changes | | 🔥 | Remove code/files | | 🚑️ | Critical hotfix | | ✏️ | Typos | | 💚 | CI build | | 🔇 | Remove logs |
Refactor: | Emoji | Usage | |-------|-------| | 🚚 | Move/rename resources | | 🏗️ | Architectural changes | | 🎨 | Improve structure/format | | ⚰️ | Remove dead code |
Chore: | Emoji | Usage | |-------|-------| | 👥 | Add/update contributors | | 🔀 | Merge branches | | 📦️ | Compiled files/packages | | ➕ | Add dependency | | ➖ | Remove dependency | | 🌱 | Seed files | | 🧑💻 | Developer experience | | 🙈 | .gitignore | | 📌 | Pin dependencies | | 👷 | CI build system | | 📄 | License | | 🎉 | Begin project | | 🔖 | Release/version tags | | 🚧 | Work in progress |
Database/Assets: | Emoji | Usage | |-------|-------| | 🗃️ | Database changes | | 🍱 | Assets |
Test: | Emoji | Usage | |-------|-------| | 🧪 | Add failing test | | 🤡 | Mock things | | 📸 | Snapshots | | ⚗️ | Experiments |
MUST FOLLOW: Default to one commit per task/request, not per file and not per work unit.
main.py, utils.py, config.yaml to deliver the request, these MUST be in a single commit.❌ Bad Example (파일별로 분리 커밋 - 기능 단위가 아님)
git add search.py
git commit -m "✨ feat: create search module"
git add api.py
git commit -m "🐛 fix: fix api connection"
✅ Good Example
git add search.py api.py
git commit -m "✨ feat(search): implement keyword search with API endpoint"
MUST FOLLOW: Do not write conversation history (process). Write only the final code changes (result).
Even if there were 10 modifications during development (error fixes, typo fixes, etc.), the commit message should only state the finally implemented feature.
| ❌ Bad (Process) | ✅ Good (Result) |
|------------------|------------------|
| "Fixed typo, fixed A function error, added library to implement login" | ✨ feat(auth): implement JWT-based login |
| "fix api connection and variable name errors and import errors" | ✨ feat(search): implement keyword search |
cat CLAUDE.md 2>/dev/null | head -30
Always check for project-specific commit rules.
git diff --staged --stat
git diff --staged
Understand what's being committed.
Identify:
git commit -m "emoji type(scope): subject"
# Example: git commit -m "✨ feat(auth): add login validation"
For complex changes:
git commit -m "$(cat <<'EOF'
✨ feat(scope): subject
Body explaining WHY and HOW.
Wrap at 72 characters.
Refs: #123
EOF
)"
Add exclamation mark (!) after type/scope for breaking changes:
git commit -m "💥 feat(api)!: change response format"
Or use footer:
git commit -m "$(cat <<'EOF'
💥 feat(api): change response format
BREAKING CHANGE: Response now returns array instead of object.
EOF
)"
When addressing PR review comments:
git commit -m "$(cat <<'EOF'
🐛 fix(scope): address review comment #ID
Brief explanation of what was wrong and how it's fixed.
Addresses review comment #123456789.
EOF
)"
Default is NOT to split. One task/request → one commit (see "Commit Scope" above). Do not split by change-type, file-pattern, or "easier to review" — that produces over-splitting (20+ commits/day) and is explicitly discouraged.
Split into a SEPARATE commit only when genuinely unrelated concerns ended up mixed in one batch — e.g. an unrelated bugfix or dependency bump landed alongside the requested feature. Even then aim for 2–3 commits max, never one-per-file and never one-per-change-type.
Example — keep together (DON'T over-split): a feature plus its docs, types, tests, and the lint fixes it required are all one commit — they deliver a single request.
✨ feat(solc): add new solc version support with types, docs, and tests
Only carve out a second commit if something truly unrelated rode along:
1st: ✨ feat(solc): add new solc version support with types, docs, and tests
2nd: 🔒️ fix(deps): patch unrelated security vulnerability in lockfile
Before creating a commit, ask yourself:
git added?)git diff content, not conversation log?)✨ feat: add user authentication system
🐛 fix: resolve memory leak in rendering process
📝 docs: update API documentation with new endpoints
♻️ refactor: simplify error handling logic in parser
🚨 fix: resolve linter warnings in component files
🧑💻 chore: improve developer tools setup process
👔 feat: implement business logic for transaction validation
🩹 fix: resolve minor style inconsistency in header
🚑️ fix: patch critical security vulnerability in auth flow
🎨 style: restructure component for better readability
🔥 fix: remove deprecated legacy code
🦺 feat: add input validation for user registration form
💚 fix: resolve CI pipeline test failures
📈 feat: implement tracking for user engagement analytics
🔒️ fix: strengthen authentication password requirements
♿️ feat: improve form accessibility for screen readers
MUST FOLLOW: The commit message language should match the repository's existing commit history.
Before writing a commit message:
git log --oneline -5 to check recent commit messages# Check recent commit language
git log --oneline -5
Examples:
"✨ feat: 로그인 기능 추가" → Write in Korean"✨ feat: add login feature" → Write in Englishgcsc.co.kr → chbae@gcsc.co.kr, github.com → chbae624@gmail.com (only if it doesn't already match)Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer