Conventional commits writing
Skill event4u-app/agent-config/dist/agent-src/skills/conventional-commits-writing
Use when writing commit messages or squash-merge titles — `feat:`, `fix:`, `chore:`, scopes, breaking changes — even when the user just says 'commit this' without naming Conventional Commits.From its SKILL.md
npx -y skills add event4u-app/agent-config --skill conventional-commits-writingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.8 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
conventional-commits-writing
When to use
Use this skill when:
- Generating a commit message from staged changes
- Generating a squash merge title from a PR
- Deciding the correct Conventional Commit type for a change
- Reviewing whether a commit message is correct
- Splitting one vague change into multiple commit messages
Do NOT use when:
- Only explaining the Conventional Commits standard (just reference the rule)
- The message is already correct and does not need review
- Following the Git workflow (use
git-workflowskill)
Procedure: Generate commit message
1. Identify the actual intent
Determine whether the change is:
- New behavior →
feat - Bug fix →
fix - Structural cleanup →
refactor - Docs only →
docs - Tests only →
test - CI/build/tooling →
ciorbuild - Maintenance →
chore - Performance →
perf - Formatting only →
style
Classify by user-visible or system-relevant intent, not by file type alone.
2. Detect mixed concerns
Check whether the change includes more than one unrelated concern.
If yes:
- Suggest splitting into multiple commits
- Or choose the dominant net effect for squash merge title
3. Choose scope
Add a scope only if it improves clarity:
- Jira ticket ID:
DEV-1234 - Module/area:
api,auth,skills,rules,ci
4. Write the description
- State the intent clearly
- Avoid generic filler (
update stuff,fix things) - Stay concise — max 72 chars total for first line
- Imperative mood: "add", "fix", "remove" — not "added", "fixed", "removed"
5. Check for breaking change
If compatibility is broken, add ! after type/scope:
feat(api)!: rename invoice status values
Or add BREAKING CHANGE: in the commit body/footer.
6. Validate
- Type matches intent?
- Scope is useful (not noise)?
- Description is specific (not generic)?
- Not hiding multiple unrelated changes?
- Breaking changes are marked?
Procedure: Review existing commit message
- Parse the message into type, scope, description
- Check type accuracy against the actual diff
- Check scope usefulness
- Check description clarity and specificity
- Suggest corrections if any check fails
Procedure: Generate squash merge title
- Read all commits in the PR
- Identify the net effect — what does the PR accomplish overall?
- Write a single Conventional Commit message summarizing the net effect
- Do not list every internal commit — summarize
Output format
- Recommended commit message(s)
- Brief rationale for type choice
- Split suggestion if the change should be multiple commits
Gotcha
- The model tends to overuse
choreandrefactor— classify by intent, not by effort - File type alone does not determine commit type (e.g. a
.mdchange can befeatif it's a new feature doc) - Squash merge titles should describe the net effect, not every internal detail
refactormeans NO behavior change — if behavior changes, usefeatorfix
Frugality Standards
Apply the Frugality Charter to every commit message you author.
Examples in this artifact:
- Per the charter's default-terse rule, the subject states the change in 50 chars; no scaffolding ("This commit will…").
- Per the post-action summary suppression, the body lists changed surfaces in bullets — no closing paragraph re-summarizing them.
- Per the cheap-question check, never propose a
featvs.chorenumbered choice when the type is decidable from the diff.
Pre-save self-check:
- Does the subject line carry filler ("various improvements", "general updates")?
- Does the body re-narrate the diff instead of stating intent?
- Are co-author / attribution footers present without explicit user
request (per
no-attribution-footers)? - Is the type / scope chosen from the diff, not from the asker's framing?
Do NOT
- Do NOT use vague messages:
update stuff,fix bug,changes - Do NOT use
refactorfor bug fixes - Do NOT use
chorefor meaningful behavior changes - Do NOT hide multiple unrelated concerns in one message
- Do NOT omit breaking-change markers when compatibility changes
References
- Rule:
commit-conventions— base format, types, scope, examples - Guideline:
docs/guidelines/php/git.md— type selection rules, anti-patterns, decision checklist - Command:
/commit— uses this skill for message generation
What ships with it: 1 file
742 B alongside SKILL.md
evals/
- evals.json742 B