writing-and-creating-git-commits
Original:🇺🇸 English
Translated
Create semantic git commits following best practices and Conventional Commits specification.
19installs
Sourcezenobi-us/dotfiles
Added on
NPX Install
npx skill4agent add zenobi-us/dotfiles writing-and-creating-git-commitsTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Create a semantic commit to accomodate user request.
Soft Validation
If any of these checks fail, check with the user before proceeding.
- WARN_ON_DEFAULTBRANCH: !should equal 0
[$(git branch --show-current) = $(gh repo view --json defaultBranchRef --jq .defaultBranchRef.name)] && echo 1 || echo 0 - WARN_MERGECONFLICTS: !should equal 0
git ls-files -u | wc -l - WARN_INVALIDBRANCHNAME: !should match
git branch --show-current(if not on default branch)^(feat|fix|docs|style|refactor|perf|test|chore)\/[a-z0-9\-]+$
Hard Validation
If any of these checks fail, fix the issue before proceeding. or Exit if human intervention is required.
- on default branch, but it needs to be fastforwarded from remote.
- uncommitted merge conflicts detected. Please resolve them before committing.
Setup
- Ensure git is installed and configured with user name and email.
Execution Process
- Analyse
- Prepare
- Commit
- Sync
1. Analyse Changes
-
Assess current state:bash
git status --porcelain git diff --stat git diff --cached --stat- Identify all modified, added, and deleted files
- Check for any staged changes already in place
- Note any untracked files that should be included
-
Analyze changes by file:bash
git diff git diff --cached- Review the actual content of each change
- Understand what each modification accomplishes
- Identify related changes that belong together
2. Prepare Changes
- Group changes into logical commits:
- Each commit should represent ONE logical change (feature, fix, refactor, etc.)
- Related files should be committed together
- Avoid mixing unrelated changes in a single commit
- Order commits logically (dependencies first, then dependents)
3. Commit Changes
- Create atomic commits:
For each logical group:
bash
git add <specific-files> git commit -m "<type>: <brief description>"
4. Push Process
- determine default branch with the gh cli tool
- fast forward the default branch from remote: ie:
git fetch origin master:master - rebase the current branch onto the default branch: ie:
git rebase master - push the current branch to remote: ie:
git push origin HEAD --force-with-lease
Guidance: Commit Message Writing
Use the skill to guide you in writing great commit messages and body content following the Conventional Commits specification.
skills_superpowers_writing_git_commitsOtherwise:
- Use conventional commit prefixes:
- - New feature, functionality.
feat: - - Bug fix or refactoring.
fix: - - Documentation changes
docs: - - Formatting, whitespace (no code change)
style: - - Adding or updating tests
test: - - Maintenance tasks, dependencies, config
chore:
- Commit Message format:
- 1st line:
<type>(scope): <subject> - Blank line
- Body: Detailed explanation of what and why (wrap at 72 chars)
- Keep subject line under 72 characters
- Use imperative mood ("add" not "added")
- Be specific but concise
- No period at the end of subject line
Examples:
feat: add user authentication endpointfix(config): resolve null pointer in config parserfeat(scope): extract validation logic to separate moduledocs(apiv2): update API documentation for v2 endpointschore: update dependencies to latest versions
Content Guidelines
- Use direct, factual commit messages
- Avoid vague messages ("fix bug", "update code", "misc changes")
- No emojis unless project convention requires them
- Focus on WHAT changed and WHY (briefly)
- Group related changes even if in different files