commits
GitHub指导生成符合规范的 Git 提交信息,包括标题格式、正文写作及跨平台安全输入方法。
Trigger Scenarios
Install
npx skills add DetachHead/rebased --skill commits -g -y
SKILL.md
Frontmatter
{
"name": "commits",
"description": "Create, amend, or rename IntelliJ commits and write commit messages."
}
Commits
SafePush/Patronus rejects malformed commit messages, so a bad subject line costs a CI round trip.
Subject line
IDEA-12345 <subject> # behavioral change — ticket, no subsystem prefix
<label> <subsystem>: <subject> # clearly non-behavioral change
- A behavioral change needs a YouTrack ticket. If you are unsure whether it is behavioral, it is.
- Labels:
tests,cleanup,refactor,docs,format,style,setup,misc. - Never begin a subject with
WIP,fixup!,squash!, oramend!, and never use Conventional Commits (fix(scope): …).
Body
Write a body for every change except a mechanical one (a typo, an import, a format pass). This includes a non-production change.
Say why you made the change and what you decided. The diff already shows what changed.
Write the body in ASD-STE100 Simplified Technical English, as the repository guide (AGENTS.md, section Writing) defines it.
A requested suffix such as IJ-MR-100 goes in its own trailing paragraph.
Safe message input
On POSIX shells, pass a multiline commit message through stdin with -F - and a quoted heredoc:
git commit -F - <<'EOF'
IDEA-12345 concise subject
Explain why the change was made and what was decided.
EOF
On PowerShell, do not pipe a here-string into git commit -F -. Windows PowerShell may add a
Unicode BOM to the first line, producing a malformed subject that SafePush rejects. Pass one
paragraph per -m argument instead; the same form is safe with git commit --amend:
git commit `
-m "IDEA-12345 concise subject" `
-m "Explain why the change was made and what was decided." `
-m "IJ-MR-100"
After committing or amending from PowerShell, inspect git cat-file commit HEAD and confirm that
the subject begins directly with the ticket or label, without an invisible BOM.
Do not stage commit messages in /tmp, /private/tmp, or another path outside the workspace. That can require an extra filesystem-access approval and leaves a plaintext artifact behind. If a reusable draft is genuinely needed, keep it under the repository's gitignored out/ directory, for example out/commit-message.txt.
Before writing
git status --shortandgit diff --statfor scope. Read the full diff only for changes you did not make yourself in this session, and file by file when it is large.- One commit does one thing — no cleanup or refactoring mixed into a behavior change. When unsure, split.
Examples
MRI-3589 harden single-flight recursion checks
Track active single-flight computations in coroutine context so recursive
awaits fail fast in both the owning coroutine and child coroutines.
IJ-MR-100
tests cidr: migrate JUnit 5 coverage
Convert remaining JUnit 4 suites under cidr/coverage to JUnit 5.
Parametrized tests now use @MethodSource instead of the Theories runner.
Uncovered case (isolated-commit algorithm, misc triage): 2_Commits.md.
Pushing: use the safe-push skill.
Version History
-
2af32ff
Current 2026-09-22 01:04
新增 SafePush/Patronus 校验警告,细化 PowerShell 下避免 BOM 字符的输入方法,强调非行为变更无需正文,并移除上游文档引用。
- 1f8708d 2026-08-16 15:38


