用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/clacky-ai/openclacky --skill commit命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
This skill helps users create well-structured, semantic git commits by analyzing changes and suggesting appropriate commit messages.
ALL commit messages created by this skill MUST be single-line only.
git commit -m "feat: add user authentication"-m flags\n or additional paragraphsKeep commits concise and focused. If more detail is needed, suggest adding it separately in PR descriptions or documentation.
This skill automates the process of reviewing git changes and creating meaningful, conventional commits following the semantic commit format (feat/fix/chore/test).
THINK IN PURPOSES, NOT FILES
This skill prioritizes understanding the OVERALL GOAL of changes before deciding how to commit them. The default approach is to:
DO NOT commit file-by-file. DO NOT separate tests from implementation. DO NOT fragment features across multiple commits.
Instead, ask: "What story do these changes tell?" and commit accordingly.
To use this skill, simply say:
/commitFirst, check the current git status to understand:
git status
git diff --stat
CRITICAL: Before diving into file-by-file analysis, step back and ask:
Think strategically, not tactically:
Review ALL changes together first:
# Get overview of all changes
git diff --stat
git diff
Look for patterns:
Now examine each file to understand specifics:
git diff <file>
CRITICAL PRINCIPLE: Prefer fewer, meaningful commits over many small commits
Grouping Strategy:
Same Feature/Purpose = One Commit
Ask: "Would I explain these separately in a code review?"
Look for these grouping opportunities:
Only split when:
Examples of Good Grouping:
GOOD - Merged into ONE commit:
Commit: feat: add user authentication
- lib/auth/authenticator.rb (new authentication logic)
- lib/user.rb (user model updates)
- lib/session.rb (session management)
- spec/auth/authenticator_spec.rb (tests)
- spec/user_spec.rb (updated tests)
- config/routes.rb (auth routes)
GOOD - Different purposes, TWO commits:
Commit 1: feat: add user authentication
- lib/auth/authenticator.rb
- spec/auth/authenticator_spec.rb
Commit 2: fix: resolve database timeout issue
- lib/database/connection.rb
- spec/database/connection_spec.rb
BAD - Over-splitting, should be ONE commit:
Commit 1: feat: add authentication logic
- lib/auth/authenticator.rb
Commit 2: feat: update user model for authentication
- lib/user.rb
Commit 3: test: add authentication tests
- spec/auth/authenticator_spec.rb
Commit 4: chore: add authentication routes
- config/routes.rb
Decision Tree:
Are changes related to the same goal/feature/purpose?
|-- YES -> Combine into ONE commit
| +-- Even if they touch different files/modules
+-- NO -> Keep as separate commits
+-- Ask: Are they different semantic types (feat/fix/chore)?
|-- YES -> Definitely separate
+-- NO -> Consider if they could still be combined
Based on the holistic analysis, generate commit messages following the conventional commit format:
Format: <type>: <description>
Types:
feat: New features or functionalityfix: Bug fixeschore: Routine tasks, maintenance, dependenciestest: Adding or modifying tests (only if standalone)docs: Documentation changes (only if standalone)refactor: Code refactoring without changing functionalitystyle: Code style changes (formatting, whitespace)perf: Performance improvementsCRITICAL GUIDELINES:
Examples:
feat: add user authentication (not "add authenticator.rb, user.rb, session.rb")fix: resolve login timeout issues (not "fix auth.rb timeout")chore: update dependencies (not separate commits for each gem)refactor: simplify database connection logic (not one commit per file)docs: update API documentation (only if pure documentation change)No confirmation needed — analyze, group, and commit right away.
For each commit group:
# Stage specific files
git add <file1> <file2> ...
# Create commit with SINGLE-LINE message only
git commit -m "<type>: <description>"
IMPORTANT:
git commit -m "single line message" format-m flag multiple timesAfter all commits, show:
# Check status
git status
git status --short
# View changes
git diff
git diff --stat
git diff <file>
# Stage files
git add <file>
# Create commit (SINGLE-LINE only)
git commit -m "type: single line description"
# NEVER use multi-line format like:
# git commit -m "title" -m "body" -- DON'T DO THIS
# git commit -m "title\n\nbody" -- DON'T DO THIS
# View commit history
git log --oneline -n 5
BAD Example (Over-splitting):
User: /commit
AI (WRONG APPROACH):
Found 5 modified files
Proposed commits:
Commit 1: feat: add user model
- lib/user.rb
Commit 2: test: add user tests
- spec/user_spec.rb
Commit 3: fix: fix auth validation
- lib/auth.rb
Commit 4: test: add auth tests
- spec/auth_spec.rb
Commit 5: chore: update dependencies
- Gemfile
Problem: Too fragmented! Tests separated from code.
GOOD Example (Holistic grouping):
User: /commit
AI (CORRECT APPROACH):
1. Analyzing all changes...
Found 5 modified files
2. Identifying overall purpose...
Main goal: Implementing user registration feature
Secondary: Fixing existing auth bug
Maintenance: Dependency updates
3. Holistic analysis:
- lib/user.rb: New user registration feature
- spec/user_spec.rb: Tests for user registration (same feature)
- lib/auth.rb: Fix password validation bug (separate concern)
- spec/auth_spec.rb: Tests for auth fix (same bug fix)
- Gemfile: Updated dependencies (separate maintenance)
4. Proposed commits (grouped by purpose):
Commit 1: feat: add user registration
- lib/user.rb (implementation)
- spec/user_spec.rb (tests)
Reason: Feature and its tests belong together
Commit 2: fix: correct password validation logic
- lib/auth.rb (bug fix)
- spec/auth_spec.rb (tests)
Reason: Fix and its tests belong together
Commit 3: chore: update gem dependencies
- Gemfile
Reason: Unrelated maintenance task
Total: 3 meaningful commits instead of 5 fragmented ones
AI (executes immediately, no confirmation):
Commit 1 created (a1b2c3d): feat: add user registration
Commit 2 created (e4f5g6h): fix: correct password validation logic
Commit 3 created (i7j8k9l): chore: update gem dependencies
Summary: 3 commits created successfully!
Next steps: Review with 'git log' or push with 'git push'
GOLDEN RULE: One logical PURPOSE per commit, not one FILE per commit
For each set of changes, ask:
1. "What was I trying to accomplish?" (identify the purpose)
2. "Do these files work together toward that purpose?" (YES -> combine)
3. "Would splitting these make the history harder to understand?" (YES -> combine)
4. "Could these changes be deployed independently?" (NO -> combine)
This skill works best:
git reset first)