generate-commit-message
Installation
SKILL.md
Generate Commit Message
Generate commit messages following cbea.ms guidelines.
Output Format
Plain text commit message in a code block with NO language tag.
The user should be able to copy the entire content directly. Do NOT include:
git commit -mwrapperEOFor HEREDOC syntaxbashlanguage tag on the code block- Extra commentary outside the code block
Short Example
Add input validation to form components
Detailed Example
Implement input validation for form components
- Create validation utility with reusable validators
- Add validators for email, phone, and text inputs
- Update `Button` and `Input` to use validation
Format: Short vs Detailed
- Short: Subject line only
- Detailed: Subject + bullet list body (3–6 bullets)
Decide autonomously based on the nature of the change:
- Small, focused changes → short
- Multi-file restructuring, module extraction, or architectural changes → detailed
- Only ask the user if genuinely uncertain
Workflow
- Run
git diff --staged --statto see staged changes - If nothing is staged, ask the user to stage files
- Analyze
git diff --staged - Generate the commit message based only on staged changes
- Output the plain commit message in a code block (no language tag)
Commit Message Rules
- Subject line ≤72 chars
- Capitalize subject
- No period at end
- Imperative mood: "Add feature" not "Added feature"
- Blank line between subject and body
- Body lines ≤72 chars
- Backtick code identifiers: Always wrap component names, hooks, props, and other code references in backticks (e.g.
OrderForm,useContainerQuery)
Imperative Test
Subject should complete: "If applied, this commit will [subject]"
Imperative Verbs by Change Type
| Type | Verbs |
|---|---|
| Feature | Add, Implement, Introduce, Create |
| Fix | Fix, Resolve, Correct |
| Refactor | Refactor, Simplify, Restructure |
| Docs | Document, Update docs |
| Style | Format, Polish, Clean up |
| Test | Add tests, Update tests |
| Chore | Update deps, Configure |
Context Detection
Infer context from file paths in the staged diff:
- Monorepo app directories (e.g.,
apps/<name>/*) → mention the app name - Shared packages (e.g.,
packages/<name>/*) → mention the package name - Test files (
*.test.*,*.spec.*) → "Add tests" / "Update tests" - Documentation (
*.md) → "Document" / "Update docs" - Config files (
.eslintrc,tsconfig.json, etc.) → "Configure" / "Update config"
Tips
- If changes are too large, suggest splitting into multiple commits
- Keep bullet points action-oriented and concise (3-6 recommended)
- Focus on WHAT and WHY, not HOW
Related skills