Git Commit with Auto-Changelog Skill
Automatically documents code changes in a searchable changelog when committing to git.
Purpose
Every commit creates a structured changelog entry that captures:
- •What changed (files, features, fixes)
- •Why (decision rationale)
- •Issues encountered
- •Dependencies added
- •Testing notes
- •Next steps
All entries are indexed in an auto-generated README for easy searching.
Usage
The skill activates automatically when you ask to commit changes:
"Commit these changes" "Let's commit this work" "Create a git commit with changelog for this session"
You can optionally provide a summary:
"Commit with message: Implement sectional evaluation system"
What This Skill Does
1. First-Time Setup (if changelog/ doesn't exist)
- •Creates
changelog/directory - •Creates
.changelog-keywords.txtwith default tags - •Creates initial
README.mdindex - •Logs the setup as first changelog entry
2. Every Commit
- •Analyzes git changes (
git diff --stat) - •Suggests keywords based on file paths
- •Prompts for changelog details (what, why, issues)
- •Generates timestamped markdown entry
- •Regenerates README index
- •Stages all changes (code + changelog)
- •Creates commit with descriptive message
- •Optionally pushes to remote
3. Maintains Searchability
- •Auto-updates README with one-line summaries
- •Groups entries by month
- •Creates keyword index at bottom
- •Enables Cmd+F searching across all sessions
Process Flow
- •
Check for changes
- •Run
git status - •If no changes, exit with message
- •If changes exist, proceed
- •Run
- •
First-time setup check
- •Look for
changelog/directory - •If missing, create full structure
- •Add setup entry to changelog
- •Look for
- •
Analyze changes
- •Run
git diff --statfor file summary - •Parse file paths to suggest keywords
- •Count lines added/removed
- •Run
- •
Prompt user for details
- •Session description (or use provided message)
- •Why these changes were made
- •Issues encountered (optional)
- •Keywords (show suggestions, allow editing)
- •Dependencies added (if package.json changed)
- •
Generate changelog entry
- •Create
changelog/YYYY-MM-DD-HHMM-descriptive-slug.md - •Fill template with user responses
- •Include git diff summary
- •Add timestamp and session duration estimate
- •Create
- •
Update index
- •Use Glob to find all
changelog/*.mdfiles (exclude README.md) - •Read each file and parse headers (title, keywords, date)
- •Group entries by month (YYYY-MM)
- •Build keyword index with entry counts
- •Write new README with monthly entries + keyword index
- •Use Glob to find all
- •
Commit everything
- •Stage all code changes:
git add . - •Stage changelog files:
git add changelog/ - •Create commit with message
- •Show commit SHA
- •Stage all code changes:
- •
Push prompt
- •Ask: "Push to remote? (Y/n)"
- •If yes:
git push origin [current-branch] - •Show push status
Keyword Auto-Suggestion
Based on file paths modified:
| File Pattern | Suggested Keywords |
|---|---|
**/migrations/*.sql | [DATABASE] [MIGRATION] |
**/models/** | [DATABASE] [MODELS] |
**/api/**, **/functions/** | [BACKEND] [API] |
**/components/** | [COMPONENTS] [UI] |
**/pages/**, **/routes/** | [FRONTEND] [ROUTING] |
**/hooks/**, **/composables/** | [FRONTEND] [HOOKS] |
**/styles/**, *.css, *.scss | [STYLING] [UI] |
package.json, requirements.txt, Cargo.toml | [DEPENDENCIES] |
.env*, *.config.* | [CONFIG] |
*.test.*, *.spec.*, **/__tests__/** | [TESTING] |
README*, docs/** | [DOCUMENTATION] |
Dockerfile, *.yml, *.yaml | [DEPLOYMENT] [INFRA] |
User can always add/remove keywords from suggestions.
Changelog Entry Template
# YYYY-MM-DD - Descriptive Title **Keywords:** [KEYWORD1] [KEYWORD2] [KEYWORD3] **Session:** [Time of day], Duration (~X hours) **Commit:** [commit-sha] ## What Changed - File: `path/to/file.tsx` - Added feature X - Modified component Y - File: `path/to/migration.sql` - Created table Z - Added columns A, B, C ## Why [User's explanation of decision rationale] ## Issues Encountered [Problems hit during implementation, workarounds applied] ## Dependencies [NPM packages added/updated, if any] ## Testing Notes - What was tested: [description] - What wasn't tested: [known gaps] - Edge cases: [discovered issues] ## Next Steps - [ ] Item 1 - [ ] Item 2
Example Session
You: Let's commit this work Skill analyzing changes... 📊 Changes detected: src/api/users/controller.ts src/models/user.ts src/components/UserProfile.tsx tests/users.test.ts (8 files changed, 234 insertions(+), 67 deletions(--) Describe this session (or press Enter for AI summary): > Add user profile customization feature Why these changes? > Users requested ability to customize their profiles. Added avatar upload, bio field, and social links. Integrated with existing authentication system. Any issues encountered? (optional) > Avatar upload needed file size validation. Initially tried client-side only, but added server-side validation for security. Suggested keywords: [BACKEND] [API] [COMPONENTS] [UI] [TESTING] Modify keywords (or press Enter to accept): > [add: FEATURE] Final keywords: [BACKEND] [API] [COMPONENTS] [UI] [TESTING] [FEATURE] Dependencies changed: Added: multer@1.4.5-lts.1 (file upload middleware) Testing notes (what was tested): > Tested avatar upload with various file sizes and formats. Verified bio field validation (max 500 chars). Checked social link URL validation. What wasn't tested? (optional) > Edge cases for international characters in bio field Next steps (tasks remaining): > - Add internationalization for bio field > - Implement avatar image optimization > - Update API documentation ✅ Created changelog/2025-01-15-1430-user-profile-customization.md ✅ Updated changelog/README.md (3 total entries) ✅ Staged 10 files (code + changelog) Commit message: "feat: Add user profile customization feature - Added avatar upload with validation (client + server) - Implemented bio field with 500 char limit - Added social links section with URL validation - Integrated with existing auth system Added multer dependency for file uploads." Create commit? (Y/n): y ✅ Committed as a7f3c9e Push to origin/main? (Y/n): y ✅ Pushed successfully 📝 Changelog updated: changelog/2025-01-15-1430-user-profile-customization.md 🔍 Search keywords: [BACKEND] [API] [COMPONENTS] [UI] [TESTING] [FEATURE]
Files Created by Skill
On First Use
changelog/.changelog-keywords.txt:
# Common Keywords [FRONTEND] [BACKEND] [DATABASE] [API] [UI] [COMPONENTS] [MODELS] [ROUTING] [HOOKS] [STYLING] [TESTING] [BUG_FIX] [FEATURE] [REFACTOR] [PERFORMANCE] [SECURITY] [DEPLOYMENT] [INFRA] [DOCUMENTATION] [DEPENDENCIES] [CONFIG] [MIGRATION] # Project-Specific (auto-appended as used)
changelog/README.md:
Auto-generated index (regenerated after every commit)
After Each Commit
changelog/YYYY-MM-DD-HHMM-descriptive-slug.md:
Filled template with session details (timestamp prevents collisions across branches)
Configuration
Skip Changelog (for trivial changes)
Say: "Commit without changelog: Fix typo in README"
Commits without creating changelog entry (use sparingly).
Amend Last Entry
Say: "Amend the last changelog entry with these changes"
Updates most recent changelog entry instead of creating new one (if continuing same session).
Tools Used
- •Bash - Git operations (status, diff, add, commit, push)
- •Read - Parse existing changelog entries
- •Write - Create new entries and update index
- •Grep - Search for keywords in existing entries (for duplicate detection)
Error Handling
No changes to commit:
❌ No changes detected. Nothing to commit.
Merge conflict in changelog:
⚠️ Merge conflict in changelog/README.md Resolve manually and ask to commit again
Push failed:
❌ Push failed (branch not up to date) Pull latest changes and try again
Best Practices
DO:
- •✅ Create entry for every feature, bug fix, or meaningful change
- •✅ Be specific in "What Changed" (file paths, function names)
- •✅ Explain "Why" decisions were made
- •✅ Document failed experiments (valuable context!)
- •✅ Add new keywords to vocabulary when needed
DON'T:
- •❌ Use for typo fixes (say "commit without changelog")
- •❌ Use generic descriptions ("made changes")
- •❌ Skip "Why" section (most important for future you)
- •❌ Forget to test before committing
Future Enhancements
Planned:
- •Search functionality: "Search changelog for [keyword]"
- •Stats reporting: "Show changelog statistics"
- •PR integration: Copy changelog to PR description
- •Auto-detect WIP commits and suggest skipping changelog
Notes
- •Changelog entries are immutable - never revised after creation
- •README is auto-generated - do not edit manually
- •Keywords are case-sensitive by convention (use UPPERCASE)
- •One entry per work session (not per commit if doing multiple quick commits)
- •If continuing work on same feature same day, ask to amend the last entry to update it
- •Merge-friendly: Timestamps in filenames prevent collisions across branches
- •After merging branches, ask Claude to regenerate the index if needed