
git-helper
by LuluFur
SKILL.md
name: git-helper description: Provides Git workflow guidance for branching, committing, merging, and creating pull requests. Use when creating commits, making PRs, managing branches, resolving conflicts, or asking about Git workflow. allowed-tools: Bash(git:*)
Git Workflow Assistant
Reference Documentation
Complete Git workflow guide: @~CLAUDE.md (lines 177-301)
Branch Strategy
Main Branches
main - Production-ready code, always stable and deployable
Working Branches
Create feature branches for all work:
# Feature development
git checkout -b feature/tower-merge-system
# Bug fixes
git checkout -b fix/projectile-null-crash
# Refactoring
git checkout -b refactor/tower-manager
# Documentation
git checkout -b docs/update-readme
Naming Convention:
feature/- New featuresfix/- Bug fixesrefactor/- Code refactoringdocs/- Documentation updates
Commit Message Convention
Follow Conventional Commits format:
<type>(<scope>): <short summary>
<detailed explanation (optional)>
<footer - issue references (optional)>
Types
- feat: New feature
- fix: Bug fix
- refactor: Code change that neither fixes bug nor adds feature
- docs: Documentation only
- style: Code style changes (formatting, semicolons, etc.)
- perf: Performance improvements
- test: Adding or updating tests
- chore: Maintenance tasks
Examples
# Simple feature
git commit -m "feat(towers): add Executioner with armor pierce mechanic"
# Bug fix
git commit -m "fix(enemy): correct blood particle color from green to red"
# Refactoring
git commit -m "refactor(buffer): simplify network buff to 2-tile radius"
# Documentation
git commit -m "docs: update CLAUDE.md with git workflow instructions"
# Performance
git commit -m "perf(render): add off-screen culling for particles"
# With body and footer
git commit -m "$(cat <<'EOF'
fix(projectile): add null safety check for target in update()
Prevents crash when projectile targets are removed mid-flight.
Adds check for both null and active state before accessing target.
Fixes #23
EOF
)"
Common Workflows
Starting New Work
# 1. Ensure you're on main and up to date
git checkout main
git pull origin main
# 2. Create feature branch
git checkout -b feature/new-tower-type
# 3. Make changes and commit
git add src/Tower.js
git commit -m "feat(towers): add Ice Tower with slow effect"
# 4. Continue development
git add src/Projectile.js
git commit -m "feat(towers): add frost projectile for Ice Tower"
Committing Changes
Current Workflow (Used in this project):
# 1. Check what changed
git status
git diff
# 2. Stage specific files
git add src/Tower.js src/managers/TowerManager.js
# 3. Commit with message
git commit -m "feat(towers): implement tower merge system with Reuleaux shapes
- Added merge rank system
- Implemented drag-and-drop merging
- Added visual merge indicators
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>"
# 4. Push to GitHub
git push origin feature/tower-merge
Using heredoc for multi-line messages:
git commit -m "$(cat <<'EOF'
feat: implement complete tower defense game
Comprehensive implementation including:
- 13 enemy types with 8-directional animations
- 6 specialized tower classes
- Manager architecture pattern
- Performance optimizations
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
EOF
)"
Merging Back to Main
# 1. Ensure feature branch is up to date
git checkout feature/my-feature
git pull origin main # Get latest from main
# 2. Resolve any conflicts if needed
# 3. Switch to main and merge
git checkout main
git merge feature/my-feature
# 4. Push to remote
git push origin main
# 5. Delete feature branch (cleanup)
git branch -d feature/my-feature
Creating Pull Requests
Using GitHub CLI (gh):
# 1. Ensure branch is pushed
git push -u origin feature/my-feature
# 2. Create PR with description
gh pr create --title "Add tower merging system" --body "$(cat <<'EOF'
## Summary
- Implemented drag-and-drop tower merging
- Added Reuleaux polygon shapes for merge ranks
- Integrated with TowerManager
## Test Plan
- [ ] Drag tower onto another tower
- [ ] Verify merge succeeds if same type
- [ ] Verify visual rank indicator updates
- [ ] Test with all 6 tower types
🤖 Generated with [Claude Code](https://claude.com/claude-code)
EOF
)"
# 3. View PR in browser
gh pr view --web
Manual Process (without gh CLI):
# 1. Push branch
git push -u origin feature/my-feature
# 2. Go to GitHub repository in browser
# 3. Click "Compare & pull request" banner
# 4. Fill in title and description
# 5. Click "Create pull request"
Resolving Conflicts
# If merge has conflicts
git merge feature/my-feature
# CONFLICT in src/Tower.js
# 1. Open conflicted files
# Look for <<<<<<< HEAD markers
# Example conflict:
<<<<<<< HEAD
this.damage = 25;
=======
this.damage = 30;
>>>>>>> feature/my-feature
# 2. Edit file to resolve
this.damage = 30; # Choose one or merge both
# 3. Stage resolved files
git add src/Tower.js
# 4. Complete merge
git commit -m "merge: integrate feature/my-feature
Resolved conflicts in Tower.js damage calculation"
Checking Status
# View current branch and uncommitted changes
git status
# View commit history
git log --oneline --graph --all
# View what changed (not staged)
git diff
# View what's staged for commit
git diff --staged
# View branches
git branch -a
# View remote status
git remote -v
Undoing Changes
Discard local changes (CAREFUL!):
git checkout -- src/Tower.js
Unstage file (keep changes):
git reset HEAD src/Tower.js
Undo last commit (keep changes):
git reset --soft HEAD~1
Undo last commit (discard changes - DANGEROUS!):
git reset --hard HEAD~1
Revert a commit (creates new commit):
git revert abc123
Merge Strategies
Fast-Forward (Simple)
When: No conflicts, linear history
git merge --ff-only feature/simple-feature
Result: Moves main pointer forward
Merge Commit (Default)
When: Preserve feature branch history
git merge --no-ff feature/complex-feature
Result: Creates merge commit showing branch integration
Squash Merge (Clean History)
When: Want single commit for entire feature
git merge --squash feature/experimental
git commit -m "feat: add experimental tower merging
- Implemented drag-and-drop
- Added Reuleaux shapes
- Integrated with TowerManager"
Result: All feature commits compressed into one
Best Practices
1. Commit Early, Commit Often
- Small, atomic commits are easier to review and revert
- Each commit should represent one logical change
2. Write Descriptive Messages
- Future you will thank present you
- Others can understand your changes
- Use conventional commit format
3. Test Before Committing
# Verify game runs without errors
npx http-server -p 8000 -c-1
# Open http://127.0.0.1:8000 and test
# Then commit
git commit -m "feat: add new feature"
4. Pull Before Push
# Always get latest changes first
git pull origin main
git push origin main
5. One Feature Per Branch
- Keep branches focused and short-lived
- Easier to review and merge
- Reduces conflict risk
6. Delete Merged Branches
# After merging to main
git branch -d feature/my-feature
# Delete remote branch
git push origin --delete feature/my-feature
7. Never Commit Secrets
- Add sensitive files to .gitignore
- API keys, credentials, .env files
- Check before committing:
git diff --staged
Common Scenarios
Quick Fix During Feature Work
# Working on feature, need to fix urgent bug
git stash # Save work in progress
git checkout main
git checkout -b fix/urgent-bug
# ... make fix ...
git commit -m "fix: urgent bug"
git checkout main
git merge fix/urgent-bug
git push origin main
git checkout feature/my-feature
git stash pop # Restore work in progress
Updating Feature Branch with Main
# Keep feature branch up to date
git checkout feature/my-feature
git merge main # Or: git rebase main (rewrites history)
Creating Release Tag
git tag -a v1.0.0 -m "Release version 1.0.0 - Merge Defence with tower merging"
git push origin v1.0.0
GitHub CLI (gh) Commands
View PR comments:
gh pr view 123
gh api repos/owner/repo/pulls/123/comments
Merge PR:
gh pr merge 123 --squash
List open PRs:
gh pr list
Check CI status:
gh pr checks
Troubleshooting
"fatal: refusing to merge unrelated histories"
# Allow merge of unrelated histories
git merge --allow-unrelated-histories origin/main
"Your branch is ahead of 'origin/main' by N commits"
# Push your commits
git push origin main
"Your branch and 'origin/main' have diverged"
# Pull with rebase to linearize
git pull --rebase origin main
# Or pull with merge
git pull origin main
Accidentally committed to wrong branch
# Move commit to correct branch
git checkout correct-branch
git cherry-pick abc123 # Commit hash from wrong branch
git checkout wrong-branch
git reset --hard HEAD~1 # Remove commit from wrong branch
Git Configuration
Set up user info:
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
Useful aliases:
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm commit
git config --global alias.lg "log --oneline --graph --all"
Set default editor:
git config --global core.editor "code --wait" # VS Code
Project-Specific Workflow
This project uses:
- Main branch only - No develop branch (simple workflow)
- Feature branches - Created for all new work
- Conventional commits - Structured commit messages
- Co-authorship - Claude Code attribution in commits
- GitHub MCP integration - Can create PRs via claude CLI
Example session:
# Start work
git checkout -b feature/ice-tower
git add src/Tower.js
git commit -m "feat(towers): add Ice Tower with slow effect"
# Complete work
git checkout main
git merge feature/ice-tower
git push origin main
git branch -d feature/ice-tower
Key Files
- CLAUDE.md:177-301 - Complete Git workflow documentation
- .gitignore - Files excluded from Git
- README.md - Project overview (if exists)
Output Format
When helping with Git:
- Understand Context - What are they trying to do?
- Provide Commands - Exact bash commands to run
- Explain Why - What each command does
- Warn About Risks - If command is destructive
- Reference Docs - Point to CLAUDE.md for details
Always check current Git status before suggesting commands!
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon