| name | git-committer |
| description | Analyze staged changes and create meaningful git commits with appropriate commit messages following conventional commit standards. Automatically groups changes into logical units and presents multiple commit options (single vs. multiple commits) before execution. Always waits for user confirmation. |
Git Committer
Analyze staged and unstaged changes, generate meaningful commit messages following conventional commit standards, and create git commits with proper formatting.
Key Features:
- ๐ Automatically analyzes changes and groups them into logical units
- ๐ Always presents multiple commit options (single vs. multiple commits)
- โธ๏ธ Waits for user confirmation before executing any commits
- ๐ Follows Conventional Commit standards
- ๐จ Adapts to project's existing commit style and language
When to Use This Skill
Use this skill when:
- User asks to "commit changes", "make a commit", "git commit", "์ปค๋ฐํด์ค"
- You've completed a feature or bug fix and need to commit
- User wants to review what will be committed before committing
- You need to create a well-formatted commit message
IMPORTANT: This skill ALWAYS asks for user confirmation before creating commits. It will:
- Analyze all changes
- Group them into logical units
- Present multiple commit strategies (single vs. multiple)
- Wait for user to choose
- Execute the chosen strategy
Core Workflow
Step 1: Analyze Current Git Status
CRITICAL: Always check for submodules first
Check for submodules:
# Check if submodules exist
git submodule status
ls -la .gitmodules 2>/dev/null
# If submodules exist, check their status
git submodule foreach 'git status'
Check main repository status:
git status
git diff --staged
git diff
Gather information about:
- Submodules with changes (MUST be committed first)
- Staged files (what will be committed)
- Unstaged changes (what won't be committed)
- Untracked files
- Current branch name
If submodules have changes:
- Identify which submodules have uncommitted changes
- Identify which submodules have new commits (not yet committed in parent)
- These MUST be handled before committing the parent repository
Step 2: Review Recent Commits
Check commit history for style consistency:
git log --oneline -10
git log -1 --format='%B'
Identify:
- Commit message format (conventional commits, custom format, etc.)
- Typical message length and style
- Use of prefixes/tags (feat:, fix:, chore:, etc.)
- Language preference (English, Korean, etc.)
Step 3: Analyze Changes and Group by Logical Units
CRITICAL: Always analyze if changes should be split into multiple commits
Understand the nature of changes:
- New feature addition
- Bug fix
- Refactoring
- Documentation update
- Test additions
- Configuration changes
- Dependency updates
Group changes by logical units:
Analyze all changed files and group them into logical units. Each unit should:
- Have a single, clear purpose
- Be independently understandable
- Represent one type of change (feat, fix, refactor, etc.)
Example groupings:
Group 1 (feat): New login feature
- src/pages/LoginPage.tsx
- src/hooks/useAuth.ts
- src/routes.tsx
Group 2 (test): Login feature tests
- tests/LoginPage.test.tsx
- tests/useAuth.test.ts
Group 3 (docs): Update authentication documentation
- docs/authentication.md
- README.md
Important considerations:
- Check for sensitive files (.env, credentials, secrets)
- Ensure tests pass (if applicable)
- Check for console.log or debug code
- Identify if changes can be logically separated into multiple commits
- Look for different types (feat + fix), different scopes (auth + ui), or different concerns
Step 4: Determine Commit Strategy
IMPORTANT: Always present commit options to the user before executing
CRITICAL: Check for submodule changes first
If submodules have changes:
- Separate submodule commits from parent repository commits
- Submodules are ALWAYS committed first
- Parent repository commit includes submodule reference update
Single commit criteria:
- All changes are tightly coupled
- Changes represent one atomic unit
- Separating would break functionality
Multiple commits criteria:
- Changes span different features/modules
- Mix of different types (feat + fix + refactor)
- Tests can be separated from implementation
- Documentation updates are substantial
- Mix of related but independent changes
- Submodule changes vs. parent repository changes
Always ask the user:
If changes can be split, present options like:
## ๐ ๋ณ๊ฒฝ์ฌํญ ๋ถ์
**๋ณ๊ฒฝ๋ ํ์ผ๋ค์ ๋ค์๊ณผ ๊ฐ์ด ๊ทธ๋ฃนํํ ์ ์์ต๋๋ค:**
### ์ต์
A: ๋จ์ผ ์ปค๋ฐ (๋น ๋ฅธ ๋ฐฉ๋ฒ)
feat(auth): implement login feature with tests and docs
- Add LoginPage component
- Create useAuth hook
- Update routes configuration
- Add tests for login functionality
- Update authentication documentation
### ์ต์
B: 3๊ฐ์ ์ปค๋ฐ์ผ๋ก ๋ถ๋ฆฌ (๊ถ์ฅ)
**์ปค๋ฐ 1:**
feat(auth): implement login page and authentication hook
ํ์ผ: LoginPage.tsx, useAuth.ts, routes.tsx
**์ปค๋ฐ 2:**
test(auth): add tests for login functionality
ํ์ผ: LoginPage.test.tsx, useAuth.test.ts
**์ปค๋ฐ 3:**
docs(auth): update authentication documentation
ํ์ผ: authentication.md, README.md
### ์ต์
C: ์ปค์คํ
์ง์ ์ปค๋ฐ์ ์ด๋ป๊ฒ ๋๋์ง ์๋ ค์ฃผ์ธ์.
---
์ด๋ค ๋ฐฉ์์ผ๋ก ์งํํ ๊น์? (A/B/C)
Wait for user response before proceeding
Step 5: Generate Commit Messages
Follow conventional commit format:
<type>(<scope>): <subject>
<body>
<footer>
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, missing semicolons, etc.)refactor: Code refactoringtest: Adding or modifying testschore: Maintenance tasks, dependency updatesperf: Performance improvementsci: CI/CD changesbuild: Build system changes
Guidelines:
- Subject line: 50 characters or less, imperative mood
- Body: Explain the "why" not the "what" (optional)
- Footer: Reference issues, breaking changes (optional)
- Use consistent language with project history
- Be specific and descriptive
Step 6: Handle Submodules First (If Applicable)
CRITICAL: If submodules have changes, handle them BEFORE committing parent repository
Submodule Workflow:
1. Identify submodules with changes:
# Check each submodule
git submodule foreach 'git status --short'
2. For each submodule with changes, present commit options:
## ๐ ์๋ธ๋ชจ๋ ์ปค๋ฐ ํ์
**.claude/skills ์๋ธ๋ชจ๋**์ ๋ณ๊ฒฝ์ฌํญ์ด ์์ต๋๋ค.
๋จผ์ ์๋ธ๋ชจ๋์ ์ปค๋ฐํ ํ, ๋ฃจํธ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์ปค๋ฐํด์ผ ํฉ๋๋ค.
### ์๋ธ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ:
- .claude/skills/git-committer/SKILL.md (new)
**์๋ธ๋ชจ๋ ์ปค๋ฐ ๋ฉ์์ง:**
feat: add git-committer skill
Add new git-committer skill that analyzes changes and creates meaningful commits with conventional commit standards. Supports multiple commit strategies and submodule handling.
---
์ด ๋ด์ฉ์ผ๋ก ์๋ธ๋ชจ๋์ ๋จผ์ ์ปค๋ฐํ ๊น์? (Y/n)
3. Execute submodule commits:
# Navigate to submodule and commit
cd .claude/skills
git add git-committer/SKILL.md
git commit -m "feat: add git-committer skill" -m "Add new git-committer skill that analyzes changes and creates meaningful commits with conventional commit standards. Supports multiple commit strategies and submodule handling."
# Return to root
cd ../..
# Update parent repository to reference new submodule commit
git add .claude/skills
4. Notify user:
โ
์๋ธ๋ชจ๋ ์ปค๋ฐ ์๋ฃ
**.claude/skills** ์๋ธ๋ชจ๋์ด ์ฑ๊ณต์ ์ผ๋ก ์ปค๋ฐ๋์์ต๋๋ค.
์ด์ ๋ฃจํธ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์ปค๋ฐํ ์ค๋น๊ฐ ๋์์ต๋๋ค.
๋ฃจํธ ๋ ํฌ์งํ ๋ฆฌ์๋ ์๋ธ๋ชจ๋ ์ฐธ์กฐ ์
๋ฐ์ดํธ๊ฐ ํฌํจ๋ฉ๋๋ค.
5. Continue to Step 7 for parent repository commit
Step 7: Execute Parent Repository Commits Based on User Choice
IMPORTANT: Only execute after user confirms the commit strategy
Note: If submodules were committed in Step 6, ensure the parent commit includes the submodule reference update.
For Single Commit (Option A):
# Stage all relevant files
git add <files>
# Create the commit
git commit -m "feat(auth): implement login feature with tests and docs" -m "- Add LoginPage component
- Create useAuth hook
- Update routes configuration
- Add tests for login functionality
- Update authentication documentation"
# Verify
git log -1 --stat
For Multiple Commits (Option B):
Execute commits sequentially:
# Commit 1: Implementation
git add src/pages/LoginPage.tsx src/hooks/useAuth.ts src/routes.tsx
git commit -m "feat(auth): implement login page and authentication hook" -m "Add LoginPage component with email/password form and useAuth hook for authentication state management. Update routes to include new login page."
# Commit 2: Tests
git add tests/LoginPage.test.tsx tests/useAuth.test.ts
git commit -m "test(auth): add tests for login functionality" -m "Add comprehensive tests for LoginPage component and useAuth hook covering success and error scenarios."
# Commit 3: Documentation
git add docs/authentication.md README.md
git commit -m "docs(auth): update authentication documentation" -m "Document new login feature, authentication flow, and usage examples."
# Verify all commits
git log -3 --oneline
For Custom Split (Option C):
Follow user's instructions for grouping files and creating commits.
Step 7: Verify and Report
After completing commit(s), show summary:
## โ
์ปค๋ฐ ์๋ฃ
**์์ฑ๋ ์ปค๋ฐ:**
- abc1234 feat(auth): implement login page and authentication hook
- def5678 test(auth): add tests for login functionality
- ghi9012 docs(auth): update authentication documentation
**๋ค์ ๋จ๊ณ:**
- [ ] ์ฝ๋ ๋ฆฌ๋ทฐ ํ์ํ๊ฐ์?
- [ ] ์๊ฒฉ ์ ์ฅ์์ pushํ ๊น์?
- [ ] PR์ ์์ฑํ ๊น์?
Important notes:
- NEVER commit sensitive files (.env, credentials, secrets)
- NEVER skip pre-commit hooks unless explicitly requested
- NEVER amend commits from other developers
- ALWAYS verify the commit was created successfully
- ALWAYS wait for user confirmation before executing commits
Special Cases
Multiple Logical Changes
This is now handled automatically in Step 3 and Step 4.
The skill will always analyze and present multiple commit options when applicable. This section is kept for reference on how to handle edge cases.
Pre-commit Hook Failures
If pre-commit hooks modify files:
# Check if it's safe to amend
git log -1 --format='%an %ae'
git status
# If the last commit is yours and not pushed
git add .
git commit --amend --no-edit -m "$(git log -1 --format='%B')"
# Otherwise create a new commit
git add .
git commit -m "chore: apply pre-commit hook changes"
Empty Changes
If no changes to commit:
ํ์ฌ ์ปค๋ฐํ ๋ณ๊ฒฝ์ฌํญ์ด ์์ต๋๋ค.
**Git Status:**
- Staged files: 0
- Unstaged changes: 0
- Untracked files: [list if any]
๋ค์ ์ค ์ ํํด์ฃผ์ธ์:
A) Untracked ํ์ผ์ stageํ๊ณ ์ปค๋ฐ
B) ์์
๋๋ ํ ๋ฆฌ ์ํ ํ์ธ
C) ์ทจ์
Examples
Example 1: Feature Addition
User: "์ปค๋ฐํด์ค"
Analysis:
$ git status
On branch feature/login
Changes to be committed:
new file: src/pages/LoginPage.tsx
new file: src/hooks/useAuth.ts
modified: src/routes.tsx
$ git log --oneline -5
abc1234 feat: ์ ์ ํ๋กํ ํ์ด์ง ์ถ๊ฐ
def5678 fix: ๋ค๋น๊ฒ์ด์
๋ฒ๊ทธ ์์
ghi9012 refactor: API ํด๋ผ์ด์ธํธ ๋ณต์ก๋ ํด์
Output:
## ๐ ๋ณ๊ฒฝ์ฌํญ ๋ถ์
**๋ณ๊ฒฝ๋ ํ์ผ:**
- src/pages/LoginPage.tsx (new)
- src/hooks/useAuth.ts (new)
- src/routes.tsx (modified)
**๋ถ์ ๊ฒฐ๊ณผ:**
- โ
๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ด ์ธ์ฆ ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋จ
- โ
๋ฏผ๊ฐํ ํ์ผ ์์
- โ
ํ๋ก์ ํธ ์ปค๋ฐ ์คํ์ผ ์ค์ (ํ๊ธ)
### ์ต์
A: ๋จ์ผ ์ปค๋ฐ (๊ถ์ฅ)
feat(auth): ๋ก๊ทธ์ธ ํ์ด์ง ๋ฐ ์ธ์ฆ ํ ๊ตฌํ
์ด๋ฉ์ผ/๋น๋ฐ๋ฒํธ ํผ์ด ์๋ LoginPage ์ปดํฌ๋ํธ์ ์ธ์ฆ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ useAuth ํ ์ ์ถ๊ฐ. ์ ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ํฌํจํ๋๋ก ๋ผ์ฐํธ ์ ๋ฐ์ดํธ.
---
์ด ๋ด์ฉ์ผ๋ก ์ปค๋ฐํ ๊น์? (Y/n)
Example 2: Bug Fix
Git diff shows:
- if (user.age > 18) {
+ if (user.age >= 18) {
Proposed message:
fix(validation): correct age verification logic
Change age check from > to >= to properly include 18-year-olds
in adult verification. Fixes issue where 18-year-olds were
incorrectly rejected.
Fixes #123
Example 3: Multiple Logical Units (Multiple Commits Recommended)
User: "์ปค๋ฐํด์ค"
Analysis:
$ git status
Changes to be committed:
modified: src/api/rateLimit.ts
new file: tests/rateLimit.test.ts
modified: docs/api.md
modified: README.md
new file: config/rateLimit.config.ts
Output:
## ๐ ๋ณ๊ฒฝ์ฌํญ ๋ถ์
**๋ณ๊ฒฝ๋ ํ์ผ๋ค์ ๋ค์๊ณผ ๊ฐ์ด ๊ทธ๋ฃนํํ ์ ์์ต๋๋ค:**
### ๊ทธ๋ฃน 1 (feat): Rate limiting ๊ตฌํ
- src/api/rateLimit.ts
- config/rateLimit.config.ts
### ๊ทธ๋ฃน 2 (test): Rate limiting ํ
์คํธ
- tests/rateLimit.test.ts
### ๊ทธ๋ฃน 3 (docs): API ๋ฌธ์ ์
๋ฐ์ดํธ
- docs/api.md
- README.md
---
### ์ต์
A: ๋จ์ผ ์ปค๋ฐ (๋น ๋ฅธ ๋ฐฉ๋ฒ)
feat(api): rate limiting ๊ธฐ๋ฅ ์ถ๊ฐ (ํ ์คํธ ๋ฐ ๋ฌธ์ ํฌํจ)
express-rate-limit๋ฅผ ์ฌ์ฉํ์ฌ rate limiting ๋ฏธ๋ค์จ์ด ๊ตฌํ. ์๋ํฌ์ธํธ๋ณ ๋ค๋ฅธ ์ ํ์ ์ง์ํ๋ ์ค์ ์ถ๊ฐ. ๋จ์ ํ ์คํธ, ํตํฉ ํ ์คํธ ๋ฐ API ๋ฌธ์ ์ ๋ฐ์ดํธ ํฌํจ.
### ์ต์
B: 3๊ฐ์ ์ปค๋ฐ์ผ๋ก ๋ถ๋ฆฌ (๊ถ์ฅ) โญ
**์ปค๋ฐ 1:**
feat(api): rate limiting ๋ฏธ๋ค์จ์ด ๊ตฌํ
express-rate-limit๋ฅผ ์ฌ์ฉํ์ฌ rate limiting ๋ฏธ๋ค์จ์ด ์ถ๊ฐ. ์๋ํฌ์ธํธ๋ณ๋ก ๋ค๋ฅธ ์ ํ์ ์ค์ ํ ์ ์๋ ์ค์ ํ์ผ ํฌํจ.
ํ์ผ: src/api/rateLimit.ts, config/rateLimit.config.ts
**์ปค๋ฐ 2:**
test(api): rate limiting ํ ์คํธ ์ถ๊ฐ
rate limiting ๋ฏธ๋ค์จ์ด์ ๋ํ ๋จ์ ํ ์คํธ ๋ฐ ํตํฉ ํ ์คํธ ์ถ๊ฐ. ๋ค์ํ ์๋๋ฆฌ์ค (์ ํ ์ด๊ณผ, ์ ์ ์์ฒญ ๋ฑ) ์ปค๋ฒ.
ํ์ผ: tests/rateLimit.test.ts
**์ปค๋ฐ 3:**
docs(api): rate limiting ์ค์ ๋ฌธ์ํ
์๋ก์ด rate limiting ๊ธฐ๋ฅ์ ๋ํ ๋ฌธ์ ์ถ๊ฐ. ์ค์ ๋ฐฉ๋ฒ, ์ฌ์ฉ ์์ , ์ ํ ์ ์ฑ ์ค๋ช ํฌํจ.
ํ์ผ: docs/api.md, README.md
### ์ต์
C: ์ปค์คํ
์ง์ ์ปค๋ฐ์ ์ด๋ป๊ฒ ๋๋์ง ์๋ ค์ฃผ์ธ์.
---
์ด๋ค ๋ฐฉ์์ผ๋ก ์งํํ ๊น์? (A/B/C)
Example 4: With Submodules (Submodule First, Then Parent)
User: "์ปค๋ฐํด์ค"
Analysis:
$ git submodule status
+abc1234 .claude/skills (heads/main)
$ git status
Changes to be committed:
renamed: .claude/claude-skills -> .claude/skills
modified: .gitmodules
Changes not staged for commit:
modified: .claude/skills (new commits, untracked content)
$ cd .claude/skills && git status
On branch main
Untracked files:
git-committer/SKILL.md
Output:
## ๐ ๋ณ๊ฒฝ์ฌํญ ๋ถ์
### ๐ ์๋ธ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ ๊ฐ์ง
**.claude/skills ์๋ธ๋ชจ๋**์ ์ปค๋ฐ๋์ง ์์ ๋ณ๊ฒฝ์ฌํญ์ด ์์ต๋๋ค.
**๋จผ์ ์๋ธ๋ชจ๋์ ์ปค๋ฐํ ํ**, ๋ฃจํธ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์ปค๋ฐํด์ผ ํฉ๋๋ค.
---
## 1๋จ๊ณ: ์๋ธ๋ชจ๋ ์ปค๋ฐ (.claude/skills)
**์๋ธ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ:**
- git-committer/SKILL.md (new)
**์ ์ ์ปค๋ฐ ๋ฉ์์ง:**
feat: add git-committer skill with submodule support
Add git-committer skill that analyzes changes and creates meaningful commits following conventional commit standards. Includes automatic grouping into logical units, multiple commit strategies, and submodule-first commit workflow.
---
์ด ๋ด์ฉ์ผ๋ก ์๋ธ๋ชจ๋์ ๋จผ์ ์ปค๋ฐํ ๊น์? (Y/n)
---
## 2๋จ๊ณ: ๋ฃจํธ ๋ ํฌ์งํ ๋ฆฌ ์ปค๋ฐ
**์๋ธ๋ชจ๋ ์ปค๋ฐ ํ ์งํ๋ ๋ด์ฉ:**
**๋ฃจํธ ๋ ํฌ์งํ ๋ฆฌ ๋ณ๊ฒฝ์ฌํญ:**
- .claude/claude-skills โ .claude/skills (renamed)
- .gitmodules (modified)
- .claude/skills (submodule reference update)
**์ ์ ์ปค๋ฐ ๋ฉ์์ง:**
chore: migrate claude-skills to skills directory
Rename .claude/claude-skills to .claude/skills for better naming consistency. Update .gitmodules and submodule reference.
---
(์๋ธ๋ชจ๋ ์ปค๋ฐ ์๋ฃ ํ ์๋์ผ๋ก ์งํ๋ฉ๋๋ค)
Execution Flow:
# Step 1: Commit submodule
cd .claude/skills
git add git-committer/SKILL.md
git commit -m "feat: add git-committer skill with submodule support"
cd ../..
# Step 2: Update parent to reference new submodule commit
git add .claude/skills
# Step 3: Commit parent repository
git add .gitmodules
git commit -m "chore: migrate claude-skills to skills directory"
# Verify
git log -2 --oneline
git submodule status
Best Practices
DO โ
- Always check for submodules first and commit them before parent
- Always review changes before committing
- Follow the project's existing commit message style
- Keep commits atomic (one logical change per commit)
- Write clear, descriptive messages
- Include issue/ticket references when applicable
- Verify tests pass before committing
- Check for and warn about sensitive files
- Separate submodule commits from parent repository commits
- Update parent repository to reference new submodule commits
DON'T โ
- Don't commit parent repository before committing submodules
- Don't commit unrelated changes together
- Don't use vague messages like "update" or "fix stuff"
- Don't commit sensitive information
- Don't skip hooks without user permission
- Don't amend other developers' commits
- Don't commit non-working code
- Don't batch multiple logical changes unnecessarily
- Don't forget to update submodule references in parent repository
Configuration
Custom Commit Templates
If project has a custom commit template:
git config --get commit.template
Use the template format if it exists.
Commit Message Language
Follow the project's language preference:
- Check recent commits for language consistency
- Ask user if unclear: "์ปค๋ฐ ๋ฉ์์ง๋ฅผ ํ๊ธ๋ก ์์ฑํ ๊น์, ์์ด๋ก ์์ฑํ ๊น์?"
Sign-off Requirements
Some projects require sign-off:
git commit -s -m "message"
Check project's CONTRIBUTING.md for requirements.
Integration with Development Workflow
Before Committing
- โ Check for submodules (git submodule status)
- โ Run tests (if applicable)
- โ Run linter/formatter
- โ Review all changes
- โ Remove debug code
- โ Update documentation if needed
After Committing
- Show commit details:
git show --stat - Confirm next steps:
- Push to remote?
- Create pull request?
- Continue development?
Error Handling
Common Issues and Solutions
Merge conflicts:
โ ๏ธ ํ์ฌ merge conflict๊ฐ ์์ต๋๋ค.
๋จผ์ conflict๋ฅผ ํด๊ฒฐํ ํ์ ์ปค๋ฐํ ์ ์์ต๋๋ค.
Conflicted files:
- src/App.tsx
๋ค์ ๋ช
๋ น์ด๋ก ํ์ธํ์ธ์:
$ git status
$ git diff
Detached HEAD:
โ ๏ธ Detached HEAD ์ํ์
๋๋ค.
์ปค๋ฐํ๊ธฐ ์ ์ ๋ธ๋์น๋ฅผ ์์ฑํ๊ฑฐ๋ ์ฒดํฌ์์ํ์ธ์.
$ git checkout -b new-branch-name
๋๋
$ git checkout existing-branch
Nothing to commit:
โน๏ธ ์ปค๋ฐํ ๋ณ๊ฒฝ์ฌํญ์ด ์์ต๋๋ค.
๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ด ์ด๋ฏธ ์ปค๋ฐ๋์๊ฑฐ๋ stage๋์ง ์์์ต๋๋ค.
Submodule not initialized:
โ ๏ธ ์๋ธ๋ชจ๋์ด ์ด๊ธฐํ๋์ง ์์์ต๋๋ค.
๋ค์ ๋ช
๋ น์ด๋ก ์๋ธ๋ชจ๋์ ์ด๊ธฐํํ์ธ์:
$ git submodule init
$ git submodule update
Submodule has unpushed commits:
โ ๏ธ ์๋ธ๋ชจ๋์ ํธ์๋์ง ์์ ์ปค๋ฐ์ด ์์ต๋๋ค.
์๋ธ๋ชจ๋ ์ปค๋ฐ์ ์๊ฒฉ์ ํธ์ํ ํ ๋ถ๋ชจ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์ปค๋ฐํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด ์๋ธ๋ชจ๋ ์ปค๋ฐ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์ต์
:
A) ์๋ธ๋ชจ๋์ ์๊ฒฉ์ ํธ์ํ๊ณ ๋ถ๋ชจ ๋ ํฌ์งํ ๋ฆฌ ์ปค๋ฐ
B) ๋ก์ปฌ์๋ง ์ปค๋ฐ (๋์ค์ ํธ์)
์ด๋ป๊ฒ ํ์๊ฒ ์ต๋๊น? (A/B)
Submodule detached HEAD:
โ ๏ธ ์๋ธ๋ชจ๋์ด Detached HEAD ์ํ์
๋๋ค.
์๋ธ๋ชจ๋์ ๋ณ๊ฒฝ์ฌํญ์ ๋ธ๋์น์ ์ปค๋ฐํด์ผ ํฉ๋๋ค.
$ cd .claude/skills
$ git checkout -b feature/new-skill
๋๋
$ git checkout main
Summary
This skill helps create meaningful, well-formatted git commits by:
- Checking for submodules first and handling them before parent repository
- Analyzing current changes thoroughly and grouping into logical units
- Presenting multiple commit strategies (single vs. multiple commits)
- Following project conventions and commit message standards
- Generating descriptive commit messages with Conventional Commit format
- Ensuring code quality and safety (no sensitive files, proper validation)
- Waiting for user confirmation before executing any commits
- Providing clear feedback and next steps to users
Commit Order:
- Submodules (if any changes)
- Parent repository (including submodule reference updates)
Always prioritize code quality, security, clear communication, and proper submodule handling throughout the commit process.