git-workflow
SKILL.md
Git Workflow Skill
Automate Git operations with safety checks and user confirmation.
What This Skill Does
-
Checks Workspace Status
- Shows modified files
- Lists untracked files
- Detects conflicts or merge states
-
Smart Confirmation Prompt
- Lists all changes clearly
- Asks for explicit approval
- Provides multiple options (commit all, specific files, ignore, skip)
-
Safe Commit & Push
- Only commits after confirmation
- Handles GitHub authentication
- Reports success or failure
-
Conflict Detection
- Detects merge conflicts
- Suggests resolution steps
- Prevents force pushes
Quick Start
Simple Commit
python scripts/git_commit.py
The script will:
- Show
git status - Ask for confirmation
- Commit and push if approved
Interactive Mode
python scripts/git_commit.py --interactive
Step-by-step confirmation for each file.
Confirmation Format
📋 **Git Status Summary:**
Modified:
- SOUL.md (41 insertions)
- README.md (5 deletions)
Untracked:
- new-feature.md
- temp.log (should be ignored?)
✅ **Confirm:**
Reply:
- "yes" → commit all modified
- "commit with untracked" → commit all including untracked
- "only SOUL.md" → commit specific file
- "ignore temp.log" → add to .gitignore
- "skip" → do nothing
Safety Rules
Never
- ❌ Commit without checking status first
- ❌ Commit without user confirmation
- ❌ Force push (
git push -f) - ❌ Commit binary/temporary files without asking
Always
- ✅ Check
git statusbefore any operation - ✅ Show list of changes for approval
- ✅ Respect
.gitignore - ✅ Handle errors gracefully
- ✅ Report what was done
Usage Examples
Example 1: Simple Workflow
$ python scripts/git_commit.py
📊 Git Status:
M SOUL.md
?? new-file.md
📋 Changes Summary:
Modified: SOUL.md
Untracked: new-file.md
✅ Confirm: Reply "yes" to commit modified, "commit with untracked" for all, or specify files
> yes
📝 Commit message: Update SOUL.md
✅ Committed: a1b2c3d Update SOUL.md
🚀 Pushed to origin/main
Example 2: With Untracked Files
$ python scripts/git_commit.py
📊 Git Status:
M README.md
?? temp.log
?? important.md
📋 Changes Summary:
Modified: README.md
Untracked: temp.log, important.md
✅ Confirm: What to commit?
> commit with untracked
⚠️ temp.log looks like a temporary file. Add to .gitignore instead?
> yes
📝 Commit message: Update README and add important docs
✅ Committed: b2c3d4e Update README and add important docs
🚀 Pushed to origin/main
Example 3: Skip Everything
$ python scripts/git_commit.py
📊 Git Status:
M SOUL.md
📋 Changes Summary:
Modified: SOUL.md
✅ Confirm: Reply "yes" to commit
> skip
⏹️ Skipped. No changes committed.
Handling Edge Cases
Merge Conflicts
⚠️ **Merge Conflict Detected!**
Conflicted files:
- README.md
- config.yaml
Cannot commit until conflicts are resolved.
Suggested steps:
1. Edit files to resolve conflicts
2. Run: git add <resolved-files>
3. Run this script again
Diverged Branches
⚠️ **Local branch is behind remote**
Run: git pull origin main first?
> yes
Pulling latest changes...
[...]
✅ Now you can commit your changes.
Authentication Issues
❌ **Push Failed: Authentication Error**
Possible causes:
- SSH key not configured
- Token expired
- Wrong remote URL
Suggested fixes:
1. Check: git remote -v
2. Test: ssh -T git@github.com
3. Or use HTTPS with token
Best Practices
- Check before committing: Always review changes
- Write clear messages: Describe what and why
- Commit related changes: One logical change per commit
- Don't commit secrets: Check for API keys, passwords
- Keep commits small: Easier to review and revert
Troubleshooting
"nothing to commit"
# Check if files are actually modified
git status
# Check if in git repository
git rev-parse --git-dir
"Permission denied"
# Check SSH key
ssh -T git@github.com
# Or use HTTPS
git remote set-url origin https://github.com/username/repo.git
"failed to push"
# Pull first
git pull origin main
# Resolve any conflicts
# Then commit again
Weekly Installs
1
Repository
dqz00116/skill-libGitHub Stars
15
First Seen
11 days ago
Security Audits
Installed on
amp1
cline1
openclaw1
opencode1
cursor1
kimi-cli1