Awesome-omni-skill commit-assistant
Provides conventional commits guidance and auto-generates commit messages from git changes. Integrates with /ccpm:commit for automated git commits linked to Linear issues. Auto-activates when users ask about committing, creating git commits, or discussing commit message formats.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/tools/commit-assistant" ~/.claude/skills/diegosouzapw-awesome-omni-skill-commit-assistant-229855 && rm -rf "$T"
skills/tools/commit-assistant/SKILL.mdCommit Assistant
Comprehensive guidance on conventional commits with automatic message generation integrated with CCPM's Linear workflow. Ensures all commits are properly formatted, issue-linked, and semantically meaningful.
When to Use
This skill auto-activates when:
- User asks "commit my changes", "create a git commit", "how do I commit"
- User asks about "conventional commits" or "commit message format"
- Running
command/ccpm:commit - Making changes that need to be committed to version control
- Need guidance on commit type or commit message structure
- Need help generating commit messages from code changes
Core Principles
1. Conventional Commits Format
All commits in CCPM follow Conventional Commits specification:
type(scope): message [optional body] [optional footer]
Format breakdown:
- type: What kind of change (feat, fix, docs, refactor, test, chore, perf, style)
- scope: What component or module changed (optional but recommended)
- message: Clear, concise description in imperative mood
- body: Detailed explanation (only for complex changes)
- footer: Issue references, breaking changes (optional)
2. Why Conventional Commits Matter
Conventional commits enable:
- ✅ Automatic changelog generation
- ✅ Semantic versioning (SemVer) automation
- ✅ Better git history readability
- ✅ Linear issue linking
- ✅ Filtered log searches (
)git log --grep="^feat" - ✅ CI/CD pipeline triggers (e.g., deploy on "feat:" commits)
3. Imperative Mood
Always write commit messages in imperative mood (command form):
✅ Correct:
- "add user authentication"
- "fix database connection timeout"
- "refactor auth module for clarity"
- "update API documentation"
❌ Incorrect:
- "added user authentication"
- "fixed database connection timeout"
- "refactoring auth module"
- "updates API documentation"
Why: Imperative mood matches git's own commit messages and convention specifications.
Commit Types Explained
feat:
- New Features
feat:Use when: Adding new functionality to the codebase.
Examples:
feat(auth): add JWT token refresh endpointfeat(api): implement rate limiting middlewarefeat(ui): add dark mode toggle
When NOT to use: Bug fixes should use
fix:, not feat:
fix:
- Bug Fixes
fix:Use when: Fixing a bug or defect in existing functionality.
Examples:
fix(auth): prevent expired tokens from accessing protected routesfix(api): handle null values in user query resultsfix(ui): correct button alignment on mobile devices
When NOT to use: Adding new features should use
feat:, not fix:
docs:
- Documentation Changes
docs:Use when: Writing or updating documentation, comments, README, or API docs.
Examples:
docs(readme): add installation instructionsdocs(api): document rate limiting headersdocs: add troubleshooting guide
Impact: Does NOT trigger version bumps (not a "feature" or "fix")
refactor:
- Code Refactoring
refactor:Use when: Restructuring code without changing functionality (performance, readability, maintainability).
Examples:
refactor(auth): extract JWT validation to separate modulerefactor(api): simplify error handling logicrefactor: rename misleading variable names
Impact: Does NOT trigger version bumps (internal improvement only)
test:
- Test Additions/Changes
test:Use when: Adding, updating, or fixing tests (no production code changes).
Examples:
test(auth): add tests for JWT expirationtest(api): improve test coverage for rate limitertest: fix flaky database integration test
Impact: Does NOT trigger version bumps
chore:
- Build/Tooling Changes
chore:Use when: Updating dependencies, build config, CI/CD, or development tools.
Examples:
chore(deps): upgrade Node.js to v20.11chore(build): update webpack configurationchore(ci): configure GitHub Actions for linting
Impact: Does NOT trigger version bumps
perf:
- Performance Improvements
perf:Use when: Code optimization that improves performance metrics.
Examples:
perf(api): cache database queries for 5 minutesperf(ui): optimize image rendering for 40% faster load timeperf: reduce bundle size by 15%
Impact: Triggers patch version bump (like
fix:)
style:
- Code Style Changes
style:Use when: Formatting, whitespace, or code style changes (no logic changes).
Examples:
style: reformat code according to ESLint rulesstyle(css): remove unused CSS classesstyle: add missing semicolons
Impact: Does NOT trigger version bumps
Auto-Generation with /ccpm:commit
/ccpm:commitThe
/ccpm:commit command provides intelligent commit message auto-generation.
Usage
Basic usage:
/ccpm:commit # Auto-detect issue, generate message /ccpm:commit AUTH-123 # Link specific issue /ccpm:commit AUTH-123 "Fix login validation" # Explicit message
How Auto-Detection Works
-
Detects current git branch for Linear issue ID
- Example:
→ extractsfeat/AUTH-123-jwt-authAUTH-123 - Example:
→ extractsfix/WORK-456-cache-bugWORK-456
- Example:
-
Analyzes git changes to determine commit type
- Tests added/modified →
test: - Documentation only →
docs: - Bug fix + test →
fix: - New feature + test →
feat:
- Tests added/modified →
-
Extracts scope from changed files
- Files:
,src/auth/jwt.ts
→ scope:src/auth/login.tsauth - Files:
,src/api/users.ts
→ scope:src/api/posts.tsapi
- Files:
-
Generates message from:
- Linear issue title
- Git diff summary
- Changed function/class names
- Test names if tests added
-
Links to Linear automatically
- Adds issue ID to footer
- Updates Linear with commit link
- Creates audit trail
Example Auto-Generation Flow
Scenario: Branch
fix/AUTH-123-jwt-expiration, changed src/auth/jwt.ts
$ /ccpm:commit Analyzing changes for commit... Branch: fix/AUTH-123-jwt-expiration Issue: AUTH-123 Linear Title: "Prevent expired tokens from accessing API" Changes detected: - src/auth/jwt.ts: Modified token validation logic - test/auth/jwt.test.ts: Added 2 tests for expiration Commit type: fix (bug fix with tests) Scope: auth Message: "prevent expired tokens from accessing API" Generated commit:
fix(auth): prevent expired tokens from accessing API
- Added token expiration check in validateToken()
- Added tests for expired token rejection
- Updated middleware to handle token validation errors
Closes AUTH-123
Proceed with commit? (yes/no)
Best Practices
1. Keep Messages Concise
First line should be:
- Under 72 characters
- Complete thought
- Clear, specific (not vague like "fix bug" or "update code")
✅ Good:
fix(auth): validate JWT expiration before token use
❌ Bad: fix: bug or fix: updates
2. Use the Scope
Always include scope when possible (what changed):
✅ Good:
feat(api):, fix(ui):, docs(readme):
❌ Bad: feat: new stuff, fix: problem
3. Reference Issues in Footer
Link to Linear issues in commit footer:
fix(auth): prevent expired tokens [body explaining the fix] Closes AUTH-123 Refs AUTH-120
Common footers:
- Closes the issueCloses ISSUE-123
- Fixes the issueFixes ISSUE-123
- Just referencesRefs ISSUE-123
- Documents breaking changesBREAKING CHANGE: ...
4. Add Body for Complex Changes
For significant changes, add explanation:
feat(auth): implement OAuth2 authentication flow - Added OAuth2 provider integration - Implemented token refresh mechanism - Added session persistence to Redis - Updated user model with OAuth fields This enables third-party sign-in for better UX. Addresses AUTH-127 requirements. Closes AUTH-127
5. Group Related Changes
If multiple related files change, use single commit:
git add src/auth/jwt.ts test/auth/jwt.test.ts git commit -m "fix(auth): validate JWT expiration"
Not:
git add src/auth/jwt.ts git commit -m "fix(auth): validate JWT expiration" git add test/auth/jwt.test.ts git commit -m "test(auth): add JWT expiration tests"
Commit Message Examples
Example 1: Simple Feature
Scenario: Added new user registration endpoint
feat(api): add user registration endpoint - POST /auth/register creates new user accounts - Validates email format and password strength - Returns JWT token on successful registration Closes AUTH-101
Analysis:
- ✅ Type:
(new feature)feat: - ✅ Scope:
(API endpoint changed)api - ✅ Message: Imperative mood, under 72 chars
- ✅ Body: Clear explanation
- ✅ Issue link: References LINEAR issue
Example 2: Bug Fix
Scenario: Fixed database timeout issue
fix(db): handle connection timeouts gracefully - Added 30-second connection timeout - Retry logic with exponential backoff - Return 503 Service Unavailable to clients - Log timeout events for monitoring Fixes DB-456 Refs AUTH-123
Analysis:
- ✅ Type:
(bug fix)fix: - ✅ Scope:
(database layer)db - ✅ Message: Clear problem & solution
- ✅ Body: Technical details
- ✅ Issue links: Primary issue + related
Example 3: Refactoring
Scenario: Extracted authentication logic into module
refactor(auth): extract validation logic to utility module - Move JWT validation to src/auth/validators.ts - Extract middleware factory to src/auth/middleware.ts - Improve code reusability and testability - No functional changes
Analysis:
- ✅ Type:
(internal improvement)refactor: - ✅ Scope:
(authentication module)auth - ✅ Message: Clear intent (extract, not add)
- ✅ Body: What was extracted + benefit
- ✅ No issue link: Not user-facing change
Example 4: Documentation Update
Scenario: Added API authentication guide
docs(api): add authentication implementation guide - New section: JWT token flow diagrams - New section: Token refresh strategy - Code examples for common authentication patterns - Links to security best practices
Analysis:
- ✅ Type:
(documentation)docs: - ✅ Scope:
(API documentation)api - ✅ Message: Clear what was added
- ✅ Body: Section breakdown
- ✅ No issue link: Documentation improvement
Example 5: Performance Optimization
Scenario: Added caching to reduce database queries
perf(api): implement request caching for 40% query reduction - Cache GET requests for 5 minutes (TTL) - Invalidate cache on POST/PUT/DELETE - Add Redis cache layer - Reduces database load by 40% in benchmarks Closes PERF-234
Analysis:
- ✅ Type:
(performance improvement)perf: - ✅ Scope:
(API layer)api - ✅ Message: Clear improvement + metric (40%)
- ✅ Body: Implementation details
- ✅ Metrics: Quantifiable improvement shown
Example 6: Multi-File Feature
Scenario: Implemented complete authentication system
feat(auth): implement JWT authentication system - Add JWT token generation and validation - Add login endpoint with credential verification - Add logout endpoint with token blacklisting - Add protected route middleware - Add 90 tests covering all scenarios This enables secure user authentication and session management. Replaces legacy session-based auth system. Closes AUTH-105 Closes AUTH-106 Closes AUTH-107
Analysis:
- ✅ Type:
(new feature)feat: - ✅ Scope:
(authentication)auth - ✅ Message: High-level overview
- ✅ Body: All components included
- ✅ Multiple issues: References all related tasks
- ✅ Impact statement: Explains change scope
Integration with /ccpm:commit
/ccpm:commitCommand Syntax
/ccpm:commit [issue-id] [message]
Examples:
# Auto-detect everything from current branch /ccpm:commit # Specify issue, auto-generate message /ccpm:commit AUTH-123 # Specify issue and message /ccpm:commit AUTH-123 "Fix login validation error" # Just provide message (detects issue from branch) /ccpm:commit "Refactor authentication module"
What the Command Does
- Analyzes current git changes
- Detects commit type from changes
- Extracts scope from modified files
- Generates commit message (if not provided)
- Links to Linear issue
- Creates the commit
- Updates Linear with commit link
- Suggests next action (verification, sync, etc.)
Workflow Example
# 1. Make changes $ vim src/auth/jwt.ts # 2. Stage changes $ git add src/auth/jwt.ts test/auth/jwt.test.ts # 3. Create conventional commit linked to Linear $ /ccpm:commit Analyzing changes... Branch: fix/AUTH-123-jwt-expiration Files: src/auth/jwt.ts, test/auth/jwt.test.ts Type: fix Scope: auth Generated commit: fix(auth): prevent expired tokens from accessing API Proceed? (yes/no) # 4. Commit created automatically $ git log -1 --oneline a1b2c3d fix(auth): prevent expired tokens from accessing API # 5. Linear updated AUTH-123 comment added: "Commit: a1b2c3d"
Common Mistakes to Avoid
Mistake 1: Wrong Commit Type
❌ Mistake: Using
feat: for a bug fix
feat(auth): fix JWT validation
✅ Correct: Use
fix: for bug fixes
fix(auth): validate JWT expiration
Why: Different types trigger different version bumps. A bug fix should not bump minor version.
Mistake 2: Vague Messages
❌ Mistake: Generic, unclear message
fix: update auth chore: fixes feat: improvements
✅ Correct: Specific, action-oriented messages
fix(auth): validate JWT expiration before token use chore(deps): upgrade Node.js to v20.11 feat(api): add user registration endpoint
Mistake 3: Avoiding Issue Links
❌ Mistake: No issue reference
fix(auth): prevent expired tokens
✅ Correct: Link to Linear issue
fix(auth): prevent expired tokens Closes AUTH-123
Why: Creates audit trail and helps team understand why change was made.
Mistake 4: Past Tense in Message
❌ Mistake: Past tense (non-imperative)
fixed JWT validation added user registration refactored auth module
✅ Correct: Imperative mood
fix JWT validation add user registration refactor auth module
Mistake 5: Too Much Detail in Subject Line
❌ Mistake: Long, detailed first line
feat(auth): add comprehensive JWT authentication system with token refresh and improved security checks including rate limiting and IP whitelisting
✅ Correct: Concise subject (under 72 chars), details in body
feat(auth): add JWT authentication system - Add token generation and validation - Add logout with token blacklisting - Add protected route middleware - Add rate limiting and IP checks
Integration with CCPM Workflow
In Planning Phase
When planning a task with
/ccpm:plan:
Task: "Implement JWT authentication" Implementation plan: - [ ] Create auth module - [ ] Add login endpoint - [ ] Add protected route middleware - [ ] Add comprehensive tests Commits expected: 1. `feat(auth): create JWT authentication module` 2. `feat(api): add login endpoint` 3. `feat(api): add protected route middleware` 4. `test(auth): add JWT validation tests`
During Implementation
When making changes during
/ccpm:work:
# 1. Work on feature $ vim src/auth/jwt.ts # 2. Run tests $ npm test # 3. Create conventional commit $ /ccpm:commit # 4. Sync progress $ /ccpm:sync "Implemented JWT validation" # 5. Repeat for each logical change
Before Verification
When verifying with
/ccpm:verify:
Commit history should show:
a1b2c3d feat(auth): prevent expired tokens from accessing API b2c3d4e feat(api): add login endpoint c3d4e5f test(auth): add JWT validation tests
Each commit should:
- ✅ Be conventional format
- ✅ Be linked to Linear issue
- ✅ Have clear, specific message
- ✅ Include related tests
Before Completion
When finalizing with
/ccpm:done:
Check commit history:
git log --oneline --grep="ISSUE-123"
Should show:
- ✅ Multiple logical commits (not one giant commit)
- ✅ Clear progression from task start to completion
- ✅ All conventional commits format
- ✅ All linked to issue
Activation Triggers
This skill activates when you:
- Ask "How do I commit changes?"
- Ask "Create a git commit" or "commit my changes"
- Ask "What's a conventional commit?"
- Ask "What should my commit message be?"
- Ask "How do I write commit messages?"
- Ask about "commit message format" or "commit types"
- Run
command/ccpm:commit - Run
(which includes commit step)/ccpm:done - Need help generating or formatting commit messages
Integration with Other CCPM Skills
Works alongside:
- pm-workflow-guide: Suggests committing at right workflow stages
- external-system-safety: If commits trigger external updates (GitHub Actions, CD/CI)
- ccpm-code-review: Verifies commits follow quality standards
- docs-seeker: For commit message examples and best practices
Example combined workflow:
User: "I finished the JWT feature" ↓ /ccpm:sync → Update Linear with progress ↓ /ccpm:commit → Create conventional commit ↓ commit-assistant → Auto-generate message, link to issue ↓ /ccpm:verify → Run quality checks on changed code ↓ /ccpm:done → Create PR, sync external systems
Summary
This skill ensures:
- ✅ All commits follow conventional commit format
- ✅ Commit messages are clear and specific
- ✅ Issues are properly linked in commits
- ✅ Commit history is searchable and meaningful
- ✅ Automatic changelog generation possible
- ✅ Semantic versioning automation enabled
- ✅ Git history is clean and maintainable
Philosophy: Clear commits enable clear history, which enables automation and team communication.
Based on: Conventional Commits 1.0.0 License: MIT CCPM Integration:
/ccpm:commit, /ccpm:sync, /ccpm:done