git-commit
Execute git commit with conventional commit message analysis, intelligent staging, and message generation. Use when user asks to commit changes, create a git commit, or mentions "/commit". Supports: (1) Auto-detecting type and scope from changes, (2) Generating conventional commit messages from diff
By github · 44,792 installs
npx skills add github/awesome-copilot --skill git-commit
Source repository · Upstream listing
Git Commit with Conventional Commits
Make Git commits that follow the [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/) specification. Get the type, the scope, and the summary from the diff.
Message Format
The scope, the body, and the footer are optional. Without a scope, write <type : <summary .
Write the summary in the imperative mood: "add", not "added" or "adds".
Keep the first line at 72 characters or less. Do not put a period at the end.
In the body, tell what changed and why.
Write each footer as Token: value or Token value , for example Refs: 456 or Closes 123 . Conventional Commits accepts the two forms, but Git reads only Token: value as a trailer. In a token, use in place of a space.
Types
Conventional Commits defines only feat and fix . The other types come from the Angular convention ([ @commitlint/config conventional ](https://github.com/conventional changelog/commitlint/tree/master/%40commitlint/config conventional)). If the repository has its own list, use that list.
Type Use it for
feat A new feature
fix A bug fix
docs Documentation only
style Formatting only, with no change to the logic
refactor A code change that is not a feature or a fix
perf A performance improvement
test New or changed tests
build The build system or the dependencies
ci The CI configuration
chore Other maintenance
revert A revert of an earlier commit
Breaking Changes
Put ! before the colon, or add a BREAKING CHANGE: footer. Write the token in uppercase. BREAKING CHANGE: is also correct.
Workflow
1. Read the repository rules
Find the commit rules before you write a message:
A commitlint configuration, for example commitlint.config.js or .commitlintrc.json .
CONTRIBUTING.md .
The recent messages: git log oneline 10 .
If a repository rule is different from this skill, use the repository rule.
2. Examine the changes
If there are no changes, tell the user. Do not make an empty commit.
3. Stage the files
Put one logical change in each commit. If the staged files contain more than one change, first unstage the files of the other changes. Then stage the files for this change:
Put a glob in quotes. Without quotes, the shell expands the glob and does not find the files in subdirectories.
Do not use git add p or git add i . These commands wait for input from a person.
After you resolve a merge conflict, use git add resolved . This command stages only the resolved files. If a file still has conflict markers, the command stops.
Examine the list of staged files with git diff staged name only . Do not commit secrets, for example .env files, credentials.json , or private keys.
4. Write the message
Get each part from the diff:
Type : The kind of change.
Scope : The module or the area that the change affects.
Summary : What changed, in one line.
5. Commit
Give each paragraph with a different m option. Git puts a blank line between the paragraphs. This command works in Bash, PowerShell, and other shells.
For a long message, write the message to a temporary file. Then run git commit F <file .
6. Make sure that the commit is correct
Safety Rules
Do not change the Git configuration.
Do not use no verify unless the user tells you to. Hooks can be in .git/hooks or in the Git configuration.
If a hook fails, Git does not make the commit. Fix the problem, stage the files again, and run the same git commit command again. Do not use amend , because it changes the previous commit.
Do not change the commit history unless the user tells you to. Do not use git reset hard , git rebase , or the experimental git history command.
Do not push unless the user tells you to. Do not force push to the default branch.