git-commit by aiskillstore
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).
Content & Writing
85 Stars
2 Forks
Updated Jan 19, 2026, 04:39 AM
Why Use This
This skill provides specialized capabilities for aiskillstore's codebase.
Use Cases
- Developing new features in the aiskillstore repository
- Refactoring existing code to follow aiskillstore standards
- Understanding and working with aiskillstore's codebase structure
Install Guide
2 steps- 1
Skip this step if Ananke is already installed.
- 2
Skill Snapshot
Auto scan of skill assets. Informational only.
Valid SKILL.md
Checks against SKILL.md specification
Source & Community
Skill Stats
SKILL.md 343 Lines
Total Files 2
Total Size 10.5 KB
License NOASSERTION
---
name: git-commit
description: 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).
---
# Git Commit Guide
Creates commits using the Conventional Commits format with type, scope, and subject components.
## Quick Start
```bash
# 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"
```
## Commit Structure
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:**
- First line β€ 72 characters
- Use imperative mood ("add", not "added" or "adding")
- No period at end
## Commit Types with Emoji
### Core Types
| 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 |
### Detailed Types
**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 |
## Commit Scope (Task/Request Unit)
**MUST FOLLOW:** Default to **one commit per task/request**, not per file and not per work unit.
- **Principle:** When the user asks for one thing, the result is normally **one commit**, even if it touched many files or went through several internal steps. If you modified `main.py`, `utils.py`, `config.yaml` to deliver the request, these **MUST be in a single commit**.
- **Combine when in doubt.** A clean log of a few meaningful commits beats many micro-commits.
- **Split only for genuinely unrelated concerns** (e.g. an unrelated bugfix landed alongside the feature) β and even then aim for 2β3 commits max, never one-per-file.
- **Reason:** When reverting to a specific commit, that delivered request should work completely.
**β Bad Example** (νμΌλ³λ‘ λΆλ¦¬ μ»€λ° - κΈ°λ₯ λ¨μκ° μλ)
```bash
git add search.py
git commit -m "β¨ feat: create search module"
git add api.py
git commit -m "π fix: fix api connection"
```
**β
Good Example**
```bash
git add search.py api.py
git commit -m "β¨ feat(search): implement keyword search with API endpoint"
```
## Result-Oriented Messages
**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` |
## Core Workflow
### 1. Check Project Conventions
```bash
cat CLAUDE.md 2>/dev/null | head -30
```
Always check for project-specific commit rules.
### 2. Review Staged Changes
```bash
git diff --staged --stat
git diff --staged
```
Understand what's being committed.
### 3. Analyze Changes
Identify:
- Primary type (feat > fix > refactor)
- Scope (module/component affected)
- Summary (what changed, in imperative mood)
### 4. Create Commit
```bash
git commit -m "emoji type(scope): subject"
# Example: git commit -m "β¨ feat(auth): add login validation"
```
### 5. Add Body (if needed)
For complex changes:
```bash
git commit -m "$(cat <<'EOF'
β¨ feat(scope): subject
Body explaining WHY and HOW.
Wrap at 72 characters.
Refs: #123
EOF
)"
```
## Breaking Changes
Add exclamation mark (!) after type/scope for breaking changes:
```bash
git commit -m "π₯ feat(api)!: change response format"
```
Or use footer:
```bash
git commit -m "$(cat <<'EOF'
π₯ feat(api): change response format
BREAKING CHANGE: Response now returns array instead of object.
EOF
)"
```
## Subject Line Rules
- **DO**: Use imperative mood ("add", "fix", "change")
- **DO**: Keep under 50 characters
- **DO**: Start lowercase after colon
- **DON'T**: End with period
- **DON'T**: Use vague words ("update", "improve", "change stuff")
## Review Fix Commits
When addressing PR review comments:
```bash
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
)"
```
## Commit Split Guidelines
**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
```
## Pre-Commit Checklist
Before creating a commit, ask yourself:
1. **Are all related files included?** (Are all dependency files modified for the feature `git add`ed?)
2. **Is the message clean?** (Does it contain only the core implementation without repetitive "fix", "modify"?)
3. **Is it the diff from previous commit?** (Did you summarize `git diff` content, not conversation log?)
## Good Commit Examples
```
β¨ 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
```
## Language Rule
**MUST FOLLOW:** The commit message language should match the repository's existing commit history.
Before writing a commit message:
1. Run `git log --oneline -5` to check recent commit messages
2. Use the same language as the existing commits
3. If commits are in Korean, write in Korean. If in English, write in English.
```bash
# Check recent commit language
git log --oneline -5
```
**Examples:**
- If recent commits are `"β¨ feat: λ‘κ·ΈμΈ κΈ°λ₯ μΆκ°"` β Write in Korean
- If recent commits are `"β¨ feat: add login feature"` β Write in English
## Important Rules
- **ALWAYS** check recent commit history to determine commit message language
- **ALWAYS** check project conventions (CLAUDE.md) before committing
- **ALWAYS** review staged changes before committing
- **ALWAYS** commit per task/request (one commit), not per file or per change-type; combine when in doubt
- **ALWAYS** set local git email by remote host before committing: GitLab/`gcsc.co.kr` β `[email protected]`, `github.com` β `[email protected]` (only if it doesn't already match)
- **ALWAYS** write result-oriented messages (final changes only)
- **ALWAYS** use imperative mood in subject ("add", not "added")
- **ALWAYS** include appropriate emoji at the start
- **ALWAYS** keep first line β€ 72 characters
- **ALWAYS** use HEREDOC for multi-line messages
- **NEVER** stage secrets, credentials, or large binaries
- **NEVER** use vague subjects ("fix bug", "update code")
- **NEVER** list process steps in commit message
- **NEVER** end subject with period
Name Size