Awesome-claude git-commit
Review project consistency and commit changes. Checks code vs docs alignment, updates CHANGELOG/README/DESIGN.md, updates ~/history.log, bumps version, then commits, pushes, and deploys if configured. Use after finishing code modifications.
git clone https://github.com/tsaol/awesome-claude
T=$(mktemp -d) && git clone --depth=1 https://github.com/tsaol/awesome-claude "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/git-commit" ~/.claude/skills/tsaol-awesome-claude-git-commit && rm -rf "$T"
skills/git-commit/SKILL.mdGit Commit - Review, Fix, Commit & Deploy
Overview
This skill reviews project consistency after code changes to ensure:
- Code matches design documents
- CHANGELOG is updated for new features/fixes
- README reflects current functionality
- No outdated documentation
- ~/history.log is updated with session summary (if exists)
- Version number is bumped appropriately
- Deployment is triggered if configured in
~/.claude/collaboration.yml
When to Use
Trigger
/git-commit after:
- Completing a feature implementation
- Fixing a bug
- Before creating a PR
- After significant code refactoring
Review Checklist
1. Code vs Design Docs
Check if implementation matches design:
- Architecture follows design patterns
- API endpoints match specification
- Data models align with schema
# Find design docs find . -name "DESIGN.md" -o -name "*.design.md" -o -name "design*.md"
2. CHANGELOG Update
Verify CHANGELOG.md includes:
- New features added
- Bugs fixed
- Breaking changes noted
- Version number updated (if applicable)
# Check recent changes vs CHANGELOG git diff HEAD~5 --name-only cat CHANGELOG.md | head -50
3. README Accuracy
Ensure README.md reflects:
- Current installation steps
- Updated usage examples
- New CLI commands/options
- Correct configuration
# Compare README with actual code cat README.md
4. History Log Update
Check if
~/history.log exists and update it with session summary:
# Check if history.log exists if [ -f ~/history.log ]; then echo "history.log exists, will update" fi
If exists, append a summary of changes made in this session:
=== {DATE} {PROJECT_NAME} - {BRIEF_DESCRIPTION} === ## Changes - Feature/fix description - Files modified - PRs created ## Key Commands - python hub/main.py search "query" - etc.
5. Version Bump
Automatically detect and bump the project version before committing.
5a. Detect version file:
# Check common version file locations (in priority order) [ -f package.json ] && echo "package.json" [ -f pyproject.toml ] && echo "pyproject.toml" [ -f setup.py ] && echo "setup.py" [ -f setup.cfg ] && echo "setup.cfg" [ -f VERSION ] && echo "VERSION" [ -f version.txt ] && echo "version.txt" [ -f Cargo.toml ] && echo "Cargo.toml" [ -f build.gradle ] && echo "build.gradle"
5b. Determine bump type based on changes:
| Change Type | Bump | Examples |
|---|---|---|
| Bug fix, typo, minor tweak | patch (0.0.x) | fix query bug, update docs typo |
| New feature, enhancement | minor (0.x.0) | add user avatar upload, add new API endpoint |
| Breaking change, major rewrite | major (x.0.0) | change API response format, remove deprecated endpoints |
Decision logic:
- Check git diff for breaking changes (removed public APIs, changed signatures, schema migrations)
- Check if new files/modules were added (likely minor)
- Default to patch if only modifications to existing files
5c. Bump the version:
# Python (pyproject.toml) - example: 0.2.1 → 0.2.2 # Read current version, calculate new version, update file grep 'version = ' pyproject.toml # Node.js (package.json) - example: 1.3.0 → 1.4.0 # Use npm version or manual edit grep '"version"' package.json # Plain VERSION file cat VERSION
5d. Update CHANGELOG with new version header:
If CHANGELOG.md exists, ensure the new version appears at the top:
## [0.2.2] - 2026-02-26 - Fix slow query in user search - Update error handling for API timeout
Important:
- Always show the user the current version and proposed new version before bumping
- If no version file exists, skip this step and note it in the report
- Version bump changes are included in the same commit
6. Consistency Report
Generate a report:
## Consistency Check Report ### Files Changed - [ ] List modified files ### Documentation Status - [ ] CHANGELOG updated: Yes/No - [ ] README accurate: Yes/No - [ ] Design docs aligned: Yes/No - [ ] ~/history.log updated: Yes/No/Not exists ### Version - [ ] Version file detected: Yes (package.json) / No - [ ] Current version: 0.2.1 - [ ] Bump type: patch / minor / major - [ ] New version: 0.2.2 ### Deploy Config - [ ] Deploy configured: Yes/No - [ ] Method: ssm / ssh / script / N/A - [ ] Target: instance-id or host ### Issues Found - Issue 1: ... - Issue 2: ... ### Recommendations - Action 1: ... - Action 2: ...
Workflow
Code Changes Complete ↓ /git-commit ↓ ┌──────────────────────────────┐ │ 1. Read changed files │ │ 2. Check CHANGELOG │ │ 3. Verify README │ │ 4. Compare with docs │ │ 5. Update ~/history.log │ │ 6. Version Bump │ │ 7. Generate report │ │ 8. Fix issues (if any) │ │ 9. Git commit & push │ │ 10. Auto Deploy (if config) │ └──────────────────────────────┘
Auto Commit
After fixing all issues, automatically commit and push:
- Stage changes:
modified filesgit add - Commit: Summarize code changes in simple, human-like message
- Push: Push to remote branch
- Create PR: If on feature branch, create PR with reviewer
Commit Message Style
ALWAYS use simple, human-like commit messages:
- Keep messages short and natural
- Summarize what the code changes actually do
- Use casual, everyday language
- Avoid formal conventions like "feat:", "chore:", "refactor:", etc.
- Write like a human developer would in daily work
- Never include any Claude-related attribution:
- No "Generated with Claude Code"
- No "Co-Authored-By: Claude"
Good examples:
add user loginfix slow queriesupdate packagesadd image download to browser fetcherstore s3 paths in opensearch
Bad examples:
feat: implement comprehensive user authentication system with JWT token validationchore: update dependencies to latest versionsdocs: update CHANGELOG for feature xyz
# Example commit flow git add . git commit -m "add browser fetcher with screenshot support" git push origin <branch> gh pr create --reviewer tsaol # if on feature branch
Auto Deploy
After a successful push, check if the project has deployment configured and trigger it.
Deploy Config
Deployment is configured per-project in
~/.claude/collaboration.yml:
projects: my-project: repo: user/my-project deploy: method: ssm # Deployment method (ssm, ssh, script) instance: i-0abc123 # Target instance (for ssm/ssh) command: "cd /app && git pull origin main && sudo systemctl restart myapp"
Supported Deploy Methods
| Method | Description | Required Fields |
|---|---|---|
| AWS Systems Manager Run Command | , |
| SSH to remote server | , , |
| Run a local script | |
Deploy Logic
Step 1: Check if deploy is configured
# Read collaboration.yml and find current project's deploy config cat ~/.claude/collaboration.yml
Identify current project by matching
git remote -v against the repo field in collaboration.yml.
Step 2: Check if deploy should trigger
Deploy ONLY when:
- Current branch is
ormain
(direct push workflow)master - OR a PR was just merged to main (github-flow workflow)
- The push was successful
Do NOT deploy when:
- On a feature branch (not yet merged)
- Push failed
flag is used--no-deploy
Step 3: Confirm with user
🚀 Deploy detected for project "languages" Method: ssm Instance: i-0f86894d2231b1cd0 Command: cd /home/ubuntu/languages && git pull origin main && sudo systemctl restart englearn Proceed with deployment? (y/n)
Always ask for confirmation before deploying. Never auto-deploy without user approval.
Step 4: Execute deployment
# SSM method aws ssm send-command \ --instance-ids "i-0abc123" \ --document-name "AWS-RunShellScript" \ --parameters "commands=[\"<deploy-command>\"]" \ --output text # SSH method ssh user@host "<deploy-command>" # Script method bash -c "<deploy-command>"
Step 5: Verify deployment
# Check SSM command status aws ssm list-command-invocations \ --command-id "<command-id>" \ --details \ --output text # Or check service status via SSM aws ssm send-command \ --instance-ids "i-0abc123" \ --document-name "AWS-RunShellScript" \ --parameters "commands=[\"systemctl status <service>\"]"
Step 6: Report deploy result
### Deploy Result - Project: languages - Method: ssm - Instance: i-0f86894d2231b1cd0 - Status: ✅ SUCCESS / ❌ FAILED - Details: Service restarted successfully
Usage
/git-commit # Full consistency review + commit + deploy /git-commit --quick # Quick check (CHANGELOG + README only) /git-commit --verbose # Detailed report with suggestions /git-commit --no-deploy # Skip deployment even if configured
Example Output
## Git Check Report ### Changed Files (last commit) - src/storage.py - src/main.py ### CHANGELOG Status ⚠️ CHANGELOG.md not updated for recent changes ### README Status ✅ README.md is up to date ### Recommendations 1. Add entry to CHANGELOG.md: - "save url/source/category in sent_news.json"