@sunnykgupta/commit-message
AUse when the user wants to write a git commit message — including 'write a commit message', 'commit this', or when they paste a diff / staged changes and ask what to commit it as. Follows Conventional Commits. Do NOT use for PR descriptions (use pr-description skill).
Install
agr install @sunnykgupta/commit-message --target claudeWrites 1 file into .claude/skills/, pinned to git-11d3574a.
- .claude/skills/commit-message/SKILL.md
Document
name: commit-message description: "Use when the user wants to write a git commit message — including 'write a commit message', 'commit this', or when they paste a diff / staged changes and ask what to commit it as. Follows Conventional Commits. Do NOT use for PR descriptions (use pr-description skill)."
Commit Message Writer
Write commit messages that follow Conventional Commits.
Format
<type>(<scope>): <subject>
<body>
<footer>
- type (required): one of
feat,fix,refactor,test,chore,docs - scope (optional): the module/area touched, e.g.
auth,api,parser - subject (required): imperative mood, lowercase, no period, ≤ 50 chars
- body (optional): wrap at 72 chars, explain why not what
- footer (optional):
BREAKING CHANGE: ...orCloses #123
Rules
- Subject line in imperative mood: "add login form", not "added" or "adds".
- Blank line between subject and body, and between body and footer.
- Use
!after type/scope for breaking changes:feat(api)!: drop v1 endpoints. - One commit = one logical change. If the diff covers multiple concerns, suggest splitting.
- Never put file names in the subject. Use scope instead.
Workflow
- Ask for the diff or
git statusoutput if not provided. - Determine type from the nature of the change (new feature →
feat, bugfix →fix, etc.). - Pick a scope from the most-touched directory or module.
- Write subject, then body only if context is non-obvious.
- Add
BREAKING CHANGE:footer if applicable.
Examples
feat(auth): add OAuth login via GitHub
Users can now sign in with their GitHub account. Uses the standard
OAuth2 flow; tokens are stored in httpOnly cookies.
Closes #142
fix(parser): handle empty input without crashing
refactor(api)!: rename /users endpoint to /accounts
BREAKING CHANGE: /users is removed. Update clients to use /accounts.
Trustgrade A
- passBody integrity
Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.
- passType matchnot applicable to this artifact type
Whether the artifact is really the kind of thing its metadata claims it is.
- passFreshness
How long since the source repository was last pushed to.
- passPrompt injection
Scans the artifact's own text for instructions aimed at your agent rather than at you.
- passLicense
Whether the source repository declares an SPDX license permissive enough to redistribute.
How the grade is calculated
Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:
- Aevery check passed
- Bone warning
- Ctwo warnings
- Dprompt injection or body integrity failed, or three warnings
- Fone of those failed, and something else is wrong
These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.
Versions
git-11d3574a5b422026-07-31